Saturday, February 11, 2012

Program Control

Dalam sebuah program, diperlukan kontrol untuk mengatur tujuan jalannya program.
Terdapat dua pengaturan, kondisional dan iterasional.


Kondisional
Kondisional adalah pengaturan yang didasarkan pada suatu kondisi, dilihat dari terpenuhi-tidak-nya suatu kondisi tersebut.
Ada dua tipe pengaturan kondisional:

if [condition] then ...
Contoh program: (menentukan sebuah bilangan merupakan bil. nol, genap, atau ganjil
var
  n : integer;
begin
  readln(n);
  if (n=0) then
  begin
    writeln(n,' itu nol');
  end else if (n mod 2=0) then
  begin
    writeln(n,' itu genap');
  end else
  begin
    writeln(n,' itu ganjil');
  end;
end.

Cobalah untuk input yang berbeda-beda.

case [variable/expression] of ...
Contoh program: (menentukan sebuah bilangan merupakan bil. nol, genap, atau ganjil
var
  n : integer;
begin
  readln(n);
  case (n mod 2) of
    0:writeln(n,' itu genap');
    1:writeln(n,' itu ganjil');
  end;
end.

Cobalah untuk input yang berbeda-beda.


Pengulangan
Andaikan kita mau membuat program yang mengeluarkan output:
This is a line.
This is another line.
This is another line.
This is another line.
This is another line.
This is another line.
This is another line.
This is another line.
This is another line.
This is another line.


Ada dua cara untuk menulis output seperti di atas. Pertama adalah cara tradisional/primitif:
writeln('This is a line.');
writeln('This is another line.');
writeln('This is another line.');
writeln('This is another line.');
writeln('This is another line.');
writeln('This is another line.');
writeln('This is another line.');
writeln('This is another line.');
writeln('This is another line.');
writeln('This is another line.');

Cara seperti ini pasti lebih menyulitkan penulisannya, apabila jumlah baris lebih dari contoh di atas.
Cara yang lebih simpel adalah menggunakan pengulangan/iterasi:

Cara 1: for [variable]:=[nilai awal] [to/downto] [nilai akhir] do ...
to digunakan apabila [nilai akhir] lebih besar dari [nilai awal].
downto digunakan apabila [nilai akhir] lebih kecil dari [nilai awal].
Contoh untuk output seperti di atas:
var
  i : integer;
begin
  writeln('This is a line.');
  for i:=1 to 9 do
  begin
    writeln('This is another line.');
  end;
end.


Cara 2: while [kondisi true] do ...
Contoh untuk output seperti di atas:
var
  i : integer;
begin
  writeln('This is a line.');
  i:=0;
  while (i<9) do
  begin
    writeln('This is another line.');
    inc(i);
  end;
end.


Cara 3: repeat ... until [kondisi false]
Contoh untuk output seperti di atas:
var
  i : integer;
begin
  writeln('This is a line.');
  i:=0;
  repeat
    writeln('This is another line.');
    inc(i);
  until (i>=9);
end.


Kapan suatu cara pengulangan digunakan?
Cara 1 dipakai saat kita telah mengetahui sebelumnya nilai awal dan nilai akhir.
Cara 2 dan cara 3 sebenarnya serupa, namun perbedaannya adalah, cara 2 melakukan pengecekan [kondisi true] di awal sebelum pengulangan dieksekusi, sedangkan cara 3 melakukan pengecekan [kondisi false] di akhir pengulangan, setelah paling tidak melakukan satu kali pengulangan.
Contoh:
var
  i : integer;
begin
  i:=0;
  while (i>0) do
  begin
    writeln('Halo Dunia!');
    dec(i);
  end;
end.

Potongan program di atas tidak akan mengeluarkan output apa-apa karena nilai variabel 'i' telah memiliki nilai < 0, sehingga tidak masuk pada bagian pengulangan.
Sedangkan, jika kita implementasikan pada cara 3:
var
  i : integer;
begin
  i:=0;
  repeat
    writeln('Halo Dunia!');
    dec(i);
  until (i<=0);
end.

Dalam program ini sebenarnya dari awal, nilai variabel 'i' tidak lagi memenuhi kondisi untuk perulangan, namun karena pengecekan kondisi terdapat di akhir, perulangan dilakukan setidaknya sekali.

Beberapa sintaks kontrol program lainnya:
halt
halt berguna untuk keluar dari program langsung pada suatu titik tertentu sebelum program benar-benar mencapai akhir eksekusi.
exit
exit berguna untuk keluar dari prosedur/fungsi dalam eksekusinya.

1 comment:

  1. The Best Casino | OKCASINO | Poker Room - Klahomacasinoguru
    The best casino in Oklahoma offers the 깡 가입 코드 best poker rooms and poker tournaments. 야구 사이트 With more than 50 poker tournaments and more 넥스트벳 than 100,000 벳플릭스 square foot poker rooms 마추 자 먹튀

    ReplyDelete