Pernyataan Perulangan
Pengulangan (loop)
merupakan bentuk yang sering ditemui di dalam suatu program aplikasi.
Dalam hampir setiap program yang kompleks mutlak memerlukan suatu
perulangan dan percabangan. Tujuan perulangan disini adalah untuk
mengulang statement atau blok statement berulang kali sesuai sejumlah
yang ditentukan pemakai. Pengulangan dapat dilakukan sejumlah kali,
atau sampai kondisi berhenti dan pengulangan tercapai. Di dalam bahasa
Pascal, dikenal tiga macam perulangan, yaitu dengan menggunakan
pernyataan For, While-Do, dan Repeat…Until.
Pernyataan FOR
Pernyataan for adalah konstruksi pengulangan tanpa kondisi, artinya
instruksi-instruksi di dalam badan pengulangan diulangi sejumlah kali
yang di spesifikasikan oleh pemrogram. Dalam hal ini, jumlah
pengulangan sudah diketahui sebelum konstruksi pengulangan eksekusi.
Perulangan dengan pernyataan For digunakan untuk mengulang pernyataan
atau satu blok pernyataan berulang kali sejumlah yang ditentukan. Jumlah
pengulangan diketahui atau dapat ditentukan sebelum eksekusi. Untuk
mencacah beberapa kali pengulangan dilakukan, diperlukan sebuah peubah (variable) pencacah (counter).
Peubah ini nilainya selalu bertambah satu setiap kali pengulangan
dilakukan. Jika cacah pengulangan sudah mencapai jumlah yang
dispesifikasikan, maka proses pengulangan berhenti. Perulangan dengan
pernyataan For dapat berbentuk perulangan positif, perulangan negatif
dan perulangan tersarang.
Perulangan Positif
Perulangan
positif adalah perulangan dengan penghitung dari kecil ke besar atau
pertambahan positif. Perulangan positif dapat dibentuk dengan
menggunakan pernyataan For-To-Do, dengan bentuk umum:
For variabel-kontrol:=nilai awal To nilai akhir Do
pernyataan
Contoh perulangan positif :
Contoh 1. Mencetak “saya sedang belajar for” sebanyak 5 kali.
Program cetak;
Uses wincrt;
Var
I:Integer;
Begin
For I:= 1 to 5 Do Writeln(‘sedang belajar for’);
End.
Contoh 2. Menjumlahkan deret 1 sampai N (1+2+3…+N). N adalah bilangan bulat positif.
Program penjumlahan_deret;
Uses wincrt;
Var
N :integer;
I :integer;
Jumlah:integer;
Begin
Write (‘berapa N ?’);readln(N);
Jumlah:=0;
For I := 1 to N do
Begin
Jumlah := jumlah + i
End;
Writeln (‘jumlah deret = ‘ , jumlah);
End.
Perulangan Negatif
Perulangan negatif adalah perulangan dengan penghitung dari besar ke
kecil atau pertambahan negatif. Perulangan negatif dapat dibentuk dengan
menggunakan pernyataan For-DownTo-Do, dengan bentuk umum:
For variabel-kontrol := nilai awal DownTo nilai akhir Do
penyataan
Contoh perulangan negatif :
Contoh 3. Mencetak menurun angka 5 sampai dengan 1
Program cetak_menurun;
Uses wincrt;
Var
I:integer;
Begin
For I:=5 downto 1 do
Begin
Writeln(I);
End;
End.
Perulangan Bersarang
Perulangan bersarang adalah perulangan yang berbeda di dalam perulangan
yang lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu
sampai habis, kemudian perulangan yang lebih luar baru akan akan
bertambah, mengerjakan perulangan yang lebh dalam lagi mulai dari nilai
awalnya dan seterusnya.
Contoh perulangan bersarang:
Contoh 4. Mencetak matrix:
1 1 1 2 1 3
2 1 2 2 2 3
3 1 3 2 3 3
4 1 4 2 4 3
5 1 5 2 5 3
Program cetak2;
Uses wincrt;
Var
I,J:Integer;
Begin
For I:=1 to 5 Do
Begin
For j:=1 to 3 Do
Begin
Write(I:8,J:3);
End;
Writeln;
End;
End.
Pernyataan WHILE
Pada struktur WHILE, aksi (atau runtunan aksi) akan dilaksanakan berulang kali selama kondisi bernilai true. Jika kondisi bernilai false,
badan pengulangan tidak akan dilaksanakan, yang berarti pengulangan
selesai. Yang harus diperhatikan adalah pengulangan harus berhenti.
Pengulangan yang tidak pernah berhenti menandakan bahwa logika
pemrograman tersebut salah. Pengulangan berhenti apabila kondisi
bernilai false. Agar kondisi suatu saat bernilai false, maka di dalam badan pengulangan harus ada instruksi yang mengubah nilai variabel kondisi.
while kondisi do
aksi
Contoh 1. Perulangan dengan while
Program perulanganwhile;
Uses wincrt;
Var
I:integer;
Begin
writeln('Program Perulangan dengan While');
I:=1;
While i<= 10 do
Begin
Writeln(i); I:=i+1;
End;
End.
Contoh 2. Menghitung rata-rata dengan while dengan syarat nilai tidak boleh nol.
Program rerata2;
uses wincrt;
var i,x,jumlah:integer;
rerata:real;
begin
writeln('Masukan nilai-nilai (0 untuk berhenti)=');
readln(x);
i:=0;
while x<>0 do
begin
i:=i+1;
jumlah:=jumlah+x;
read(x);
end;
rerata:=jumlah/i;
writeln(‘Jumlah=’,jumlah);
writeln(‘Rerata=’,rerata);
end.
Pernyataan REPEAT
REPEAT...UNTIL berfungsi hampir sama dengan WHILE...DO. Pada
REPEAT...UNTIL, looping akan berhenti justru ketika kondisi bernilai
TRUE. Selain itu kondisi akan diuji pada akhir perulangan sehingga blok
di dalam perulangan akan dijalankan minimal satu kali walaupun kondisi
yang ada masih FALSE. Repeat – Until digunakan untuk mengulang
statement-statemen atau blok statement sampai (Until) kondisi yang
diseleksi di Until tidak terpenuhi.
Perbedaannya, pengulangan Repeat-Until dengan While-Do terletak pada
letak pengecekan kondisi. Jika pada pernyataan While-Do kondisi dicek
pada awal blok pernyataan yang harus diulang, sedangkan pada pernyataan
Repeat Until, kondisi dicek pada akhir blok pernyataan yang harus
diulang. Perbedaan yang lain, bila pernyataan while mengulang pernyataan
selama kondisi masih terpenuhi, pernyataan repeat..until mengulang
pernyataan selama kondisi belum terpenuhi. Bentuk umum penyataan
repeat..until adalah sebagai berikut.
Repeat
(pernyataan-pernyataan yang akan diulang)
until kondisi
Contoh 1. program mencetak 5 bilangan bulat pertama menggunakan repeat-until
Program cetak;
Uses wincrt;
Var
i : Integer;
Begin
i:=0;
Repeat
i:= i+1;
Writeln (i);
Until i=5;
End.
Contoh 2. Program mencetak ulangan ke-1 sampai ke-10
Uses wincrt;
Var
n : integer;
Begin
n:= 1;
Repeat
Writeln ('Ulangan ke :',n);
n:= n + 1;
Until n >= 10;
Readln;
End.
Contoh 3. Program menghitung berat badan ideal
program berat_badan;
uses wincrt;
var
t,m:real;
j:char;
begin
repeat
begin
write('Masukkan tinggi badan Anda=');readln(t);
m:=((t-100)-(0.1*(t-100)));
writeln('Berat ideal Anda= ',m:2:0);
write('Anda Ingin menghitung lagi?=');readln(j);
end;
until (j<>'y');
end.
Pernyataan Repeat – Until tersarang
Repeat – Until tersarang adalah suatu perulangan Repeat – Until yang satu berada didalam perulangan Repeat – Until yang lainnya.
Contoh 4: Program mencetak baris dan kolom menggunakan repeat until bersarang
Program Perulangan_Repeat_2;
Var I, J : Integer;
Begin
I:= 0;
Repeat
I:= I + 1;
J:= 0;
Repeat
J:= J + 1;
Writeln (I : 5, J : 5);
Until J = 3;
Until j = 3;
End.
Contoh 5: program menghitung gaji bersih pegawai. Input : nama, alamat,
golongan (A dan B), dan status (tidak menikah, janda, duda, sudah
menikah). Jika termasuk golongan A maka gaji pokok Rp.500.000. Jika
golongan B maka gaji pokok Rp.1000.000. jika status sudah menikah maka
mendapatkan tunjangan sebesar 10 % dari gaji pokok, selain itu tidak
mendapatkan tunjangan. Gaji bersih pegawai adalah gaji pokok +
tunjangan. Output : nama, alamat, golongan, status, tunjangan, total
gaji.
Program gaji;
uses crt;
var
gapok: longint;
gaji,tunj: real;
gol: char;
nama, alamat, status: string;
begin
clrscr;
write('Masukkan nama : '); readln(nama);
write('Masukkan alamat : '); readln(alamat);
repeat
write('Masukkan golongan : '); readln(gol);
gol := UpCase(gol);
until (gol = 'A') or (gol = 'B');
repeat
write('Masukkan status : '); readln(status);
until (status='tidak menikah') or (status='janda') or
(status = 'duda') or (status='sudah menikah');
if gol = 'A' then
gapok := 500000
else
gapok := 1000000;
if status = 'sudah menikah' then
tunj := 0.1 * gapok
else
tunj := 0;
gaji := gapok + tunj;
clrscr;
writeln('Nama anda adalah ',nama,' dan beralamat di ',alamat);
write('Anda bekerja di Golongan ',gol);
writeln(' sehingga gaji pokok anda sebesar Rp', gapok);
writeln('Status anda adalah ', status);
writeln('Sehingga anda mendapat tunjangan sebesar Rp', tunj:0:0);
writeln('Berdasarkan hal tersebut, total gaji anda sebesar Rp', gaji:0:0);
readln;
end.