STRUKTUR DASAR ALGORITMA Tujuan • • Mahasiswa mampu memecahkan masalah dalam sebuah algoritma pemecahan masalah menggunakan struktur pemilihan dan pengulangan. Mahasiswa mengetahui struktur program bahasa C dan mampu mentranslasikan dengan benar dari algoritma yang sederhana ke program bahasa C Struktur Dasar Algoritma • Runtunan (sequence) Sebuah runtunan terdiri atas satu atau lebih pernyataan yang dikerjakan secara berurutan • Penyeleksian (selection) Sebuah aksi dikerjakan jika kondisi tertentu terpenuhi • Pengulangan (repetition) Memungkinkan banyak aksi dikerjakan dengan satu instruksi Runtunan Algoritma merupakan runtunan satu atau lebih instruksi yang berarti bahwa: 1. Tiap instruksi dikerjakan satu per satu 2. Tiap instruksi dikerjakan tepat satu kali 3. Urutan instruksi yang dilaksanakan kompiler sama dengan urutan instruksi dalam algoritma 4. Instruksi terakhir merupakan akhir algoritma Penyeleksian & Pengulangan Sejauh ini kita bahas algoritma yang dikerjakan berurutan. Untuk program yang lebih rumit, proses pengerjaan program dapat tidak berurutan, seperti penyeleksian kondisi dan pengulangan. Struktur Penyeleksian Ada 2 macam struktur penyeleksian. Pemilihan konstruksi yang tepat bergantung pada jumlah kasus yang akan diseleksi. 1. Pernyataan IF-THEN-ELSE 2. Pernyataan CASE Penggunaan struktur IF-THEN-ELSE jika jumlah kasus tidak banyak. Untuk jumlah kasus yang banyak, konstruksi CASE dapat menyederhanakan penulisan. Satu Kasus Notasi algoritmik untuk analisis dengan satu kasus adalah dengan menggunakan konstruksi if-then dalam bentuk pernyataan: if kondisi then pernyataan endif Contoh Satu Kasus : PROGRAM Genap { Mencetak pesan ‘genap’ jika yang dibaca dari piranti masukan adalah bilangan genap } DEKLARASI x : integer ALGORITMA: read x if x mod 2 = 0 then write (“genap”) endif Dua Kasus Notasi algoritmik untuk analisis dengan dua kasus adalah dengan menggunakan konstruksi if-then dalam bentuk pernyataan: if kondisi then pernyataan_1 else pernyataan_2 endif Contoh Dua Kasus : PROGRAM Genap_ganjil { Mencetak pesan ‘genap’ jika yang dibaca dari piranti masukan adalah bilangan genap dan mencetak ganjil jika yang dibaca dari piranti masukan adalah bilangan ganjil } DEKLARASI x : integer ALGORITMA: read x if x mod 2 = 0 then { kasus 1 } write (“genap”) else { kasus 2 } write (“ganjil”) endif Tiga Kasus Notasi algoritmik untuk analisis dengan tiga kasus adalah: if kondisi_1 then pernyataan_1 else if kondisi _2 then pernyataan_2 else pernyataan_3 endif endif { kasus 1 } { kasus 2 } { kasus 3 } Contoh Tiga Kasus : PROGRAM Wujud_Air { Menentukan wujud air, tergantung temperatur air T } DEKLARASI T : real ALGORITMA: read (T) if T 0 then { Kasus 1 } write (“padat”) else if T < 100 then { Kasus 2 } write (“cair”) else {T 100, Kasus 3 } write (“gas atau uap”) endif endif Struktur CASE Konstruksi CASE adalah sebagai berikut: case ekspresi nilai_1 pernyataan_1 nilai_2 pernyataan_2 nilai_3 pernyataan_3 . . . nilai_n pernyataan_n otherwise pernyataan_x endcase Contoh Struktur CASE : PROGRAM Konversi_Angka_ke_Huruf { Mencetak untuk huruf untuk angka 1 sampai 4 } DEKLARASI angka : integer ALGORITMA: Read (angka) case angka 1 : write (“satu”) 2 : write (“dua”) 3 : write (“tiga”) 4 : write (“empat”) otherwise : write (“angka yang dimasukkan salah”) endcase Struktur Pengulangan Struktur pengulangan terdiri atas dua bagian: • Kondisi pengulangan, yakni ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan • Badan pengulangan, yakni bagian algoritma yang diulang Di samping itu, biasanya terdapat juga bagian: • Inisialisasi, yakni aksi yang dilakukan sebelum pengulangan dilakukan pertama kali • Terminasi, yakni aksi yang dilakukan setelah pengulangan selesai dilaksanakan Konstruksi Pengulangan Ada 3 macam konstruksi pengulangan. Pemilihan konstruksi yang tepat bergantung pada masalah yang akan diprogram. 1. Pernyataan FOR 2. Pernyataan WHILE 3. Pernyataan REPEAT Pernyataan FOR adalah konstruksi pengulangan tanpa kondisi. Pernyataan WHILE dan REPAT adalah konstruksi pengulangan dengan kondisi. Pernyataan FOR Ada 2 macam pernyataan FOR 1. FOR menaik for pencacah nilai_awal to nilai_akhir do pernyataan endfor 2. FOR menurun for pencacah nilai_akhir downto nilai_awal do pernyataan endfor Contoh FOR Menaik : PROGRAM Cetak_Banyak_Hello_World { Mencetak 10 kali tulisan Hello World } DEKLARASI i : integer ALGORITMA: for i 1 to 10 do write (“Hello World”) i = i +1 endfor Contoh FOR Menaik : PROGRAM Cetak_1_sampai_10 { Mencetak angka 1 sampai 10 } DEKLARASI i : integer ALGORITMA: for i 1 to 10 do write (i) i = i +1 endfor Contoh FOR Menaik : PROGRAM Penjumlahan_Deret { Menjumlahkan deret 1 + 2 + 3 + … + N } DEKLARASI N, i, jumlah : integer ALGORITMA: read (N) jumlah 0 { inisialisasi } for i 1 to 10 do jumlah jumlah + i i = i +1 endfor write (jumlah) { terminasi } Contoh FOR Menaik : PROGRAM Hitung_Rerata { Menghitung rerata N buah bilangan bulat } DEKLARASI N, x, i, jumlah : integer rerata : real ALGORITMA: read (N) jumlah 0 { inisialisasi } for i 1 to N do read (x) jumlah jumlah + x i = i +1 endfor rerata jumlah/N { terminasi } write (rerata) Contoh FOR Menurun : PROGRAM Hitungan_Mundur { Mencetak hitungan mundur dari 10 sampai 0} DEKLARASI i : integer ALGORITMA: for i 10 downto 0 do write (i) i=i-1 endfor Pernyataan WHILE Bentuk umum pernyataan WHILE adalah while kondisi do pernyataan endwhile Pernyataan dilaksanakan berulangkali selama kondisi bernilai benar. Jika bernilai salah, maka pernyataan tidak dilaksanakan dan pengulangan berhenti. Contoh WHILE : PROGRAM Cetak_Banyak_Hello_World { Mencetak 10 kali tulisan Hello World } DEKLARASI i : integer ALGORITMA: i1 { inisialisasi } while i 10 do write (“Hello World”) ii+1 endwhile Contoh WHILE : PROGRAM Cetak_1_sampai_10 { Mencetak angka 1 sampai 10 } DEKLARASI i : integer ALGORITMA: i1 { inisialisasi } while i 10 do write (i) ii+1 endwhile Contoh WHILE : PROGRAM Penjumlahan_Deret { Menjumlahkan deret 1 + 2 + 3 + … + N } DEKLARASI N, i, jumlah : integer ALGORITMA: read (N) jumlah 0 { inisialisasi } i1 { inisialisasi } while i N do jumlah jumlah + i ii+1 endwhile write (jumlah) { terminasi } Contoh WHILE : PROGRAM Hitung_Rerata { Menghitung rerata N buah bilangan bulat } DEKLARASI N, x, i, jumlah : integer rerata : real ALGORITMA: read (N) jumlah 0 { inisialisasi } i1 { inisialisasi } while i N do read (x) jumlah jumlah + x ii+1 endwhile rerata jumlah/N write (rerata) Contoh WHILE : PROGRAM Hitungan_Mundur { Mencetak hitungan mundur dari 10 sampai 0} DEKLARASI i : integer ALGORITMA: i 10 { inisialisasi } while i 0 do write (i) ii-1 endwhile Pernyataan REPEAT Bentuk umum pernyataan REPEAT adalah : repeat pernyataan until kondisi Pernyataan dilaksanakan berulangkali selama kondisi bernilai salah. Jika bernilai benar, maka pernyataan tidak dilaksanakan dan pengulangan berhenti. Contoh REPEAT : PROGRAM Cetak_Banyak_Hello_World { Mencetak 10 kali tulisan Hello World } DEKLARASI i : integer ALGORITMA: i1 { inisialisasi } repeat write (“Hello World”) ii+1 until i > 10 Contoh REPEAT : PROGRAM Cetak_1_sampai_10 { Mencetak angka 1 sampai 10 } DEKLARASI i : integer ALGORITMA: i1 repeat write (i) ii+1 until i > 10 { inisialisasi } Contoh REPEAT : PROGRAM Penjumlahan_Deret { Menjumlahkan deret 1 + 2 + 3 + … + N } DEKLARASI N, i, jumlah : integer ALGORITMA: read (N) jumlah 0 { inisialisasi } i1 { inisialisasi } repeat jumlah jumlah + i ii+1 until i > N write (jumlah) { terminasi } Contoh REPEAT : PROGRAM Hitung_Rerata { Menghitung rerata N buah bilangan bulat } DEKLARASI N, x, i, jumlah : integer rerata : real ALGORITMA: read (N) jumlah 0 { inisialisasi } i1 { inisialisasi } repeat read (x) jumlah jumlah + x ii+1 until i > N rerata jumlah/N write (rerata) Contoh REPEAT : PROGRAM Hitungan_Mundur { Mencetak hitungan mundur dari 10 sampai 1} DEKLARASI i : integer ALGORITMA: i 10 repeat write (i) ii-1 until i > 0 { inisialisasi } WHILE atau REPEAT? Berdasarkan contoh yang ada, kita dapat menarik kesimpulan: • Gunakan konstruksi WHILE pada kasus yang mengharuskan pemeriksaan kondisi objek terlebih dahulu sebelum objek tersebut dimanipulasi • Gunakan konstruksi REPEAT pada kasus yang terlebih dahulu memanipulasi objek, baru kemudian memeriksa kondisi objek tersebut.