PENYELEKSIAN IF … THEN …, IF … THEN … ELSE … CASE … OF … 1 Outline Flowcharts IF – THEN – ELSE 2 Ekspresi Boolean Dua macam nilai: True, False Relation Operator = , < , > , <> , <= , >= 2. Boolean Operator AND , OR , NOT 1. 15 = 34 15.05 < 17 34 < > 34.00002 False True True 3 Aturan Prioritas untuk operator Aritmatika 1. ( ) parentheses 2. Unary + and – 3. *, / , DIV , MOD 4. + – 5. If equal precedence, left to right Examples -a+j/-w = (-a) + (j / (-w)) C*23/6+23mod2 = ((C*23)/6) + (23 mod 2) 4 Aturan Prioritas untuk Operator Boolean 1. ( ) parentheses 2. NOT 3. and 4. Or 5. < , <= , > , <= , = , <> 6. If equal precedence, left to right Examples (count <= 10) AND (Sum <= Limit) OR NOT Stop 5 Flowchart Graphical representation of algorithm Terminator Process Input/output Decision Connector Flow line 6 Flowchart example Start Read lebar Read panjang Luas := panjang + lebar Lebar < > 0 T Y Cetak Luas End 7 IF – THEN IF condition THEN statement condition False True Statement 8 IF – Then (sum1.pas) Program summation1; Var Sum, number : integer; Begin Sum := 10; Write (‘Please input a number’); Readln(number); if number < 0 then number := 0; Sum := Sum + number; writeln (‘Sum =‘, Sum) End. 9 IF – THEN – ELSE IF condition THEN statement 1 ELSE statement 2 True Statement1 condition False Statement2 10 IF – Then – Else (sum2.pas) Program summation2; Var Sum, number : integer; Begin Sum := 10; Write (‘Please input a number’); Readln(number); if number < 0 then number := 0; else number := 20; Sum := Sum + number; writeln (‘Sum =‘, Sum) End. 11 Nested Logic IF cond1 THEN statement1 ELSE IF cond2 THEN Statement2 ELSE statement3 True Statement1 condition1 True Statement2 False condition2 False Statement3 12 Nested Logic (Sum3.pas) Begin Sum := 10; Write (‘Please input a number’); Readln(number); if number > 0 then number := number +1; if number > 5 then number := 5; else number := 20; Sum := Sum + number; writeln (‘Sum =‘, Sum) End. 13 Nested Logic (sum4.pas) Begin Sum := 10; Write (‘Please input a number’); Readln(number); if number > 0 then begin number := number +1; if number > 5 then number := 5; End else number := 20; Sum := Sum + number; writeln (‘Sum =‘, Sum) End. 14 Case Case expression of const_value1 : statement1; const_value2 : statement2; const_value3 : statement3; Else statement4; End; 15 Case Example Readln (number); Case number of 1,2,3 : writeln(‘small’); 4,5,6 : writeln(‘medium’); 7,8 : writeln (‘large’); End; 16 LATIHAN Soal 1. Program yang membaca nilai integer dan menuliskan nilainya jika positif. Soal 2. Program yang membaca nilai integer dan menuliskan ‘Nilai a positif’ jika a >= 0 dan ‘Nilai a negatif’ jika a < 0. 17 LATIHAN (lanj.) Soal 3. Program yang membaca nilai integer dan menuliskan ‘Nilai a positif’ jika a > 0 , ‘Nilai a negatif ‘ jika a < 0, dan ‘Nilai Nol ‘ jika a=0. Soal 4. Dibaca tiga buah harga a, b dan c, harus dituliskan secara terurut mulai dari yang terkecil sampai dengan yang terbesar. Ketiga bilangan yang dibaca selalu berlainan harganya. 18 Soal 5. Bandingkan 2 bilangan a dan b. Jika a>b, maka cetak “a terbesar”, sebaliknya jika a<b, maka cetak “b terbesar’, selain itu, cetak “a = b” 19 Soal 6. Dibaca suatu nilai bertipe integer. Jika dimasukan harga 1 maka tulis di layar ‘SATU’ Jika dimasukan harga 2 maka tulis di layar ‘DUA’ Jika dimasukan harga 3 maka tulis di layar ‘TIGA’ …………… Jika dimasukan harga 9 maka tulis di layar ‘SEMBILAN’ Jika dimasukan harga 0 maka tulis di layar ‘NOL’ Jika dimasukan harga selain 0 s/d 9 maka tulis di layar ‘BILANGAN SELAIN 0 s/d 9’ 20 Soal 7. Buatlah program untuk menentukan bonus pegawai, berdasarkan ketentuan yang diberikan oleh bagian personalia dan keuangan sebagai berikut : Pegawai perusahaan digolongkan menjadi dua golongan, yaitu staf dan non staf. Staf akan mendapatkan bonus sebesar 1 juta rupiah dengan syarat bahwa ia telah bekerja paling tidak 5 tahun dan umurnya sudah mencapai 50 tahun; staf yang bekerja kurang dari 5 tahun dan berapapun umurnya, hanya mendapat bonus sebesar Rp. 500.000. Pegawai non staf yang telah bekerja lebih dari 5 tahun akan mendapat bonus sebesar Rp. 400.000 jika berumur lebih dari 50 tahun sedangkan pegawai non staf yang berumur kurang dari 50 tahun hanya mendapat bonus Rp. 250.000. Pegawai staf yang umurnya kurang dari 50 tahun akan mendapat bonus Rp. 300.000 21