Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Baiki syarat penamat gelung pseudokod

Gelung yang tidak berhenti, atau berhenti satu pusingan terlalu awal, boleh tersembunyi dalam algoritma yang nampak munasabah.

Dalam halaman ini
  1. Apakah pepijat penamatan yang lazim?
  2. Contoh berlangkah
  3. Kesilapan yang perlu diawasi
  4. Semak sendiri
  5. Ke mana selepas ini

Gelung hanya tamat apabila syaratnya berubah dengan cara yang betul. Untuk membaikinya, jejak pemboleh ubah dalam syarat dan tanya sama ada ia boleh membuat gelung berhenti pada titik yang dimaksudkan.

Pelajaran ini sebahagian daripada pseudokod untuk sukatan berkenaan. Ia menggunakan kemahiran menjejak daripada tugasan dan perbandingan dan bentuk gelung dalam pengulangan dan tatasusunan.

Apakah pepijat penamatan yang lazim?

Ada empat. Pemboleh ubah syarat tidak pernah dikemas kini, atau kemas kininya menggerakkannya ke arah yang salah.

Atau ujian menggunakan <> atau = dan nilai melompatinya. Atau ujian terlebih atau terkurang satu, menggunakan < di tempat yang memerlukan <=.

Bagi setiap pepijat, pembaikannya sama: tentukan apa yang gelung patut lakukan, kemudian pastikan kemas kini dan ujian sepadan.

Contoh berlangkah

Gelung ini sepatutnya menambah 1, 3, 5, 7 dan 9, kemudian berhenti.

Total ← 0
Count ← 1
WHILE Count <> 10 DO
   Total ← Total + Count
   Count ← Count + 2
ENDWHILE
OUTPUT Total

Jejak pusingan pertama:

PusinganCount semasa ujianCount <> 10Total selepas badanCount selepas badan
11TRUE13
23TRUE45
35TRUE97
47TRUE169
59TRUE2511
611TRUE3613

Count hanya mengambil nilai ganjil, jadi ia melompati 10 dan ujian sentiasa TRUE. Gelung tidak pernah tamat.

Pembaikan: tukar ujian kepada WHILE Count < 10 DO. Kini pusingan 5 berakhir dengan Count = 11, ujian 11 < 10 ialah FALSE, dan gelung berhenti. Total ialah 25. Semak: 1 + 3 + 5 + 7 + 9 = 25.

Kesilapan yang perlu diawasi

Silap yang lazim ialah membaiki gejala, bukan punca.

Pembaikan yang salah: tukar Count + 2 kepada Count + 1 supaya Count mencapai 10.

Gelung kini berhenti, tetapi ia menambah 1 + 2 + 3 + … + 9 = 45. Algoritma itu tidak lagi melakukan apa yang dimaksudkan.

Pembetulannya ialah mengekalkan tingkah laku yang dimaksudkan dan menukar ujian. Gunakan < atau <= dan bukan <> apabila pemboleh ubah melangkah lebih daripada 1, kerana ujian “tidak sama” hanya selamat jika nilai pasti mendarat pada sasaran.

Semak sendiri

1. X ← 20, WHILE X > 0 DO, X ← X - 6, ENDWHILE. Berapakah X di akhir, dan berapa kali gelung berjalan?

Tunjukkan jawapan

X menjadi 20, 14, 8, 2, kemudian -4. Badan gelung berjalan 4 kali dan X berakhir -4.

2. Mengapakah Flag ← TRUE, WHILE Flag = TRUE DO OUTPUT "Hi" ENDWHILE tidak pernah tamat?

Tunjukkan jawapan

Tiada apa di dalam gelung yang mengubah Flag, jadi syarat kekal TRUE. Tambah kemas kini seperti Flag ← FALSE di bawah syarat yang betul.

3. Mulakan dengan Count ← 1, kemudian REPEAT Count ← Count + 1 UNTIL Count > 5. Berapakah Count di akhir?

Tunjukkan jawapan

Count menjadi 2, 3, 4, 5, 6. Ia berhenti apabila Count ialah 6, jadi Count ialah 6.

Ke mana selepas ini

Habiskan modul dengan menyemak tahun peperiksaan sebelum memilih tatatanda. Alat latihan jejak pseudokod terhad menghentikan gelung liar pada had keselamatan, jadi anda boleh menguji gelung yang rosak tanpa membekukan apa-apa.

Penyahpepijatan ialah kemahiran yang berkembang apabila kesilapan sendiri diterangkan. Itulah yang dilakukan guru kami dalam tuisyen Computer Science dalam talian satu dengan satu.

Soalan lazim

Apakah syarat penamat (termination condition)?

Ia ujian yang menentukan bila gelung berhenti. Bagi gelung WHILE, gelung berjalan selagi syarat TRUE. Bagi gelung REPEAT, ia berjalan sehingga syarat menjadi TRUE. Pepijat muncul apabila pemboleh ubah dalam ujian tidak pernah dapat mencapai nilai berhenti.

Apakah beza WHILE dan REPEAT dari segi penamatan?

Gelung WHILE menguji dahulu, jadi ia mungkin berjalan sifar kali. Gelung REPEAT menguji kemudian, jadi ia sentiasa berjalan sekurang-kurangnya sekali. Syarat WHILE menerangkan bila hendak diteruskan; syarat REPEAT menerangkan bila hendak berhenti.

Bagaimanakah mengesan gelung tak terhingga dalam jejak?

Jejak empat atau lima pusingan dan perhatikan pemboleh ubah dalam syarat. Jika ia bergerak menjauhi nilai berhenti, melompatinya, atau tidak pernah berubah, gelung tidak akan tamat. Kemudian ubah kemas kini atau ujiannya.

Dikemas kini:

Langkah seterusnya

Jika anda boleh menjalankan gelung dengan tangan tetapi belum dapat mengesan mengapa sesuatu gelung gagal, guru satu dengan satu boleh memberi gelung rosak untuk dibaiki sehingga coraknya biasa bagi anda.

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