KUG1A3 Algoritma& Pemrograman Burhanuddin D Prodi S1-Sistem Komputer, F Teknik Elektro Universitas Telkom Presentasi 5 Analisa Kasus ( Pengambilan Keputusan ) Bagian 2
IF … THEN … ELSE… If ( kondisi ) then aksi-1 else aksi-2 Jika kondisi bernilai benar, maka kerjakan aksi-1. Jika tidak benar, kerjakan aksi-2. Kondisi setelah else adalah lawan dari kondisi pada if. Dengan demikian, maka untuk analisa kasus dengan 2 kemungkinan kondisi, maka kita tidak perlu menuliskan kondisi yang berlawanan setelah else
Contoh kasus : Odd or Even Jika a integer bagaimana cara kita menentukan bahwa a itu bilangan genap atau ganjil? Tuliskan ‘genap’ bila a merupakan bilangan genap dan ‘ganjil’ bila a merupakan bilangan ganjil
Solusi untuk EvenOdd Coba bandingkan, apa perbedaannya? Program GanjilGenap1 Program GanjilGenap2 Kamus a,b: integer Kamus a: integer Algortima input(a) b a mod 2 if b=0 then output (‘genap’) else output (‘ganjil’) Algortima input(a) if (a mod 2=0) then output (‘genap’) else if (a mod 2 0) then output (‘ganjil’)
X Solusi untuk EvenOdd Bandingkan juga, apa perbedaannya? Program GanjilGenap3 Program GanjilGenap4 Kamus a: integer; b: boolean Kamus a: integer; b:boolean Algortima input(a) b (a mod 2)=0 if b then output (‘genap’) else output (‘ganjil’) Algortima input(a) b (a mod 2)=0 if ( b= true ) then output (‘genap’) else output (‘ganjil’) X
Kasus : Indeks Nilai Buatlah algortima untuk menentukan indeks nilai mata kuliah X dengan aturan: Indeks A , nilai>80 Indeks B , 60<= nilai <=80 Indeks C , 50<= nilai <60 Indeks D , 40<=nilai <50 Indeks E , nilai<40
Kasus : Indeks Nilai (lanj) Program GanjilGenap1 Kamus nilai: integer indeks : character Algortima input(nilai) if (nilai >80) then indeks’A’ else if (nilai 60) then indeks’B’ if (nilai 50) then indeks’C’ if (nilai 40) then indeks’D’ else indeks’E’ output(indeks)
IF … THEN … Notasi algoritmik if … then biasanya digunakan untuk analisa kasus dalam kondisi pengecualian. if ( kondisi ) then aksi Jika kondisi bernilai benar, maka kerjakan aksi
Contoh : Kasus If … then … Baca nilai. Jika nilai tersebut berisi 100, hitung cacah nilai dengan menambahkan N100 dengan 1. Input(nilai) If (nilai=100) then N100N100+1 Jumlahkan a dan b, simpan di c. Jika hasilnya genap, tambahkan a dengan 1. c a+b if (c mod 2=0 ) then a a+1
If..then.. dalam Pascal Bentuk hampir sama : Dalam Pascal, jika aksi / instruksi setelah then hanya sebaris, maka semua boleh ditulis sebaris Kalau lebih sebaris, beri begin..end If (i mod 2=0 ) then a a+ 1 If (i mod 2=0) then a:=a+1; If ( nilai >90 ) then Begin N90 :=N90+1; Ttl90 := Ttl90+nilai; End; If ( nilai >90 ) then N90 N90+1 Ttl90 Ttl90+nilai
If..then..else dalam Pascal Bentuk hampir sama : Dalam Pascal, jika aksi / instruksi setelah then hanya sebaris, maka semua boleh ditulis sebaris Kalau lebih sebaris, beri begin..end. Sebelum ‘else’ tidak ada titik koma (;) ! If ( jwb=‘Y’) then Harga Harga * 0.9 Bonus ‘Tidak ada’ Else Bonus ‘Payung’ If ( jwb=‘Y’) then Begin harga := harga * 0.9; Bonus :=‘Tidak ada’; End Else Bonus := ‘Payung’;
Depend on dalam Pascal Umumnya, serupa dengan ‘case..of’ . Bentuk case of : Hanya jika pilihan tergantung dari1 variabel Tipe variabel integer, karakter atau boolean Nilai kondisi adalah konstanta, bukan ekspresi boolean Depend on menu menu=1 : makan’baso’ menu=2: makan’soto’ menu=3: makan’bubur’ Case menu of 1 : makan := ‘baso’; 2 : makan := ‘soto’; 3 : makan := ‘bubur’; End;
Depend on dalam Pascal Tidak semua bisa dibuat dengan ‘case..of’ . Jika kondisi berupa ekspresi boolean yang menghasilkan bukan nilai pasti atau kondisi lebih dari 1 variabel depend on (a,b) a>b : output (a) a<b : output (b) a=b : output (‘a=b’) If (a>b) then writeln(a) Else if (a<b) then writeln(b) else writeln(‘ a=b ‘);
Analisa Kasus Bertingkat Struktur analisa kasus dalam struktur analisa kasus lainnya, misal if..then..else ( atau if..then) dalam if..then..else yang lain atau depend on. Diperlukan untuk menyaring beberapa kondisi secara bertahap. Kalau penyaringan pada kondisi bisa dilakukan sekaligus, tidak perlu struktur bertingkat. Bisa dilakukan dengan penambahan operator boolean pada kondisi. Misal : seleksi adminstrasi pegawai baru Jika ( IPK>2.75 dan berasal dari PT terkenal) maka lulus tes adminsitrasi Misal : kelulusan tingkat I Jika (IPK ≥ 2.0 dan semua matakuliah tingkat 1 lulus dan tidak ada nilai E, T dan K) then lulus tingkat 1
Analisa Kasus Bertingkat Misal : Perhatikan menu di warung di bawah ini Perhatikan juga percakapan antara pembeli dan penjual berikut ini.
Skenario Pembelian Mang, ada soto apa aja? 1 baso urat,ya. Tunggu sebentar. Kalau begitu baso 1 mang. Soto babat, kudus, dan soto bandung. Tapi sudah habis. Ini, Gan. Selamat menikmati. Baso urat aja, Mang ! Makasih, Mang ! Baso telor atau urat? Pembeli Penjual
Analisa Kasus Bertingkat Perintah : ubah menu agar pembeli dapat mengetahui jenis-jenis makanan, tanpa harus selalu bertanya pada si penjual ! Perhatikan dari percakapan di atas ! Mang, ada soto apa aja? Soto babat, kudus, dan soto bandung. Tapi sudah habis. Kalau begitu baso 1 mang. Baso telor atau urat?
Analisa Kasus Bertingkat Dari percakapan tersebut : Ada 3 jenis soto : soto babat, soto ayam dan soto daging Ada 2 jenis baso : baso telor dan baso urat. Dengan demikian, menu dapat ditulis sebagai berikut :
Dalam algoritma : Input (menu) Depend on menu menu=‘baso’ : harga 10000 input (pil) if (pil=‘telor’) then menu=‘baso telor’ else menu=‘baso urat’ menu=‘soto’ : harga 7500 depend on pil pil=‘babat’ : menu’soto babat’ pil=‘kudus’ : menu’soto kudus’ pil=‘bandung’ : menu’soto bandung’ menu=‘mie ayam’ : harga 6000 menu=‘mie ayam’ : harga 5000
Latihan Analisa Kasus 1. Bonus Pegawai
Latihan Analisa Kasus 2. Gaji Karyawan
Potongan algoritma Gaji Input : golongan, nama, jam kerja Output : gaji Proses : Gaji tetap / bulanan : tergantung golongan Gaji hadir : tarif per jam (tergantung golongan) * jam hadir Gaji lembur : jika jam kerja > 150, jam lembur = jam kerja – 150, jika tidak sama, maka jam lembur = 0. Gaji lembur = 1.5 * gaji/jam ( tergantung golongan) * jam lembur