MODUL PRAKTIKUM
PERCABANGAN DAN PENGULANGAN
Pada BAB ini akan membahas tentang PERCABANGAN dan PERULANGAN. PERCABANGAN : a) IF THEN b) CASE OF PENGULANGAN: a) b) c) d) e)
REPEAT N TIMES REPEAT UNTIL WHILE DO ITERATE STOP 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)
(*lihat modul 1 untuk penjelasan ekspresi boolean)
MODUL PRAKTIKUM
o
SATU KONDISI ALGORITMIK PROGRAM GENAP GANJIL {menentukan genap sebuah bilangan} kamus : a, b : integer Algoritma : input (a) if (a mod 2 = 0 ) then output ('bilangan genap') b←b+1
PASCAL Program genap_ganjil; uses crt; var a,b : integer; begin write ('masukan nilai a : '); readln (a); if (a mod 2 = 0) then begin write (a, ' adalah bilangan genap '); 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 PROGRAM GENAP GANJIL {menentukan genap atau ganjil sebuah bilangan} kamus : a : integer Algoritma : input (a) if (a mod 2 = 0 ) then output ('bilangan genap') else output ('bilangan genap')
PASCAL Program genap_ganjil; uses crt; var a : integer; begin write ('masukan nilai a : '); readln (a); if (a mod 2 = 0) then write (‘ bilangan genap ') else write (‘bilangan ganjil ') 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 PROGRAM BILANGAN BULAT {menentukan sebuah bilangan nol, positif, atau negatif } kamus : a: integer Algoritma : input (a) if (a > 0) then output ('bilangan positif') else if (a < 0) then output ('bilangan negatif') else output ('bilangan nol')
PASCAL Program bilangan_bulat; uses crt; var a : integer; begin write ('masukan a : ');readln (a); if (a > 0) then write('bilangan positif') else if (a < 0) then write('bilangan negatif') else write('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)
:
:
:
:
:
:
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 Program nama bilangan {menuliskan angka dalam bentuk huruf} kamus : a : integer algoritma : output ('batas input 0-3') input (a) depend on (a) a = 0 : output ('nol') a = 1 : output ('satu') a = 2 : output ('dua') a = 3 : output ('tiga')
PASCAL program nama ; uses crt; Var a : integer; begin writeln ('batas input 0-3'); write('masukan a : '); readln (a); case (a) of 0 : write ('nol'); 1 : write ('satu'); 2 : write ('dua'); 3 : write ('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: § Aksi-2 akan diaktifkan dan kemudian Aksi-1 yang berikutnya diulang, atau
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 Program mengulang {menuliskan angka berurut dari 1 -n } kamus : n,i : integer Algoritma : input (n) i ←1 repeat output (i) i ←i +1 until (i≤n)
PASCAL program ulang; uses crt; var i,n : integer; begin write('banyaknya pengulangan ? '); readln (n); i := 1; repeat begin write (i); 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 Program mengulang {menuliskan angka berurut dari 1 -n } kamus : n,i : integer Algoritma : input (n) i ←1 while (i ≤ n) do output(i) i ←i +1
PASCAL program ulang; uses crt; var i,n : integer; begin write('banyaknya pengulangan ? '); readln (n); i := 1; while (i <= n) do begin 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 Program mengulang {menuliskan angka berurut dari 1 -n } kamus : n,i : integer Algoritma : input (n) i traversal [1..n] write (i)
PASCAL program ulang; uses crt; var i,n : integer; begin write('banyaknya pengulangan ? '); readln (n); for i:=1 to n do 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 Program mengulang {menuliskan angka berurut dari n-1 } kamus : n,i : integer Algoritma : input (n) i traversal [n..1] write (i)
PASCAL program ulang; uses crt; var i,n : integer; begin write('banyaknya pengulangan ? '); readln (n); for i:=n downto 1 do 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 Program mengulang {menuliskan angka berurut dari n-1 } kamus : n,i : integer Algoritma : input (n) i traversal [1..n] j traversal [1..i] output ('*')
PASCAL program ulang; uses crt; var i,n : integer; begin write('banyaknya n ? '); readln (n); for i:=1 to n do begin 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 liem, inggriani (2008). DIKTAT KULIAH DASAR PEMROGRAMAN. BANDUNG : ITB