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 pengesahihan, pengesahan 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 pada 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?
Lihat jawapan
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?
Lihat jawapan
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.
Lihat jawapan
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 hanya menguji contoh yang datang bersama soalan, guru dalam tuisyen Computer Science dalam talian satu dengan satu boleh membantu anda membina tabiat memilih kes sempadan.