Bab 2 – b PERINTAH 2 B Percabangan
PERCABANGAN Tidak setiap baris program akan dikerjakan Hanya yang memenuhi syarat (kondisi) Syarat terdiri dari operand-operand, yang dihubungkan dengan operator relasi dan operator logika
PERCABANGAN Menghasilkan pernyataan Boolean, yang dapat bernilai benar (true) atau salah (false) Menggunakan perintah : if_then_else
Percabangan START END Syarat Perintah 1 Perintah 2 –Contoh : 5 = 5 True 3 > 5 False 5 <> 3 True (A>5) AND (B>10) True jika keduanya benar (A>5) OR (B>10) True jika keduanya atau salah satu benar
Percabangan Contoh kasus: Rata-rata bilangan positif Tujuan : –Menghitung rata-rata sejumlah bilangan yang dimasukkan melalui keyboard (bilangan diakhiri dengan nol) –Menampilkan banyaknya bilangan positif, jumlah, dan rata-ratanya
Percabangan Perkembangan algoritma Algoritma global read (bil) while bil <> 0 do [jumlahkan dan hitung banyaknya bilangan positif] read (bil) ewhile [tulis banyaknya bilangan, jumlahnya, dan rata-ratanya]
Percabangan Perkembangan algoritma (cont’d) bagan alir dengan perintah percabangan if-then-eif
Percabangan bil > 0 jumlah := jumlah + bil n := n + 1 tidak ya
Percabangan Perkembangan algoritma (cont’d) Modifikasi algoritma global –variabel n dan jumlah dikosongkan dulu
Percabangan jika hanya bilangan nol yang dimasukkan sebelum perintah write diperiksa dahulu apakah n berharga nol jika n berharga nol atau tidak ada bilangan yang dimasukkan kecuali tanda akhir data, perintah write tidak dilakukan
Percabangan Algoritma modifikasi: n := 0 jumlah := 0 read (bil) while bil <> 0 do if bil > 0 then jumlah := jumlah + bil n := n + 1 eif
Percabangan Algoritma modifikasi: read (bil) ewhile if n <> 0 then write (n, jumlah, jumlah/n) eif
Percabangan Contoh kasus “Bilangan Terbesar” akhirdata := 0 read (bil)
Percabangan while bil <> akhirdata do [periksa apakah bilangan merupakan bilangan terbesar dari semua bilangan yang telah terbaca, catat bila demikian] read (bil) ewhile [tuliskan bilangan terbesar]
Percabangan –Pengembangan algoritmanya : akhirdata := 0 read (bil) while bil <> akhirdata do if bil > maks then maks := bil eif read (bil) ewhile write (maks) –Apakah algoritma diatas sudah benar ?
Percabangan Pembahasan : –Variabel maks harus diberi nilai awal agar tidak terjadi kesalahan –Variabel maks harus diisi dengan bilangan yang pertama dibaca dari keyboard
Percabangan Algoritmanya menjadi : akhirdata := 0 read (bil) maks := bil while bil <> akhirdata do if bil > maks then maks := bil eif read (bil) ewhile write (maks)
Percabangan Bagaimana bila data yang dimasukkan adalah 0 ? Apa yang terjadi ? Coba anda perbaiki !!
Percabangan Contoh “Harga Mutlak Bilangan“ Tujuan : menentukan harga mutlak setiap bilangan yang dimasukkan lewat keyboard (akhirdata = 0) –bagan alir perintah percabangan if- then-else-eif
Percabangan bil > 0 mutlak = bil mutlak = - bil tidak ya
Percabangan Algoritmanya akhirData :=0 read(bil) while bil<> akhirData do [tentukan harga mutlak bil] if bil > 0 then mutlak := bil else mutlak := -bil eif
Percabangan write (mutlak) [peragakan harga mutlak tersebut] read (bil) ewhile
Percabangan Contoh “Bilangan genap dan ganjil” Tujuan : membuat algoritma yang dapat menyatakan suatu bilangan adalah genap atau ganjil
Percabangan Langkah-langkahnya –menentukan suatu bilangan genap atau ganjil dengan membagi bilangan dengan bilangan 2 (mod) Sisa pembagian nol bilangan genap jika tidak nol bilangan ganjil
Percabangan Algoritmanya akhirData : = 0 read(bil) while bil <> 0 do sisa :=bil mod 2 if sisa = 0 then write (‘genap’) else write (‘ganjil’) eif read (bil) ewhile
Percabangan Contoh kasus “Persamaan Kuadrat” Tujuan : membuat algoritma program menghitung akar-akar persamaan kuadrat yang koefisiennya dimasukkan melalui keyboard
Percabangan Langkah-langkahnya –menyeleksi kondisi salah dengan memeriksa nilai koefisien –menentukan jenis akar persamaan berdasarkan koefisien
Percabangan Algoritma: read(a) while a<>0 do read (b,c) d:=b^2-4*a*c continue
Percabangan if d<0 then {hitung akar kompleks} p:= -b/(2*a) q: = abs (sqr(-d)/((2*a)) write (‘x1=‘, p, ‘+’, q, ‘i’) write (‘x2=‘, p, ‘-’, q, ‘i’) else continue
Percabangan {akar komplek atau tidak} if d=0 then {hitung akar kembar} x1:= -b/(2*a) x2 := x1
Percabangan else {hitung akar tidak kembar} x1:= (-b+sqr(d))/(2*a) x2 := (-b-sqr(d))/(2*a) eif write (‘x1=‘, x1) write (‘x2=‘,x2) eif read(a)
SELESAI BAB 2-b