PEMILIHAN Abertun Sagit Sahay, ST., M.Eng. • Statemen kendali digunakan untuk mengambil suatu keputusan atau memilih bagian program yang akan dikerjakan sesuai dengan kondisi atau syarat yang diberikan. • Statemen-statemen diatas memerlukan suatu kondisi atau syarat sebagai dasar pengambilan keputusan. Salah satu kondisi yang umum digunakan adalah berupa keadaan benar atau salah (true or false). PENYAJIAN • Ketika menyelesaikan masalah, tidak hanya satu kasus yang kita temui, namun ada banyak kadang kala kita menemui beberapa kasus. Ada beberapa format yang berbeda untuk setiap kasus ketika diimplementasikan di algoritma pemrograman. Satu Kasus • Menggunakan konstruksi IF-THEN (jika-maka) dalam bentuk pernyataan : if kondisi then pernyataan endif • Pernyataan sesudah kata then (dapat berupa satu atau lebih pernyataan) adalah aksi yang hanya akan dilaksanakan bila kondisi bernilai benar (true). • Bila kondisi bernilai salah (false), tidak ada pernyataan apapun yang dikerjakan. Kata endif sengaja ditambahkan untuk mempertegas awal dan akhir struktur IFTHEN. Contoh Masalah : • Buatlah algoritma yang membaca sebuah bilangan bulat dari suatu papan ketik, lalu mencetak pesan “genap” jika bilangan tersebut adalah genap. Penyelesaian : • Bilangan genap adalah bilangan yang habis dibagi dengan 2 (sisa pembagian = 0). Oleh karena itu, kita perlu membagi data masukan dengan 2. Jika data masukan habis dibagi 2, maka dapat ditulis bahwa bilangan tersebut bilangan genap. ALGORITMA Genap { Mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap } Program Genap; { Mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap } DEKLARASI x : integer var x : integer; DESKRIPSI : read(x) if x mod 2 = 0 then write(’genap’) endif begin read(x); if x mod 2 = 0 then write(’genap’); end. Dua Kasus • Menggunakan konstruksi IF-THEN-ELSE (jika-makakalau tidak) dalam bentuk pernyataan : if kondisi then pernyataan1 else pernyataan2 endif • Pernyataan1 dilaksanakan jika kondisi bernilai benar, sebaliknya jika kondisi bernilai salah, maka pernyataan2 yang akan dilaksanakan. else menyatakan ingkaran (negation) dari kondisi. • Contoh Masalah : Tulislah algoritma yang membaca sebuah bilangan bulat, lalu menuliskan pesan “genap” jika bilangan tersebut adalah genap atau “ganjil” jika bilangan tersebut adalah bilangan ganjil. ALGORITMA GenapGanjil { Mencetak pesan “genap” jika sebuah bilangan bulat yang dibaca merupakan bilangan genap atau “ganjil” jika bilangan tersebut ganjil } DEKLARASI x : integer DESKRIPSI read(x) if x mod 2 = 0 then write(’genap’) else write(’ganjil’) endif Program GenapGanjil { Mencetak pesan “genap” jika sebuah bilangan bulat yang dibaca merupakan bilangan genap atau “ganjil” jika bilangan tersebut ganjil } var x : integer; begin read(x); if x mod 2 = 0 then write(’genap’) else write(’ganjil’); End. Tiga Kasus atau Lebih • Menggunakan konstruksi IF-THEN-ELSE (jikamaka-kalau tidak) bertingkat-tingkat dalam bentuk pernyataan Tiga Kasus : Empat Kasus : if kondisi1 then if kondisi1 then pernyataan1 pernyataan1 else if kondisi2 then else if kondisi2 then pernyataan2 else if kondisi3 then pernyataan2 pernyataan3 else if kondisi3 then else if kondisi4 then pernyataan3 pernyataan4 endif endif endif endif endif endif endif Tulislah algoritma yang membaca sebuah bilangan bulat, lalu menentukan apakah bilangan tersebut positif, negatif atau nol. ALGORITMA JenisBilanganBulat { Menentukan apakah sebuah bilangan bulat merupakan bilangan positif, negatif atau nol } DEKLARASI x : integer DESKRIPSI : read(x) if x > 0 then write(‘positif’) else if x < 0 then write(‘negatif’) else write(‘nol’) endif endif endif Latihan • Buatlah algoritma dan translasikan ke dalam Pascal untuk membandingkan 3 buah bilangan dan menentukan nilai terbesar dari ketiga bilangan bulat tersebut. Latihan Seorang guru ingin menghitung nilai akhir mata pelajaran dengan ketentuan : Tugas 20%, MidTest 30% dan UAS 50%, dimana sebelum menentukan peritungan, akan dicek apakah seorang siswa tersebut mengkuti ujian akhir. Jika tidak, maka perhitungan tersebut tidak akan dilakukan dan langsung dinyatakan tidak tersebut tidak lulus. Sementara jika ikut ujian akhir, nilai akhirnya akan ditentukan apakah nilai memuaskan atau tidak. Sangat Memuaskan 80 – 100 Memuakan 70 – 79 Cukup Memuaskan 60 – 69 Mengecewakan < 60 Struktur CASE • Untuk masalah dengan dua kasus atau lebih, konstruksi CASE dapat menyederhanakan penulisan IF..THEN..ELSE yang bertingkattingkat. • Konstruksi CASE sebagai berikut : case ekspresi nilai1 : aksi1 nilai2 : aksi2 ... ... nilain : aksin otherwise : aksix endcase • Ekspresi adalah sembarang ekspresi (aritmatika atau boolean) yang menghasilkan suatu nilai (konstanta). • Struktur CASE memeriksa apakan nilai dari ekspresi tersebut sama dengan salah satu dari nilai1, nilai2,...nilain. • Semua nilai-nilai ini harus berbeda. • Jika tidak ada satupun nilai ekspresi yang cocok, maka aksi sesudah otherwise dikerjakan. • Otherwise bersifat optional, artinya boleh ditulis atau tidak di dalam konstruksi CASE Read(x) Case x 1 : write(‘satu’) 2 : write(‘dua’) 3 : write(‘tiga’) Otherwise : write(‘yang anda masukan bukan yang dimaksud’) endcase DEKLARASI : Nama, Ket NA, Tgs, Mid, Final Mutu : string : real : char DESKRIPSI : Read(nama) Read( Tgs, Mid,Final) NA (Tgs*20%)+(Mid*30%)+(Final*50% ) 1 If NA >= 80 then Mutu ‘A’ Else if NA >= 70 then Mutu ‘B’ Else if NA >= 56 then Mutu ‘C’ Else if NA >= 46 then Mutu ‘D’ Else Mutu ‘E’ End if End if End if 2 End if If (Mutu = ‘A’) OR (Mutu = ‘B’) OR (Mutu = ‘C’) THEN Ket ‘LULUS’ Else Ket ‘TIDAK LULUS’ End if Write(Nama) Write(NA) Write(Mutu) Write(Ket) 3