jam

Rabu, 22 Oktober 2008

perulangan (looping)

Selain percabangan, konstruksi fundamental pemrograman yang lainnya adalah looping atau perulangan. DI Pascal ada 3 macam looping. Kita akan pelajari satu per satu:

1. For … to … do

Syntax:

FOR variable := nilai_awal TO nilai_akhir DO

BEGIN

  …apa_yang_diulang….

END;
  

Contoh penggunaan:

FOR i:=1 TO 5 DO

BEGIN

  Writeln(i);
END;
  

Program di atas akan menuliskan angka 1 sampai 5 ke bawah di layar. 

Jika ingin melakukan perhitungan mundur dari 5 ke 1, gunakan perintah DOWNTO sebagai pengganti TO (FOR i:=5 DOWNTO 1 DO). 


BONUS!!! Untuk variabel yang bertipe char, bisa juga menggunakan FOR dengan cara berikut:

FOR c:='A' TO 'Z' DO write(c,' ');

Atau boleh juga menulisnya dengan

FOR c:='Z' DOWNTO 'a' DO write(c,' ');

Atau untuk tipe boolean, bisa juga seperti ini:

FOR b:=false TO true DO writeln(b);
  

Bagaimana? Keren kan?
  

2. While … do

Syntax:

WHILE kondisi DO

BEGIN

  …apa_yang_dilakukan…

END;
  

Bedanya dengan FOR ... DO, adalah pada WHILE ... DO, sebelum memulai masuk ke blok begin end, ada kondisi yang harus dicek. Jika terpenuhi baru masuk ke blok BEGIN END dan terus-menerus diulang hingga kondisi tidak tercapai. Jadi bisa saja yang di dalam blok BEGIN END tidak dijalankan sama sekali.

Contoh penggunaan:


i:=1;

WHILE i<6>5;
  

Nah, itu semua adalah dasar dari pemrograman Pascal. Untuk lebih lanjut akan dibahas pada waktu berikutnya (semoga saya sempat membuat tutorial berikutnya). Berikut ini saya berikan bonus program BINTANG BERGERAK MEMANTUL-MANTUL DI LAYAR.

 

 

PROGRAM BintangMantulMantulSampaiDitekanEscape;
USES crt;
CONST
  lebar=80;
  tinggi=25;
  xawal=1;
  yawal=1;
VAR
  x,y : byte;
  dx,dy : shortint;
  c : char;
BEGIN
  {inisialisasi awal}
  x:=xawal;
  y:=yawal;
  dx:=1;
  dy:=1;
  c:=#0;
  REPEAT
  clrscr; {bersihkan layar}
  gotoxy(x,y);
  write('*'); {mencetak bintang pada posisi X,Y}
  x:=x+dx; {ubah koordinat x}
  y:=y+dy; {ubah koordinat y}
  {cek, jika sudah sampai di batas layar,
  maka ubah dx & dy untukk ganti arah}
  IF (X>=lebar) OR (X<=1) THEN dx:=-dx;   IF (Y>=tinggi) OR (Y<=1) THEN dy:=-dy;   {jika ada penekanan tombol, maka tombol tersebut dideteksi}   IF keypressed THEN c:=readkey;   delay(100); {menunda selama 100ms}   UNTIL c=#27;

END.

LOOP FOR
// file: contohfor.pas
program contohfor;
uses crt;
var
i,j :integer;
fac :integer;
begin
clrscr; fac:=1;
write('Masukkan bil yang akan dicari nilaifaKtorialnya: ');
readln(i);
for j:=i downto 1 do
fac:=fac*j;
writeln('Nilai ',i,' faktorial= ', fac);
readln;
end.
LOOP WHILE
// file: contohwhile.pas
program contohwhile;
uses crt;
var
i,j :integer;
fac :integer;
begin
clrscr; fac:=1;
write('Masukkan bil yang akan dicari nilai faktorialnya: ');
readln(i);
j:=i; // initial value
(* Nilai kondisi pada while harus true untuk bisa mengulang
statement dibawahnya *)
while (j>=1) do
begin
fac:=fac*j;
j:=j-1;
end;
writeln('Nilai ',i,' faktorial= ', fac);
readln;
end.
// file: whileascontrol.pas
program whileascontrol;
uses crt;
var
i,j :integer;
fac :integer;
ans :char;
begin
ans:='Y';
while ((ans='Y') or (ans='y')) do
begin
clrscr;
fac:=1;
write('Masukkan bil. faktorialnya: ');
readln(i);
j:=i;
while (j>=1) do
begin
fac:=fac*j;
PASCAL – Loop 9
j:=j-1;
end;
writeln('Nilai ',i,' faktorial= ', fac);
writeln();
writeln();
write('Ulangi Program ini (Y/T)?');
readln(ans);
end;
end.
LOOP REPEAT
// file: contohrepeat.pas
program contohrepeat;
uses crt;
var
i,j :integer;
fac :integer;
begin
fac:=1;
write('Masukkan bil yang akan dicari nilai factorialnya: ');
readln(i);
j:=i; // initial value
repeat
fac:=fac*j;
j:=j-1;
until (j<=1); (* Nilai kondisi setelah until harus true agar looping berhenti *) writeln('Nilai ',i,' faktorial= ', fac); readln; end. // file: repeatascontrol.pas program repeatascontrol; uses crt; var i,j :integer; fac :integer; begin clrscr; fac:=1; //Masukkan harus lebih dari 0 repeat clrscr; write('Masukkan bil. faktorialnya: '); readln(i); until (i>0);
j:=i;
repeat
fac:=fac*j;
j:=j-1;
until (j<=1); writeln('Nilai ',i,' faktorial= ', fac); readln; end. Ubah file whileascontrol.pas dalam bentuk perulangan repeat..until!

Tidak ada komentar: