Pengulangan adalah suatu cara untuk mengulangi eksekusi blok instruksi sampai suatu kondisi tertentu dipenuhi.
Bentuk Pengulangan FOR
Bentuk
pengulangan ini adalah yang paling sederhana, jika kita ingin melakukan
aksi sebanyak N kali, maka kita bisa (dan sebaiknya) menggunakan bentuk
pengulangan ini.
Pengulangan dilakukanmulai dari suatu indeks awal, sampai dengan indeks akhir, misalnya:
for i:=1 to 5 do writeln('Hello');
akan mencetak 5 kali kata hello. Indeks loop (dalam kasus ini i) berguna karena dapat diakses di dalam loop, seperti ini:
for i:=1 to 5 do writeln(i);
yang
akan mencetak angka 1 sampai dengan 5. Bentuk loop ini sangat
sederhana, karena kita bisa memastikan bahwa loop pasti akan berhenti,
yaitu ketika nilai indeks sudah sama dengan nilai akhirnya. Perhatian:
Anda disarankan untuk TIDAK mengubah INDEKS LOOP dalam program, seperti
ini:
for i:=1 to 5 do i:=i+2;
Karena hasilnya mungkin tidak dapat diprediksi
Bentuk Pengulangan WHILE - DO
Terkadang
jumlah pengulangan yang akan dilakukan belum diketahui di awal sehingga
kita tidak bisa menggunakan bentuk perulangan for. Bentuk loop ini
adalah
while (kondisi) do
begin
aksi;
end;
Aksi
dalam while akan dilakukan selama kondisi memiliki nilai true, dan aksi
mungkin tidak dilakukan sama sekali jika di awal loop kondisi sudah
bernilai false. Hal yang perlu diperhatikan dalam loop ini adalah
kepastian bahwa loop akan berhenti (bahwa suatu saat kondisi akan
bernilai false).
Bentuk Pengulangan REPEAT - UNTIL
Bentuk
pengulangan while do mungkin tidak pernah mengeksekusi instruksi di
dalam loop satu kali pun jika kondisi sudah tidak terpenuhi. Jika
diinginkan agar minimal sebuah aksi dieksekusi sekali, maka gunakan
bentuk perulangan repeat until
.
repeat
aksi;
until kondisi;
Aksi akan diulangi sampai kondisi bernilai true. bentuk ini sama saja dengan:
aksi;
while (not kondisi) do
begin
aksi;
end;
Karena loop repeat bisa dikonversi ke bentuk while, maka hal yang perlu diperhatikan sama yaitu bahwa loop pasti akan berhenti.
NESTED LOOP (Loop Bersarang)
Nested
loop adalah loop yang memiliki loop di dalam bagian aksinya. Nested
loop dapat dibuat dengan aneka bentuk loop yang sudah ada. Jadi kita
bisa membuat loop for di dalam loop for, atau loop while dalam repeat
until. Jumlah loop di dalam loop bisa sangat banyak (hanya dibatasi oleh
kemampuan kompilator dalam menangani loop bersarang).
Nested loop for dapat memakai indeks loop di luarnya sebagai batas. Potongan program ini (dengan I dan j adalah integer):
for i:=1 to 5 do
begin
for j:=1 to i do
begin
writeln(“*”);
end;
end;
Akan mencetak:
*
**
***
****
*****
Invarian Loop
Invarian Loop adalah kondisi dalam loop yang selalu benar sepanjang loop tersebut berjalan.
Contohnya dalam loop ini:
var i, jumlah :integer
begin
i:=0;
jumlah:=0;
while (i<5) do
begin
jumlah:=jumlah + i;
i:=i+1;
end;
end.
Dalam
loop ini invarian loop adalah jumlah akan selalu ditambahkan dengan
nilai i saat ini, dan nilai i akan selalu bertambah dengan satu dari
nilai pada loop berikutnya, sehingga loop dijamin akan berhenti.
Invarian
loop untuk loop sederhana mudah diperiksa, namun di dalam loop mungkin
ada analisa kasus yang akan mempersulit pemeriksaan apakah loop sudah
benar.
Semoga bermanfaat, Jangan lupa Like This Yo....
Sumber : http://pemrogramanmudah.blogspot.com