Gelung terkawal syarat mengulang sehingga satu syarat menyuruhnya berhenti. Bilangan pusingan tidak ditetapkan lebih awal. Pseudokod gaya Cambridge mempunyai dua bentuk: WHILE dengan ENDWHILE, dan REPEAT dengan UNTIL.
Pelajaran ini menyusuli menjejak gelung terkawal bilangan dalam pengulangan dan tatasusunan. Idea barunya ialah ujian, bukan pembilang, yang menentukan bila gelung tamat.
Bila setiap gelung menyemak syaratnya?
Gelung WHILE menguji dahulu. Jika ujian palsu pada semakan pertama lagi, isi gelung tidak pernah berjalan.
Gelung REPEAT dengan UNTIL menjalankan isi dahulu dan menguji kemudian. Isi gelung sentiasa berjalan sekurang-kurangnya sekali. Gelung berhenti apabila syarat UNTIL ialah benar, iaitu terbalik daripada WHILE.
Untuk setiap jejak, tambah satu lajur untuk ujian dan tulis benar atau palsu setiap kali ia disemak.
Contoh 1: gelung WHILE
Balance ← 100
Years ← 0
WHILE Balance < 150 DO
Balance ← Balance + 20
Years ← Years + 1
ENDWHILE
OUTPUT Years, Balance
| Ujian: Balance < 150 | Balance selepas | Years selepas |
|---|---|---|
| 100 < 150 benar | 120 | 1 |
| 120 < 150 benar | 140 | 2 |
| 140 < 150 benar | 160 | 3 |
| 160 < 150 palsu | gelung tamat |
Outputnya ialah 3, 160. Ujian terakhir palsu, jadi tiada pusingan keempat.
Contoh 2: gelung REPEAT
N ← 64
Steps ← 0
REPEAT
N ← N DIV 2
Steps ← Steps + 1
UNTIL N < 5
OUTPUT Steps, N
DIV ialah pembahagian nombor bulat.
| Pusingan | N selepas | Steps selepas | Ujian: N < 5 |
|---|---|---|---|
| 1 | 32 | 1 | palsu, ulang |
| 2 | 16 | 2 | palsu, ulang |
| 3 | 8 | 3 | palsu, ulang |
| 4 | 4 | 4 | benar, berhenti |
Outputnya ialah 4, 4. Jika N bermula pada 3, gelung WHILE dengan ujian yang sama ditulis sebagai WHILE N >= 5 akan berjalan sifar kali, tetapi gelung REPEAT ini tetap berjalan sekali dan menukar N kepada 1.
Kesilapan yang perlu diawasi
Kesilapan biasa ialah membaca UNTIL sebagai “teruskan selagi”.
Jawapan yang salah: “UNTIL N < 5 bermaksud gelung berterusan selagi N kurang daripada 5, jadi ia berhenti serta-merta.”
Pelajar menganggap syarat UNTIL seperti syarat WHILE.
Pembetulannya: baca UNTIL N < 5 sebagai “berhenti sebaik sahaja N kurang daripada 5”. Pada awal, N ialah 64 dan tidak kurang daripada 5, jadi gelung diteruskan. Tulis perkataan “berhenti apabila” di jidar bersebelahan setiap UNTIL.
Semak sendiri
1. Apakah nilai akhir X dan bilangan pusingan?
X ← 5
Passes ← 0
WHILE X > 0 DO
X ← X - 2
Passes ← Passes + 1
ENDWHILE
Lihat jawapan
X menjadi 5, 3, 1, kemudian -1. Keputusan ujian: 5 > 0 benar, 3 > 0 benar, 1 > 0 benar, -1 > 0 palsu. Gelung berjalan 3 pusingan dan X ialah -1.
2. Apakah Count pada akhirnya?
Count ← 10
REPEAT
Count ← Count + 1
UNTIL Count >= 10
Lihat jawapan
Isi gelung berjalan sekali sebelum sebarang ujian, jadi Count menjadi 11. Kemudian 11 >= 10 benar dan gelung berhenti. Count ialah 11.
3. Mengapa gelung ini tidak pernah tamat?
N ← 10
WHILE N <> 0 DO
N ← N - 3
ENDWHILE
Lihat jawapan
N mengambil nilai 10, 7, 4, 1, -2, -5 dan seterusnya. Ia melangkaui 0 dan tidak pernah sama dengannya, jadi N <> 0 kekal benar selama-lamanya. Menggunakan WHILE N > 0 akan membetulkannya.
Seterusnya
Gelung tersilap dengan cara yang boleh diramal di hujungnya, iaitu subjek membaiki ralat off-by-one. Untuk melihat syarat berubah langkah demi langkah, gunakan pelatih jejak pseudokod, yang menghentikan gelung tidak terkawal pada had keselamatan.
Seorang guru dalam tuisyen Computer Science boleh memberi anda beberapa gelung baharu untuk dijejak sehingga ujian berhenti menjadi perkara pertama yang anda semak.