Branching dengan If dan case
Di dalam suatu bahasa program pasti terdapat perintah untuk melakukan branching yaitu dimana program harus mengambil salah satu jalur yang tersedia, misalnya bila ada siswa mendapat nilai ujian dibawah 60, maka program akan memberi keterangan gagal, sedangkan bila siswa mendapat nilai sama dengan 60 atau diatasnya, maka program akan memberi keterangan lulus, pada praktek ini akan dibahas berbagai macam bentuk logika if dan cara penggunaanya beserta penulisan if yang sederhana dengan bentuk case when
Branching dengan If dan case
- di dalam ruby bila suatu logika terdapat 2 jawaban atau lebih, maka harus menggunakan logika percabangan
- logika percabangan di dalam ruby dapat menggunakan perintah if atau case
- perintah if lebih umum digunakan dari case.
- perintah case terkadang memiliki kelebihan penulisan dapat lebih singkat.
- bila suatu kondisi terdapat 2 syarat atau lebih, maka kedua syarat tersebut digabung dengan menggunakan operator && yang mewakili and dan || yang mewakili or
- di dalam ruby juga terdapat ternary operator (?) yang dapat menyingkat penulisan bentuk if kalau kondisinya sederhana
- agar dapat mengerti lebih jelas maka akan dijelaskan dengan menggunakan contoh berikut:
Contoh soal pertama
- perhatikan pada class Ujian berikut:
class Ujian attr_reader :grade, :keterangan, :hadiah def initialize(pelajaran, nilai) @pelajaran = pelajaran @nilai = nilai end def cek_keterangan # contoh if else sederhana # bila nilai lebih kecil 60 maka gagal # sebaliknya dia akan lulus if @nilai < 60 @keterangan = "Gagal" else @keterangan = "Lulus" end end def cek_keterangan_cara_singkat @keterangan = @nilai < 60 ? "Gagal" : "Lulus" end def hitung_grade # contoh if else yang memiliki kemungkinan lebih dari 2 # syarat grade adalah sbb: # 0 - 45 = E # 46 - 55 = D # 56 - 69 = C # 70 - 79 = B # 80 - 100 = A @grade = if @nilai <= 45 "E" elsif @nilai <= 55 "D" elsif @nilai <= 69 "C" elsif @nilai <= 79 "B" else "A" end end def hitung_grade_dengan_case # penggunaan case when yang terkadang lebih sederhana # dibandingkan dengan if @grade = case @nilai when 0..45 "E" when 46..55 "D" when 56..69 "C" when 70..79 "B" when 80..100 "A" else "Tidak Mungkin" end end def cek_hadiah # misalnya kalau anak lulus dapat hadiah sepeda @hadiah = "sepeda" if @keterangan == "Lulus" end def cek_hadiah_dengan_unless # beri hadiah, selama keterangan tidak gagal @hadiah = "sepeda" unless @keterangan == "Gagal" end def beri_hadiah_hiburan # bila hadiah tidak ada isinya beri permen @hadiah ||= "permen" end def cek_hadiah_super # disini adalah praktek logika and dengan cara menulis && # dan logika or dengan cara menulis || # siswa akan dapat Hadiah super berupa sepeda motor bila # * pelajaran Mat dan nilainya >= 95 atau # * pelajaran IPA dan nilainya >= 85 if @pelajaran == "Matematika" && @nilai >= 95 || @pelajaran == "IPA" && @nilai >= 85 @hadiah = "Sepeda Motor" end end end siti = Ujian.new("Matematika",75) siti.hitung_grade_dengan_case siti.cek_keterangan_cara_singkat siti.cek_hadiah siti.cek_hadiah_super siti.beri_hadiah_hiburan puts "Siti memiliki grade #{siti.grade} dan dinyatakan #{siti.keterangan}" puts "Siti mendapatkan hadiah #{siti.hadiah}"
Penjelasan
program pertama kali akan menjalankan siti = Ujian.new("Matematika",75)
- membuat objek baru bernama siti dengan nilai pelajaran Matematika angka 75
pada method cek_keterangan, adalah bentuk penerapan if sederhana dengan 2 jawaban (Lulus / Galgal)
pada method hitung_grade, adalah penerapan if dengan jawaban yang lebih dari 2 sehingga membutuhkan perintah elsif
pada method cek_keterangan_cara_singkat, adalah penerapan if dengan model ternary yaitu dengan menggunakan tanda tanya (?)
pada method cek_hadiah, adalah menerapan if dengan logika kerjakan ini bila memenuhi syarat, jadi penulisan antara syarat dan apa yang harus dikerjakan dibalik
pada method cek_hadiah_dengan_unless, adalah penerapan if dengan kerjakan ini, kecuali kalau tidak memenuhi syarat jangan
pada method beri_hadiah_hiburan, adalah penerapan operator ||= artinya bila variabel masih berisi nil (atau kosong) beri hadiah permen, tapi bila sudah ada isinya misalnya sepeda atau sepeda motor, jangan diganti permen
pada method cek_hadiah_super, adalah penerapan logika if dengan beberapa syarat yang digabung dengan operator && (and) dan operator || (or)
beberapa catatan lain
- if not dapat diganti dengan unless
- a ||= 2, artinya bila nilai a kosong (nil) maka diisi dengan 2
- penggunaan logika and dapat menggunakan kata "and" atau symbol &&
- sangat disarankan untuk menggunakan symbol && dan || dalam praktek ruby karena penggunaan kata and dan or tidak memiliki prioritas urutan mana yang dikerjakan dulu
- sedangkan bila menggunakan && dan || , maka && akan dikerjakan lebih dulu dari ||