PERCABANGAN / SELEKSI
Syarat ? PERCABANGAN / KEPUTUSAN / SELEKSI / KONDISIONAL ? Syarat/kondisi mana yang dipenuhi Jika K1 yang dipenuhi, P1 dikerjakan Jika K2 yang dipenuhi, P2 dikerjakan Syarat ? Jika K3 yang dipenuhi, P3 dikerjakan dan seterusnya K3 K2 K1 P3 P1 P2
Statemen untuk seleksi / percabangan : IF – THEN IF – THEN - ELSE CASE - OF Dalam Struktur seleksi atau percabangan ini , syarat/kondisi untuk seleksi biasanya melibatkan operator relasional dan logika Sebagaimana pada perulangan (looping), syarat/kondisi ini bernilai boolean jika bernilai TRUE, statemen berikutnya diproses Jika bernilai FALSE, statemen berikutnya diabaikan atau Tidak diproses
IF-THEN Syntax : IF Syarat/kondisi THEN Statemen ; true Diproses/dikerjakan Diabaikan/tidak diproses false false Kondisi ? True statemen
IF-THEN-ELSE Syntax : IF Syarat/kondisi THEN Statemen_1 ELSE true Diproses/dikerjakan Diabaikan/tidak diproses false Diabaikan/tidak diproses Diproses/dikerjakan false true Kondisi ? Statemen_2 Statemen_1
Contoh : dalam ujian, skor >= 60 adalah LULUS skor < 60 adalah TIDAK LULUS Bagian keputusan (cabang) ditulis sebagai berikut : If skor >= 60 then writeln(‘ANDA LULUS’); If skor < 60 then writeln(‘ANDA TIDAK LULUS’); Jika digunakan statemen IF-THEN-ELSE, cukup ditulis : IF skor >= 60 THEN writeln(‘ANDA LULUS’) ELSE writeln(‘ANDA TIDAK LULUS’); Atau bisa juga sebagai berikut : IF skor < 60 THEN writeln(‘ANDA TIDAK LULUS’) ELSE writeln(‘ANDA LULUS’);
Flowchart permasalahan kelulusan dengan input skor ujian adalah : Contoh program : Program Kelulusan; Uses Crt; Var skor : byte; Begin textbackground(blue); clrscr; textcolor(yellow); writeln(‘PROGRAM KELULUSAN’); write(‘skor anda = ?’); readln(skor); if skor >= 60 then writeln(‘ANDA LULUS’) else writeln(‘ANDA TIDAK LULUS’); Readln; End. Mulai skor Skor >= 60 ? false true ANDA TIDAK LULUS’ ‘ANDA LULUS’ selesai
Sebuah toko “MarketSuper” memberikan bonus kepada setiap pelanggannya. Besar belanja dan bonus yang diterima sebagai berikut : No Belanja (Rp). bonus 1 Kurang dari 100.000 Belum ada bonus 2 100.000 sampai kurang dari 500.000 Jam dinding 3 500.000 sampai kurang dari 1.000.000 Jam tangan 4 1.000.000 sampai kurang dari 2.000.000 Travel bag 5 Lebih dari 2.000.000 Kipas angin Dengan inputnya besar belanja dari para pelanggan, buat program yang dapat menunjukkan bonus yang diterima oleh para pelanggan toko “MarketSuper”
textbackground(red);clrscr; textcolor(blue); Program BONUS; Uses Crt; Var x : real; Begin textbackground(red);clrscr; textcolor(blue); writeln(‘BONUS MARKETSUPER’); write(‘Besar belanja = ‘); readln(X); if X < 100000 then writeln(‘Maaf belum dapat bonus’); if (X >= 100000) AND (X < 500000) then writeln(‘Bonus Jam Dinding’); if (X >= 500000) AND (X < 1000000) then writeln(‘Bonus Jam Tangan’); if (X >= 1000000 ) AND (X < 2000000) then writeln(‘Bonus Travel Bag’); if (X >= 2000000) then writeln(‘Bonus Kipas Angin’); writeln(‘TERIMA KASIH TELAH BERBELANJA DI MARKETSUPER’); readln; End.
Dengan input sebuah bilangan yang diketikkan dari keyboard, buat program untuk mengetahui bilangan yang dimasukkan tadi bilangan yang habis dibagi 8 atau bukan ? Atur program sehingga dapat dipakai untuk input berulang-ulang. Program HABISdibagi8; Uses crt; Var X : longint; Ulangi : char; Begin clrscr; Ulangi := ‘Y’; while (Ulangi = ‘Y’) OR (Ulangi = ‘y’) do begin writeln(‘HABIS DIBAGI 8’); write(‘Masukkan bilangan bulat = ‘); readln(X); if X mod 8 = 0 then writeln(X, ‘habis dibagi 8’); If X mod 8 <> 0 then writeln(X, ‘tidak habis dibagi 8’); end; Write(‘coba bilangan lain (Y/T) ?’); Ulangi := readkey; Readln; End. Flowchart: mulai Ulangi := ‘Y’ X false X mod 8 = 0 true X tidak habis dibagi 8 X habis dibagi 8 Ulangi Lagi ? Y T selesai
CASE – OF Syntax : CASE ekspresi OF Case-label1 : statemen_1; … … … … case-labeln : Statemen_N; end; ekspresi dapat berupa variabel/identifier atau fungsi case-label dapat berupa sebuah konstanta, range nilai konstanta (integer), atau character CASE-OF biasanya digunakan untuk mengatasi pilihan yang banyak jumlahnya
Sebuah toko “MarketSuper” memberikan bonus kepada setiap pelanggannya. Besar belanja dan bonus yang diterima sebagai berikut : No Belanja (Rp). bonus 1 Kurang dari 100.000 Belum ada bonus 2 100.000 sampai kurang dari 500.000 Jam dinding 3 500.000 sampai kurang dari 1.000.000 Jam tangan 4 1.000.000 sampai kurang dari 2.000.000 Travel bag 5 Lebih dari 2.000.000 Kipas angin Dengan inputnya besar belanja dari para pelanggan, buat program yang dapat menunjukkan bonus yang diterima oleh para pelanggan toko “MarketSuper”. Gunakan statemen CASE-OF !
Program BONUS; Uses Crt; Var x : longint; Begin textbackground(red);clrscr; textcolor(blue); writeln(‘BONUS BELANJA MARKETSUPER’); write(‘Besar belanja = ‘); readln(X); case X of 1 .. 99999 : writeln(‘Maaf belum dapat bonus’); 100000 .. 499999 : writeln(‘Bonus Jam Dinding’); 500000 .. 999999 : writeln(‘Bonus Jam Tangan’); 1000000 .. 1999999 : writeln(‘Bonus Travel Bag’); 2000000 .. 10000000 : writeln(‘Bonus Kipas Angin’); end; writeln(‘TERIMA KASIH TELAH BERBELANJA DI MARKETSUPER’); readln; End.