Memahami 3 Bentuk Percabangan dalam Java
Kalau kita perhatikan, alur pengeksekusian sebuah kode
program dikerjakan satu per satu dari atas sampai ke bawah.
Baris demi baris dibaca, kemudian komputer mengerjakan apa
yang diperintahkan.
Misalnya seperti ini:
Alur programnya satu, tidak ada belokan atau percabangan.
Ngomong-ngomong apa itu percabangan?
Percabangan hanyalah sebuah istilah yang digunakan untuk
menyebut alur program yang bercabang.
Percabangan juga dikenal dengan “Control Flow”, “Struktur
Kondisi”, “Struktur IF”, “Decision”, dsb. Semuanya itu sama.
Pada diagram alur (Flow Chart) seperti di atas, alurnya
memang satu.
Tapi setelah kita menggunakan percabangan, alurnya akan
bertambah menjadi seperti ini.
Lalu bagaimana cara menulis kode percabangan dalam Java?
Caranya: menggunakan kata
kunci if, else, switch, dan case, dan operator ternary.
Contoh format stuktur IF seperti ini:
if( suatu_kondisi ) {
//
lakukan sesuatu kalau kondisi benar
//
Lakukan ini juga
}
suatu_kondisi hanya bernilai true/false saja.
Kita bisa gunakan operator relasi dan logika di sini.
Untuk lebih jelasnya, nanti akan kita bahas.
Sebelumnya, kamu perlu tahu dulu tiga bentuk percabangan
pada Java:
- Percabangan
IF
- Percabangan
IF/ELSE
- Percabangan
IF/ELSE/IF atau SWITCH/CASE
Mari kita bahas satu per satu…
1. Percabangan IF
Percabangan ini hanya memiliki satu pilihan. Artinya,
pilihan di dalam IF hanya akan dikerjakan kalau kondisinya benar.
Tapi kalau salah… tidak akan melakukan apa-apa. Alias lanjut
eksekusi ke perintah berikutnya.
Contoh:
Pernahkah kalian belanja di toko, kemudian kalau belanja di
atas sekian ribu dapat hadiah atau diskon.
Nah! Contoh kasus seperti itu, dapat kita selesaikan dengan
menggunakan percabangan ini.
untuk lebih jelasnya…
Mari Kita Membuat Program Hadiah
Misalkan ada sebuah toko buku. Mereka memberikan hadiah
berupa perlengkapan sekolah kepada pembeli yang belanja di atas Rp 100.000.
Maka programnya bisa kita buat seperti ini:
import java.util.Scanner;
public class Hadiah {
public
static void main(String[] args) {
// membuat variabel belanja dan scanner
int belanja = 0;
Scanner scan = new Scanner(System.in);
// mengambil input
System.out.print("Total Belanjaan: Rp ");
belanja = scan.nextInt();
// cek apakah dia belanja di atas 100000
if ( belanja > 100000 ) {
System.out.println("Selamat, anda mendapatkan
hadiah!");
}
System.out.println("Terima kasih...");
}
}
Jalankan programnya dan perhatikanlah hasilnya.
Cobalah untuk memberikan nilai di bawah 100000 dan
perhatikan apa akan yang terjadi.
2. Percabangan IF/ELSE
Sedangkan percabangan IF/ELSE memiliki pilihan alternatif
kalau kondisinya salah.
IF: “Jika kondisi benar maka kerjakan ini, kalau tidak
silahkan lanjut”
IF/ESLE: “Jika kondisi benar maka kerjakan ini, kalau salah
maka kerjakan yang itu, setelah itu lanjut”
Begitulah perbedaan IF dengan IF/ELSE.
Sekarang mari kita coba dalam kode program…
Program Cek Kelulusan
Misalkan, kalau nilai siswa lebih besar dari 70, maka ia
dinyatakan lulus. Kalau tidak, maka dia gagal.
Programnya bisa kita buat seperti ini:
import java.util.Scanner;
public class CekKelulusan {
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 >= 70 ) {
System.out.println("Selemat " + nama + ",
anda lulus!");
} else {
System.out.println("Maaf " + nama + ", anda
gagal");
}
}
}
Hasil outputnya:
Cobalah untuk merubah nilai yang dimasukkan dan perhatikan
apa yang akan terjadi.
Percabangan IF/ELSE dengan Operator Ternary
Selain menggunakan struktur seperti di atas, percahangan ini
juga dapat menggunakan operator ternary.
Seperti yang sudah kita pelajari pada pembahasan tentang operator. Operator ternary memiliki
konsep yang sama seperti percabganan IF/ELSE.
Contoh programnya:
public class OperatorTernary {
public
static void main(String[] args) {
boolean suka = true;
String jawaban;
// menggunakan operator ternary
jawaban = suka ? "iya" : "tidak";
// menampilkan jawaban
System.out.println(jawaban);
}
}
3. Percabangan IF/ELSE/IF dan SWITCH/CASE
Jika percabangan IF/ESLE hanya memiliki dua pilihan saja.
Maka percahangan IF/ELSE/IF memiliki lebih dari dua pilihan.
Formatnya seperti ini:
if (suatu kondisi) {
// maka
kerjakan ini
//
kerjakan perintah ini juga
// …
} else if (kondisi lain) {
//
kerjakan ini
//
kerjakan ini juga
// …
} else if (kondisi yang lain lagi) {
//
kerjakan perintah ini
//
kerjakan ini juga
// …
} esle {
//
kerjakan ini kalau
// semua
kondisi di atas
// tidak
ada yang benar
// …
}
Coba perhatikan contohnya:
Jika nilainya lebih besar dari 90, maka grade-nya “A”.
Sedangkan kalau lebih besar dari 80, maka “B+”. Lebih besar dari 70,
maka “B”, dan seterusnya.
Lebih jelasnya, mari kita buat program.
Program HitungGrade
Silahkan buat sebuah class baru bernama HitungGrade,
kemudian ikuti kode program berikut.
import java.util.Scanner;
public class HitungGrade {
public
static void main(String[] args) {
// membuat variabel dan scanner
int nilai;
String grade;
Scanner
scan = new Scanner(System.in);
// mengambil input
System.out.print("Inputkan nilai: ");
nilai = scan.nextInt();
// higung gradenya
if ( nilai >= 90 ) {
grade = "A";
} else if ( nilai >= 80 ){
grade = "B+";
} else if ( nilai >= 70 ){
grade = "B";
} else if ( nilai >= 60 ){
grade = "C+";
} else if ( nilai >= 50 ){
grade = "C";
} else if ( nilai >= 40 ){
grade = "D";
} else {
grade = "E";
}
// cetak hasilnya
System.out.println("Grade: " + grade);
}
}
Hasil outputnya:
Percabangan SWITCH/CASE
Percabangan SWITCH/CASE sebenarnya adalah bentuk lain dari
IF/ELSE/IF.
Bedanya, percabangan ini menggunakan kata
kunci switch dan case.
Formatnya juga berbeda, tapi cara kerjanya sama.
switch(variabel){
case 1:
// kerjakan kode ini
// kode ini juga
break;
case 2:
// kerjakan kode ini
// kode ini juga
break;
case 3:
// kerjakan kode ini
// kode ini juga
break;
default:
// kerjakan kode ini
// kode ini juga
break;
}
Perhatikan: case 1 artinya
nilai variabel yang akan dibandingkan, apakah nilainya sama
dengan 1 atau tidak.
Kalau iya, maka kerjakan kode yang ada di dalam case 1.
Bisa juga betuknya berbeda, misalnya seperti ini:
switch (variabel) {
case
'A':
// lakukan sesuatu
break;
case
'B':
// lakukan ini
break;
default:
// lakukan ini
}
Perlu diperhatikan juga: di sana ada kata
kunci break dan default.
- break artinya
berhenti. Ini untuk memerintahkan komputer untuk berhenti
mengecek case yang lainnya.
- default artinya
jika nilai variabel tidak ada yang sama dengan pilihan case di atas, maka
kerjakan kode yang ada di dalam default.
Pilihan default bisa juga tidak
memiliki break, karena dia adalah pilihan terakhir. Artinya pengecekan
akan berakhir di situ.
Contoh program dengan percabangan SWITCH/CASE
import java.util.Scanner;
public class LampuLalulintas {
public
static void main(String[] args) {
// membuat variabel dan Scanner
String lampu;
Scanner scan = new Scanner(System.in);
// mengambil input
System.out.print("Inputkan nama warna: ");
lampu = scan.nextLine();
switch(lampu){
case "merah":
System.out.println("Lampu merah,
berhenti!");
break;
case "kuning":
System.out.println("Lampu kuning, harap
hati-hati!");
break;
case "hijau":
System.out.println("Lampu hijau,
silahkan jalan!");
break;
default:
System.out.println("Warna lampu
salah!");
}
}
}
Hasil outputnya:
Eksperimen: Cobalah untuk menghilangkan break di
salah satu case dan perhatikanlah hasilnya.
Percabangan dalam Percabangan (Nested)
Kita sudah tahu tiga bentuk dasar percabganan di Java.
Selanjutnya, kita coba bahas percabangan yang ada di dalam perbangan
(perabangan bersarang).
Sebenarnya pembahasan ini saya ingin pisahkan. Namun,
baiknya digabungkan di sini aja.
Anggap saja pembahasan bonus .
Baiklah…
Jadi, percabangan itu bisa dibuat di dalam percabangan.
Kadang teknik ini disebut juga nested if.
Contoh kasus:
Misalnya ada model bisinis seperti ini di sebuah toko.
Ketika orang membayar di kasir, biasanya ditanya ada kartu member untuk
mendapatkan diskon dan sebagainya.
Apakah anda punya kartu member?
- ya
* Apakah belanjaan anda lebih dari 500rb?
# ya : mendapatkan diskon 50rb
# tidak : tidak mendapatkan diskon
* Apakah belanjaan anda lebih dari 100rb?
# ya : mendapatkan diskon 15rb
# tidak: tidak mendapatkan diskon
- tidak
* Apakah belanjaan anda lebih dari 100rb?
# ya : mendapatkan diskon 10rb
# tidak: tidak mendapatkan diskon
Paham?
Kalau tidak, coba perhatikan flow chart-nya:
Masih belum paham?
Kalau begitu mari kita coba dalam program.
Silahkan buat class baru bernama Kasir dan ikuti
kode program berikut ini.
import java.util.Scanner;
public class Kasir {
public
static void main(String[] args) {
// deklarasi variabel dan Scanner
int belanjaan, diskon, bayar;
String kartu;
Scanner scan = new Scanner(System.in);
// mengambil input
System.out.print("Apakah ada kartu member: ");
kartu = scan.nextLine();
System.out.print("Total belanjaan: ");
belanjaan = scan.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
System.out.println("Total Bayar: Rp " + bayar);
}
}
Hasil outputnya:
Cobalah untuk mengubah nilai yang dimasukkan dan perhatikan
hasilnya.
Mungkin di sana ada yang perlu diperhatikan:
- Fungsi equalsIgnoreCase("ya") digunakan
untuk membandingkan String dengan tidak memperdulikan huruf besar dan
kecilnya.
- Ada
juga Fungsi equals(), fungsinya sama. Tapi equals() akan
memperhatikan case hurufnya.
Kenapa tidak menggunakan operator == atau !=?
Di Java memang seperti itu.
Kalau kita ingin membandingkan nilai String, ya… menggunakan
fungsi yang dua tadi.
Tapi, kalau membandingkan selain String, maka bisa pakai operator == atau !=.
Menggunakan Operator Logika dalam Percabangan
Operator logika dalam percabangan sebenarnya bisa membuat
percabangan menjadi lebih singkat.
Misal ada program Tilang dengan logika seperti ini:
public class Tilang {
public
static void main(String[] args) {
boolean SIM = false;
boolean STNK = true;
// cek apakah dia akan ditilang atau tidak
if(SIM == true){
if( STNK == true ) {
System.out.println("Tidak
ditilang!");
}
} else {
System.out.println("Anda ditilang!");
}
}
}
Perhatikan: di sana kita menggunakan percabangan bersarang
untuk mengecek, apakah dia ditilang atau tidak.
Hal ini sebenarnya bisa disingkat dengan operator logika,
sehingga menjadi seperti ini:
public class Tilang {
public
static void main(String[] args) {
boolean SIM = false;
boolean STNK = true;
// cek apakah dia akan ditilang atau tidak
if(SIM == true && STNK == true){
System.out.println("Tidak ditilang!");
} else {
System.out.println("Anda ditilang!");
}
}
}
Pada kode di atas, kita menggunakan operator AND
(&&).
Karena logikanya: Si pengendara tidak akan ditilang kalau
punya SIM dan STNK.
Apa Selanjutnya?
Kita sudah peljari beberapa macam bentuk percabagan dan
pernak-perniknya, ringkasananya seperti ini:
- Percabangan
IF, hanya memiliki satu pilihan;
- Percabangan
IF/ELSE memiliki dua pilihan;
- Percabangan
dengan operator ternary adalah bentuk lain dari IF/ELSE;
- Percabangan
IF/ELSE/IF memiliki lebih dari dua pilihan;
- Percabangan
SWITCH/CASE adalah bentuk lain dari IF/ELSE/IF;
- Percabangan
bersarang adalah percabangan dalam Percabangan;
- Penggunaan
operator logika dalam percabangan bisa membuat percabangan menjadi lebih
singkat.
Sumber :
0 Komentar