Tatasusunan (array) menyimpan beberapa nilai berjenis sama di bawah satu nama. Setiap nilai mempunyai indeks (index), iaitu kedudukannya, dan anda mencapainya dengan Name[index]. Indeks dan nilai ialah dua perkara berbeza, dan mencampuradukkannya ialah punca kerap jawapan salah.
Pelajaran ini melengkapkan kemahiran gelung dalam pengulangan dan tatasusunan dengan menggabungkannya bersama tatasusunan. Ia menyusuli mencari maksimum, tempat kedudukan dan nilai kedua-duanya muncul.
Bagaimana membaca tatasusunan?
Tatasusunan diisytiharkan dengan had dan jenisnya:
DECLARE Level : ARRAY[1:5] OF INTEGER
Andaikan ia menyimpan nilai-nilai ini.
| Indeks | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| Level[indeks] | 3 | 5 | 2 | 5 | 4 |
Level[3] ialah 2. Indeksnya 3, nilainya 2. Sesuatu nilai juga boleh digunakan sebagai indeks. Level[Level[2]] bermaksud: kira dahulu Level[2], iaitu 5, kemudian cari Level[5], iaitu 4.
Contoh penyelesaian
Algoritma ini mencari tempat nilai terbesar disimpan.
Pos ← 1
FOR i ← 2 TO 5
IF Level[i] > Level[Pos]
THEN
Pos ← i
ENDIF
NEXT i
OUTPUT Pos, Level[Pos]
Pos menyimpan indeks, jadi ia sentiasa nombor dari 1 hingga 5. Level[Pos] ialah nilai pada indeks itu.
| i | Level[i] | Level[Pos] sebelum | Level[i] > Level[Pos]? | Pos selepas |
|---|---|---|---|---|
| 2 | 5 | 3 | benar | 2 |
| 3 | 2 | 5 | palsu | 2 |
| 4 | 5 | 5 | palsu | 2 |
| 5 | 4 | 5 | palsu | 2 |
Outputnya ialah 2, 5: indeksnya 2 dan nilai yang disimpan di situ ialah 5. Jika kod mencetak i selepas gelung dan bukan Pos, ia akan menunjukkan pemboleh ubah gelung, bukan kedudukan nilai terbesar.
Kesilapan yang perlu diawasi
Kesilapan biasa ialah menambah indeks apabila tugasan meminta nilai.
Kod yang salah:
Total ← Total + iIni menambah 1 + 2 + 3 + 4 + 5 = 15, iaitu jumlah kedudukan.
Pembetulannya ialah Total ← Total + Level[i], yang menambah 3 + 5 + 2 + 5 + 4 = 19. Apabila menjejak, tulis tajuk lajur i dan Level[i] secara berasingan. Kedua-dua lajur tidak boleh bercampur jika kedua-duanya ada pada kertas.
Semak sendiri
Gunakan tatasusunan Level di atas.
1. Apakah Level[4] dan Level[Level[3]]?
Lihat jawapan
Level[4] ialah 5. Level[3] ialah 2, jadi Level[Level[3]] ialah Level[2], iaitu 5.
2. Apakah output kod ini?
FOR i ← 1 TO 5
IF Level[i] = 5
THEN
OUTPUT i
ENDIF
NEXT i
Lihat jawapan
Ia mengeluarkan indeks tempat nilainya 5. Level[2] dan Level[4] sama dengan 5, jadi outputnya 2 kemudian 4. Ia tidak mengeluarkan nilai 5.
3. Apa yang berlaku jika kod cuba membaca Level[6]?
Lihat jawapan
Hadnya 1 hingga 5, jadi kedudukan 6 tidak wujud. Atur cara akan berhenti dengan ralat. Dalam jejak anda tulis “indeks di luar had”.
Seterusnya
Setelah gelung, kesalahan dan tatasusunan dibincangkan, uji semuanya sekali gus dalam set latihan pengulangan dan tatasusunan. Untuk melihat indeks dan nilai berubah pada setiap pusingan, gunakan pelatih jejak pseudokod.
Seorang guru dalam tuisyen Computer Science boleh meminta anda menerangkan, baris demi baris, maksud setiap nombor dalam kurungan pada percubaan anda sendiri.