MODUL ALGORITMA DAN PEMROGRAMAN Rajif Agung Yunmar, S.Kom., M.Cs. STMIK “AMIKOM” Yogyakarta 2014 MODUL 3 STRUKTUR KENDALI : PERCABANGAN Control flow dalam bahasa Indonesia dapat diartikan sebagai struktur kendali. Yaitu bagaimana urutan eksekusi perintah dalam program. Beberapa contoh control flow yang dikenal dalam C++ yaitu percabangan (branching), perulangan (looping), perpindahan (jumping). Modul ini akan membahas mengenai struktur kendali percabangan. Dalam pengambilan keputusan, percabangan melakukan pengujian terhadap suatu kondisi kemudian menentukan apakah suatu baris atau blok instruksi akan diproses atau tidak. Pengujian tersebut didasarkan kepada pernyataan boolean (TRUE atau FALSE) dan dihubungkan dengan operator logika. 3.1 Pernyataan IF Dalam pemrograman, pernyataan IF digunakan untuk memeriksa sebuah kondisi, kemudian menjalankan blok instruksi dibawahnya jika kondisi yang disyaratkan memang terpenuhi. Jika tidak, makan blok instruksi tersebut akan diabaikan. Bentuk umum dari pernyataan IF adalah sebagai berikut: if(kondisi){ pernyataan ... } Contoh 1 Berikut ini adalah kode program untuk menampilkan kaliman “Selamat anda lulus” ke layar monitor apabila nilai yang diinputkan oleh pengguna lebih besar atau sama dengan 60. status_kelulusan.cpp #include <iostream.h> #include <conio.h> void main(){ int nilai; cout << "Masukkan nilai = "; cin >> nilai; if(nilai >= 60){ cout << "Selamat anda lulus."; } getch(); } 3.2 Pernyataan IF ELSE Dalam banyak hal, seringkali terjadi kasus yang melibatkan lebih dari satu kondisi. Tentu saja pemrograman dengan IF saja tidaklah cukup. Untuk menangani hal ini, C++ menyediakan pernyataan IF ELSE. Pernyataan ini mengeksekusi suatu blok pernyataan apabila sebuah kondisi terpenuhi dan mengeksekusi blok pernyataan lainnya jika kondisi tersebut tidak terpenuhi. Bentuk umum dari pernyataan IF ELSE adalah sebagai berikut: if(kondisi){ pernyataan ... } else { pernyataan_lain ... } Contoh 2 Berikut ini adalah modifikasi dari contoh pertama, program dapat menentukan status kelulusan mahasiswa (lulus/tidak lulus) dari nilai yang diinputkan oleh pengguna. status_kelulusan.cpp #include <iostream.h> #include <conio.h> void main(){ int nilai; cout << "Masukkan nilai = "; cin >> nilai; if(nilai >= 60){ cout << "Selamat anda lulus."; } else { cout << "Maaf, anda belum lulus."; } getch(); } Latihan 1 Buatlah program yang dapat menerima sebuah input bilangan dari pengguna. Kemudian tentukan apakah bilangan tersebut termasuk kedalam kelompok bilangan ganjil atau bilangan genap. 3.3 Pernyataan IF ELSE IF Pernyataan IF ELSE IF digunakan apabila terdapat lebih dari dua kondisi dalam memutuskan sesuatu. Pernyataan ini biasanya digunakan untuk merumuskan lebih banyak alternatif. Bentuk umum dari pernyataan IF ELSE IF adalah sebagai berikut: if(kondisi_1){ pernyataan_1 ... } else if(kondisi_2){ pernyataan_2 ... } else { pernyataan_lain ... } Contoh 3 Berikut ini adalah kode program untuk menentukan index nilai sebuah matakuliah dari seorang mahasiswa. Input berupa nilai dari pengguna sedangkan outputnya adalah index nilai matakuliah dalam bentuk string (A, B, C, D, E). index_nilai.cpp #include <iostream.h> #include <conio.h> #include <string> void main(){ int nilai; string index; cout << "Masukkan nilai = "; cin >> nilai; if(nilai >= 80){ index = "A"; } else if(nilai >= 70){ index = "B"; } else if(nilai >= 60){ index = "C"; } else if(nilai >= 40){ index = "D"; } else { index = "E"; } cout << "Nilai anda = " << nilai << endl; cout << "Index = " << index << endl; getch(); } Latihan 2 Toko Buku “Wijaya” mempunyai kebijakan dalam penjualan buku tulis. Jika pelanggan membeli lebih dari 100 eksemplar, maka ia mendapat diskon 20%. Apabila membeli antara 20 hingga 100, pelanggan mendapat diskon 10%. Lainnya tidak mendapat diskon. Input : harga satuan buku, jumlah buku yang dibeli. Output : total harga. 3.4 Percabangan dengan operator boolean Percabangan tipe ini digunakan ketika sebuah blok instruksi meminta dua buah kondisi atau lebih secara bersamaan. Artinya, blok instruksi tersebut hanya bisa dijalankan ketika kondisi-kondisi yang diminta terpenuhi. Operator-operator boolean yang dapat digunakan adalah: Table 3.1 Operator Boolean Operator Keterangan Simbol dalam C++ AND Konjungsi && OR Disjungsi || NOT Negasi ! XOR Exclusive OR ^ Contoh 4 Berikut ini adalah contoh program penerimaan pegawai baru. Syarat seseorang diterima sebagai pegawai adalah ia harus memiliki nilai tes minimal 250 poin dan berumur maksimal 35 tahun. penerimaan_pegawai.cpp #include <iostream.h> #include <conio.h> void main(){ int nilai, umur; cout cin cout cin << >> << >> "Masukkan nilai tes = "; nilai; "Masukkan umur = "; umur; if(nilai >= 250 && umur <= 30){ cout << "Selamat, anda diterima sebagai pegawai."; } else { cout << "Mohon maaf, anda belum memenuhi syarat."; } getch(); } Contoh 5 Berikut ini adalah contoh program menentukan asal provinsi berdasarkan nama kabupaten yang dimasukkan oleh pengguna. kab_provinsi.cpp #include <iostream.h> #include <conio.h> #include <string> void main(){ string kab_asal; cout << "Masukkan asal kabupaten anda = "; cin >> kab_asal; if(kab_asal == "Sleman" || kab_asal == "Bantul"){ cout << "Anda berasal dari Provinsi D.I. Yogyakarta."; } else { cout << "Kemungkinan anda berasal dari provinsi lain."; } getch(); } 3.5 Percabangan Bersarang Percabangan tipe ini digunakan apabila terdapat pernyataan percabangan dibawah sebuah pernyataan percabangan lainnya. Adapun bentuk umum dari percabangan ini adalah sebagai berikut: if(kondisi_1){ if(sub_ondisi_1){ sub_pernyataan_1 ... } else { sub_pernyataan_lain ... } } else { pernyataan_lain ... } Contoh 6 Berikut ini adalah contoh program untuk menentukan status kelulusan mahasiswa berdasarkan nilai matakuliah disertai dengan index nilainya. status_kelulusan.cpp #include <iostream.h> #include <conio.h> #include <string> void main(){ int nilai; string index, keterangan; cout << "Masukkan nilai = "; cin >> nilai; if(nilai >= 60){ keterangan = "Selamat anda lulus."; if(nilai >= 80){ index = "A"; } else if(nilai >= 70){ index = "B"; } else { index = "C"; } } else { keterangan = "Maaf, anda belum lulus."; if(nilai >= 40){ index = "D"; } else { index = "E"; } } cout << "Status = " << keterangan << endl; cout << "Index Nilai = " << index << endl; getch(); } 3.6 Pernyataan SWITCH-CASE Pernyataan SWITCH-CASE merupakan bentuk alternatif dari pernyataan IF ELSE IF. Pernyataan ini digunakan hanya untuk membandingkan variabel tunggal dengan dengan beberapa kemungkinan nilai-nilai. Dalam penggunaannya, pernyataan SWITCH-CASE tidak dianjurkan untuk pilihan yang melibatkan jangkauan (range). Contoh 6 Berikut ini adalah kode program untuk mengetahui deskripsi prestasi dari sebuah index nilai matakuliah. Masukan dari pengguna berupa karakter A, B, C, D. deskripsi_nilai.cpp #include <iostream.h> #include <conio.h> #include <string> void main(){ char index; string keterangan; cout << "Masukkan index nilai anda : "; cin >> index; switch(index){ case 'A': keterangan break; case 'B': keterangan break; case 'C': keterangan break; case 'D': keterangan break; default: keterangan } = "Excelent"; = "Good"; = "Fair"; = "Poor"; = "Tidak diketahui"; cout << "Keterangan index nilai = " << keterangan << endl; getch(); } Tugas 1. Buatlah program untuk menentukan nilai terbesar dari dua buah bilangan. Input: dua bilangan (A dan B). Ouput: bilangan terbesar dari kedua input tersebut. 2. Seseorang dinyatakan lulus dalam kuliah Algoritma jika nilai akhirnya lebih besar atau sama dengan 60. Nilai akhir diperoleh diperoleh dengan formula UTS (30%), UAS (40%) dan Responsi (30%). Input: nilai UTS, UAS dan Responsi. Output: nilai akhir dan keterangan. 3. Buatlah program untuk melakukan operasi aritmatika. Pengguna dapat memilih operasi aritmatika yang diinginkannya dengan ketentuan: Angka 1 : Penjumlahan Angka 2 : Pengurangan Angka 3 : Perkalian Angka 4 : Pembagian Jika pilihan yang dimasukkan bukan angka 1 s.d 4 muncul pesan "Kesalahan memasukkan pilihan". Input: angka 1 s.d 4. Output: hasil operasi aritmatika sesuai pilihan. 4. PT. Maju Selalu memiliki beberapa golongan karyawan. Gaji masing-masing karyawan ditentukan dari golongan dan lama ia bekerja (jumlah jam kerja per bulan). Gaji per jam untuk masing-masing golongan karyawan dapat dilihat pada tabel berikut: Golongan Gaji per Jam 1 10000 2 12500 3 15000 4 17500 5 20000 Buatlah program yang dapat menghitung total gaji yang didapatkan dari seorang karyawan perbulannya. Input: golongan dan jumlah jam kerja. Output: total gaji. 5. PT. Sukses Berat memiliki kebijakan yang berbeda. Selain ditentukan oleh golongan dan lama ia bekerja (jumlah jam kerja per bulan), setiap karyawan karyawan juga mendapatkan gaji tetap. Gaji tetap dan gaji per jam untuk masingmasing golongan karyawan dapat dilihat pada tabel berikut: Golongan Gaji Tetap Gaji per Jam 1 1500000 10000 2 1750000 12500 3 2000000 15000 4 2500000 17500 5 3000000 20000 Jika seorang karyawan bekerja lebih dari 120 jam dalam sebulan, maka kelebihannya akan dihitung sebagai lembur, dengan gaji per jam adalah 1.5 kali gaji biasa. Buatlah program yang dapat menghitung total gaji yang didapatkan dari seorang karyawan perbulannya. Input: golongan dan jumlah jam kerja. Output: jumlah jam kerja, jumlah jam lembur, gaji per jam, gaji lembur, total gaji. 6. Sebuah usaha penyewaan kendaraan memberlakukan tarif sebagai berikut. Lama penyewaan untuk dua jam pertama adalah 1000. Untuk jam berikutnya sampai dengan 12 jam tarif perjamnya adalah 400. Sedangkan untuk jam berikutnya maka tarif perjamnya menjadi 300. Buatlah program yang menentukan berapa banyak biaya yang harus dibayar konsumen untuk lama peminjaman tertentu. Input : lama peminjaman. Output : total pembayaran. 7. Buatlah program dengan pernyataan SWITCH-CASE untuk mengkonversi angka hari menjadi nama hari. Pengguna diminta memasukkan angka antara 1 sampai 7, untuk selanjutnya ditampilkan nama hari yang sesuai. Jika pengguna memasukkan angka yang tidak termasuk dalam batasan, maka ditampilkan pesan "Kesalahan memasukkan angka". Input: angka dari 1 s.d 7. Output: nama hari.