Belajar Dasar Kotlin: Kondisional

Pada saat membuat program, suatu saat kita mungkin ingin menjalankan kode tertentu berdasarkan kondisi tertentu. Pada saat itulah kita butuh Kondisional. Kondisional merupakan suatu kode yang mempunyai cabang-cabang dan akan dijalankan salah satu cabang menurut kondisi tertentu.

Kondisional If

Kondisional ini merupakan kondisional paling dasar. Sintak dasar kondisional If seperti berikut:

if (kondisi) {
    cabang
}

kondisi dapat berupa ekspresi apa pun yang menghasilkan tipe data Boolean. cabang dapat berupa kode apa pun. Jika kondisi bernilai True maka cabang akan dijalankan. Jika kondisi bernilai False maka cabang akan di lompati (tidak dijalankan).

Contohnya seperti berikut:

val angka = 1
if (angka == 1) {
    println("Satu")
}

// Output:
// Satu

Kondisional If juga dapat mempunyai cabang else.

if (kondisi) {
    cabang
} else {
    cabang
}

Jika kondisi bernilai True maka cabang pertama akan dijalankan dan cabang kedua akan dilompati. Jika kondisi bernilai False maka cabang pertama akan di loncati dan cabang kedua akan dilewati.

if (angka == 1) {
    println("Satu")
} else {
    println("Bukan satu")
}

Kondisional If juga dapat mempunyai banyak cabang else if seperti ini:

if (kondisi) {
    cabang
} else if (kondisi) {
    cabang
} else if (kondisi) {
    cabang
} else {
    cabang
}

Kotlin akan mengecek kondisi satu per satu dari atas sampai ke bawah. Jika kondisi bernilai True maka cabang didepanya akan dijalankan dan pengecekan kondisi tidak dilanjutkan. Jika kondisi bernilai False maka cabang di depannya diloncati dan pengecekan kondisi dilanjutkan. Jika tidak ada kondisi yang bernilai True dan terdapat cabang else, maka cabang ini akan dijalankan. Contoh:

if (angka == 1) {
    println("Satu")
} else if (angka == 2) {
    println("Dua")
} else if (angka == 3) {
    println("Tiga")
} else {
    println("Mungkin kurang dari 1")
    println("Atau lebih dari 3")
}

Saat cabang hanya terdiri dari satu baris, maka kurung kurawal dapat dihilangkan. Kode di atas bisa ditulis menjadi seperti berikut:

if (angka == 1)
    println("Satu")
else if (angka == 2)
    println("Dua")
else if (angka == 3)
    println("Tiga")
else {
    println("Mungkin kurang dari 1")
    println("Atau lebih dari 3")
}

Kondisional If dapat digunakan sebagai ekspresi. Saat digunakan sebagai ekspresi harus ada cabang else pada kondisional. Nilai yang dikembalikan oleh ekspresi ini adalah nilai dari kode terakhir pada cabang yang dijalankan. Contohnya seperti berikut:

val teks =  if (angka == 1) "Satu"
    else if (angka == 2) "Dua"
    else if (angka == 3) "Tiga"
    else "Kurang dari 1 atau lebih dari 3"

Kondisional When

When merupakan kondisional yang di desain untuk menjalankan cabang berdasarkan nilai suatu ekspresi atau variabel. Sintak dasar when:

when (ekspresi) {
    kondisi -> {
        cabang
    }
    kondisi -> {
        cabang
    }
}

ekspresi dapat berupa apa pun yang menghasilkan nilai, umumnya variabel. Kondisi akan dicek satu per satu dari atas sampai bawah. Jika nilai kondisi sama dengan nilai ekspresi maka cabang di depannya akan dijalankan dan pengecekan kondisi dihentikan. Jika tidak maka cabang di depannya di loncati dan pengecekan kondisi dilanjutkan. Jika semua kondisi tidak terpenuhi dan terdapat cabang else, maka cabang ini akan dijalankan. Jika cabang hanya terdiri dari satu baris kode maka, kurung kurawal dapat dihilangkan. Contoh:

val angka = 1
when (angka) {
    1 -> println("Satu")
    2 -> println("Dua")
    3 -> println("Tiga")
    else -> {
        println("Mungkin kurang dari 1")
        println("Atau lebih dari 3")
    }
}

// Output:
// Satu

Beberapa kondisi bisa mempunyai satu cabang dan bisa dituliskan seperti ini:

when (ekspresi) {
    kondisi, kondisi, kondisi -> {
        cabang
    }
}

Pengecekan kondisi untuk cabang pertama akan dilakukan dari kiri ke kanan. Jika salah satu terpenuhi maka cabang di depannya akan dijalankan. Jika tidak maka kondisi berikutnya akan di cek.

when (angka) {
    1, 2 -> println("Satu atau Dua")
    3, 4 -> println("Tiga dan Empat")
    5 -> println("Lima")
    else -> {
        println("Mungkin kurang dari 1")
        println("Atau lebih dari 5")
    }
}

Kondisional when juga dapat digunakan sebagai ekspresi. Saat digunakan sebagai ekspresi, cabang else harus ada. Contohnya:

val angka = 1
val teks = when (angka) {
    1 -> "Satu"
    2 -> "Dua"
    3 -> "Tiga"
    else -> "Kurang dari 1 atau lebih dari 3"
}

Kondisional when juga bisa digunakan dengan operator in, contohnya seperti ini:

val arrays = arrayOf(1, 5, 7)
when (angka) {
    in arrays -> println("Angka termasuk di arrays")
    in 8..100 -> println("Angka di antara 8 sampai 100")
}

// Sama dengan:

if (angka in arrays)
    println("Angka termasuk di arrays")
else if (angka in 8..100)
    println("Angka di antara 8 sampai 100")

Terlihat bahwa kondisional When terlihat lebih ringkas dari pada kondisional if saat ada banyak cabang.