Lebih jauh tentang looping

Sebagaimana yang sudah kita ketahui, bahwa looping / pengulangan memperbolehkan alur program melompat kembali ke atas. Berikut ini kita akan mecoba membaca jalannya looping dengan menjabarkan langkah demi langkah satu per satu.

Uses crt;
Var
a:integer;
Begin
Clrscr;
a:=1;
While a<=5 do
Begin
writeln(a);
a:=a+1;
End;
End.

Penjabarannya adalah sebagai berikut;
Isi nilai awal variabel a dengan 1
* Looping I
1<=5? Benar, looping dijalankan
Cetak nilai a=1
a = 1 + 1 = 2
* Looping II
2<=5? Benar, looping dijalankan
Cetak nilai a=2
a = 2 + 1 = 3
* Looping III
3<=5? Benar, looping dijalankan
Cetak nilai a=3
a = 3 + 1 = 4
* Looping IV
4<=5? Benar, looping dijalankan
Cetak nilai a=4
a = 4 + 1 = 5
* Looping V
5<=5? Benar, looping dijalankan
Cetak nilai a=5
a = 5 + 1 = 6
* Looping VI
6<=5? Salah, looping berhenti
Jadi, jika kita perhatikan dari penjabaran jalannya looping pada program diatas, looping akan diulang sebanyak 5 kali, sedangkan looping yang keenam tidak dijalankan karena nilai variabel a sudah lebih besar dari 5, sedangkan persyaratannya sudah ditentukan bahwa looping akan dikerjakan selama nilai variabel a masih lebih kecil dari 5. Jelaslah bahwa looping WHILE … DO, akan terus diulang atau dikerjakan selama kondisi atau syarat yang ditentukan bernilai BENAR. Looping WHILE … DO, akan berhenti apabila kondisi atau syaratnya sudah bernilai SALAH. Output program diatas adalah pencetakan bilangan 1 sampai dengan 5 di layar.

Looping FOR … DO

Bentuk looping yang kedua di dalam Pascal adalah looping FOR … DO. Untuk beberapa programmer pascal, bentuk looping ini lebih populer dan lebih sering digunakan karena dianggap lebih mudah pemakaiannya. Sifat looping ini adalah tidak membutuhkan pengisian nilai awal untuk variabel loopingnya dan tidak membutuhkan penambahan ataupun pengurangan otomatis di dalam loopingnya, karena looping ini akan otomatis menambah atau mengurang variabel loopingnya.
FOR <variabel>:=nilai awal TO / DOWNTO nilai akhir DO
Begin
……………………
……………………
……………………
End;
Berikut adalah contoh program yang akan menghasilkan output yang sama dengan program sebelumnya yaitu mencetak bilangan 1 sampai dengan 5.

Uses crt;
Var
a:integer;
Begin
Clrscr;
For a:=1 to 5 do
Begin
writeln(a);
End;
End.
Dapat juga kita ringkas menjadi satu baris perintah sebagai berikut;
Uses crt;
Var
a:integer;
Begin
Clrscr;
For a:=1 to 5 do writeln(a);
End.

Jadi, jika di dalam looping hanya ada satu perintah atau instruksi program, kita boleh tidak menggunakan BEGIN … END; dan menggabung satu perintah tersebut ke dalam satu baris seperti contoh diatas. Dalam contoh diatas, variabel a akan bertambah 1 secara otomatis dan nilai awal variabel a tidak perlu dimasukkan sebelum looping, karena dapat langsung dimasukkan bersamaan dengan penulisan perintah FOR a:=1 TO 5 DO WRITELN(a), yang berarti nilai awal variabel a adalah 1.
Untuk pengurangan otomatis, kita akan menggunakan DOWNTO dan nilai awal yang dimasukkan haruslah lebih besar dari nilai akhirnya. Contohnya sebagai berikut;
Uses crt;
Var
a:integer;
Begin
Clrscr;
For a:=5 downto 1 do writeln(a);
End.

Program diatas akan mencetak kebalikan, yaitu bilangan 5 sampai dengan 1. Jadi dengan DOWNTO, pengurangan otomatis juga dilakukan pada setiap looping. Looping FOR … DO, akan berhenti setelah nilai variabelnya mencapai nilai akhir yang diberikan. Dalam contoh terakhir, looping akan berhenti apabila nilai a sudah sama dengan 1.

Looping REPEAT … UNTIL

Bentuk looping yang ketiga yang dikenal di dalam Pascal adalah looping REPEAT … UNTIL. Bentuk looping in adalah kebalikan dari looping WHILE … DO, dimana looping ini akan terus dikerjakan selama syarat atau kondisinya bernilai SALAH. Jika kondisinya sudah bernilai BENAR, maka looping akan berhenti. Jika looping WHILE … DO meletakkan syarat dan kondisinya pada baris awal looping, maka looping REPEAT … UNTIL meletakkan syarat dan kondisinya di baris terakhir looping.
Bentuk umumnya sebagai berikut;
REPEAT
……………………
……………………
……………………
UNTIL <syarat>;
Dapat kita lihat bahwa looping REPEAT … UNTIL mengapit semua instruksi program di dalam loopingnya tanpa menggunakan perintah BEGIN … END;

Perhatikan contoh programnya;
Uses crt;
Var
a:integer;
Begin
Clrscr;
a:=1;
Repeat
writeln(a);
a:=a+1;
Until a>5;
End.

Program diatas akan mempunyai output yang sama dengan program sebelumnya yang menggunakan looping FOR … DO dan WHILE … DO. Perhatikan bagaimana syarat atau kondisi looping REPEAT … UNTIL yang diletakkan dibawah. Marilah kita mencoba untuk menuliskan penjabaran dari program di atas.
Isi nilai awal variabel a dengan 1
* Looping I
Cetak nilai a=1
a = 1 + 1 = 2
2>5? Salah, looping dilanjutkan
* Looping II
Cetak nilai a=2
a = 2 + 1 = 3
3>5? Salah, looping dilanjutkan
* Looping III
Cetak nilai a=3
a = 3 + 1 = 4
4>5? Salah, looping dilanjutkan
* Looping IV
Cetak nilai a=4
a = 4 + 1 = 5
5>5? Salah, looping dilanjutkan
* Looping V
Cetak nilai a=5
a = 5 + 1 = 6
6>5? Benar, looping berhenti
Sebagai latihan, cobalah anda membuat sebuah program untuk mencetak bilangan genap 2, 4, 6, 8, 10 berurutan dengan menggunakan tiga macam looping yang berbeda.