Salah satu perkara yang komputer sangat baik adalah pengulangan. Bagaimanakah kita dapat meyakinkan Karel untuk melaksanakan kod blok beberapa kali? Untuk melihat bagaimana pengulangan dapat digunakan, pertimbangkan tugas menempatkan 42 beeper s:
Oleh kerana anda tahu bahawa terdapat beeper s tepat untuk diletakkan, pernyataan kawalan yang anda perlukan adalah a untuk gelung , yang menyatakan bahawa anda ingin mengulang beberapa operasi beberapa kali yang tetap. Struktur pernyataan itu kelihatan rumit terutamanya kerana ia sebenarnya jauh lebih kuat daripada apa yang diperlukan oleh Karel. Satu-satunya versi sintaks yang digunakan Karel ialah:
for(int i = 0; i < kiraan ; i++){
pernyataan yang akan diulang
}
Kami akan menemui semua butiran gelung untuk kemudian di kelas. Buat masa ini anda harus membaca garis ini sebagai cara untuk menyatakan, "ulang kenyataan di antara kurungan kerintingkiraanmasa. "Kita boleh menggunakan yang baru ini untuk gelung untuk meletakkan 42 beeper s dengan menggantikankiraandengan 42 dan meletakkan arahan itu putBeeper() di dalam blok kod gelung. Kami memanggil arahan dalam kod menghalangnya badan :
Kod di atas boleh diedit. Cuba beeper supaya ia meletakkan hanya 15 beeper s.
Contoh terdahulu memberi kesan bahawa gelung untuk mengulangi satu baris kod. Bagaimanapun badan bagi gelung (pernyataan yang diulangi) boleh menjadi pelbagai baris. Berikut adalah contoh program yang meletakkan beeper di setiap penjuru dunia:
Bayar perhatian yang sangat dekat dengan cara program mengalir menerusi kenyataan kawalan ini. Program run s melalui set arahan dalam badan gelung satu pada satu masa. Ia mengulangi badan empat kali.
Mungkin satu bahagian yang paling rumit untuk menulis sebuah gelung ialah anda memerlukan keadaan dunia pada akhir gelung (the postkondition ) menjadi keadaan yang sah di dunia untuk permulaan gelung (yang prasyarat ). Dalam contoh di atas, andaian sepadan. Masa yang baik. Pada permulaan gelung itu, Karel sentiasa di atas sebuah persegi dengan tiada beeper s menghadap sudut kosong seterusnya. Bagaimana jika anda memadam belokKiri pada hujung gelung? Poskondisi pada akhir lelaran pertama tidak lagi memuaskan andaian yang dibuat tentang Karel menghadapi sudut kosong seterusnya. Kod ini boleh diedit. Cuba hapuskan turnLeft(); perintahkan untuk melihat apa yang berlaku!
Secara teknik, badan bagi gelung boleh mengandungi sebarang kod aliran kawalan, walaupun gelung lain. Berikut adalah contoh bagi gelung yang mengulangi panggilan kepada kaedah yang juga mempunyai gelung. Kami panggil ini gelung "bersarang". Cuba baca program ini, dan fahami apa yang berlaku sebelum run melihatnya: