Percabangan atau control Flow adalah sebuah istilah untuk menyebut alur program yang bercabang.

Coba perhatikan alur program ini:

Alur Program Tanpa Percabangan

Alur program tersebut mengalir dari atas ke bawah dan tidak ada percabangan.

Sekarang coba perhatikan alur program berikut:

Alur Program Tanpa Percabangan

Nah, inilah yang disebut percabangan atau control flow.

Pada artikel ini, kita akan membahas tentang 6 bentuk percabangan yang harus kamu pahami di dalam Kotlin.

Saya sudah menyediakan contoh program dan editor Kotin yang dapat kamu gunakan untuk mencoba sendiri contoh programnya.

Coba kotlin
Coba kotlin

Baiklah…

Mari kita mulai.

1. Percabangan if

Bentuk percabangan ini adalah bentuk yang paling sederhana. Ia memiliki satu blok kode yang akan dieksekusi apabila kondisinya terpenuhi.

Bentuk dasar:

if (kondisi) {
    // blok kode yang akan dieksekusi di ini
}

Perhatikan bagian kondisi, di sana kita bisa isi dengan sebuah variabel boolean atau pernyataan yang menghasilkan nilai boolen.

Contoh:

fun main(args: Array<String>){

    val totalBelanja: Int = 192_000
    
    if (totalBelanja >= 100_000){
        println("Selamat, anda dapat hadiah!")
    }

    println("Terimakasih sudah berbelanja!")

}

Coba sendiri:

// hapus semua teks ini 
// dan ketik ulang kode di atas

Hasilnya:

Percabanga IF

Apabila hanya terdapat satu baris kode, blok kode yang ada di dalam if boleh tidak dikurung seperti ini:

if( totalBelanja >= 100_000 ) println("Selamat anda dapat hadiah!")

Perhatikanlah: totalBelanja >= 100_000 ini adalah sebuah operasi yang akan menghasilkan nilai true dan false (boolean).

2. Percabangan if/else

Percabangan if/else memiliki dua blok kode yang akan dieksekusi. Blok pertama untuk kondisi bernilai true dan blok kedua (else) untuk kondisi bernilai false.

Bentuknya seperti ini:

if (kondisi) {
    // blok kode yang akan dieksekusi
    // jika kondisi bernilai true
} else {
    // blok kode yang akan dieksekusi
    // jika kondisi bernilai false
}

Contoh:

fun main(args: Array<String>){

    val password: String = "kopi"
    
    if (password == "kopi"){
        println("Selamat datang bos!")
    } else {
        println("Siapa kamu? pergi sana!")
    }

}

Coba sendiri:

// hapus semua teks ini 
// dan ketik ulang kode di atas

Hasilnya:

Percabanga IF/ELSE

3. Percabangan if/else if/else

Percabangan ini memiliki lebih dari dua blok kode dan kondisi.

Bentuknya seperti ini:

if(kondisiPertama){
    // blok kode yang akan dieksekusi 
    // jika kondisiPertama bernilai true
} else if(kondisiKedua) {
    // blok kode yang akan dieksekusi
    // jika kondisiKedua bernilai true
} else if(kondisiKetiga){
    // blok kode yang akan dieksekusi
    // jika kondisi ketiga bernilai true
} else {
    // blok kode yang akan dieksekusi
    // jika semua kondisi bernilai false
}

Contoh program:

fun main(args: Array<String>){

    val nilai: Int = 78
    var grade: String = ""
    
    if (nilai >= 90) grade = "A+"
    else if (nilai >= 80) grade = "A"
    else if (nilai >= 70) grade = "B+"
    else if (nilai >= 60) grade = "B"
    else if (nilai >= 50) grade = "C+"
    else if (nilai >= 40) grade = "C"
    else if (nilai >= 30) grade = "D"
    else if (nilai >= 20) grade = "E"
    else grade = "F"

    println("Selamat nilai kamu: $grade")

}

Coba sendiri:

// hapus semua teks ini 
// dan ketik ulang kode di atas

Hasilnya:

Percabanga IF/ELSE IF/ELSE

4. Percabangan When

Percabangan when sebenarnya adalah percabangan switch/case. Percabangan when sama seperti percabangan if/else if/else yang memiliki banyak blok dan kondisi.

Bentuknya seperti ini:

when(variabel){
    "nilai" -> {
        // blok kode yang akan dieksekusi
        // jika variabel sama dengan "nilai"
    }
    222 -> {
        // blok kode yang akan dieksekusi
        // jika variabel sama dengan 222
    }
    else {
        // blok kode yang akan dieksekusi
        // apabila variabel tidak sama dengan
        // semua nilai di atas
    }
}

Contoh program:

fun main(args: Array<String>){
    var x: Int = 4

    when (x) {
        1 -> print("Senin")
        2 -> print("Selasa")
        3 -> print("Rabu")
        4 -> print("Kamis")
        5 -> print("Jum'at")
        6 -> print("Sabtu")
        7 -> print("Minggu")
        else -> { 
            print("nomer hari salah!")
        }
    }
}

Coba sendiri:

// hapus semua teks ini 
// dan ketik ulang kode di atas

Hasilnya:

Percabanga When Program Hari

Pada percabangan when, kita juga bisa mengecek nilai variabel dengan range (..).

Contoh program:

fun main(args: Array<String>){
    var nilai: Int = 65
    var grade: String = ""

    when (nilai) {
        in 90..100 -> grade = "A+"
        in 80..89 -> grade = "A"
        in 70..79 -> grade = "B+"
        in 60..69 -> grade = "B"
        in 50..59 -> grade = "C+"
        in 40..49 -> grade = "C"
        in 30..39 -> grade = "D"
        in 20..29 -> grade = "E"
        else -> grade = "F"
    }

    println("Selamat anda mendapatkan nilai: $grade")
}

Coba sendiri:

// hapus semua teks ini 
// dan ketik ulang kode di atas

Hasilnya:

Percabanga When: Program Grade

Arti tanda titik-titik (..) pada contoh program di atas adalah range.

Misalkan ada seperti ini:

1..100

Maka artinya itu adalah nilai 1 sampai 100.

Berikutnya, percabangan when juga bisa tulis seperti ini:

when {
    kondisi -> // blok kode yang akan diseksekusi
    kondisi2 -> {
        // blok kode yang akan dieksekusi jika
        // kondisi2 benilai true
    }
    else -> // blok else
}

Contoh program:

fun main(args: Array<String>){
    var lampu: Int = 1

    when {
        lampu == 1 -> println("Lampu hijau, jalan!")
        lampu == 2 -> println("Lampu kuning, hati-hati!")
        lampu == 3 -> println("Lampu merah, berhenti!")
        else -> print("lampu konslet!")
    }
}

Coba sendiri:

// hapus semua teks ini 
// dan ketik ulang kode di atas

Hasilnya:

Percabanga When: Program Lampu

5. Percabangan dengan Operator Ternary

Pada kotlin, operator ternary tidak ada. Sebagai gantinya, kita cukup menggunakan ekspresi if/else saja.

Contoh:

fun main(args: Array<String>){
    var menikah: Boolean = false
    var status = if (menikah) "menikah" else "single";

    println("Status: $status")
}

Coba sendiri:

// hapus semua teks ini 
// dan ketik ulang kode di atas

Hasilnya:

Percabanga Ternary operator pada kotlin

6. Percabangan Bersarang (Nested)

Percabangan bersarang atau nested adalah percabangan di dalam percabangan.

Contoh:

fun main(args: Array<String>){
    var isMember = true
    var password = "petanikode"

    if(isMember){
        if(password == "petanikode"){
            println("Selamat datang")
        } else {
            println("Password salah!")
        }
    } else {
        println("Silahkan daftar telebih dahulu")
    }
}

Coba sendiri:

// hapus semua teks ini 
// dan ketik ulang kode di atas

Hasilnya:

Percabanga bersarang pada kotlin

Apa Selanjutnya?

Kamu sudah belajar dasar-dasar percabangan pada Kotlin. Tentu ini masih belum cukup.

Selanjutnya silahkan perbanyak latihan dengan kasus program yang berbeda-beda…

…atau lanjut belajar:

  • Perulangan pada Kotlin
  • Mengenal List pada Kotlin
  • Mengenal Fungsi pada Kotlin

Akhir kata…

Selamat belajar Kotlin.

Referensi: