Tutorial Java Dasar 010 – Percabangan

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

Alur Program Tanda Percabangan
Alur Program Tanpa Percabangan

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.

Alur Program Percabangan
Alur Program Percabangan

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

  1. Percabangan IF
  2. Percabangan IF/ELSE
  3. 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.

Percabangan
Percabangan

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.

Running Percabangan.

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.

  1. 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 :

Running Percabangan Nilai

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.

Operator Ternary dalam Percabangan
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

Percabangan bertingkat

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 tinisemarsoft - Percabangan Switch Case

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:Semarsoft - Percabangan Bersarang

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.

Leave a Comment