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
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? salah benar THEN Aksi Kondisi akan diseleksi oleh statemen if. Bila kondisi bernilai benar (true), maka aksi sesudah kata then (dapat berupa satu atau lebih aksi) akan diproses. Bila kondisi bernilai salah (false), maka tidak ada aksi apapun yang akan dikerjakan. Statemen endif adalah untuk mempertegas bagian awal dan bagian akhir struktur IF- THEN. S1 Teknik Informatika - Unijoyo 4
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 ) Endif bil mod 2 = 0 salah END benar THEN bilangan genap S1 Teknik Informatika - Unijoyo 5
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 ); (*endif*) end. S1 Teknik Informatika - Unijoyo 6
Penyeleksian Dua Kasus Notasi algoritmik untuk analisis penyeleksian dua kasus adalah dengan menggunakan struktur IF-THEN-ELSE: IF kondisi? benar THEN salah ELSE aksi1 aksi2 Dalam struktur IF-THEN-ELSE, aksi1 akan dilaksanakan jika kondisi bernilai benar (true), dan jika kondisi bernilai salah (false) maka aksi2 yang akan dilaksanakan. Statemen else menyatakan ingkaran (negation) dari kondisi. S1 Teknik Informatika - Unijoyo 7
Contoh: Algoritma menentukan bilangan maksimum (terbesar) dari dua buah bilangan bulat. Algoritma MAKSIMUM { Menentukan bilangan terbesar dari dua bilangan bulat } DEKLARASI A, B : integer salah A > B ELSE benar THEN Bilangan terbesar A DESKRIPSI : read(a,b) if A > B then write( Bilangan terbesar :,A) else { B A } write( Bilangan terbesar :,B) endif Bilangan terbesar B END S1 Teknik Informatika - Unijoyo 8
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) else writeln( Bilangan terbesar :,B); (*endif*) end. S1 Teknik Informatika - Unijoyo 9
Penyeleksian Tiga Kasus atau Lebih (tersarang) Notasi algoritmik untuk analisis penyeleksian tiga kasus atau lebih (tersarang) adalah tetap dengan menggunakan struktur IF-THEN- ELSE sebagaimana halnya pada masalah dengan dua kasus Tiga kasus: S1 Teknik Informatika - Unijoyo 10
Empat kasus: S1 Teknik Informatika - Unijoyo 11
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 } Contoh: Algoritma menentukan indeks nilai ujian mahasiswa DESKRIPSI : read(nilai) if nilai 80 then indeks A else if (nilai 70) and (nilai < 80) then indeks B else if (nilai 55) and (nilai < 70) then indeks C else if (nilai 40) and (nilai < 55) then indeks D else { nilai < 40 } indeks E endif endif endif endif write(indeks) S1 Teknik Informatika - Unijoyo 12
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 else if (nilai >= 70) and (nilai < 80) then indeks := B else if (nilai >= 55) and (nilai < 70) then indeks := C else if (nilai 40) and (nilai < 55) then indeks := D else { nilai < 40 } indeks := E ; (*endif*) (*endif*) (*endif*) (*endif*) 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 kek 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
Struktur CASE menggantikan analisis kasus yang ekivalen dengan struktur IF-THEN-ELSE berikut ini: S1 Teknik Informatika - Unijoyo 15
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
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 ); else writeln( Bukan nomor bulan yang benar ); end; end. S1 Teknik Informatika - Unijoyo 17
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
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, Andi Offset, Yogyakarta. Noor Ifada [2005]. Diktat Matakuliah Algoritma Pemrograman, Hibah Kompetisi A1, Jurusan Teknik Informatika, Universitas Trunojoyo. Rinaldi Munir [2003]. Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Penerbit Informatika, Bandung. S1 Teknik Informatika - Unijoyo 20