Modul 2 : Percabangan - IvanSholana/Pemrograman-Berbasis-Objek-Sistem-Informasi GitHub Wiki

Percabangan IF-Else

Dalam sebuah pemrograman terdapat sebuah kemampuan untuk mengatur jalannya sebuah pemrograman yang disebut dengan Control Flow. Salah satu dari Control Flow adalah mengatur jalannya sebuah program berdasarkan kondisi yang terjadi atau kondisi yang terpenuhi. Untuk melakukan Control Flow tersebut maka digunakan If-Else.

If-Else atau biasa disebut percabangan merupakan control flow yang terdapat di bahasa pemrograman termasuk Java. Dengan menggunakan If-Else maka alur program dapat diatur dan disesuaikan untuk melakukan sebuah statement berdasarkan kondisi yang terpenuhi sehingga jika tidak terdapat kondisi else, maka program tersebut tidak akan mengoutputkan apa - apa. Adapun untuk menggunakan If-Else pada Java sebenarnya tidak terlalu berbeda dengan If-Else pada python dengan syntax pada Java adalah sebagai berikut:

if (condition) {
  // Statement yang akan dieksekusi jika if bernilai true
} else {
  // Statement yang akan dieksekusi jika if bernilai false
}

Condition pada percabangan if berisi sebuah atau beberapa operasi dari kombinasi relational dan logical expression yang menghasilkan nilai boolean true atau false. Kemudian, else adalah flow yang akan dipilih ketika kondisi if tidak terpenuhi atau menghasilkan nilai false. Contoh Kode Program If-else pada Java:

import java.util.Scanner;

public class Percabangan {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Masukkan angka : ");
        int a = input.nextInt();
        if(a == 0){
            System.out.println("ini angka 0");
        }else{
            System.out.println("ini angka bukan 0");
        }
    }
}

Pada contoh di atas condition yang ditetapkan untuk mengahasilkan nilai true adalah a == 0. Pada kondisi tersebut terdapat relational operator, yang mana terdiri dari:

Relational Operator Sifat
== sama dengan
> lebih dari
>= lebih dari sama dengan
< kurang dari
<= kurang dari sama dengan

Kemudian condition pada if juga tidak terbatas hanya satu saja, kita dapat menambahkan sebanyak apapun kondisi yang diinginkan dengan mengkombinasikan setiap kondisi dengan logical operator yang terdiri dari:

  1. And (&&) : Bernilai true jika semua kondisi terpenuhi
  2. Or (||) : Bernilai true jika salah satu kondisi terpenuhi
  3. Not (!) : Membalikkan suatu nilai kondisi, jika true maka false dan sebaliknya Contoh kode program:
import java.util.Scanner;

public class Percabangan {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Masukkan angka : ");
        int a = input.nextInt();
        if(a > 0 && a < 10){
            System.out.println("ini angka satuan");
        }else{
            System.out.println("ini bukan angka satuan);
        }
    }
}

Pada contoh di atas terdapat dua kondisi pada if yaitu a > 0 dan a < 10 yang mana keduanya harus bernilai true sehingga if akan bernilai true.

Percabangan Else - If

Selain IF dan Else juga terdapat Else - If. Dengan menggunakan else if dimungkinkan terdapat lebih dari 2 percabangan dengan setiap percabangannya memiliki kondisinya masing masing. Untuk menggunakan else if dapat digunakan struktur sebagai berikut:

if (condition) {
  // Statement
}else if (condition) {
  // Statement 
}else {
  // Statement
}

Program akan melakukan pengecekan dari atas, jika if tidak terpenuhi maka akan dilanjutkan pengecekan terhadap else if dan jika else if bernilai true maka statement milik else if akan dieksekusi tetapi jika tidak maka else akan dieksekusi. Adapun contoh penerapannya adalah sebagai berikut:

import java.util.Scanner;

public class Percabangan {
    public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       int a = input.nextInt();
       if(a > 0 && a < 5){
           System.out.println("a kurang dari 5");
       }else if(a > 5 && a < 10){
           System.out.println("a lebih dari 5");
       }else{
           System.out.println("a kurang dari 0 atau lebih dari 10");
       }
    }
}

Switch Case

Selain percabangan If-Else if-Else juga terdapat metode percabangan yaitu Switch Case. Berbeda dengan If-Else, pada Switch Case kondisinya haruslah sebuah nilai constant atau secara tidak langsung pada switch case hanya mendukung == pada relation operator. Adapun constant value yang dapat digunakan dapat berupa tipe data integer atau char. Untuk menggunakan Switch Case dapat mengikuti struktur berikut:

switch (value){
  case condition:
      // statement
      break;
  case condition:
      // statement
      break;
  default:
      // statement
      break;
}

Pada struktur di atas value akan dicocokkan dengan condition pada case apakah sama atau tidak. Jika iya maka statement akan dieksekusi tetapi jika tidak maka akan dilakukan pencocokan berikutnya hingga ke default case. Break berguna untuk menghentikkan eksekusi program pada case di bawahnya jika suatu case di atasnya terpenuhi. Adapun contoh implementasi dari Switch Case adalah sebagai berikut:

import java.util.Scanner;

public class Percabangan {
    public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       int a = input.nextInt();
       switch (a){
           default:
               System.out.println("tidak valid");
               break;
           case 1:
               System.out.println("angka 1");
               break;
           case 2:
               System.out.println("angaka 2");
               break;
       }
    }
}

Nested If

Nested if adalah kondisi dimana terdapat perulangan di dalam perulangan lain. Perulangan ini ibarat melakukan pengecekan kedua dalam sebuah sistem keamaan. Berikut contoh dari nested if:

int x = 80;
        if (x > 75) {
            if (x < 90) {
                System.out.println("anda mendapatkan nilai B");
            } else if (x > 90) {
                System.out.println("anda mendapatkan nilai A");
            }
        } else {
            System.out.println("anda tidak lulus");
        }

Pada kode program di atas menunjukkan nested if yang akan dilakukan ketika kondisi a > 75 terpenuhi yang mana akan menjalankan if berikutnya yaitu pengecekan terhadap apakah nilai a < 90 atau a > 80.

Contoh Kode Program

Adapun berikut beberapa contoh kode program percabangan menggunakan If-Else dan Switch Case:

CONTOH 1

class Percabangan {
    public static void main (String args[]) {
        char firstInitial = 'a';
        System.out.println("Masukkan huruf awal nama anda: ");
        try {
            firstInitial = (char)System.in.read();
        } catch (Exception e) {
            System.out.println("Error: " + e.toString());
        }
        if (firstInitial == 'a')
            System.out.println("Nama anda pasti Asep!");
        else if (firstInitial == 'b')
            System.out.println("Nama anda pasti Brodin!");
        else if (firstInitial == 'c')
            System.out.println("Nama anda pasti Cecep!");
        else
            System.out.println("Nama anda tidak terkenal!");
    }
}

CONTOH 2

class Percabangan {
    public static void main (String args[]) {
        char firstInitial = 'a';
        System.out.println("Masukkan huruf awal nama anda:");
        try {
            firstInitial = (char)System.in.read();
        } catch (Exception e) {
            System.out.println("Error: " + e.toString());
        }
        switch (firstInitial) {
            case 'a':
                System.out.println("Nama anda pasti Asep!");
                break;
            case 'b':
                System.out.println("Nama anda pasti Brodin!");
                break;
            case 'c':
                System.out.println("Nama anda pasti Cecep!");
                break;
            default:
                System.out.println("Nama anda tidak terkenal!");
        }
    }
}

SOAL LATIHAN

  1. Brando adalah seorang mahasiswa semester 2 prodi sistem informasi. Pada mata kuliah Pemrograman Berorientasi Objek, Brando harus lulus dengan nilai minimal 75 (B). Nilai akhir didapatkan dari nilai rata - rata tugas, UTS, dan UAS. Jika Brando mendapatkan nilai rata – rata di bawah 75 maka Brando mendapatkan kesempatan untuk mengikuti ujian perbaikan nilai sebanyak sekali. Untuk mempersiapkan rencana selanjutnya, Brando membuat sebuah program yang menginputkan nilai dari tugas, UTS, dan UAS dan mengoutputkan hasil apakah Brando lulus, harus remidi, atau harus mengulang. Jika Brando lulus, outputkan juga indeks nilai Brando dengan ketentuan (A) untuk nilai minimal 90 dan (B) untuk nilai minimal 75. Jika Brando harus remidi, maka outputkan nilai minimal yang harus didapatkan Brando pada ujian remidi agar lulus mata kuliah tersebut.

    Sample Input 1

    78
    78
    50
    

    Sample Output 1

    Nilai anda kurang, harap ikuti remidi dengan mendapat nilai minimal 94.0
    

    Sample Input 2

    90
    100
    85
    

    Sample Output 2

    Anda lulus dan mendapatkan nilai A
    
  2. Kobo membeli n buah donat ke sebuah toko karena mendapatkan informasi bahwa teman - temannya akan datang bermain ke rumahnya. Ketika membeli donat kobo membawa sebuah keranjang yang mampu menapung x gram donat. Di toko donat Kobo yang kobo datangi ternyata donat yang dijual memiliki berat yang berbeda / pcs pada setiap jenisnya. Bantu kobo untuk menentukkan apakah kobo dapat membeli n buah donat dengan berat x gram per pcsnya dengan membandingkannya dengan berat yang dapat ditampung oleh tas kobo.

    Sample Input 1

    5 15 3
    

    Sample Output 1

    YEAY Kobo berhasil membeli donat!!!
    

    Sample Input 2

    5 10 3
    

    Sample Output 2

    Tas Kobo Jebol!!!
    

    Nb: input pertama adalah berat donat, input kedua adalah kemampuan berat yang dapat ditampung tas kobo, input ketiga adalah jumlah donat yang Kobo beli

TUGAS

  1. Buatlah program untuk menentukan suatu tahun kabisat atau bukan dimana tahun dibatasi mulai dari tahun 1900 sampai dengan tahun 2005. Contoh tampilan:
    Masukkan tahun (1900-2005) : 1923
    1923 bukan tahun kabisat
    Masukkan tahun (1900-2005) : 1898
    Maaf, tahun input dibawah 1900
    Masukkan tahun (1900-2005) : 1996
    1996 adalah tahun kabisat
    Masukkan tahun (1900-2005) : 2008
    Maaf, tahun input diatas 2005
    

LAPORAN RESMI Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan, latihan, dan tugas yang telah dibuat