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.