Bab 6 - Perulangan
Ketika kita menjalankan suatu statement yang sama dalam satu blok secara berulang, kita bisa menggunakan blok perulangan agar efisien. Perhatikan kode berikut...
begin
writeln(1);
writeln(2);
writeln(3);
writeln(4);
writeln(5);
end.
...itu untuk mencetak angka 1-5, masalahnya, kalau mencetak 10000 angka? Akan sangat tidak efisien menggunakan cara diatas.
Bandingkan dengan yang ini.
var
i : integer;
begin
for i := 1 to 10000 do begin
writeln(i);
end;
end.
Lebih efisien, bukan? Marilah kita langsung bahas jenis-jenis perulangan di Pascal.
Perulangan For
Perulangan jenis ini digunakan untuk mengulang statement dengan jumlah yang pasti. Mengulang sebanyak 10 kali, 100 kali, fixed.
Kode diatas menggunakan perulangan for.
Bentuk umum dari perulangan ini adalah...
for variabel_counter := nilai_awal to nilai_akhir do begin
{ statement yang ingin diulang.. }
end;
variabel_counter bebas nama variabel nya..
Kode ini akan mengulang dari 1 hingga 10000
var
i : integer;
begin
for i := 1 to 10000 do begin
writeln(i);
end;
end.
Jika perulangannya menurun, maka seperti ini
for variabel_counter := nilai_awal downto nilai_akhir do begin
{ statement yang ingin diulang.. }
end;
Keyword to diganti dengan downto.
Perulangan while
Perulangan jenis ini mensyaratkan adanya kondisi yang mana jika kondisi bernilai true, maka perulangan akan terus berjalan.
Jika kode di perulangan for diubah ke bentuk perulangan while, maka seperti ini...
var
i : integer;
begin
i := 1;
while (i
Link bagian ini https://github.com/99ridho/handbook-pascal-osk/blob/master/06-perulangan.md#perulangan-while
Jika kondisi dalam perulangan while selalu true, maka akan mengakibatkan infinite loop.
Perulangan Repeat-until
Perulangan jenis ini merupakan kebalikan dari while. Statement akan diulang jika kondisi masih bernilai false.
Jika kode di perulangan while diubah ke bentuk perulangan repeat-until, maka seperti ini...
var
i : integer;
begin
i := 1; { inisialisasi i dengan 1 }
repeat
writeln(i);
i := i + 1; { increment nilai i sebanyak 1 }
until (i > 10000); { perulangan berhenti jika i sudah melebihi 10000 }
end.
Increment dan Decrement
Selain menggunakan operator aritmatika, untuk mengincrement/decrement nilai kita juga bisa menggunakan fungsi inc() untuk mengincrement dan dec() untuk mendecrement nilai.
var
i : integer;
begin
i := 1;
i := i + 1; { bisa ditulis sebagai inc(i, 1) }
inc(i, 2); { sama dengan i := i + 2 }
dec(i, 3); { sama dengan i := i - 3 }
end.