Jika kita simak bersama, alur dalam menjalankan sebuah kode program dilakukan baris demi baris hingga ke bawah.
Tiap barisnya dibaca kemudian komputer menjalankan apa yang diperintahkannya
Contohnya seperti ini
Jika kita amati gambar di atas, alur programnya hanya satu, lurus saja, tidak ada percabangan atau tikungan sama sekali
Apa sih percabangan itu ?
Percabangan merupakan istilah yang dipakai untuk menamai alur program yang bercabang. Adapulah yang menyebut Percabangan dengan beberapa istilah seperti Stuktur kondisi, Control Flow Decision, Struktur IF dan lain sebagainya, kesemuanya adalah sama. Pada bagan alir (flow chart) seperti gambar di atas, alurnya memang satu. Namun setelah kita menggunakan metode percabangan, alurnya akan berubah seperti ini.
Lantas bagaimana cara menulis kode program percabangan dalam pemrorgaman java?
Banyak cara dalam java untuk mengimplementasikan percabangan, diantaranya if, else, switch dan case yang dikombinasikan menggunakan operator ternary
Contoh tubuh program dari if
if(kondisi) { // lakukan sesuatu kalau kondisi benar // Lakukan ini juga }
Sebuah kondisi hanya akan bernilai benar / salah ( true/false) saja, dan dalam percabangan kita juga dapat menggunakan operator relasi dan operator logika
Agar lebih jelas, kita akan bahas secara rinci
Sebelum kita belajar lebih jauh, kalian harus tahu bahwa bercabangan dalam pemrograman java memiliki tiga bentuk
- Percabangan IF
- Percabangan IF/ELSE
- Percabangan IF/ELSE/IF atau SWITCH/CASE
Kita akan bahas satu per satu jenis percabangan tersebut
1. Percabangan IF
Percabangan ini cuma mempunyai satu opsi. Artinya, opsi di dalam IF cuma akan dilaksanakan jikalau kondisinya benar.
Tetapi jika salah, maka program akan melanjutkan perintah berikutnya tanpa menjalankan percabangan yang lain
Contoh:
Misalkan ada sebuah usaha fotocopy. Mereka memberikan hadiah pencil kepada pelanggan yang fotocopy diatas Rp. 25.000
Maka programnya bisa kita buat seperti ini:
import java.util.Scanner; public class Hadiah { public static void main(String[] args) { // membuat variabel bayar dan scanner int bayar = 0; Scanner scan = new Scanner(System.in); // mengambil input System.out.print("Total Bayar: Rp "); bayar = scan.nextInt(); // cek apakah dia bayardi atas 25000 if (bayar > 25000) { System.out.println("Selamat, anda mendapatkan Pensil!"); } System.out.println("Terima kasih..."); } }
Jalankan programnya dan perhatikanlah hasilnya.
Coba kalian ubah nilainya dibawah 25000 dan perhatikan ouput dari program tersebut
Petunjuk Penulisan Program :
if( boolean_expression ){
statement1;
statement2;
. . .
}
Boolean_expression pada statement harus merupakan nilai boolean.Hal ini berarti
persyaratan harus bernilai true atau false.
- Masukkan statement di dalam blok if. Contohnya,
if( boolean_expression ){
//statement1;
//statement2;
}
2. Percabangan IF/ELSE
Percabangan IF/ELSE memiliki beberapa pilihan alternatif jika kondisinya salah.
Percabangan if-else digunakan jika kita ingin mengeksekusi sebuah statement bernilai
true dan statement yang lain bernilai false.
IF: “Jika kondisi benar maka kerjakan, jika tidak lanjutkan”
IF/ESLE: “Jika kondisi benar maka kerjakan, jika salah maka kerjakan yang itu, setelah itu lanjut”
Gambar
Itulah perbedaan percabangan IF dengan IF/ELSE.
Agar lebih faham, mari kita coba dalam bahasa pemrograman java…
Program Cek Nilai
Contoh kasusnya seperti ini, Fauzan adalah siswa kelas X RPL yang mendapatkan nilai 80 pada mata pelajaran Pemrorgaman Dasar, sedangkan KKM dari maple tersebut adalah 78, pakah fauzan remidi?
Struktur Algoritmanya seperti ini
Jika nilai siswa lebih besar sama dengan 78, maka ia dinyatakan Tidak Mengulang Ujian. Jika tidak, maka dia Mengulang Ujian.
Programnya bisa kita buat seperti ini:
import java.util.Scanner; public class CekRemidi { public static void main(String[] args) { // membuat variabel dan Scanner int nilai; String nama; Scanner scan = new Scanner(System.in); // mengambil input System.out.print("Nama: "); nama = scan.nextLine(); System.out.print("Nilai: "); nilai = scan.nextInt(); // cek apakah dia lulus atau tidak if( nilai >= 78 ) { System.out.println("Selemat " + nama + ", anda Tidak Mengulang!"); } else { System.out.println("Maaf " + nama + ", anda Harus Mengulang"); } } }
sehingga ketika dijalankan hasil outputnya seperti ini :
Cobalah untuk merubah nilai yang dimasukkan dan perhatikan apa yang akan terjadi.
3. Percabangan IF/ELSE dengan Operator Ternary
Selain memakai struktur seperti di atas, percahangan ini juga bisa memakai operator ternary.
Seperti yang telah kita pelajari pada pembahasan perihal operator. Operator ternary mempunyai konsep yang sama seperti percabganan IF/ELSE.
Contoh programnya:
public class OperatorTernary { public static void main(String[] args) { boolean suka = true; String jawaban; // operator ternary jawaban = suka ? "iya" : "tidak"; // menampilkan jawaban ke layar monitor System.out.println(jawaban); } }
4. Percabangan IF/ELSE/IF
Jika di dalam percabangan IF/Else hanya memiliki dua opsi/pilihan saja, berbeda halnya dengan percabangan IF/ELSE/IF, percabangan IF/ELSE/IF ini memiliki lebih dari dua opsi atau pilihan, simak struktur percabangan IF/ELSE/IF berikut ini
if (kondisi pertama) { // jika sesuai maka kerjakan ini // kerjakan perintah ini juga // … } else if (kondisi kedua) { // jika sesuai kerjakan ini // kerjakan ini juga // … } else if (kondisi ketiga) { // jika sesuai kerjakan perintah ini // kerjakan ini juga // … } else{ // kerjakan ini jikalau // semua kondisi di atas // tidak ada yang sesuai // … }
Saya buatkan sebuah diagram yang menggambar tentang percabangan IF/ELSE IF, perhatikan dengan seksama
Penjelasan :
Jika nilainya lebih besar sama dengan 90, maka predikat-nya “A”. Jika nilainya lebih besar sama dengan 80, maka predikat-nya “B”. Jika nilainya lebih besar sama dengan 70, maka predikat-nya “C”, Jika nilainya lebih besar sama dengan 60, maka predikat-nya “D”. namun jika nilanya tidak sesuai dengan kriteria di atas maka predikat-nya “E”
Agar lebih jelas, mari kita buat program sederhana menggunakan bahasa pemrograman java.
Program Menentukan Predikat Nilai
import java.util.Scanner; public class TentukanPredikat { public static void main(String[] args) { // deklarasi variabel dan scanner int nilai; String Predikat; Scanner input = new Scanner(System.in); // mengambil inputan nilai System.out.print("Inputkan nilai: "); nilai = input.nextInt(); // Tentukan Predikatnya if ( nilai >= 90 ) { Predikat = "A"; } else if ( nilai >= 80 ){ Predikat = "B"; } else if ( nilai >= 70 ){ Predikat = "C"; } else if ( nilai >= 60 ){ Predikat = "D"; } else { Predikat = "E"; } // Tampilkan Predikatnya System.out.println("Predikat Nilai : " + Predikat); } }
Jalankan Programnya, dan apa yang ditampilkan? Apakah sudah sesuai ?
5. Percabangan SWITCH/CASE
Percabangan Switch/Case sebetulnya merupakan persama dari percabangan IF/ ELSE IF, hanya saja percabangan ini menggukana kata kunci switch dan case.
Struktur kodenya berbeda namun cara kerja dari percabangan ini sama dengan IF / ELSE IF
Perhatikan struktur kode di bawah ini
switch(variabel){ case 1: // jalankan kode yang disini break; case 2: // jalankan kode yang disini break; case 3: // jalankan kode yang disini break; default: // jalankan kode yang disini break; }
Perhatikan: case 1 , 1 merupakan nilai variabel yang akan dibandingkan, cek apakah nilainya sama dengan 1 atau tidak. Jika Ya maka jalankan kode yang ada di dalam case 1. begitu seterusnya hingga case terakhir
Bisa pula betuknya berbeda, misalnya seperti contoh berikut ini:
switch (variabel) { case 'A': // jalankan kode yang disini break; case 'B': // jalankan kode yang disini break; default: // jalankan kode yang disini }
Penjelasan
- break maknanya berhenti. kaya kunci ini digunakan untuk menghentikan pengecekan case.
- default maknanya jika nilai variabel tidak ada yang sama dengan pilihan case di atas, maka kode yang ada di dalam default akan dikerjakan
- Pilihan default tidak memiliki break, kenapa? karena defaul merupakan pilihan terakhir. Artinya pengecekan akan berakhir di case tersebut.
Contoh Percabangan dengan Switch / Case
Contoh percangan switch/case ini kita implementasikan dengan membuat Aplikasi Memilih Jurusan
Buatlah class dengan nama SwitchCase kemudian ketik listing code di bawah ini :
package com.semarsoft; import java.util.Scanner; /** * * @author semarsoft.com */ public class SwitchCase { public static void main(String[] args) { Scanner input = new Scanner(System.in); String nama , nis ; int jurusan; System.out.print("Masukan Nama : "); nama = input.nextLine(); System.out.print("Masukan NIS : "); nis = input.nextLine(); System.out.print("Pilihan : \n " + "1. Rekayasa Perangka Lunak \n " + "2. Multimedia \n " + "3. Teknik Komputer dan Jaringan" + "\n\n Masukan pilihan :"); jurusan = input.nextInt(); switch (jurusan){ case 1: System.out.println("\n"+nama+" dengan nis "+nis+" " + "memilih jurusan Rekayasa Perangkat Lunak"); break; case 2: System.out.println("\n"+nama+" dengan nis "+nis+" " + "memilih jurusan Multimedia"); break; case 3: System.out.println("\n"+nama+" dengan nis "+nis+" " + "memilih jurusan Teknik Komputer dan Jaringan "); break; } } }
Jika dijalankan outputnya seperti gambar beriku tini
Eksperimen: Cobalah kalian hilangkan break di salah satu case dan perhatikan dan catat hasilnya.
6. Percabangan didalam Percabangan (Nested)
Nah kita sudah mempelajari bentuk dasar percabangan di dalam pemrograman java. Kemudian kita akan membahas percabangan yang ada di dalam percabangan, istilah orang programmer percabangan bersarang atau bisa disebut nested if
Mungkin ada yang bertanya, memang gunanya untuk apa? Berbeda dengan percabangan sebelumnya ?
Agar lebih faham, kita bahas dengan contoh kasus ya….
Contoh kasus:
Misalkan di sebuah toko. Ketika membayar tagihan di kasir, biasanya pembeli ditanya oleh kasir, apaka ada kartu member untuk mendapatkan diskon? Begitu bukan? Nah bagaimana tuh programnya, sebelum kita membuat aplikasinya, kita tulis dulu bisnis prosesnya agar dalam pembuatan aplikasi lebih mudah
Apakah anda memiliki kartu member? - Jika “Ya” * Apakah bayar belanjaan anda lebih dari Rp 500.000? # Jika Ya : Mendapatkan diskon sebesar Rp 50.000 # Jika Tidak : Tidak mendapatkan diskon * Apakah bayar belanjaan anda lebih dari Rp 100.000? # Jika Ya : Mendapatkan diskon sebesar Rp 15.000 # Jika Tidak: Tidak mendapatkan diskon - Jika Tidak * Apakah belanjaan anda lebih dari Rp 100.000? # Jika Ya : Mendapatkan diskon sebesar Rp 10.000 # Jika Tidak: Tidak mendapatkan diskon
Dari bisnis proses tersebut ketika kita amati, tedapat kata “jika” di dalam sub “jika”, nah sampai sini apakah kalian faham?
Jika Belum faham, coba perhatikan flow chart-nya:
Bagaimana apakah sudah faham, jika belum mari kita implementasikan kedalam bahasa pemrograman java
Silahkan buat class baru bernama DiskonMart dan ikuti kode program berikut ini.
import java.util.Scanner; public class DiskonMart { public static void main(String[] args) { // deklarasi variabel dan Scanner int belanjaan, diskon, bayar; String kartu; Scanner input= new Scanner(System.in); // mengambil inputan dari scanner System.out.print("Apakah ada kartu member: "); kartu = input.nextLine(); System.out.print("Total belanjaan: "); belanjaan = input.nextInt(); // proses if (kartu.equalsIgnoreCase("ya")) { if (belanjaan > 500000) { diskon = 50000; } else if (belanjaan > 100000) { diskon = 15000; } else { diskon = 0; } } else { if (belanjaan > 100000) { diskon = 5000; } else { diskon = 0; } } // total yang harus dibayar bayar = belanjaan - diskon; // output menampilkan nilai variabel bayar System.out.println("Total Bayar: Rp " + bayar); } }
setelah selesai, coba jalankan dan simpulkan hasilnya
Cobalah bereksperimen dengan mengubah nilai yang diinputkan kemudian amati hasilnya.
dari ulasan di atas mungkin ada beberapa hal yang perlu diperhatikan:
- Fungsi equalsIgnoreCase(“ya”) digunakan untuk membandingkan String apakah isinya “ya” atau tidak dengan mengabaikan apakah yang dipakai huruf besar dan huruf kecil.
- Ada juga Fungsi equals(), fungsinya sama dengan equalsIgnoreCase(). akan tetapi equals() sensitivcase atau akan memperhatikan case hurufnya.
Kenapa kok tidak memakai operator == atau !=?
Nah itulah pemrograman java, jika kita ingin membandinkan sebuah nilai string, harus menggunakan perintah di atas, namun jika ingin membandinkan selain String maka bisa menggunakan operator == atau !=
Menggunakan Operator Logika dalam Percabangan
Operator logika di dalam percabangan sebetulnya dapat membuat percabangan menjadi lebih singkat.
Misalnya kita membuat aplikasi Cek Penularan Virus Corona dengan coding seperti berikut ini:
public class Corona{ public static void main(String[] args) { boolean Masker= false; boolean SakitCorona = true; // cek apakah dia bisa menularkan virus ? if(SakitCorona == true){ if( Masker == true ) { System.out.println("Tidak Bisa Menularkan Virus"); } } else { System.out.println("Bisa Menularkan Virus!"); } } }
Perhatikan: di sana kita menggunakan percabangan bersarang untuk mengecek, apakah dia dapat tertular virus atau tidak.
Hal ini sebenarnya bisa disingkat dengan operator logika, sehingga menjadi seperti ini:
public class Corona{ public static void main(String[] args) { boolean Masker = True; boolean SakitCorona = false; // cek apakah dia bisa menularkan virus ? if(SakitCorona == false && Masker == True){ System.out.println("Kemungkinan Kecil Tertular Virus"); } else { System.out.println("Bisa Tertular Virus!"); } } }
Pada kode di atas, kita menggunakan operator AND (&&).
Karena logikanya: seseorang tidak bisa tertular virus corona jika ia mengenakan master.