Loop adalah elemen umum dalam semua bahasa pemrograman. Delphi memiliki tiga struktur kontrol yang menjalankan blok kode berulang kali: untuk, ulangi... sampai dan sementara... melakukan.
Loop UNTUK
Misalkan kita perlu mengulang operasi beberapa kali.
// tampilkan 1,2,3,4,5 kotak pesan
var j: integer;
mulai
untuk j: = 1 untuk 5 melakukan
mulai
ShowMessage ('Box:' + IntToStr (j));
akhir;
akhir;
Nilai variabel kontrol (j), yang benar-benar hanya sebuah penghitung, menentukan berapa kali sebuah pernyataan berjalan. Kata kunci untuk membuat penghitung. Dalam contoh sebelumnya, nilai awal untuk penghitung diatur ke 1. Nilai akhir diatur ke 5.
Ketika pernyataan for mulai menjalankan variabel counter diatur ke nilai awal. Delphi dari memeriksa apakah nilai untuk penghitung kurang dari nilai akhir. Jika nilainya lebih besar, tidak ada yang dilakukan (eksekusi program melompat ke baris kode segera setelah blok kode loop). Jika nilai awal kurang dari nilai akhir, badan loop dijalankan (di sini: kotak pesan ditampilkan). Akhirnya, Delphi menambahkan 1 ke penghitung dan memulai proses lagi.
Kadang-kadang perlu untuk menghitung mundur. Itu ke kata kunci menentukan bahwa nilai penghitung harus dikurangi dengan satu setiap kali loop dieksekusi (tidak mungkin untuk menentukan kenaikan / penurunan selain dari satu). Contoh dari for for yang menghitung mundur.
var j: integer;
mulai
untuk j: = 5 ke 1 melakukan
mulai
ShowMessage ('T minus' + IntToStr (j) + 'detik');
akhir;
ShowMessage ('Untuk urutan dieksekusi!');
akhir;
Catatan: penting bahwa Anda tidak pernah mengubah nilai variabel kontrol di tengah loop. Melakukannya akan menyebabkan kesalahan.
Bersarang untuk loop
Menulis loop untuk di dalam loop lain untuk (loop bersarang) sangat berguna ketika Anda ingin mengisi / menampilkan data dalam tabel atau kisi.
var k, j: integer;
mulai
// loop ganda ini dijalankan 4x4 = 16 kali
untuk k: = 1 untuk 4 melakukan
untuk j: = 4 ke 1 melakukan
ShowMessage ('Kotak:' + IntToStr (k) + ',' + IntToStr (j));
akhir;
Aturan untuk loop berikutnya untuk bersarang adalah sederhana: loop dalam (penghitung j) harus diselesaikan sebelum pernyataan berikutnya untuk loop luar ditemui (k counter). Kita dapat memiliki loop bersarang tiga kali lipat atau empat kali lipat, atau bahkan lebih.
Catatan: Secara umum, kata kunci mulai dan akhir tidak sepenuhnya diperlukan, seperti yang Anda lihat. Jika awal dan akhir tidak digunakan, pernyataan segera setelah pernyataan for dianggap tubuh loop.
Loop FOR-IN
Jika Anda memiliki Delphi 2005 atau versi yang lebih baru, Anda dapat menggunakan iterasi gaya "untuk" elemen-dalam-koleksi di atas wadah. Contoh berikut menunjukkan iterasi di atas ekspresi string: untuk setiap karakter char memeriksa apakah karakternya 'a' atau 'e' atau 'i'.
const
s = 'Tentang Pemrograman Delphi';
var
c: char;
mulai
untuk c di s melakukan
mulai
jika c di ['a', 'e', 'i'] kemudian
mulai
// lakukan sesuatu
akhir;
akhir;
akhir;
WHILE dan REPEAT loop
Terkadang kita tidak akan tahu persis berapa kali lingkaran harus berputar. Bagaimana jika kita ingin mengulang operasi sampai mencapai tujuan tertentu?
Perbedaan paling penting antara while-do loop dan repeat-hingga loop adalah kode dari pernyataan ulangi selalu dieksekusi setidaknya sekali.
Pola umum ketika kita menulis tipe pengulangan (dan sementara) dalam Delphi adalah sebagai berikut:
ulang
mulai
pernyataan;
akhir;
sampai kondisi = benar
sementara kondisi = benar melakukan
mulai
pernyataan;
akhir;
Berikut adalah kode untuk menampilkan 5 kotak pesan berturut-turut menggunakan repeat-hingga:
var
j: integer;
mulai
j: = 0;
ulang
mulai
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
akhir;
sampai j> 5;
akhir;
Seperti yang Anda lihat, pernyataan repeat mengevaluasi kondisi di akhir loop (oleh karena itu repeat loop dieksekusi pasti paling tidak sekali).
Pernyataan while, di sisi lain, mengevaluasi suatu kondisi di awal loop. Karena tes sedang dilakukan di atas, kita biasanya perlu memastikan bahwa kondisi itu masuk akal sebelum loop diproses, jika ini tidak benar, penyusun dapat memutuskan untuk menghapus loop dari kode.
var j: integer;
mulai
j: = 0;
sementara j <5 melakukan
mulai
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
akhir;
akhir;
Istirahat dan Lanjutkan
Prosedur Istirahat dan Lanjutkan dapat digunakan untuk mengontrol aliran pernyataan berulang: Istirahat prosedur menyebabkan aliran kontrol untuk keluar untuk, sementara, atau mengulangi pernyataan dan melanjutkan di yang berikutnya pernyataan mengikuti loop pernyataan. Lanjutkan memungkinkan aliran kontrol untuk melanjutkan ke iterasi berikutnya dari operasi berulang.