Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Bab 11 Tatasusunan.

Presentasi serupa


Presentasi berjudul: "Bab 11 Tatasusunan."— Transcript presentasi:

1 Bab 11 Tatasusunan

2 Kenapa Tatasusunan? Tatasusunan membenarkan data dari jenis yang sama disimpan secara berjujukan Andaikan anda menulis aturcara yang menerima markah 10 orang pelajar, mengira markah purata, dan seterusnya mencetak bilangan pelajar yang memperolehi markah lebih dari purata. Jika anda hanya menggunakan satu pembolehubah untuk menyimpan kesemua 10 markah, bagaimana anda boleh mencapai semula markah bagi pelajar 1 .. pelajar 9 untuk menentukan bilangan pelajar yang mempeolehi markah lebih dari purata? Salah satu cara  menggunakan 10 pembolehubah yang unik untuk menyimpan 10 markah

3 Kenapa Tatasusunan? #include <stdio.h> void main() {
int markah1, markah2, markah3, markah4, markah5, markah6, markah7, markah8, markah9, markah10; int bil = 0, jumlah = 0; float purata; printf(“\nBaca 10 markah ujian: \n”); scanf(“%d %d %d %d %d %d %d %d %d %d”, &markah1, &markah2, &markah3, &markah4, &markah5, &markah6, &markah7, &markah8, &markah9, &markah10); jumlah = markah1 + markah2 + markah3 + mrkah4 + markah5 + markah6 + markah7 + markah8 + markah9 + markah10; purata = (float) jumlah / 10;

4 Kenapa Tatasusunan? Adakah ini cara yang terbaik?
if (markah1 > purata) bil++; if (markah2 > purata) bil++; if (markah3 > purata) bil++; if (markah4 > purata) bil++; if (markah5 > purata) bil++; if (markah6 > purata) bil++; if (markah7 > purata) bil++; if (markah8 > purata) bil++; if (markah9 > purata) bil++; if (markah10 > purata) bil++; printf(“\nPurata keseluruhan markah = %.2f”, purata); printf(“\nBilangan markah yang melebihi purata = %d”, bil); } Adakah ini cara yang terbaik? Bagaimana sekiranya terdapat 100 orang pelajar?

5 Tatasusunan Satu Dimensi
Untuk masalah tadi, markah 10 orang pelajar boleh disimpan secara berjujukan dalam satu tatasusunan satu dimensi Seperti pembolehubah yang lain, tatasusunan perlu diisytiharkan supaya ruang yang secukupnya diumpukkan dalam ruang ingatan Sintaks pengisytiharan tatasusunan satu dimensi: jenis_data nama_tatasusunan[ungkapan]; Ungkapan – nilai saiz bagi tatasusunan - boleh terdiri dari pemalar integer atau ungkapan yang menghasilkan suatu nilai integer - nilai ini juga dirujuk sebagai indeks atau subskrip - data yang disimpan dalam tatasusunan dipanggil unsur, dan dirujuk menggunakan indeks ini

6 Tatasusunan Satu Dimensi
Contoh: int markah[10]; Pengumpukan ruang dalam ingatan boleh digambarkan seperti berikut: Indeks dalam tatasusunan mesti bermula dengan 0  indeks terakhir dalam satu tatasusunan bersaiz n ialah [n-1] Tatasusunan juga boleh diisytiharkan secara berganda, contohnya double ujian[100], kuiz[5], pep_akhir[50]; markah[0] markah[1] markah[2] 10 sel ingatan berjujukan berjenis int markah[3] ….. markah[9]

7 Awalan Unsur Tatasusunan
Nilai awal bagi unsur-unsur tatasusunan diumpukkan semasa pengisytiharan menggunakan senarai yang ditandakan dengan simbol ‘{‘ dan ‘}’ Contoh: int bulan[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; Jika senarai nilai awal lebih pendek dari saiz tatasusunan, unsur selebihnya diberi nilai awal 0 int bulan[12] = {31, 28, 31, 30}; bulan [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 31 28 31 30 31 30 31 31 30 31 30 31 bulan [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 31 28 31 30

8 Awalan dan Umpukan Tatasusunan
Jika saiz tatasusunan tidak dinyatakan semasa pengisytiharan, ruang akan disedakan berdasarkan kepada bilangan data dalam senarai nilai awal Contoh: int bulan[ ] = {31, 28, 30, 31}; Bentuk pernyataan umpukan yang melibatkan tatasusunan adalah sama seperti pernyataan umpukan biasa Di sebelah kiri adalah lokasi dalam tatasusunan yang dirujuk menggunakan indeks Di sebelah kiri adalah ungkapan yang boleh terdiri dari suatu pemalar, ataupun ungkapan yang menghasilkan suatu nilai tertentu bulan [0] [1] [2] [3] 31 28 31 30

9 Umpukan dan Capaian Tatasusunan
Maka, unsur-unsur dalam tatasusunan diumpukkan secara satu persatu Contoh: bulan[ 7 ] = 30;  unsur ke – 8 dalam tatasusunan bernilai 30 Contoh pernyataan umpukan lain: A[ 2 ] = 2 * 2; M[ 2 ] = M[ 1 ] * 5; i = 0; j = 1; S[ 3*j ] = S[ i+2 ]; A [0] [1] [2] [3] A [0] [1] [2] [3] 1 2 4 4 1 2 3 4 M [0] [1] [2] [3] M [0] [1] [2] [3] 1 2 3 4 1 2 10 4 S [0] [1] [2] [3] S [0] [1] [2] [3] 1 2 3 4 1 2 3 3

10 Penggunaan Gelung Struktur gelung digunakan untuk mencapai atau menyimpan data bagi setiap unsur dalam gelung Contoh: for (i = 0; i <4; i++) A[i] = i * 2; : for (i = 3; i >=0; i--) printf(“Unsur ke - %d = %d\n”, i+1, A[i]); Output: Unsur ke – 4 = 6 Unsur ke – 3 = 4 Unsur ke – 2 = 2 Unsur ke – 1 = 0 A [0] [1] [2] [3] 2 4 6

11 Contoh Penggunaan Tatasusunan
#include <stdio.h> void main() { int markah[10]; int i, bil = 0, jumlah = 0; float purata; printf(“Baca 10 markah ujian:\n”); for (i = 0; i < 10, i++) { printf(“Masukkan markah %d : “, i); scanf(“%d”, &markah[i]); jumlah += markah[i]; } purata = (float) jumlah / 10; for (i = 0; i < 10; i++ ) { if (markah[i] > purata) bil++; } printf(“\nPurata keseluruhan markah = %.2f”, purata); printf(“\nBilangan markah yang melebihi purata = %d\n”, bil); }

12 Tatasusunan dan Fungsi
Tatasusunan boleh diisytiharkan sebagai sejagat dan setempat Sejagat  tidak perlu dihantar sebagai parameter Setempat  perlu dihantar sebagai parameter Penghantaran tatasusunan boleh dalam dua jenis; unsur dan keseluruhan tatasusunan Unsur tatasusunan dihantar menggunakan indeks, contohnya: cetak(markah[10], purata); Keseluruhan tatasusunan dihantar hanya menggunakan nama tatasusunan, contohnya: input(markah);

13 Tatasusunan dan Fungsi (Contoh 1)
#include <stdio.h> int markah[10]; void main() { float purata; int jumlah; : markah[9] = 25; purata = (float) jumlah / 10; cetak(purata); } void cetak( float a ) { printf(“Markah terakhir ialah %d\n Purata ialah %f\n”, markah[9], a);

14 Tatasusunan dan Fungsi (Contoh 2)
#include <stdio.h> void main() { int markah[10]; float purata; int jumlah; : markah[9] = 25; purata = (float) jumlah / 10; cetak(markah[9], purata); } void cetak( float a, float b ) { printf(“Markah terakhir ialah %d\n Purata ialah %f\n”, a, b);

15 Tatasusunan dan Fungsi (Contoh 3)
#include <stdio.h> void input(int []); void cetak(int []); void main() { int markah[10]; input(markah); cetak(markah); } void input( int markah[] ) { int i; for (i=0; i<10; i++) { printf(“Input markah pelajar ke %d : “, i + 1); scanf(“%d”, &markah[i]); Void cetak( int markah[] ) { printf(“%d “, markah[i]); printf(“\n”);

16 Tatasusunan Dua Dimensi
Diandaikan seperti matriks yang mempunyai baris dan lajur Sintaks pengisytiharan: jenis_data nama_tatasusunan[ungkapan1][ungkapan2]; Contoh: int markah[100][10]; Pengumpukan nilai awalan tatasusunan dua dimensi sama seperti dalam tatasusunan satu dimensi  menggunakan senarai int segiempat[3][3] = {1, 2, 3, 4, 5 , 6, 7, 8, 9}; Nilai diumpukkan secara baris dahulu segiempat [0] [1] [2] [0] 1 2 3 [1] 4 5 6 [2] 7 8 9

17 Tatasusunan Dua Dimensi
Pengumpukan nilai awalan juga boleh dilakukan dengan menggunakan senarai dalam senarai untuk mengasingkan baris dan lajur Contoh: int segiempat[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}}; Unsur dalam tatasusunan dua dimensi dirujuk menggunakan indeks baris dan lajur segiempat[1][2] = 0; segiempat [0] [1] [2] [0] 1 2 3 [1] 4 5 [2] 7 8 9


Download ppt "Bab 11 Tatasusunan."

Presentasi serupa


Iklan oleh Google