PEMILIHAN Dian Palupi Rini, M.Kom Runtunan • Struktur runtunan hanya terdapat pada program sederhana. Pada umumnya, masalah yang akan diselesaikan memiliki beberapa alternatif pelaksanaan aksi. Suatu aksi hanya dilakukan bila persyaratan atau kondisi tertentu dipenuhi 1 Notasi algoritmik : if kondisi then Aksi endif Aksi (dapat berupa satu atau lebih aksi) hanya akan dilaksanakan bila kondisi bernilai benar (true), jika kondisi bernilai salah, tidak ada aksi apapun yang dikerjakan. Contoh analisis dengan satu kasus Dibaca sebuah bilangan bulat dari piranti masukan. Diminta mencetak pesan ‘bilangan genap’ jika bilangan tersebut adalah genap. 2 Algoritma Bilangan_Genap {mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang dibaca merupakan bilangan genap} Deklarasi : Bil : integer Deskripsi : read (bil) if bil mod 2 = 0 then write (‘bilangan genap’) endif Algoritma Huruf_vokal {mencetak pesan ‘Huruf hidup’ jika sebuah karakter yang dibaca merupakan huruf vokal} Deklarasi : c : character Deskripsi : read (c) if (c=’a’) or (c=’i’) or(c=’u’)or(c=’e’)or(c=’o’)then write (‘Huruf hidup’) endif 3 Dua Kasus • if kondisi then • Aksi1 • else • Aksi2 • endif Dua Kasus • Aksi1 (dapat berupa satu atau lebih aksi) akan dilaksanakan bila kondisi bernilai benar (true), jika kondisi bernilai salah maka aksi2 yang akan dilaksanakan. 4 Contoh 1: Dibaca sebuah bilangan bulat dari piranti masukan. Diminta mencetak pesan ‘bilangan genap’ jika bilangan tersebut adalah genap atau bilangan ganjil jika bilangan tersebut adalah ganjil. Algoritma Genap_Ganjil {mencetak pesan ‘bilangan genap’ jika sebuah bilangan bulat yang dibaca merupakan bilangan genap atau ‘bilangan ganjil’ jika bilangan tsb ganjil} Deklarasi : Bil : integer Deskripsi : read (bil) if bil mod 2 = 0 then write (‘bilangan genap’) else write (‘bilangan ganjil’) endif 5 Contoh 2: Tulis algoritma yang membaca dua buah bilangan bulat dari piranti masukan, lalu tentukan bilangan terbesar dari kedua bilangan tersebut. Algoritma Maksimum {menentukan bilangan terbesar dari dua buah bilangan bulat} Deklarasi : a,b : character Deskripsi : read (a,b) if a > b then write (‘Bilangan terbesar : ’,a) else write (‘Bilangan terbesar : ’,b) endif 6 Tiga Kasus atau Lebih • if kondisi1 then Aksi1 else if kondisi2 then Aksi2 else If kondisi3 then Aksi3 endif endif endif Contoh 1: Tulis algoritma yang membaca sebuah bilangan bulat, lalu menentukan apakah bilangan tersebut positif, negatif atau nol. 7 Algoritma Jenis_bilangan {mencetak pesan ‘bilangan positif’ jika bilangan bulat yang dibaca > 0, atau ‘bilangan negatif’ jika < 0 atau ‘nol’ jika = 0} Deklarasi : Bil : integer Deskripsi : read (bil) if bil > 0 then write (‘bilangan positif’) else if bil < 0 then write (‘bilangan negatif’) else if bil = 0 then write (‘nol’) endif endif endif Program Menghitung Total Harga Barang • Jika Jumlah barang yang dibeli < 100 buah, maka harga perbarang yang dibeli adalah Rp 10.000,• Jika jumlah barang yang dibeli lebih besar dari atau sama dengan 100 dan kurang daari 150, maka harga perbarang adalah Rp 9.500 • Jika jumlah barang yang dibeli lebih dari atau sama dengan 150, maka harga perbarang adalah RP 9.000,Masukan dari program ini adalah jumlah barang yang dibeli Keluarannya adalah harga yang harus dibayar 8 Algoritma Program Deklarasi Jumlah : integer; Harga, total : Real; Deskripsi Write (‘Masukan jumlah barang’) Read (Jumlah) If Jumlah < 100 then Harga Å10000 Else If Jumlah >= 100 and jumlah < 150 then Harga Å 9500 Else If Jumlah >= 150 then Harga Å 9000 End if Total Å Harga * Jumlah Write (harga) Program Hubungan 2 garis • Masukan dari kedua gradien kedua garis ini bertipe real. • Keluarannya adalah hubungan antara 2 garis yaitu : – Sejajar jika m1=m2 – Tegak lurus jika m1.m2= -1 – Perpotongan jika tidak memenuhi keduanya 9 Algoritma Program Deklarasi M1,m2 : real; Hubungan : string; Deskripsi Write (Masukan Nilai garis 1); Read (m1); Write (Masukan Nilai garis 2); Read (m2); If m1 = m2 then Hubungan = ‘sejajar’ Else If m1.m2 = -1 then Hubungan = ‘Tegak lurus’ Else Hubungan = ‘Berpotongan’ End if Write (‘hubungannya =‘); Write (hubungan) Program Kuadran • Masukan dari program ini adalah 2 buah bilangan real yang melambangkan koordinat disuatu titik • Keluaran program ini adalah ‘Kuadran I’, ‘Kuadran II’, ‘Kuadran III’, ‘Kuadran IV’ 10 Algoritma Program Deklarasi : Koordinat : Record <x : real; y : real> P : Koordinat Deskripsi Write (‘Px =‘), Read (P.x) Write (‘Py =‘), Read (P.y) If P.x>0 and P.y>0 then kuadran = ‘kuadran I’ Else If P.x<0 and P.y>0 then kuadran = ‘kuadran II’ Else If P.x<0 and P.y<0 then kuadran = ‘kuadran III’ Else If P.x>0 and P.y<0 then kuadran = ‘kuadran IV’ Struktur Case Case (nama) Kondisi1 : Aksi1 kondisi2 : Aksi2 kondisi3 : Aksi3 . . . kondisiN : AksiN [otherwise aksix] endcase 11 Contoh : • Tulis algoritma yang membaca sebuah titik, lalu menentukan kuadran titik tersebut pada bidang kartesian. Algoritma Kuadran_titik {menentukan kuadran sebuah titik di bidang kartesian} Deklarasi : Type titik : record <x: real, y : real> P : titik Deskripsi : read (p.x,p.y) case (p.x, p.y) (p.x > 0)and (p.y > 0) : write (‘kuadran 1’) (p.x < 0)and (p.y > 0) : write (‘kuadran 2’) (p.x < 0)and (p.y < 0) : write (‘kuadran 3’) (p.x > 0)and (p.y < 0) : write (‘kuadran 4’) otherwise write (‘tidak terletak di kuadran manapun’) endcase 12