VI. Pengulangan 2
VI. Pengulangan 2
MODUL PRAKTIKUM 6
Pengulangan II
TUJUAN PRAKTIKUM
Pada bahasa pemrograman pascal, setidaknya terdapat 3 fungsi yang dapat digunakan
untuk looping, yaitu : FOR, WHILE dan REPEAT UNTIL.
Perulangan WHILE-DO
Contoh :
USES CRT;
VAR i : INTEGER;
BEGIN
i := 0;
WHILE i < 5 do
BEGIN
WRITE(i:3);
INC(i); { sama dengan i:=i+1 }
END;
END.
Hasilnya :
0 1 2 3 4
var x,a,b,c:integer;
begin
x:=0;
write(‘Masukkan batas awal ‘);read(a);
write(‘Masukkan batas akhir ‘);read(b);
write(‘Masukkan increment ‘);read(c);
while (a<=b) do
begin
x:=x+a;
writeln(‘Nilai a ‘,a);
a:=a+c;
end;
writeln(‘Jumlahnya ‘,x);
readln;
readln;
end.
var x,i,j:integer;
begin
write(‘Masukkan Nilai 1-10: ‘);readln(x);
i:=1;
j:=1;
while (i<=x) and (x<=10) do
begin
j:=1;
while(j<=i) do
begin
while (j<=i)do
begin
write(i);
j:=j+1;
end;
end;
i:=i+1;
writeln;
end;
readln;
end.
Setelah sebelumnya kita mengulas tentang pengulangan menggunakan for-to dan for-
downto, pada modul ini kita membahas tentang pengulangan tetapi menggunakan fungsi while-
do. Untuk while-do biasanya digunakan untuk membuat pengulangan yang belum pasti. Jadi
pengulangannya tergantung dari keinginan user atau pengulangannya lebih fleksibel. Untuk
penulisan standar codingnya seperti dibawah ini:
batas_awal;
while batas_akhir do
begin
statement/pernyataan_yang_akan_diulang;
end
Yang berbeda dari penggunaan while-do disini adalah batas_awal di deklarasikan sebelum while.
Berbeda dengan for yang mana batas_awal dan batas_akhir dideklarasikan berbarengan didalam
for.
Kita cobakan sebuah contoh penggunaan pengulangan while-do:
program coba;
uses crt;
var
i:integer;
begin
clrscr;
i:=1;
while i<=10 do
begin
write(i,' ')
i:=i+1;
end;
readln;
end.
Hasil:
1 2 3 4 5 6 7 8 9 10
Atau contoh lain menghitung luas bujur sangkar menggunakan perulangan while-do:
program pengulangan;
uses crt;
var
s,L:integer;
ulang:char;
begin
clrscr;
ulang:='y';
while ulang='y' do
begin
clrscr;
writeln('Menghitung Bujur Sangkar');
writeln('------------------------');
write('Masukkan sisi: ');readln(s);
L:=s*s;
writeln('Luas adalah ',L);
writeln;
write('Apakah Mau diulang (y/t)? ');read(ulang);
end;
readln;
end.
Hasil:
Menghitung Bujur Sangkar
————————
Masukkan sisi: 5
Luas adalah 25
Apakah Mau diulang (y/t)? y
Pada program diatas menggunakan pengulangan secara fleksibel yang mana pengulangan
tersebut akan terus berlanjut selama user menekan tombol y. Pengulangan akan berhenti jika user
menekan tombol selain tombol y, misalnya tombol t atau tombol yang lain. Pengulangan while-
do ini kita dapat terapkan pada pembuatan program menu menggunakan pernyataan case-of yang
sudah pernah kita bahas dipostingan sebelumnya. Silahkan kreativitaskan diri anda untuk
membuat contoh-contoh menggunakan metode pengulangan selain contoh yang kita bahas kali
ini. Sekian dulu untuk pembahasan tentang pengulangan menggunakan pengulangan while-do.
Perulangan REPEAT-UNTIL.
Contoh
VAR
i : INTEGER;
BEGIN
i:=0;
REPEAT
i:= i+1;
WRITELN(i);
UNTIL i=5;
END.
hasil :
1
2
3
4
5
Pada sintaks di atas, kelompok instruksi yang terletak di antara pasangan begin … end akan
dieksekusi. Logical_Expression menghasilkan nilai True. Jika dicermati, maka setidak-
tidaknya kelompok instruksi tersebut akan dieksekusi satu kali. Kenapa ?
Berikut adalah
penerapan pengulangan tersebut yang digunakan untuk menghitung jumlah dari deret
berikut:
Jumlah = 11 + 32 + 53 + 74 + …
program Jumlah_Deret;
uses Crt;
var Counter, Suku, Bilangan, Pangkat : byte;
Jumlah : longint;
begin
Clrscr;
writeln(‘Menghitung Jumlah dari Deret’);
writeln(‘============================’);
write (‘Masukkan Jumlah Suku Deret: ‘); readln(Suku);
Jumlah := 1; {Inisialisasi Variabel} Bilangan := 1;
Pangkat := 0;
repeat {Memulai Pengulangan}
begin
for Counter = 1 to Pangkat do
Bilangan := Bilangan *
Bilangan; Jumlah := Jumlah +
Bilangan;
inc(Bilangan, 2); {Menaikkan Nilai Bilangan dengan 2}
inc(Pangkat); {Menaikkan Nilai Pangkat dengan 1}
end;
until Bilangan > (2*Suku – 1); {Akhir Pengulangan}
writeln(‘Jumlah Deret‘,‘ = ‘, Jumlah);
readkey;
end.
REPEAT-UNTIL tersarang
REPEAT-UNTIL tersarang adalah suatu perulangan REPEAT-UNTIL yang satu berada
didalam perulangan REPEAT-UNTIL yang lainnya.
Contoh :
VAR a,b,c : REAL;
BEGIN
WRITELN('========================================');
WRITELN(' sisi A sisi B Sisi C ');
WRITELN(' =======================================');
a:= 1;
REPEAT { perulangan luar }
b := 0;
REPEAT { perulangan dalam }
c:=SQRT(a*a+b*b);
WRITELN(a:6:2, b:9:2, c:9:2); b:=b+5;
UNTIL b>25;
{ berhenti jika b lebih besar dari 5 untuk perulangan dalam }
a:=a+1;
UNTIL a>3;
{ berhenti jika a lebih besar dari 3 untuk perulangan luar }
WRITELN(' =======================================');
END.
Berikut merupakan contoh program looping menggunakan FOR, WHILE dan REPEAT UNTIL
pada Pascal.
uses wincrt;
var i : integer;
begin
writeln('Loop Menggunakan FOR');
for i := 1 to 5 do
begin
writeln('Hell-o');
writeln('this is Loop ' ,i);
end;
writeln('');
writeln('loop menggunakan repeat');
writeln('');
i :=0;
repeat
i := i +1;
writeln('Hello');
writeln('this is Loop ' ,i);
until i = 5;
i :=0;
writeln('');
writeln('Loop Menggunakan While');
writeln('');
while (i < 5) do
begin
i := i +1;
writeln('Hello');
writeln('this is Loop ' ,i);
end;
end.
Dari contoh di atas kalian bisa mengetahui perbedaan looping menggunakan FOR, WHILE dan
REPEAT UNTIL pada pascal.
SOAL - SOAL :
Buatlah program untuk soal dibawah ini dengan tampilan sebagus mungkin
(gunakan perintah Window, Textcolor dll). Jumlah suku sesuai dengan input dari
keyboard.
1. Buat deret hitung 3,7,11,15,......................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
2. Buat deret ukur 3,9,27,................................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
3. Buat tabel deret bergoyang 1,-2,4,-8,...........=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
4. Buat deret suku harmonis 1,1/2,1/3,.............=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
Modul Praktikum Algoritma dan Pemrograman Pengulangan II 8
Institut Teknologi Padang @2013 – Fakultas Teknologi Industri