Chapter 5 Choice 5.1 Pengantar Program yang telah menggunakan repetition dan procedure merupakan program yang agak rumit, namun jalannya program masih dapat ditebak dan diketahui karena selalu mengerjakan sequence yang sama. Hal ini seperti robot yang diprogram untuk mengerjakan sesuatu secara berulang-ulang tanpa memperhatikan kondisi apa pun. Misalnya saja printer yang bekerja hanya berdasarkan sequence, procedure dan repetitition akan terus mencetak sebanyak yang diperintahkan tanpa melihat kondisi apakah ada kertas atau tidak. Pembahasan bab ini adalah tentang choice dimana sebuah program dapat dibuat untuk mengerjakan hal yang berbeda-beda tergantung dari kondisi saat itu. 5.2 Choice Sederhana Contoh sederhana, misalnya sebuah robot yang diciptakan untuk memotong sebuah batang besi menjadi beberapa bagian. Pada batangan besi telah diberikan tanda, berapa banyak potongan besi yang harus dihasilkan. Dengan melihat tanda tersebut, robot akan memotong besi menjadi potongan yang lebih kecil sesuai dengan jumlah yang tercantum. repeatedly if ”tanda 2” on label: lakukan proses potong 2 if ”tanda 3” on label: lakukan proses potong 3 until switched off program 5.1
Program 5.1 akan berulang-ulang dikerjakan oleh robot selama robot tersebut “hidup”. Jika pada batang besi tertulis tanda 2 maka yang dikerjakan adala proses pemotongan menjadi 2 bagian. Begitu pun jika yang tertera adalah tanda 2. Kondisi pilihan yang diberikan memiliki cela, yaitu misalnya tidak ada tanda pada batang besi, atau tanda yang diberikan cacat dan tidak terbaca, atau tanda yang tertera bukan tanda 2 maupun tanda 3, maka robot tidak dapat mengambil keputusan, proses apa yang dikerjakan. Hal ini dapat menyebabkan robot berhenti berfungsi atau melakukan proses yang tidak terkendali. Program 5.1 dapat ditulis dengan pilihan yang lebih lengkap, untuk kasus tanda yang tertera bukan tanda 2 maupun tanda 3. Pada program 5.2, proses yang dikerjakan jika tanda yang tertera bukan 2 maupun 3 adalah donothing atau tidak melakukan apa-apa pada saat itu.
IT 132 Dasar-Dasar Pemrograman
2
repeatedly if ”tanda 2” on label: lakukan proses potong 2 if ”tanda 3” on label: lakukan proses potong 3 if neither ”tanda 1” nor ”tanda 2”: donothing until switched off program 5.2
5.3 Instruksi select Select adalah perintah yang digunakan pada pemrograman untuk menetukan suatu aksi berdasarkan kondisi tertentu, seperti pada contih yang telah diberikan pada bab 5.2. struktur dasar dari perintah select adalah : select kondisi 1 : aksi 1 kondisi 2 : aksi 3 kondisi 3 : aksi 3 ... kondisi n : aksi n endselect kata select dan endselect merupakan awal dan akhir dari instruksi ini. Kondisi merupakan sesuatu yang menjadi acuan dalam mengerjakan suatu proses. Aksi merupakan rangkaian perintah yang dikerjakan untuk suatu kondisi tertentu. Jumlah kondisi dan aksi tidak terbatas. Yang akan dikerjakan oleh program adalah setiap aksi yang kondisinya terjadi pada saat itu. Penggunaan select dapat dipelajari pada program 5.3. select a>b : printstring(”a lebih besar b”) a
Program 5.3 akan mencetak suatu string, tergantung dari nilai variabel a dan variabel b. Terlihat jelas bahwa ada 3 kondisi yang mungkin terjadi, sehingga pasti akan dikerjakan salah satu dari 3 aksi yang sesuai. Dengan nilai a = 3 dan nilai b =7 maka kondisi yang terpenuhi adalah kondisi ke 2 ( a < ) sehingga aksi yang dikerjakan adalah mencetak kalimat ”a lebih kecil b”.
http://bepung.net
IT 132 Dasar-Dasar Pemrograman
3
5.4 Formula Kondisi Beberapa operator umum yang bisa digunakan sebagai kondisi pada bahasa pemrograman pascal adalah : Tabel 5.1. Tabel Operator pada Pascal Operat Keterangan or = sama dengan > lebih besar dari < lebih kecil dari >= lebih besar atau sama dengan <= lebih kecil atau sama dengan <> tidak sama dengan not invers atau pengingkaran
Contoh 7 + 5 = 13 7>5 7<5 7 >= 5 true 7 <= 5 false 7 <> 5 true not (7>5)
true true false
false
Operasi matematika akan memberikan angka sebagai hasil proses. Berbeda denga kondisi, yang menjadi hasil dari proses analisa suatu kondisi adalah nilai true (benar) dan false (salah). Nilai true biasanya dinotasikan dengan angka 1 dan false dinotasikan dengan angka 0. beberapa logika yang digunakan untuk kondisi adalah logika and, logika or dan logika not. Lebih jelas mengenai setiap logika, dapat dilihat pada tabel 5.1. Angka 0 merupakan nilai true dan angka 0 merupakan nilai false. Tabel 5.2. Tabel Logika Kebenaran A B A and B
0 0 1 1
0 1 0 1
0 0 0 1
A or B
Not A
Not B
0 1 1 1
1 1 0 0
1 0 1 0
Perhatikan contoh pada program 5.4 untuk memahami penggunaan logika kebenaran pada. select (a+b = 10) and (a < 5): printstring(”a lebih besar 5”)
1
(a+b = 10) and (b < 5): printstring(”b lebih kecil 5”)
2
( a + b > 10 ) : printstring(”a + b lebih dari 10”)
3
( a + b < 10 ) : printstring(”a + b kurang dari 10”)
4
endselect Program 5.4
Pada program 5.4, jika nilai a=3 dan nilai b=7, Pada kondisi (1): ( a + b = 10) bernilai true ( a < 5) bernilai true ( a+ b = 10) and (a < 3) true and true = true http://bepung.net
IT 132 Dasar-Dasar Pemrograman
4
dengan nilai true pada kondisi (1) maka aksi pada kondisi (1) akan dikerjakan yaitu mencetak ”a lebih besar 5”. Pada kondisi (2):
( a + b = 10) bernilai true ( b < 3) bernilai false ( a+ b = 10) and (a < 3) true and false = true dengan nilai false pada kondisi (2) maka aksi pada kondisi (2) tidak akan dikerjakan. Kondisi (3) akan bernilai false, begitu juga dengan kondisi (4) akan bernilai false sehingga aksi dari tiap kondisi tidak akan dikerjakan. 5.5 case ... of Perintah lain yang memiliki cara kerja yang sama dengan select adalah perintah case of. Bentuk dasar dari sama perintah case of adalah : case ( variabel ) of nilai 1 : aksi 1 nilai 2 : aksi 3 nilai 3 : aksi 3 ... nilai n : aksi n endcase contoh : case ( 0 1 2 3
angka ) of : printstring(”nol”); : printstring(”satu”); : printstring(”dua”); : printstring(”tiga”); ... 9 : printstring(”sembilan”); endcase Program 5.5
Pada program 5.5 jika nilai dari variabel angka adalah 0 maka yang akan dikerjakan adalah perintah printstring(”nol”). Begitu juga dengan kondisi nilai yang lain pada variabel angka. Yang akan dikerjakan adalah aksi yang sesuai dari setiap kondisi yang benar. 5.6 if ... then ... else Bentuk yang lain dari choice adalah dengan menggunakan perintah if ... then. Bentuk dasarnya adalah :
http://bepung.net
IT 132 Dasar-Dasar Pemrograman
5
if ( kondisi ) then aksi jika kondisi benar else aksi jika kondisi salah fi contoh if (a > 0) then printstring(” a positif ”) else printstring(” a negatif ”) fi Program 5.6
Program 5.6 akan mencetak keterangan apakan nilai variabel a adalah bilangan positif atau negatif. Saat (a > 0 ) bernilai true maka yang tercetak adalah ”a positif”. Jika kondisi tersebut tidak terpenuhi ( a > 0 false) maka bagian else yang akan dikerjakan yaitu mencetak ” a negatif ”. Kekurangan dari program 5.6 adalah jika nilai a adalah 0. pada kasus ini, kondisi ( a > 0 ) akan bernilai false sehingga yang dicetak adalah ”a negatif”, padahal untuk kondisi ini ada dua kasus yang harus diperhatikan, apakah benar a < 0 atau a = 0. program 5.6 dapat disempurnakan menjadi program 5.7. if (a > 0) then printstring(” a positif ”) else if ( a = 0 ) then printstring(” a nol ”) else printstring(” a negatif ”) fi fi Program 5.7
5.7 Choice pada Bahasa Pascal Bahasa pascal menggukanan case-of dan if-then-else pada sebagai perintah untuk melakukukan pilihan. Bentuk dasarnya adalah : if (kondisi) then begin aksi jika kondisi benar end else begin aksi jika kondisi salah end begin dan else tidak perlu dituliskan jika aksi yang dikerjakan hanya 1 perintah.
http://bepung.net
IT 132 Dasar-Dasar Pemrograman
6
Contoh program : (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
uses crt; var x,sisa : integer; BEGIN readln(x); sisa := x mod 2; if (sisa=0) then writeln(’bilangan genap’) else writeln(’bilangan ganjil’); END. program 5.8
Program 5.8 awalnya akan menerima input dari keyboard, dengan harapan yang diinputkan adalah angka, yang kemudian akan disimpan pada variabel x (4). Baris (5) merupakan operasi pembagian x dengan 2. yang disimpan pada variabel sisa adalah sisa pembagian. Misalnya 7 mod 2, hasilnya adalah 3 dan sisanya adalah 1. Baris (7) sampai baris (9) akan menuliskan salah satu dari 2 keterangan yang ada tergantung dari nilai variabel sisa. Jika variabel sisa bernilai 0 maka yang dicetak adalah ”bilangan genap”, selain itu (sisa <> 0) maka yang dicetak adalah ”bilangan ganjil”. 5.8 Choice pada Bahasa C++ Pada bahasa C++, bagian if-then-else dari program 5.8 dapat dituliskan seperti pada program 5.9. if (sisa==0) { printf(’bilangan genap’) } else { printf(’bilangan ganjil’); } Program 5.9
http://bepung.net