Memilih data ujian ialah kemahiran tersendiri. Data biasa menunjukkan algoritma boleh berfungsi. Data kosong, satu item dan berulang menunjukkan sama ada ia masih berfungsi di sempadan, tempat kebanyakan kesalahan bersembunyi.
Pelajaran ini menutup carian, isihan dan fail. Ia menggunakan bahasa ujian daripada pengesahan, penentusahan dan ujian dan jadual jejak daripada menjejak carian linear.
Kes sukar yang manakah patut dicuba?
- Kosong: langsung tiada item.
- Satu item: senarai tidak kosong yang terkecil.
- Semua sama: setiap nilai serupa.
- Pendua bagi jawapan: nilai maksimum atau sasaran muncul lebih daripada sekali.
- Jawapan di hujung: kedudukan pertama atau terakhir.
Contoh berlangkah
Tugasnya: cari skor tertinggi dalam tatasusunan Scores yang mempunyai Count item, dan nyatakan berapa kali ia muncul. Versi pertama, dengan pengawal data kosong:
IF Count = 0 THEN
OUTPUT "No data"
ELSE
Max ← Scores[1]
Times ← 1
I ← 2
WHILE I <= Count
IF Scores[I] > Max THEN
Max ← Scores[I]
Times ← 1
ELSE
IF Scores[I] = Max THEN
Times ← Times + 1
ENDIF
ENDIF
I ← I + 1
ENDWHILE
OUTPUT Max, Times
ENDIF
Ujian: Scores = [8, 5, 8, 3, 8], Count = 5.
| I | Scores[I] | Max | Times |
|---|---|---|---|
| Mula | 8 | 1 | |
| 2 | 5 | 8 | 1 |
| 3 | 8 | 8 | 2 |
| 4 | 3 | 8 | 2 |
| 5 | 8 | 8 | 3 |
Output: 8, 3. Yang tertinggi ialah 8 dan ia muncul tiga kali.
Ujian: kosong, Count = 0. Pengawal menangkapnya dan mengeluarkan No data. Tanpa pengawal, Scores[1] merujuk item yang tidak wujud.
Ujian: satu item, Scores = [9], Count = 1. Max = 9 dan Times = 1. Gelung bermula dengan I = 2, yang lebih besar daripada Count, jadi badan tidak pernah berjalan. Output: 9, 1.
Kesilapan yang perlu diawasi
Seorang pelajar menukar perbandingan kepada >= untuk “memasukkan nilai yang sama”:
IF Scores[I] >= Max THEN
Max ← Scores[I]
Times ← 1
Pada [8, 5, 8, 3, 8], pada I = 3 nilai 8 memenuhi >=, jadi Times ditetapkan semula kepada 1 dan bukan meningkat kepada 2. Pada I = 5 ia ditetapkan semula lagi. Output akhir ialah 8, 1, yang salah.
Pembetulannya ialah mengekalkan > untuk maksimum baharu dan menggunakan cabang = yang berasingan untuk mengira ulangan. Versi yang salah hanya kelihatan dengan data pendua, itulah sebabnya ujian pendua penting.
Semak sendiri
Gunakan algoritma daripada contoh berlangkah.
1. Scores = [4, 4], Count = 2. Apakah outputnya?
Show answer
Mula dengan Max = 4, Times = 1. Pada I = 2, 4 sama dengan Max, jadi Times menjadi 2. Output 4, 2.
2. Scores = [2, 7, 7, 7], Count = 4. Apakah outputnya?
Show answer
Mula dengan Max = 2. Pada I = 2, 7 > 2, jadi Max = 7 dan Times = 1. Pada I = 3, Times = 2. Pada I = 4, Times = 3. Output 7, 3.
3. Namakan tiga kes ujian yang akan menyemak algoritma yang mencari nilai terendah dalam senarai.
Show answer
Contohnya: senarai kosong, senarai satu item, dan senarai yang nilai terendahnya muncul dua kali. Senarai dengan nilai terendah pada kedudukan terakhir juga berguna.
Ke mana selepas ini
Gunakan seluruh modul dalam set latihan campuran, dan catat setiap kesilapan dalam log kesilapan dan baris gilir ujian semula.
Jika anda cenderung menguji contoh yang datang bersama soalan sahaja, guru kami boleh membantu membina tabiat kes sempadan melalui tuisyen Computer Science dalam talian satu dengan satu.