MODUL 2 PERCABANGAN SEDERHANA A. TUJUAN Modul ini bertujuan agar mahasiswa: 1. Memahami logika pengambilan keputusan dalam pemrograman 2. Memahami dan dapat menerapkan proses logika keputusan sederhana dengan bahasa Java B. MATERI B.1. Percabangan dengan If…Else…….. Percabangan merupakan sebuah mekanisme dalam pemrograman yang digunakan untuk mengambil keputusan terkait aksi tertentu yang akan dilakukan pada kondisi spesifik. Hal ini dapat dicontohkan ketika seseorang berbelanja barang di sebuah toko dan terdapat fasilitas cashback atas total belanja yang dilakukan. Cashback sejumlah tertentu hanya dapat diberikan dengan syarat dan ketentuan yang berlaku, yaitu misalkan apabila Anda berbelanja lebih dari Rp 500.000, maka cashback akan diberikan sebesar Rp 25.000, jika tidak maka cashback tidak diberikan.
Sistem pembelanjaan pada toko tersebut akan menghitung total belanja Anda dan memeriksa apakah total belanja memenuhi kondisi yang dimaksud ( > Rp 500.000,-), jika kondisi ini terpenuhi atau dalam tipe nilai boolean bernilai TRUE, maka cashback sejumlah Rp 25.000 akan diberikan. Jika tidak bernilai TRUE maka cashback = Rp 0,-, alias tidak diberikan cashback. Gambar 1 adalah diagram alir yang mencontohkan secara lebih jelas mengenai konsep percabangan sederhana.
Gambar 1. Aliran Percabangan Sederhana
1
Dalam bahasa Java, syntax percabangan sederhana adalah sebagai berikut if (kondisi) pernyataan/aksi/blok A; else pernyataan/aksi/blok B; Komponen syntax di atas dapat dijelaskan sebagai berikut : 1. Kondisi : ketentuan yang akan dievaluasi dan akan bernilai TRUE atau FALSE 2. Pernyataan/aksi/blok A : hal yang akan dilakukan apabila ketentuan terpenuhi (TRUE) 3. Pernyataan/aksi/blok B : hal yang akan dilakukan apabila ketentuan tidak terpenuhi (FALSE) Menggunakan contoh kasus percabangan sebelumnya, maka aplikasi syntax Java pada kasus tersebut adalah sebagai berikut if (totalbelanja > 500000) cashback = 25000; else cashback = 0; Syntax di atas dapat diterjemahkan ke dalam bahasa sederhana sebagai berikut: “Jika (if) total belanja lebih dari 500.000 maka cashback bernilai 25.000, selain itu (else) maka cashback tidak diberikan” B.2. Percabangan dengan Switch….Case Percabangan dalam rangka pengambilan keputusan seringkali melibatkan alternatif aksi yang berjumlah banyak dan kondisi yang harus dipenuhi bersifat kategorial. Contohnya adalah ketika seseorang ingin membeli kendaraan. Mobil Honda H-RV misalnya memiliki 3 tipe produk, yaitu tipe S, E, dan Prestige. Konsumen akan memilih mana tipe mobil yang akan dibelinya. Pilihan konsumen pada tipe tertentu akan menentukan harga yang harus dibayarkannya. Sistem penjualan mobil ini akan mengidentifikasi KONDISI pilihan tipe mobil dari konsumen lalu memberikan AKSI/RESPON yang sesuai dengan kondisi tersebut, yaitu memberikan harga yang sesuai dengan tipe yang dipilih.
Kondisi percabangan dengan lebih dari 2 kategori ini sebenarnya dapat diterjemahkan juga dengan menggunakan
syntax
percabangan
if……else….
sebelumnya
tapi
dengan
demikian
akan
menyebabkan struktur syntax if……..else…….. yang lebih kompleks yang akan dibahas di modul selanjutnya. Untuk kali ini, syntax switch………case….. akan digunakan untuk membangun mekanisme pengambilan keputusan pada kasus di atas.
2
Dalam bahasa Java, syntax percabangan dengan menggunakan switch adalah sebagai berikut switch(var){ case (nilai1) : pernyataan/blok; break; case (nilai2) : pernyataan/blok; break; ……………………. case (nilai n) : ………….. …………………… default : pernyataan/blok } Komponen-komponen syntax di atas dapat dijelaskan sebagai berikut : 1. var : singkatan untuk variabel. Pada bagian ini Anda menentukan variable mana pada program yang Anda buat yang nilainya akan dievaluasi untuk menentukan aksi/respon selanjutnya. 2. nilai 1 - n : merupakan alternatif nilai-nilai variabel yang mungkin ada/terjadi 3. pernyataan/blok : aksi yang akan dilakukan apabila nilai var sama dengan salah satu nilai pada nilai 1 sampai n yang Anda definisikan 4. default : jalur aksi/respon yang akan dilakukan apabila ternyata nilai var melenceng dari segala alternatif nilai 1-n yang telah Anda definisikan 5. break : fungsi yang membuat Anda keluar dari mekanisme switch apabila sudah selesai melakukan/mengeksekusi aksi/pernyataan tertentu sesuai dengan nilai var yang terpenuhi. Fungsi BREAK untuk menghentikan eksekusi pernyataan/blok ini sangat penting karena mekanisme syntax percabangan pada switch….case…. ini adalah mengeksekusi/melaksanakan semua pernyataan/blok sejak pertama kali ditemukan nilai yang sesuai dengan nilai var. Jadi jika Anda tidak menggunakan break pada akhir setiap pernyataan case, maka sebagai contoh suatu saat teridentifikasi bahwa nilai var Anda sama dengan case nilai2 maka seluruh pernyataan/blok sejak case nilai2 hingga default akan dilakukan. Jika Anda menggunakan break pada setiap akhir pernyataan/blok dari case maka eksekusi pernyataan/blok hanya akan berhenti pada pernyataan terakhir di case nilai2. Menggunakan contoh kasus pembelian mobil Honda H-RV, maka aplikasi syntax switch…..case…. pada kasus tersebut adalah sebagai berikut switch(tipeHRV){ case (“S”) : harga = 299; break; case (“E”) : harga = 339; break; case (“Prestige”) : harga = 404; break; default : harga = 0; } Syntax di atas dapat diterjemahkan ke dalam bahasa sederhana sebagai berikut: 3
“Alihkan ke (switch) nilai tipeHRV yang sesuai dari alternatif (case) pertama “S” dengah harga yang diberikan sebesar 299 juta, atau alternatif kedua “E” dengan harga 339 juta, atau alternatif ketiga “Prestige” dengan harga 404 juta, lainnya harga tidak ada (0)” B.3. Kesalahan yang Sering Terjadi pada Syntax Percabangan Syntax percabangan yang telah dipaparkan sebelumnya memang terlihat tidak terlalu rumit. Bagi Anda yang sering menggunakan Ms. Excel pasti sudah terbiasa menggunakan formulai IF dengan rekayasa kondisi di dalamnya. Walaupun demikian, penggunaan struktur sederhana syntax ini pun tidak lepas dari kesalahan yang bisa menyebabkan Anda tidak mendapatkan hasil yang Anda inginkan. Dua dari beberapa kesalahan yang mungkin terjadi adalah : 1. Pernyataan kosong dari percabangan dengan menggunakan if. Hal ini biasanya disebabkan pengakhiran pernyataan dengan titik koma (;) yang salah penempatan. Contoh : if (totalbelanja > 500000); cashback = 25000;
Pada awalnya maksud Anda adalah memberikan cashback sebesar 25000 bagi konsumen dengan total pembelian di atas 500.000, namun dengan cara aplikasi syntax di atas, proses pemberian nilai 25000 sebagai nilai variabel cashback akan dilakukan dengan tidak mempedulikan kondisi besar total belanja konsumen. Hal ini disebabkan tanda titik koma (;) sebagai akhir pernyataan yang digunakan langsung setelah kondisi percabangan if dinyatakan. Penerjemahan syntax percabangan if pada contoh di atas dengan bahasa sederhana adalah: “Jika totalbelanja lebih dari 500.000 maka tidak lakukan apa-apa” Bandingkan dengan penggunaan if di bagian B.1. Pernyataan cashback = 25000 pada contoh syntax yang keliru di atas berada di luar pernyataan percabangan if sehingga aksi/respon cashback sebesar 25000 tidak terikat pada kondisi di dalam percabangan. 2. Tidak melakukan bloking pada sekumpulan pernyataan. Kesalahan biasanya terjadi apabila pada suatu kondisi terdapat lebih dari 1 pernyataan yang ingin Anda proses atau lakukan. Hal ini terkait konsep block yang sudah dijelaskan di modul-modul sebelumnya. Contoh : Jika total belanja konsumen lebih dari 500.000 maka akan diberikan cashback sebesar 25000 dan mendapatkan poin belanja sebesar 50 poin. Mekanisme seperti ini dapat diterjemahkan ke dalam bahasa Java sebagai berikut : if (totalbelanja > 500000) { cashback = 25000; point = 50;}
4
Kekeliruan terkait bloking biasanya terjadi karena Anda lupa menggunakan tanda kurung kurawal { } pada sejumlah pernyataan terkait kondisi tertentu. Contoh syntax yang terkait kekeliruan ini adalah sebagai berikut. if (totalbelanja > 500000) cashback = 25000; point = 50; Contoh syntax yang salah ini akan menyebabkan point sebesar 50 diberikan kepada semua konsumen tanpa mempertimbangkan total belanja yang dilakukan.
C. CONTOH SOAL 1. Buatlah sebuah program yang menentukan sebuah bilangan yang diinput merupakan bilangan genap atau bilangan ganjil.
ALGORITMA 0. Deklarasi variable: int bilangan 1. Baca bilangan 2. Jika (bilangan%2==0) {tulis “bilangan genap” }; lainnya { tulis “bilangan ganjil” } PROGRAM public static void main(String [] args) { Scanner in = new Scanner (System.in); //LANGKAH 0 int bilangan; //LANGKAH 1 System.out.println("Masukkan suatu bilangan: "); bilangan = in.nextInt(); //LANGKAH 2 if (bilangan%2==0) { System.out.println("Bilangan genap"); } else{ System.out.println("Bilangan ganjil"); } }
5
2. Buatlah sebuah program yang menginput sebuah bilangan, kemudian memunculkan nama bulan.
ALGORITMA 0. Deklarasi variable: int bilangan 1. Baca bilangan 2. Jika (bilangan==1) {tulis “Bulan Januari”} Jika (bilangan==2) {tulis “Bulan Februari”} Jika (bilangan==3) {tulis “Bulan Maret”} Jika (bilangan==4) {tulis “Bulan April”} Jika (bilangan==5) {tulis “Bulan Mei”} Jika (bilangan==6) {tulis “Bulan Juni”} Jika (bilangan==7) {tulis “Bulan Juli”} Jika (bilangan==8) {tulis “Bulan Agustus”} Jika (bilangan==9) {tulis “Bulan September”} Jika (bilangan==10) {tulis “Bulan Oktober”} Jika (bilangan==11) {tulis “Bulan November”} Jika (bilangan==12) {tulis “Bulan Desember”} PROGRAM public static void main(String[] args) { Scanner in = new Scanner (System.in); //LANGKAH 0 int bilangan; //LANGKAH 1 System.out.println("Masukkan bilangan (1-12): "); bilangan = in.nextInt(); //LANGKAH 2 if (bilangan==1) {System.out.println("Bulan Januari");} if (bilangan==2) {System.out.println("Bulan Februari");} if (bilangan==3) {System.out.println("Bulan Maret");} if (bilangan==4) {System.out.println("Bulan April");} if (bilangan==5) {System.out.println("Bulan Mei");} if (bilangan==6) {System.out.println("Bulan Juni");} if (bilangan==7) {System.out.println("Bulan Juli");} if (bilangan==8) {System.out.println("Bulan Agustus");} if (bilangan==9) {System.out.println("Bulan September");} if (bilangan==10) {System.out.println("Bulan Oktober");} if (bilangan==11) {System.out.println("Bulan November");} if (bilangan==12) {System.out.println("Bulan Desember"); } }
6
3. Buatlah program yang membantu seleksi asisten dengan syarat IPK minimal 3 dan kuliah tersebut mendapatkan nilai akhir minimal B. ALGORITMA 0. Deklarasi variable: double IPK, String nilaiakhir 1. Baca IPK 2. Baca nilaiakhir 3. Jika ((IPK>=3 && nilaiakhir==”B”) || (IPK>=3 && nilaiakhir==”A”)), maka tulis {“Selamat anda lolos seleksi asisten”} Lainnya tulis {“Maaf, anda tidak lolos seleksi asisten. Syarat IPK minimal 3 dan nilai akhir minimal B”} PROGRAM public static void main(String[] args) { Scanner in = new Scanner (System.in); //LANGKAH 0 double IPK; String nilaiakhir; //LANGKAH 1 System.out.println("Masukkan IPK"); IPK = in.nextDouble(); //LANGKAH 2 System.out.println("Masukkan nilai akhir (A/B/C/D) : "); nilaiakhir = in.next(); // LANGKAH 3 if ((IPK>=3 && nilaiakhir.equalsIgnoreCase(“A”)) || (IPK>=3 && nilaiakhir.equalsIgnoreCase(“B”))) {System.out.println("Selamat anda lolos seleksi asisten”);} else {System.out.println(“Maaf, anda tidak lolos seleksi asisten. Syarat IPK minimal 3 dan nilai akhir minimal B”);} }
4. Buatlah program yang membantu seleksi asisten prokom dengan syarat IPK minimal 3 dan kuliah praktikum prokom dan kuliah prokom mendapatkan nilai akhir minimal B. ALGORITMA 0. Deklarasi variabel double ipk, String IndeksPrakProkom, String IndeksKelasProkom 1. Baca IPK, IndeksPrakProkom, dan IndeksKelasProkom 2. Jika {IPK>3 & IndeksPrakProkom="b" & IndeksKelasProkom="b"} Maka, tulis(Anda Diterima Sebagai Asisten), Lainnya, tulis ("Anda tidak diterima sebagai asisten); PROGRAM public static void main(String[] args) { Scanner in=new Scanner(System.in); //LANGKAH 0 double IPK; String IndeksPrakProkom; String IndeksKelasProkom; 7
//LANGKAH 1 System.out.println("Masukkan IPK: "); IPK=in.nextDouble(); System.out.println("Masukkan indeks nilai Praktikum Pemrograman Komputer: "); IndeksPrakProkom=in.next(); System.out.println("Masukkan indeks nilai Kelas Pemrograman Komputer: "); IndeksKelasProkom=in.next(); //LANGKAH 2 if (IPK>=3&&(IndeksPrakProkom.equalsIgnoreCase("B")||IndeksPrakProkom.equalsIgnoreCase("A"))&& (IndeksKelasProkom.equalsIgnoreCase("B")||IndeksKelasProkom.equalsIgnoreCase("A"))) { System.out.println("Selamat! Anda Diterima Sebagai Asisten Pemrograman Komputer!"); } else System.out.println("Anda Tidak Diterima Sebagai Asisten Pemrograman Komputer. Belajar Lagi Yah :)"); }
D. LATIHAN 1. Input 3 buah bilangan, cari bilangan terbesar. 2. Input 3 buah bilangan, cari bilangan terkecil. 3. Input 3 buah bilangan, cari bilangan tengah. 4. Buatlah sebuah program yang dapat menghitung nilai gaji bersih karyawan di sebuah perusahaan. Gaji bersih seorang karyawan adalah gaji yang diberikan perusahaan dikurangi dengan pajak penghasilan yang ada. Bila gaji kurang dari 3 juta, nilai pajak yang ada adalah 2,5%. Bila gajinya 3-5 juta, pajaknya 5% dan bila gajinya diatas 5 juta, maka pajaknya adalah 10%. 5. Buatlah program yang meminta input suatu bilangan kemudian memberitahukan pada user tersebut 1. kelipatan 7 dan kelipatan 5, atau 2. kelipatan 7 saja atau, 3. kelipatan 5 saja atau, 4. bukan kelipatan 5 maupun kelipatan 7. 6. Buatlah program penentuan status berat badan berdasarkan BMI dengan input jenis kelamin, tinggi dan berat badan, dan output berupa BMI beserta interpretasinya! 𝐵𝑀𝐼 =
𝑇𝑖𝑛𝑔𝑔𝑖 𝐵𝑎𝑑𝑎𝑛 (𝑐𝑚) , 𝐵𝑒𝑟𝑎𝑡 𝐵𝑎𝑑𝑎𝑛 𝑥 𝐵𝑒𝑟𝑎𝑡 𝐵𝑎𝑑𝑎𝑛 (𝑘𝑔)
arti BMI untuk laki-laki. Angka BMI kurang dari 18,5 berarti berat badan kurang, angka 18,5
8