MODUL PRAKTIKUM
PERCABANGAN DAN PENGULANGAN
Pada BAB ini akan membahas tentang PERCABANGAN dan PERULANGAN. PERCABANGAN : a) IF THEN b) CASE OF PENGULANGAN: a) REPEAT N TIMES b) REPEAT UNTIL c) WHILE DO d) ITERATE STOP
e) TRAVERSAL (FOR TO DO) 2.1 STATEMENT PERCABANGAN 2.1.1 IF THEN
FORMULA : IF [KONDISI] THEN [AKSI]
Dapat diartikan dari formula tersebut adalah AKSI akan terjalankan apabila KONDISI bernilai
TRUE. KONDISI merupakan sebuah BOOLEAN yang hanya memiliki 2 nilai , yaitu TRUE dan FALSE.
Contoh ekspresi BOOLEAN adalah : § X > Y § A ≠ B § M = N § P ≤ Q § A + B > 1 § kata = ‘daskom’ § k mod 4 = 0 § nilai = TRUE § NOT TRUE § (X > 0) and (Y<0)
MODUL PRAKTIKUM
o SATU KONDISI
ALGORITMIK PASCAL
PROGRAM GENAP GANJIL Program genap_ganjil; {menentukan genap sebuah bilangan} uses crt;
var
kamus : a,b : integer; a, b : integer begin Algoritma : write ('masukan nilai a : '); readln (a); input (a)
if (a mod 2 = 0) then
begin if (a mod 2 = 0 ) then write (a, ' adalah bilangan genap '); output ('bilangan genap')
b ← b + 1 b := b +1; end; end.
Yang menjadi ekspresi boolean dari program diatas adalah “a mod 2 = 0” . Apabila a diberi input 3 maka KONDISI (a mod 2 = 0) bernilai FALSE dan tidak melakukan eksekusi apapun. Namun apabila kita beri input a dengan 4 maka KONDISI bernilai TRUE dan mengerjakan AKSI yang ada pada program.
Dalam penulisan notasi algoritmik untuk AKSI (output (‘bilangan genap’)) harus menjorok kedalam karena dalam notasi algoritmik tidak ada batas yang menjelaskan banyak aksi yang akan dilakukan. Begitu juga dengan penulisan dalam pascal, apabila lebih dari satu instruksi pada AKSI maka harus menggunakan begin dan end; untuk membatasinya.
o DUA KONDISI
ALGORITMIK PASCAL
PROGRAM GENAP GANJIL Program genap_ganjil; {menentukan genap atau ganjil uses crt; sebuah bilangan} var kamus : a : integer; a : integer begin Algoritma : write ('masukan nilai a : '); readln (a); input (a) if (a mod 2 = 0) then if (a mod 2 = 0 ) then write (‘ bilangan genap ')
output ('bilangan genap') else else write (‘bilangan ganjil ')
output ('bilangan genap') end.
MODUL PRAKTIKUM
Program di atas dikatakan dua kondisi karena apabila KONDISI (a mod 2 = 0 ) bernilai
TRUE maka akan muncul “bilangan genap” , apabila bernilai FALSE maka muncul tulisan
“bilangan ganjil”.
o TIGA KONDISI ATAU LEBIH
ALGORITMIK PASCAL
PROGRAM BILANGAN BULAT Program bilangan_bulat; {menentukan sebuah bilangan nol, uses crt; positif, atau negatif } var kamus : a : integer;
a: integer begin
Algoritma : write ('masukan a : ');readln (a); input (a) if (a > 0) then
if (a > 0) then write('bilangan positif') output ('bilangan positif') else if (a < 0) then
else if (a < 0) then write('bilangan negatif') output ('bilangan negatif') else
else write('bilangan nol'); output ('bilangan nol') end.
Dikatakan 3 kondisi karena apabila KONDISI1 (a>0) bernilai TRUE maka output “bilangan positif” , namun jika tidak maka ada percabangan kembali yaitu dengan pertanyaan KONDISI2 (a<0) dan apabila nilai KONDISI2 adalah TRUE maka output “bilangan negatif” dan bila KONDISI2 FALSE maka output “bilangan nol”. Untuk kondisi lebih dari 3 dapat menambahkan else if pada percabangan selanjutnya.
2.1.2 CASE OF
FORMULA : Case (variabel) of DEPEND ON (variabel) <kondisi_1> : <aksi1> <kondisi_1> : <aksi1> <kondisi_2> : <aksi2> <kondisi_2> : <aksi2> <kondisi_3> : <aksi3> <kondisi_3> : <aksi3>
Notasi algoritmik mengenal formula ini adalah DEPEND ON, sedangkan pada pascal formula yang digunakan adalah CASE OF. CASE OF dan DEPEND ON mempunyai perbedaan, yaitu pada variabel dan ekspresi boolean pada kondisinya. CASE OF hanya bisa menggunakan 2 variabel yaitu integer dan char dan ekspresi boolean yang dapat digunakan hanya ‘=’, Sedangkan pada DEPEND ON semua variabel bisa digunakan dalam formulanya dan semua ekspresi boolean bisa digunakan.
MODUL PRAKTIKUM
ALGORITMIK
Program bilangan bulat
{menentukan positif,negatif, atau nol} kamus : a : integer algoritma : input (a) depend on (a)
a > 0 : output ('bilangan positif') a < 0 : output ('bilangan negatif') a = 0 : output ('bilangan nol')
Dari formula di atas kita tidak bisa menggunakan CASE OF karena ekspresi boolean pada kondisi ada yang menggunakan ekspresi “>”. Berikut adalah contoh CASE OF dan bentuk notasi algoritmiknya.
ALGORITMIK PASCAL
Program nama bilangan program nama ; {menuliskan angka dalam bentuk huruf} uses crt;
Var
kamus : a : integer; a : integer begin
algoritma : writeln ('batas input 0-3'); output ('batas input 0-3') write('masukan a : '); readln (a); input (a) case (a) of
depend on (a) 0 : write ('nol'); a = 0 : output ('nol') 1 : write ('satu'); a = 1 : output ('satu') 2 : write ('dua'); a = 2 : output ('dua') 3 : write ('tiga'); a = 3 : output ('tiga') end;
end.
Program diatas menggunakan operasi boolean “=”. Dalam penulisan ekspresi boolean pada CASE OF berbeda dengan notasi algoritmik, hal ini bisa dilihat dari contoh diatas bahwa penulisannya hanya menuliskan isi variabel. (*begin end; untuk menentukan batas aksi yang akan dilakukan)
MODUL PRAKTIKUM
2.2 STATEMENT PENGULANGAN
Pengulangan terdiri dari dua bagian :
§ kondisi yang mengakibatkan pengulangan suatu saat berhenti, yang dinyatakan oleh sebuah ekspresi logik baik secara eksplisit maupun implisit
§ badan pengulangan, yaitu aksi yang harus diulang selama kondisi yang ditentukan untuk pengulangan masih dipenuhi
Ada 5 macam notasi dalam perulangan a. berdasarkan jumlah pengulangannya
aksi akan dilakukan sebanyak n kali, dengan memasukan nilai N maka pengulangan tersebut akan berhenti ketika telah melakukan pengulangan sebanyak n kali.
b. Berdasarkan kondisi berhenti
aksi akan diberhentikan apabila kondisi berhenti bernilai true, akan diulang apabila kondisi berhenti bernilai false. Pengulangan ini minimal akan dilakukan satu kali karena saat aksi pertama dilakukan tidak ada pengkondisian.
c. Berdasarkan kondisi pengulangan
aksi akan dilakukan selama kondisi-pengulangan masih bernilai true. Pada pengulangan ini ada kemungkinan aksi tidak dilakukan karena saat pertama kali kondisi-pengulangan sudah bernilai false.
d. Berdasarkan dua aksi
Mekanisme yang dilakukan oleh pengulangan ini adalah dengan melakukan secara otomatis Aksi-1 pada eksekusi yang pertama kemudian dilakukan test terhadap kondisi berhenti. Tergantung kepada kondisi berhenti yang ditest:
MODUL PRAKTIKUM
§ pengulangan dihentikan karena efek neto dari Aksi-1 menghasilkan kondisi berhenti.
Pengulangan ini berguna untuk kasus-kasus di mana Aksi-2 merupakan hal yang harus dilakukan tergantung dari hasil Aksi-1.
e. Berdasarkan pencacah
Pada pengulangan ini akan dilakukan sebanyak selisih range harga yang dapat dilakukan. Type dari nama pencacah tidak bisa digunakan oleh semua tipe, hanya integer dan char saja yang dapat digunakan.
Dari 5 contoh pengulangan tersebut, hanya 3 saja yang bisa digunakan dalam PASCAL yaitu : § Repeat until
ALGORITMIK PASCAL
Program mengulang program ulang; {menuliskan angka berurut dari 1 -n } uses crt;
var
kamus : i,n : integer; n,i : integer begin
Algoritma : write('banyaknya pengulangan ? '); input (n) readln (n);
i ←1 i := 1; repeat repeat output (i) begin i ←i +1 write (i); until (i≤n) i := i +1;
end;
until (i <= n)
end.
Dalam program tersebut apabila n diberi nilai 0 maka output dari program adalah 1, hal ini dikarenakan dalam repeat until minimal aksi yang terjadi adalah aksi yang pertama. Dan apabila input lebih dari nol maka output akan mengeluarkan nilai 1 sampai bilangan n yang diinputkan. (*begin end; dalam pascal menandakan aksi yang akan diulang)
MODUL PRAKTIKUM
§ While Do
ALGORITMIK PASCAL
Program mengulang program ulang; {menuliskan angka berurut dari 1 -n } uses crt;
var
kamus : i,n : integer; n,i : integer begin
Algoritma : write('banyaknya pengulangan ? '); input (n) readln (n);
i ←1 i := 1;
while (i ≤ n) do while (i <= n) do output(i) begin
i ←i +1 write (i); i := i+1
end;
end.
Dari program diatas pengulangan akan terjadi bila kondisi bernilai TRUE dan berhenti mengulang setelah kondisi FALSE. Apabila input n diberi angka 0 maka tidak ada output yang terjadi karena saat memulai kondisi sudah bernilai FALSE. (*begin end; dalam pascal menandakan aksi yang akan diulang)
§ Traversal (For to do)
ALGORITMIK PASCAL
Program mengulang program ulang; {menuliskan angka berurut dari 1 -n } uses crt;
var
kamus : i,n : integer; n,i : integer begin
Algoritma : write('banyaknya pengulangan ? '); input (n) readln (n);
i traversal [1..n] for i:=1 to n do write (i) write (i);
end.
Program diatas sama seperti sebelumnya yaitu mencetak angka dari 1 sampai n, namun pada program ini menggunakan traversal/for to do (dalam pascal). Seperti yang dijelaskan pada awalnya bahwa variabel pencacah untuk pengulangan ini hanya bisa untuk integer dan char saja. Apabila n diberi input 0 maka program akan error karena for to do adalah pencacah maju. Apabila kita ingin mencacah mundur maka kita bisa menggunakan for downto, prinsipnya sama hanya nilai cacahnya saja yang berbeda.
MODUL PRAKTIKUM
ALGORITMIK PASCAL
Program mengulang program ulang; {menuliskan angka berurut dari n-1 } uses crt;
var
kamus : i,n : integer; n,i : integer begin
Algoritma : write('banyaknya pengulangan ? '); input (n) readln (n);
i traversal [n..1] for i:=n downto 1 do write (i) write (i);
end.
Contoh soal aplikasi
Buatlah sebuah program untuk membuat bangun berikut Input = 4 * ** *** **** Penyelesaian
Program tersebut menjelaskan bahwa output gambar tergantung input. Input sama dengan 4 maka banyak baris sama dengan 4, dimana setiap baris terdapat bintang sebanyak urutan baris tersebut.
ALGORITMIK PASCAL
Program mengulang program ulang; {menuliskan angka berurut dari n-1 } uses crt;
var
kamus : i,n : integer; n,i : integer begin
Algoritma : write('banyaknya n ? '); input (n) readln (n);
i traversal [1..n] for i:=1 to n do j traversal [1..i] begin
output ('*') for j :=1 to i do begin write ('*'); end; writeln; end; end.
MODUL PRAKTIKUM
Lihat program pascal (misal n=4)
for i:=1 to n do berfungsi untuk membuat baris yaitu sebanyak 4 . Aksi yang akan
diulang pada pengulangan ini adalah for j:=1 to i do dan writeln; . for j:=1 to i do berfungsi membuat bintang pada masing-masing baris dan writeln; berfungsi membuat baris baru untuk baris selanjutnya. for j:=1 to i do berarti pengulangan yang akan dilakukan adalah sebanyak 1 sampai i, hal ini dikarenakan i adalah urutan baris sehingga saat baris satu hanya mencetak satu bintang, baris kedua mencetak dua bintang, dan seterusnya.
REFERENSI