Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Semak algoritma dengan data kosong dan pendua

Algoritma boleh lulus contoh dalam soalan dan tetap gagal pada senarai pertama yang dicuba oleh penguji.

Dalam halaman ini
  1. Kes sukar yang manakah patut dicuba?
  2. Contoh berlangkah
  3. Kesilapan yang perlu diawasi
  4. Semak sendiri
  5. Ke mana selepas ini

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.

IScores[I]MaxTimes
Mula81
2581
3882
4382
5883

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.

Soalan lazim

Mengapa menguji senarai kosong?

Banyak algoritma membaca item pertama sebelum menyemak sama ada ia wujud. Pada senarai kosong, ia membaca sesuatu yang tiada, atau membahagi dengan kiraan sifar. Menguji data kosong menunjukkan sama ada algoritma mempunyai pengawal untuk kes itu.

Apakah pendua dalam data ujian?

Ia ialah nilai yang muncul lebih daripada sekali, seperti 8 dua kali dalam senarai skor. Pendua menguji sama ada algoritma mengira, menggantikan atau membandingkan dengan betul apabila dua item sama, sesuatu yang tidak pernah berlaku dalam data kemas.

Berapa banyak kes ujian yang mencukupi?

Cukup untuk meliputi setiap jenis situasi sekali: data biasa, kes terkecil, kes kosong, nilai berulang dan sempadan tempat tingkah laku berubah. Satu kes yang dipilih dengan baik bagi setiap situasi lebih berguna daripada banyak kes yang serupa.

Dikemas kini:

Langkah seterusnya

Jika algoritma anda berfungsi pada contoh tetapi anda tidak pasti kes ujian mana yang patut dicuba seterusnya, guru satu dengan satu boleh membantu anda membina set ujian kecil dan menjejak setiap satu.

Kelas percubaan berbayar satu jam pada kadar guru yang disahkan, bermula RM80. Yuran lain, jadual dan susunan seterusnya disahkan terus bersama guru selepas kelas percubaan.

Tuisyen diatur bersama ibu bapa atau penjaga. Hantar halaman ini kepada mereka melalui WhatsApp supaya mereka boleh bertanya bagi pihak anda.

Ibu bapa atau penjaga? Tanya di sini

9,000+ pelajar telah dibantu melalui perkhidmatan kami