Algoritma Pemrograman Pertemuan Ke-5 (Penyeleksian Kondisi) :: Noor Ifada :: S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Penyeleksian Satu Kasus Penyeleksian Dua Kasus Penyeleksian Tiga Kasus atau lebih (tersarang) Struktur CASE S1 Teknik Informatika-Unijoyo 2 1
Pendahuluan Pada umumnya, suatu permasalahan yang kompleks mengandung suatu penyeleksian kondisi atau dikatakan permasalahan tersebut memiliki beberapa alternatif pelaksanaan aksi Dengan menyeleksi suatu kondisi, maka selanjutnya dapat ditentukan tindakan apa yang harus dilakukan, tergantung pada hasil kondisi yang diseleksi tersebut. Jadi suatu aksi hanya dikerjakan apabila persyaratan atau kondisi tertentu dipenuhi S1 Teknik Informatika-Unijoyo 3 Penyeleksian Satu Kasus Notasi algoritmik untuk analisis penyeleksian satu kasus adalah dengan menggunakan struktur IF-THEN: IF kondisi? benar THEN Kondisi akan diseleksi oleh statemen if Bila kondisi bernilai benar (true): aksi sesudah kata then (dapat berupa satu atau lebih aksi) akan diproses Bila kondisi bernilai salah (false): tidak ada aksi apapun yang akan dikerjakan. Statemen adalah untuk mempertegas bagian awal dan bagian akhir struktur IF-THEN. salah Aksi S1 Teknik Informatika-Unijoyo 4 2
Contoh Penyeleksian Kondisi Satu Kasus [1] Contoh: Algoritma menentukan apakah sebuah bilangan bulat merupakan bilangan genap. Algoritma BILANGAN_GENAP { Menentukan apakah sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap } DEKLARASI bil : integer DESKRIPSI : read(bil) if bil mod 2 = 0 then write( bilangan genap ) bil mod 2 = 0 salah END benar THEN bilangan genap S1 Teknik Informatika-Unijoyo 5 Contoh Penyeleksian Kondisi Satu Kasus [2] Program BILANGAN_GENAP; { Menentukan apakah sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap } (* DEKLARASI *) var bil : integer; (* DESKRIPSI *) begin write( Masukkan suatu bilangan bulat : ); readln(bil); if bil mod 2 = 0 then writeln( bilangan genap ); end. S1 Teknik Informatika-Unijoyo 6 3
Penyeleksian Dua Kasus Notasi algoritmik untuk analisis penyeleksian dua kasus adalah dengan menggunakan struktur IF-THEN-ELSE: IF Kondisi? salah ELSE aksi2 benar THEN aksi1 Dalam struktur IF-THEN-ELSE: aksi1 akan dilaksanakan jika kondisi bernilai benar (true) jika kondisi bernilai salah (false) maka aksi2 yang akan dilaksanakan Statemen menyatakan ingkaran (negation) dari kondisi. S1 Teknik Informatika-Unijoyo 7 Contoh Penyeleksian Kondisi Dua Kasus [1] Contoh: Algoritma menentukan bilangan maksimum (terbesar) dari dua buah bilangan bulat. Algoritma MAKSIMUM { Menentukan bilangan terbesar dari dua bilangan bulat } DEKLARASI A, B : integer DESKRIPSI : read(a,b) if A > B then write( Bilangan terbesar :,A) { B A } write( Bilangan terbesar :,B) benar A > B salah THEN Bilangan terbesar adl A ELSE Bilangan terbesar adl B END S1 Teknik Informatika-Unijoyo 8 4
Contoh Penyeleksian Kondisi Dua Kasus [2] program MAKSIMUM; { Menentukan bilangan terbesar dari dua bilangan bulat } (* DEKLARASI *) var A, B : integer; (* DESKRIPSI *) begin write( Masukkan bilangan A : );readln(a); write( Masukkan bilangan B : );readln(b); if A > B then writeln( Bilangan terbesar :,A) writeln( Bilangan terbesar :,B); end. S1 Teknik Informatika-Unijoyo 9 Penyeleksian Tiga Kasus/Lebih (Tersarang) Notasi algoritmik untuk analisis penyeleksian tiga kasus atau lebih (tersarang) menggunakan struktur IF-THEN-ELSE, sebagaimana halnya pada masalah dengan dua kasus Tiga kasus: S1 Teknik Informatika-Unijoyo 10 5
Penyeleksian (contd) Empat kasus: S1 Teknik Informatika-Unijoyo 11 Penyeleksian (contd) Contoh: Algoritma menentukan indeks nilai ujian mahasiswa Algoritma INDEKS_NILAI_UJIAN { Menentukan indeks nilai mahasiswa berdasarkan nilai ujiannya } DEKLARASI nilai : real { nilai ujian dalam numerik } indeks : char { A, B, C, D, E } DESKRIPSI : read(nilai) if nilai 80 then indeks A if (nilai 70) and (nilai < 80) then indeks B if (nilai 55) and (nilai < 70) then indeks C if (nilai 40) and (nilai < 55) then indeks D { nilai < 40 } indeks E write(indeks) S1 Teknik Informatika-Unijoyo 12 6
program INDEKS_NILAI_UJIAN; { Menentukan indeks nilai mahasiswa berdasarkan nilai ujiannya } (* DEKLARASI *) var nilai : real; { nilai ujian dalam numerik } indeks : char; (* DESKRIPSI *) begin write( Masukkan nilai ujian : );readln(nilai); if nilai >= 80 then indeks := A if (nilai >= 70) and (nilai < 80) then indeks := B if (nilai >= 55) and (nilai < 70) then indeks := C if (nilai 40) and (nilai < 55) then indeks := D { nilai < 40 } indeks := E ; writeln( Indeks nilai ujian =,indeks); end. S1 Teknik Informatika-Unijoyo 13 Struktur CASE Struktur CASE dapat digunakan untuk menganalisis penyeleksian dua kasus atau lebih dan bentuknya adalah lebih sederhana daripada struktur IF-THEN-ELSE yang memiliki bentuk bertingkat-tingkat Kondisi1, kondisi2,...kondisin dapat bernilai benar atau salah. Tiap kondisi diperiksa nilai kebenarannya mulai dari kondisi pertama sampai ditemukan kondisi yang benar: Jika kondisi ke-k benar, maka aksi ke-k dilaksanakan, selanjutnya keluar dari struktur CASE Aksi yang dipasangkan dengan kondisi ke-k dapat lebih dari satu, karena itu ia berupa runtunan Jika tidak ada satupun kondisi yang benar, maka aksi sesudah otherwise (optional) dikerjakan. S1 Teknik Informatika-Unijoyo 14 7
Ekivalensi CASE dengan IF-THEN-ELSE Struktur CASE menggantikan analisis kasus yang ekivalen dengan struktur IF-THEN-ELSE berikut ini: S1 Teknik Informatika-Unijoyo 15 Contoh CASE Contoh: Algoritma menentukan nama bulan berdasarkan pada nomor bulannya. Algoritma NAMA_BULAN { Mencetak nama bulan berdasarkan nomor bulannya } DEKLARASI AngkaBulan : integer { 1..12 } DESKRIPSI : read(angkabulan) case(angkabulan) AngkaBulan=1 : write( Januari ) AngkaBulan=2 : write( Februari ) AngkaBulan=3 : write( Maret ) AngkaBulan=4 : write( April ) AngkaBulan=5 : write( Mei ) AngkaBulan=6 : write( Juni ) AngkaBulan=7 : write( Juli ) AngkaBulan=8 : write( Agustus ) AngkaBulan=9 : write( September ) AngkaBulan=10 : write( Oktober ) AngkaBulan=11 : write( Nopember ) AngkaBulan=12 : write( Desember ) otherwise write( Bukan nomor bulan yang benar ) endcase S1 Teknik Informatika-Unijoyo 16 8
program NAMA_BULAN; { Mencetak nama bulan berdasarkan nomor bulannya } (* DEKLARASI *) var AngkaBulan : integer; (* DESKRIPSI *) begin write( Masukkan angka bulan (1 12) : ); readln(angkabulan); case AngkaBulan of 1 : writeln( Januari ); 2 : writeln( Februari ); 3 : writeln( Maret ); 4 : writeln( April ); 5 : writeln( Mei ); 6 : writeln( Juni ); 7 : writeln( Juli ); 8 : writeln( Agustus ); 9 : writeln( September ); 10 : writeln( Oktober ); 11 : writeln( Nopember ); 12 : writeln( Desember ); writeln( Bukan nomor bulan yang benar ); end; end. S1 Teknik Informatika-Unijoyo 17 Keberadaan CASE Tidak semua bahasa pemrograman menyediakan struktur CASE (misalnya Bahasa Fortran). Bahasa Pascal dan C menyediakan struktur ini. Jika bahasa pemrograman tidak menyediakan struktur CASE, maka struktur CASE dapat diganti dengan struktur IF-THEN-ELSE yang ekivalen S1 Teknik Informatika-Unijoyo 18 9
Summary Suatu permasalahan dapat dianalisa berdasarkan jumlah kasus yang dimilikinya, sehingga nantinya dapat ditentukan aksi apa yang akan dilakukan bila suatu kasus dimasuki Struktur penyeleksian adalah berupa struktur IF-THEN (atau IF-THEN-ELSE) dan struktur CASE S1 Teknik Informatika-Unijoyo 19 Daftar Pustaka Jogiyanto HM [1989]. Turbo Pascal, Yogyakarta: Andi Offset. Noor Ifada [2005]. Diktat Matakuliah Algoritma Pemrograman (Hibah Kompetisi A1), Bangkalan: Jurusan Teknik Informatika, Universitas Trunojoyo. Rinaldi Munir [2003]. Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika. S1 Teknik Informatika-Unijoyo 20 10