Gelung yang tidak berakhir mempunyai syarat yang tidak pernah menjadi palsu. Gelung yang terlepas item terakhir berhenti satu pusingan terlalu awal. Kedua-duanya paling cepat ditemui dengan menjejak gelung itu dengan tangan, satu baris bagi setiap pusingan.
Halaman ini memberi satu contoh berlangkah bagi setiap satu, pembetulan dan senarai semak ringkas. Notasi di sini ialah pseudokod ringkas yang mudah dibaca. Kertas anda mungkin menggunakan gaya tertentu, jadi semak sukatan untuk laluan yang terpakai.
Bagaimana rupa gelung yang tidak berakhir?
Baca algoritma ini. Tujuannya mengira turun ke sifar dengan langkah 3.
Num ← 10
WHILE Num <> 0
Num ← Num - 3
ENDWHILE
OUTPUT "Done"
Jejaknya, dengan menulis keputusan syarat setiap kali.
| Pusingan | Num pada awal | Num <> 0 ? | Num selepas |
|---|---|---|---|
| 1 | 10 | BENAR | 7 |
| 2 | 7 | BENAR | 4 |
| 3 | 4 | BENAR | 1 |
| 4 | 1 | BENAR | −2 |
| 5 | −2 | BENAR | −5 |
Num menjadi 10, 7, 4, 1, −2, −5 dan tidak pernah tepat 0. Ujian “tidak sama dengan 0” kekal BENAR selama-lamanya, jadi “Done” tidak pernah dicapai.
Bagaimana membetulkannya?
Ubah syarat supaya ia berhenti apabila nilai sudah melepasi sasaran, bukan hanya apabila sama dengan sasaran.
Num ← 10
WHILE Num > 0
Num ← Num - 3
ENDWHILE
OUTPUT Num
Jejak: 10 → 7 → 4 → 1 → −2. Selepas pusingan keempat Num ialah −2, dan −2 > 0 adalah PALSU, jadi gelung berhenti. Outputnya −2.
Tabiat yang patut dikekalkan: apabila nilai bergerak dalam langkah, pilih syarat berasaskan lebih besar atau lebih kecil daripada, kecuali anda sudah membuktikan langkah itu mendarat tepat pada sasaran.
Bagaimana rupa gelung yang terlepas item terakhir?
Berikut tatasusunan (array) lima skor, dikira dari indeks 1 hingga 5 dalam contoh ini. Tugasnya menjumlahkan kesemuanya.
Scores = [12, 7, 15, 9, 10]
Total ← 0
FOR i ← 1 TO 4
Total ← Total + Scores[i]
NEXT i
OUTPUT Total
| i | Scores[i] | Total selepas |
|---|---|---|
| 1 | 12 | 12 |
| 2 | 7 | 19 |
| 3 | 15 | 34 |
| 4 | 9 | 43 |
Outputnya 43, tetapi jumlah sebenar ialah 12 + 7 + 15 + 9 + 10 = 53. Gelung berhenti pada 4, jadi Scores[5] = 10 tidak pernah ditambah. Bezanya, 53 − 43 = 10, tepat item yang tertinggal, satu petunjuk berguna apabila anda menyemak kerja sendiri.
Bagaimana membetulkan ralat satu langkah?
Jadikan nilai terakhir gelung sebagai indeks terakhir tatasusunan.
Total ← 0
FOR i ← 1 TO 5
Total ← Total + Scores[i]
NEXT i
OUTPUT Total
Jejak: 12, 19, 34, 43, 53. Output 53. ✓
Jika panjang tatasusunan boleh berubah, gunakan panjangnya dan bukan 5 tetap, contohnya FOR i ← 1 TO Length, dengan Length menyimpan bilangan item.
Kesilapan yang mana satu?
| Gejala | Punca mungkin | Semakan pertama |
|---|---|---|
| Atur cara tidak pernah siap | Syarat tidak pernah menjadi PALSU | Adakah gelung mengubah pemboleh ubah yang digunakan syarat? |
| Berhenti, tetapi jawapan kurang satu item | Had terlalu rendah satu, atau < dan bukan <= | Tulis indeks pertama dan terakhir di sebelah gelung |
| Ranap atau ralat di hujung | Had terlalu tinggi satu, membaca melepasi tatasusunan | Adakah indeks terakhir dalam julat? |
| Berjaya untuk 5 item, gagal untuk 1 atau 0 | Gelung menganggap sekurang-kurangnya dua item | Uji kes terkecil dengan tangan |
Senarai semak untuk mana-mana gelung
- Tulis nilai pertama dan terakhir yang patut dikendalikan gelung.
- Jejak pusingan pertama dan pusingan terakhir sepenuhnya.
- Tanya apa yang menjadikan syarat palsu, dan semak gelung bergerak ke arahnya.
- Uji dengan senarai kosong atau satu item.
- Semak sama ada hasilnya munasabah, contohnya dengan menjumlahkan senarai dengan cara lain.
Pelatih penjejakan pseudokod terhad membolehkan anda melangkah melalui algoritma asli dan melihat setiap keputusan cabang dan gelung, jika laluan anda membenarkan. Kotak pasir penaakulan Python selamat menunjukkan larian terhad yang dihentikan jika gelung berjalan terlalu lama.
Seterusnya ke mana
Untuk idea penuh, baca pengulangan dan tatasusunan. Pepijat sempadan ada halamannya sendiri: atur cara saya berjalan tetapi gagal pada kes sempadan. Kemudian cuba soalan campuran dalam latihan asli, dan lihat panduan pembelajaran untuk peta keseluruhan.
Bila penjejakan sahaja tidak mencukupi
Sesetengah pelajar menjejak dengan teliti tetapi masih tidak nampak mengapa gelung tersilap, kerana kepercayaan di sebaliknya, seperti “pemboleh ubah dikemas kini sendiri”, tidak kelihatan di atas kertas. Memerhatikan anda berfikir dengan kuat menjadikan kepercayaan itu mudah ditemui. Tuisyen Computer Science dalam talian satu dengan satu bermula dengan kelas percubaan berbayar selama satu jam pada kadar yang disahkan oleh guru yang ditugaskan, bermula dari RM80.