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.