5.1 Pengantar Chapter 5 Choice 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.
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<b : printstring( a lebih kecil b ) a=b : printstring( a sama dengan b ) endselect program 5.3 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.
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 or Keterangan Contoh = sama dengan 7 + 5 = 13 true > lebih besar dari 7 > 5 true < lebih kecil dari 7 < 5 false >= lebih besar atau sama dengan 7 >= 5 true <= lebih kecil atau sama dengan 7 <= 5 false <> tidak sama dengan 7 <> 5 true not invers atau pengingkaran not (7>5) 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 A or B Not A Not B 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 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 ) (a+b = 10) and (b < 5): printstring( b lebih kecil 5 ) ( a + b > 10 ) : printstring( a + b lebih dari 10 ) 1 2 3 ( a + b < 10 ) : printstring( a + b kurang dari 10 ) 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 4
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 : contoh : case ( variabel ) of nilai 1 : aksi 1 nilai 2 : aksi 3 nilai 3 : aksi 3... nilai n : aksi n endcase case ( angka ) of 0 : printstring( nol ); 1 : printstring( satu ); 2 : printstring( dua ); 3 : 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... Bentuk yang lain dari choice adalah dengan menggunakan perintah if... then. Bentuk dasarnya adalah :
5 if ( kondisi ) then aksi jika kondisi benar aksi jika kondisi salah contoh if (a > 0) then printstring( a positif ) printstring( a negatif ) 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 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 ) if ( a = 0 ) then printstring( a nol ) printstring( a negatif ) Program 5.7 5.7 Choice pada Bahasa Pascal Bahasa pascal menggukanan case-of dan if-then- pada sebagai perintah untuk melakukukan pilihan. Bentuk dasarnya adalah : if (kondisi) then begin aksi jika kondisi benar end begin aksi jika kondisi salah end begin dan tidak perlu dituliskan jika aksi yang dikerjakan hanya 1 perintah.
6 Contoh program : (1) uses crt; (2) var x,sisa : integer; (3) BEGIN (4) readln(x); (5) sisa := x mod 2; (6) if (sisa=0) then (7) writeln( bilangan genap ) (8) (9) writeln( bilangan ganjil ); (10) 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- dari program 5.8 dapat dituliskan seperti pada program 5.9. if (sisa==0) { printf( bilangan genap ) } { printf( bilangan ganjil ); } Program 5.9