PERULANGAN Pertemuan VI
Struktur Pengulangan • Secara alamiah, suatu proses bisa berupa proses berurutan dari awal hingga selesai, pilihan berdasarkan kondisi tertentu atau pengulangan bedasarkan batasan tertentu pula. PASCAL menyediakan beberapa konstruksi perintah untuk melakukan proses-proses itu, yaitu: 1. For ... to ... do 2. While ... do 3. Repeat ... until Beberapa kemungkinan proses pengulangan adalah jumlah pengulangan sudah tertentu atau ditentukan dalam program atau jumlah pengulangan tidak tentu tergantung banyak data yang harus diproses atau kenginan pemakai.
Perulangan FOR Digunakan bila jumlah pengulangan sudah diketahui atau sudah tertentu.
Statement FOR
FOR
Variabel kontrol
:=
Nilai-awal
TO Nilai-akhir DOWN TO
DO
Statement
• Contoh: Misalkan i adalah suatu variabel dalam integer For i:=1 to 5 do begin writeln(‘mari membuat program’); end; Akan Menghasilkan : mari membuat program mari membuat program mari membuat program mari membuat program mari membuat program • sebanyak lima baris, kemudian berhenti. Apabila kita akan melakukan pengulangan secara ‘cacah mundur’ kita bisa memakai kata kunci ‘downto’
SYNTAX : for variabel:=
downto do begin : : perintah; : : end; For i:=5 downto 1 do begin writeln(‘mari membuat program’); end;
Contoh : Setiap akhir minggu Melly, seorang mahasiswa yang mendapatkan kiriman biaya hidup bulanan dengan jumlah agak pas-pasan, selalu mencatat pengeluarannya perminggu di luar sewa kamar selama satu bulan. Di akhir bulan ia menghitung total pengeluarannya selama sebulan dan menghitung rerata pengeluarannya per minggu selama bulan itu. Bila sebulan dianggap 4 minggu, buat program komputer untuk menghitung pengeluaran Tertib seperti itu.
Minggu ke pengeluaran 1
170000
2
175000
3
175000
4
185000
Penyelesaian: 1. Rumus penyelesaian: rerataOHM = SUM( ongkosHPM[i] )/m; i = 1 .. m, m = 4. 2. Algoritma: 2.1 Kosongkan variabel penjumlah (accumulator) jumlahOHB - total ongkos hidup perbulan. 2.2 Baca data ongkosHPM - ongkos hidup minggu ke i. 2.3 Tambahkan ongkosHPM ke jumlahOHB, jumlahOHB = jumlahOHB + ongkosHPM. 2.4 Ulangi 2.2 dan 2.3 hingga 4 kali. 2.5 rerataOHM = jumlahOHB / 4.
program hitung_rerataOHB; uses winCRT; var ongkosHPM, jumlahOHB, rerataOHM : real; i, m : integer; begin jumlahOHB := 0.0; { Nilai awal penjumlah } m := 4; { Jumlah minggu dalam sebulan dianggap 4 } for i := 1 to m do begin write('Data minggu ke : ', i,' : '); readln(ongkosHPM); jumlahOHB := jumlahOHB + ongkosHPM; end; rerataOHM := jumlahOHB/m; writeln('Total ongkos hidup per bulan = Rp ',jumlahOHB:7:2); writeln('Rerata ongkos hidup per minggu =Rp ',rerataOHM:7:2); end.
Output :
Perulangan tersarang (nesteed loop) Perulangan yang berada dalam perulangan yang lainnya. Perulangan yang lebih dalam akan di proses terlebih dahulu sampai habis, kemuadian perulangan yang lebih luar baru akan bertambah, mengerjakan perulangan yang lebih dalam lagi mulai dari nilai awalnya dan seterusnya.
uses wincrt; var i,j : integer; begin for i:=1 to 5 do begin for j:=1 to 5 do write (i:8,j:3); writeln; end; end.
Struktur WHILE <Ekspresi Boolean> DO <Statement> • Perintah-perintah akan dilaksanakan apabila ekspresi boolean dalam keadan benar. Di dalam loop ada nilai yang mengontrol loop, yang nilainya harus berubah sehingga pada akhirnya program akan keluar dari loop.
while <ekspresi boolean> do begin : : perintah; : : end;
uses wincrt; var i: integer; begin i:=0; while i<5 do begin writeln (i); i:=i+1; end; end. Contoh lain : buku Yogiyanto, hal 132.
Struktur REPEAT... UNTIL Pernyataan repeat...until hampir sama dengan pernyataan while...do, tetapi dengan pernyataan repeat, akan terjadi paling tidak akan terjadi satu kali eksekusi statemen. Logika dari struktur ini adalah seperti berikut:
repeat : : perintah; : : until <ekspresi boolean>;
uses wincrt; var i: integer; begin i:=0; repeat i:=i+1; writeln (i); until i=5; end.
Perbedaan Repeat…Until dan While-Do • Paling sedikit statement-statement di dalam perulangan Repeat…Until diproses sekali, karena seleksi kondisi ada pada statement Until yang terletak di bawah. Sedang pada struktur While-Do paling sedikit dikerjakan nol kali, karena seleksi kondisi ada pada statement While yang terletak diatas, sehingga kalau kondisi sudah tidak terpenuhi maka tidak akan masuk ke dalam lingkungan perulangannya.
• Pada Repeat…Until dapat tidak dipergunakan blok statement (tidak diperlukan Begin dan End untuk menunjukkan batas perulangannya), karena batas perulangan sudah ditunjukkan oleh Repeat sampai dengan Until (Repeat dan Until sebagai pengganti Begin dan End).