1. Sebelum memulai
Salah satu dasar pemrograman yang paling penting adalah kondisional. Kondisional ini merupakan perintah dalam bahasa pemrograman yang menangani keputusan. Dengan kondisional, sifat kode akan menjadi dinamis, yang berarti bahwa kode dapat berperilaku berbeda dalam kondisi yang berbeda.
Codelab ini mengajarkan cara menggunakan pernyataan dan ekspresi if/else dan when untuk menulis kondisional di Kotlin.
Prasyarat
- Pengetahuan tentang dasar-dasar pemrograman Kotlin, termasuk variabel, serta fungsi
println()danmain()
Yang akan Anda pelajari
- Cara menulis ekspresi boolean.
- Cara menulis pernyataan
if/else. - Cara menulis pernyataan
when. - Cara menulis ekspresi
if/else. - Cara menulis ekspresi
when. - Cara menggunakan koma untuk menentukan perilaku umum bagi beberapa cabang di kondisional
when. - Cara menggunakan rentang
inuntuk menentukan perilaku umum bagi berbagai cabang dalam kondisionalwhen. - Cara menggunakan kata kunci
isuntuk menulis pernyataan bersyaratwhen.
Yang akan Anda butuhkan
- Browser web dengan akses ke Kotlin Playground
2. Menggunakan pernyataan if/else untuk menyatakan kondisi
Dalam kehidupan sehari-hari, melakukan berbagai hal dengan cara yang berbeda berdasarkan situasi yang Anda hadapi bukan lagi hal yang aneh. Misalnya, jika cuaca dingin, Anda mengenakan jaket, sedangkan jika cuaca hangat, Anda tidak mengenakan jaket.

Pengambilan keputusan juga merupakan konsep dasar dalam pemrograman. Anda menulis petunjuk yang memaparkan perilaku ideal suatu program dalam situasi tertentu sehingga program dapat bertindak atau bereaksi dengan semestinya ketika situasi terjadi. Di Kotlin, saat Anda ingin program menjalankan tindakan yang berbeda berdasarkan sebuah kondisi, Anda dapat menggunakan pernyataan if/else. Di bagian berikutnya, Anda akan menulis pernyataan if.
Menulis kondisi if dengan ekspresi boolean
Bayangkan Anda membuat suatu program yang berisi informasi mengenai tindakan yang harus dilakukan pengemudi saat berada di lampu lalu lintas. Fokus pada kondisi pertama: lampu lalu lintas menyala merah. Apa yang Anda lakukan saat lampu lalu lintas menyala merah? Berhenti.

Di Kotlin, Anda dapat mengekspresikan kondisi ini dengan pernyataan if. Lihat anatomi pernyataan if:

Untuk menggunakan pernyataan if, Anda harus menggunakan kata kunci if diikuti dengan kondisi yang ingin dievaluasi. Anda harus menyatakan kondisinya dengan ekspresi boolean. Ekspresi menggabungkan nilai, variabel, dan operator yang menampilkan nilai. Ekspresi Boolean menampilkan nilai boolean.
Sebelumnya, Anda telah mempelajari operator penetapan, seperti:
val number = 1
Operator penetapan = menetapkan nilai 1 ke variabel number.
Sebaliknya, ekspresi boolean dibuat dengan operator perbandingan yang membandingkan nilai atau variabel pada kedua sisi persamaan. Lihat operator perbandingan.
1 == 1
Operator perbandingan == membandingkan nilai satu dengan nilai lain. Menurut Anda, nilai boolean mana yang akan ditampilkan oleh ekspresi ini?
Temukan nilai boolean ekspresi ini:
- Gunakan Kotlin Playground untuk menjalankan kode Anda.
- Dalam isi fungsi, tambahkan fungsi
println(), lalu teruskan ekspresi1 == 1sebagai argumen:
fun main() {
println(1 == 1)
}
- Jalankan program, lalu lihat output-nya:
true
Nilai 1 pertama sama dengan nilai 1 kedua sehingga ekspresi boolean menampilkan nilai true yang merupakan nilai boolean.
Coba
Selain operator perbandingan ==, ada operator perbandingan tambahan yang dapat Anda gunakan untuk membuat ekspresi boolean:
- Kurang dari:
< - Lebih dari:
> - Kurang dari atau sama dengan:
<= - Lebih dari atau sama dengan:
>= - Tidak sama dengan:
!=
Praktikkan penggunaan operator perbandingan dengan ekspresi sederhana:
- Dalam argumen, ganti operator perbandingan
==dengan operator perbandingan<:
fun main() {
println(1 < 1)
}
- Jalankan program, lalu lihat output-nya:
Output menampilkan nilai false karena nilai 1 pertama tidak kurang dari nilai 1 kedua.
false
- Ulangi dua langkah pertama dengan operator dan angka perbandingan lainnya.
Tulis pernyataan if sederhana
Setelah melihat beberapa contoh cara menulis ekspresi boolean, Anda dapat menulis pernyataan if pertama. Sintaksis untuk pernyataan if adalah sebagai berikut:

Pernyataan if dimulai dengan kata kunci if diikuti dengan suatu kondisi yang merupakan ekspresi boolean di dalam tanda kurung dan kumpulan tanda kurung kurawal. Isi adalah serangkaian pernyataan atau ekspresi yang Anda masukkan ke dalam sepasang tanda kurung kurawal setelah kondisi. Pernyataan atau ekspresi ini hanya dieksekusi jika kondisi terpenuhi. Dengan kata lain, pernyataan dalam tanda kurung kurawal hanya dieksekusi jika ekspresi boolean di cabang if menampilkan nilai true.
Tulis pernyataan if untuk kondisi saat lampu lalu lintas menyala merah:
- Di dalam fungsi
main(), buat variabeltrafficLightColordan tetapkan nilai"Red":
fun main() {
val trafficLightColor = "Red"
}
- Tambahkan pernyataan
ifuntuk kondisi saat lampu lalu lintas menyala merah, lalu teruskan ekspresitrafficLightColor == "Red":
fun main() {
val trafficLightColor = "Red"
if (trafficLightColor == "Red") {
}
}
- Di bagian isi pernyataan
if, tambahkan fungsiprintln(), lalu teruskan argumen"Stop":
fun main() {
val trafficLightColor = "Red"
if (trafficLightColor == "Red") {
println("Stop")
}
}
- Jalankan program, lalu lihat output-nya:
Stop
Ekspresi trafficLightColor == "Red" menampilkan nilai true. Jadi, pernyataan println("Stop") akan dieksekusi sehingga akan mencetak pesan Stop.

Menambahkan cabang else
Sekarang Anda dapat memperluas program sehingga pengemudi dapat diberi tahu untuk mulai melaju ketika lampu lalu lintas tidak lagi berwarna merah.

Anda perlu menambahkan cabang else untuk membuat pernyataan if/else. Cabang adalah bagian kode tidak lengkap yang dapat Anda ikuti untuk membuat pernyataan atau ekspresi formulir. Cabang else harus mengikuti cabang if.

Setelah kurung kurawal tutup dari pernyataan if, tambahkan kata kunci else diikuti dengan sepasang tanda kurung kurawal. Di dalam tanda kurung kurawal pernyataan else, Anda dapat menambahkan isi kedua yang hanya dieksekusi saat kondisi di cabang if bernilai salah.
Menambahkan cabang else ke program Anda:
- Setelah kurung kurawal tutup dari pernyataan
if, tambahkan kata kuncielsediikuti dengan pasangan kurung kurawal lainnya:
fun main() {
val trafficLightColor = "Red"
if (trafficLightColor == "Red") {
println("Stop")
} else {
}
}
- Di dalam tanda kurung kurawal kata kunci
else, tambahkan fungsiprintln(), lalu teruskan argumen"Go":
fun main() {
val trafficLightColor = "Red"
if (trafficLightColor == "Red") {
println("Stop")
} else {
println("Go")
}
}
- Jalankan program ini, lalu lihat output-nya:
Stop
Perilaku program ini masih tetap sama seperti sebelum Anda menambahkan cabang else, tetapi tidak mencetak pesan Go.
- Tetapkan ulang variabel
trafficLightColorke nilai"Green"karena Anda ingin pengemudi mulai melaju saat lampu lalu lintas berwarna hijau:
fun main() {
val trafficLightColor = "Green"
if (trafficLightColor == "Red") {
println("Stop")
} else {
println("Go")
}
}
- Jalankan program ini, lalu lihat output-nya:
Go
Seperti yang dapat Anda lihat, program sekarang mencetak pesan Go, bukan pesan Stop.

Anda menetapkan ulang variabel trafficLightColor ke nilai "Green" sehingga ekspresi trafficLightColor == "Red" yang dievaluasi di cabang if menampilkan nilai false karena nilai "Green" tidak sama dengan nilai "Red".
Hasilnya, program akan melewati semua pernyataan di cabang if dan mengeksekusi semua pernyataan di dalam cabang else. Ini berarti fungsi println("Go") dieksekusi, tetapi fungsi println("Stop") tidak dieksekusi.
Menambahkan cabang else if
Biasanya, lampu lalu lintas juga memiliki warna kuning yang memberi tahu pengemudi untuk berkendara pelan-pelan. Anda dapat memperluas proses pengambilan keputusan program untuk menunjukkan ini.

Anda telah mempelajari cara menulis kondisional yang memenuhi satu titik keputusan dengan pernyataan if/else yang berisi satu cabang if dan satu cabang else. Bagaimana Anda dapat menangani cabang yang lebih kompleks dengan beberapa titik keputusan? Saat menghadapi beberapa titik keputusan, Anda harus membuat kondisional dengan beberapa lapisan kondisi yang dapat dilakukan saat menambahkan cabang else if ke pernyataan if/else.
Setelah kurung kurawal tutup dari cabang if, Anda harus menambahkan kata kunci else if. Di dalam tanda kurung kata kunci else if, Anda perlu menambahkan ekspresi boolean sebagai kondisi untuk cabang else if diikuti dengan isi di dalam sepasang tanda kurung kurawal. Isi hanya dijalankan jika kondisi 1 gagal, tetapi kondisi 2 terpenuhi.

Cabang else if selalu berada setelah cabang if, tetapi sebelum cabang else. Anda dapat menggunakan beberapa cabang else if dalam pernyataan:

Pernyataan if juga dapat berisi cabang if dan cabang else if tanpa cabang else:

Menambahkan cabang else if ke program Anda:
- Setelah kurung kurawal tutup dari pernyataan
if, tambahkan ekspresielse if (trafficLightColor == "Yellow")yang diikuti dengan tanda kurung kurawal:
fun main() {
val trafficLightColor = "Green"
if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
} else {
println("Go")
}
}
- Di dalam tanda kurung kurawal cabang
else if, tambahkan pernyataanprintln(), lalu teruskan argumen string"Slow":
fun main() {
val trafficLightColor = "Green"
if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
println("Slow")
} else {
println("Go")
}
}
- Tetapkan ulang variabel
trafficLightColorke nilai string"Yellow":
fun main() {
val trafficLightColor = "Yellow"
if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
println("Slow")
} else {
println("Go")
}
}
- Jalankan program ini, lalu lihat output-nya:
Slow
Sekarang program akan mencetak pesan Slow, bukan pesan Stop atau Go.
<img "yellow"="" 1="" 2="" 2.="" alt="A diagram that highlights the if/else statement with the trafficLightColor == " and="" are="" as="" be="" body="" boolean="" but="" clause="" condition="" executed="" expression="" false,="" false."="" if="" in="" is="" noted="" only="" println("go")="" println("slow")="" println("stop")="" red"="" sizes="(max-width: 840px) 100vw, 856px" src="/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52.png" srcset="/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_36.png 36w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_48.png 48w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_72.png 72w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_96.png 96w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_480.png 480w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_720.png 720w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_856.png 856w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_960.png 960w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_1440.png 1440w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_1920.png 1920w,/static/codelabs/basic-android-kotlin-compose-conditionals/img/8d5e322ddf1acd52_2880.png 2880w" statements="" style="width: 624.00px" the="" to="" trafficlightcolor="=" true.="" when="" />
Berikut alasan pesan hanya mencetak pesan Slow, bukan baris lainnya:
- Variabel
trafficLightColordiberi nilai"Yellow". - Nilai
"Yellow"tidak sama dengan nilai"Red"sehingga ekspresi boolean cabangif(ditunjukkan sebagai 1 dalam gambar) menampilkan nilaifalse. Program ini melewati semua pernyataan di cabangifdan tidak mencetak pesanStop. - Karena cabang
ifmenghasilkan nilaifalse, program melanjutkan untuk mengevaluasi ekspresi boolean di dalam cabangelse if. - Nilai
"Yellow"sama dengan nilai"Yellow"sehingga ekspresi boolean cabangelse if(ditunjukkan sebagai 2 dalam gambar) menampilkan nilaitrue. Program ini mengeksekusi semua pernyataan di dalam cabangelse ifdan mencetak pesanSlow. - Karena ekspresi boolean
else ifdari cabang menampilkan nilaitrue, program akan melewati cabang lainnya. Dengan demikian, semua pernyataan di cabangelsetidak dieksekusi dan program tidak mencetak pesanGo.
Coba
Apakah Anda memperhatikan bahwa program saat ini berisi bug?
Di Unit 1, Anda telah mempelajari jenis bug yang disebut error kompilasi saat Kotlin tidak dapat mengompilasi kode karena error sintaksis dalam kode Anda dan program tidak dapat berjalan. Di sini, Anda akan menemukan jenis bug lain yang disebut error logika tempat program dapat berjalan, tetapi tidak menghasilkan output seperti yang diinginkan.
Sebenarnya, Anda hanya ingin pengemudi berkendara hanya saat warna lampu lalu lintas berwarna hijau. Bagaimana jika lampu lalu lintas rusak dan dimatikan? Apakah Anda ingin pengemudi tetap mengemudi atau menerima peringatan bahwa ada sesuatu yang tidak beres?
Sayangnya, pada program saat ini, jika lampu lalu lintas yang menyala warnanya bukan merah atau kuning, pengemudi tetap disarankan untuk terus melaju.
Perbaiki masalah ini:
- Tetapkan ulang variabel
trafficLightColorke nilai"Black"untuk mengilustrasikan lampu lalu lintas yang dinonaktifkan:
fun main() {
val trafficLightColor = "Black"
if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
println("Slow")
} else {
println("Go")
}
}
- Jalankan program ini, lalu lihat output-nya:
Go
Perhatikan bahwa program akan mencetak pesan Go meskipun variabel trafficLightColor tidak diberi nilai "Green". Bisakah Anda memperbaiki program ini agar menunjukkan perilaku yang benar?

Anda perlu memodifikasi program agar dapat mencetak:
- Pesan
Gohanya jika variabeltrafficLightColordiberi nilai"Green". - Pesan
Invalid traffic-light colorsaat variabeltrafficLightColortidak diberi nilai"Red","Yellow", atau"Green".
Memperbaiki cabang else
Cabang else selalu berada di akhir pernyataan if/else karena merupakan cabang catchall. Fitur ini otomatis dieksekusi jika semua kondisi lain dalam cabang sebelumnya tidak terpenuhi. Dengan demikian, cabang else tidak akan cocok apabila Anda ingin tindakan dieksekusi hanya jika memenuhi kondisi tertentu. Untuk lampu lalu lintas, Anda dapat menggunakan cabang else if guna menentukan kondisi lampu hijau.
Gunakan cabang else if untuk mengevaluasi kondisi lampu lalu lintas berwarna hijau:
- Setelah cabang
else ifsaat ini, tambahkan cabangelse if (trafficLightColor == "Green")lain:
fun main() {
val trafficLightColor = "Black"
if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
println("Slow")
} else if (trafficLightColor == "Green") {
println("Go")
}
}
- Jalankan program ini, lalu lihat output-nya.
Outputnya kosong karena Anda tidak memiliki cabang else yang dieksekusi saat kondisi sebelumnya tidak terpenuhi.
- Setelah cabang
else ifterakhir, tambahkan cabangelsedengan pernyataanprintln("Invalid traffic-light color")di dalamnya:
fun main() {
val trafficLightColor = "Black"
if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
println("Slow")
} else if (trafficLightColor == "Green") {
println("Go")
} else {
println("Invalid traffic-light color")
}
}
- Jalankan program ini, lalu lihat output-nya:
Invalid traffic-light color
- Tetapkan nilai
trafficLightColorvariabel lain selain"Red","Yellow", atau"Green", lalu jalankan kembali program.
Apa output program ini?
Praktik pemrograman dikatakan baik apabila memiliki cabang else if eksplisit sebagai validasi input untuk warna hijau dan cabang else untuk menangkap input tidak valid lainnya. Ini memastikan pengemudi diarahkan untuk melaju, hanya jika lampu lalu lintas berwarna hijau. Untuk kasus lainnya, ada pesan eksplisit yang disampaikan bahwa lampu lalu lintas tidak berfungsi seperti yang diharapkan.
3. Menggunakan pernyataan when untuk beberapa cabang
Program trafficLightColor Anda terlihat lebih kompleks dengan beberapa kondisi, atau disebut juga sebagai cabang. Anda mungkin bertanya-tanya apakah Anda dapat menyederhanakan program yang memiliki jumlah cabang sangat banyak.
Di Kotlin, saat menangani beberapa cabang, Anda dapat menggunakan pernyataan when sebagai ganti pernyataan if/else karena akan meningkatkan keterbacaan, yang mengacu pada kemudahan bagi pembaca manusia, biasanya developer, untuk membaca kode. Sangat penting bagi Anda untuk mempertimbangkan keterbacaan saat menulis kode karena kemungkinan developer lain perlu meninjau dan mengubah kode tersebut selama masa penggunaannya. Keterbacaan yang baik memastikan bahwa developer dapat memahami kode Anda dengan benar dan tidak memasukkan bug ke dalamnya secara tidak sengaja.
Pernyataan when lebih disarankan jika ada lebih dari dua cabang untuk dipertimbangkan.

Pernyataan when menerima satu nilai melalui parameter. Nilai ini kemudian dievaluasi dengan membandingkannya ke setiap kondisi secara berurutan. Isi kondisi pertama yang terpenuhi kemudian akan dieksekusi. Setiap kondisi dan isi dipisahkan dengan panah (->). Serupa dengan pernyataan if/else, setiap pasangan kondisi dan isi dalam pernyataan when disebut cabang. Serupa dengan pernyataan if/else, Anda dapat menambahkan cabang else sebagai kondisi akhir dalam pernyataan when yang berfungsi sebagai cabang catchall.
Tulis ulang pernyataan if/else dengan pernyataan when
Dalam program lampu lalu lintas, sudah terdapat beberapa cabang:
- Warna lampu lalu lintas merah
- Warna lampu lalu lintas kuning
- Warna lampu lalu lintas hijau
- Warna lampu lalu lintas lainnya
Konversikan program untuk menggunakan pernyataan when:
- Dalam fungsi
main(), hapus pernyataanif/else:
fun main() {
val trafficLightColor = "Black"
}
- Tambahkan pernyataan
when, lalu teruskan variabeltrafficLightColorsebagai argumen:
fun main() {
val trafficLightColor = "Black"
when (trafficLightColor) {
}
}
- Di bagian isi pernyataan
when, tambahkan kondisi"Red"diikuti dengan panah dan isiprintln("Stop"):
fun main() {
val trafficLightColor = "Black"
when (trafficLightColor) {
"Red" -> println("Stop")
}
}
- Di baris berikutnya, tambahkan kondisi
"Yellow"diikuti dengan tanda panah dan isiprintln("Slow"):
fun main() {
val trafficLightColor = "Black"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow" -> println("Slow")
}
}
- Di baris berikutnya, tambahkan kondisi
"Green"diikuti dengan tanda panah, lalu isiprintln("Go"):
fun main() {
val trafficLightColor = "Black"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow" -> println("Slow")
"Green" -> println("Go")
}
}
- Pada baris berikutnya, tambahkan kata kunci
elsediikuti dengan tanda panah, lalu isiprintln("Invalid traffic-light color"):
fun main() {
val trafficLightColor = "Black"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow" -> println("Slow")
"Green" -> println("Go")
else -> println("Invalid traffic-light color")
}
}
- Tetapkan ulang variabel
trafficLightColorke nilai"Yellow":
fun main() {
val trafficLightColor = "Yellow"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow" -> println("Slow")
"Green" -> println("Go")
else -> println("Invalid traffic-light color")
}
}
Saat menjalankan program ini, bagaimana pendapat Anda terhadap hasilnya?
- Jalankan program, lalu lihat output-nya:
Slow

Outputnya adalah pesan Slow karena:
- Variabel
trafficLightColordiberi nilai"Yellow". - Program ini mengevaluasi setiap kondisi satu per satu secara berurutan.
- Nilai
"Yellow"tidak sama dengan nilai"Red"sehingga program melewati isi pertama. - Nilai
"Yellow"sama dengan nilai"Yellow"sehingga program mengeksekusi isi kedua dan mencetak pesanSlow. - Isi akan dieksekusi sehingga program mengabaikan cabang ketiga dan keempat serta meninggalkan pernyataan
when.
Menulis kondisi yang lebih kompleks dalam pernyataan when
Sejauh ini Anda telah mempelajari cara menulis kondisi when untuk satu kondisi yang sama, seperti saat variabel trafficLightColor diberi nilai "Yellow". Selanjutnya, Anda belajar menggunakan koma (,), kata kunci in, dan kata kunci is untuk membentuk kondisi when yang lebih kompleks.
Buat program yang menentukan apakah bilangan antara 1 hingga 10 adalah bilangan prima:
- Buka Kotlin playground di jendela terpisah.
Anda nanti akan kembali ke program lampu lalu lintas.
- Tentukan variabel
x, lalu tetapkan nilai3:
fun main() {
val x = 3
}
- Tambahkan pernyataan
whenyang menyertakan beberapa cabang untuk kondisi2,3,5dan7, lalu ikuti setiap isi dengan isiprintln("x is prime number between 1 and 10."):
fun main() {
val x = 3
when (x) {
2 -> println("x is a prime number between 1 and 10.")
3 -> println("x is a prime number between 1 and 10.")
5 -> println("x is a prime number between 1 and 10.")
7 -> println("x is a prime number between 1 and 10.")
}
}
- Tambahkan cabang
elsedengan isiprintln("x is not prime number between 1 and 10."):
fun main() {
val x = 3
when (x) {
2 -> println("x is a prime number between 1 and 10.")
3 -> println("x is a prime number between 1 and 10.")
5 -> println("x is a prime number between 1 and 10.")
7 -> println("x is a prime number between 1 and 10.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
- Jalankan program, lalu verifikasi bahwa outputnya seperti yang diharapkan:
x is a prime number between 1 and 10.
Gunakan koma (,) untuk beberapa kondisi
Program bilangan prima berisi banyak pengulangan pernyataan println(). Saat menulis pernyataan when, Anda dapat menggunakan koma (,) untuk menunjukkan beberapa kondisi yang sesuai dengan isi yang sama.

Pada diagram sebelumnya, jika kondisi pertama atau kedua terpenuhi, isi yang sesuai akan dieksekusi.
Tulis ulang program bilangan prima dengan konsep ini:
- Di cabang untuk kondisi
2, tambahkan3,5, dan7dipisahkan dengan koma (,):
fun main() {
val x = 3
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
3 -> println("x is a prime number between 1 and 10.")
5 -> println("x is a prime number between 1 and 10.")
7 -> println("x is a prime number between 1 and 10.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
- Hapus setiap cabang untuk kondisi
3,5, dan7:
fun main() {
val x = 3
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
- Jalankan program, lalu verifikasi bahwa outputnya seperti yang diharapkan:
x is a prime number between 1 and 10.
Gunakan kata kunci in untuk berbagai kondisi
Selain simbol koma (,) untuk menunjukkan beberapa kondisi, Anda juga dapat menggunakan kata kunci in dan rentang nilai di cabang when.

Untuk menggunakan rentang nilai, tambahkan angka yang menunjukkan awal rentang yang diikuti dengan dua titik tanpa spasi, lalu tutup dengan angka lain yang menunjukkan akhir rentang tersebut.
Jika nilai parameter sama dengan nilai berapa pun dalam rentang antara awal rentang dan akhir rentang, isi pertama akan dieksekusi.
Dalam program bilangan prima, dapatkah Anda mencetak pesan jika bilangannya antara 1 hingga 10, tetapi bukan bilangan prima?
Tambahkan cabang lain dengan kata kunci in:
- Setelah cabang pertama pernyataan
when, tambahkan cabang kedua dengan kata kunciindiikuti dengan rentang1..10dan isiprintln("x is a number between 1 and 10, but not a prime number."):
fun main() {
val x = 3
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
in 1..10 -> println("x is a number between 1 and 10, but not a prime number.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
- Ubah variabel
xmenjadi nilai4:
fun main() {
val x = 4
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
in 1..10 -> println("x is a number between 1 and 10, but not a prime number.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
- Jalankan program, lalu verifikasi output:
x is a number between 1 and 10, but not a prime number.
Program akan mencetak pesan cabang kedua, tetapi bukan pesan cabang pertama atau ketiga.
Cara kerja program ini ialah sebagai berikut:
- Variabel
xdiberi nilai4. - Kemudian program akan mengevaluasi kondisi untuk cabang pertama. Nilai
4bukan nilai2,3,5, atau7sehingga program akan melewati eksekusi bagian isi pertama dan berlanjut ke cabang kedua. - Nilai
4antara1dan10sehingga pesan isix is a number between 1 and 10, but not a prime number.akan dicetak. - Satu isi dieksekusi sehingga program melanjutkan untuk meninggalkan pernyataan
whendan mengabaikan cabangelse.
Menggunakan kata kunci is untuk memeriksa jenis data
Anda dapat menggunakan kata kunci is sebagai kondisi untuk memeriksa jenis data nilai yang dievaluasi.

Pada diagram sebelumnya, jika nilai argumen berasal dari jenis data yang dinyatakan, isi pertama akan dieksekusi.
Dalam program bilangan prima, dapatkah Anda mencetak pesan jika input-nya merupakan bilangan bulat di luar rentang 1 sampai 10?
Tambahkan cabang lain dengan kata kunci is:
- Ubah
xmenjadi jenisAny. Ini menandakan bahwaxdapat memiliki nilai selain jenisInt.
fun main() {
val x: Any = 4
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
in 1..10 -> println("x is a number between 1 and 10, but not a prime number.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
- Setelah cabang kedua pernyataan
when, tambahkan kata kunciisdan jenis dataIntdengan isiprintln("x is an integer number, but not between 1 and 10."):
fun main() {
val x: Any = 4
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
in 1..10 -> println("x is a number between 1 and 10, but not a prime number.")
is Int -> println("x is an integer number, but not between 1 and 10.")
else -> println("x isn't a prime number between 1 and 10.")
}
}
- Di cabang
else, ubah isi menjadiprintln("x isn't an integer number.")isi:
fun main() {
val x: Any = 4
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
in 1..10 -> println("x is a number between 1 and 10, but not a prime number.")
is Int -> println("x is an integer number, but not between 1 and 10.")
else -> println("x isn't an integer number.")
}
}
- Ubah variabel
xmenjadi nilai20:
fun main() {
val x: Any = 20
when (x) {
2, 3, 5, 7 -> println("x is a prime number between 1 and 10.")
in 1..10 -> println("x is a number between 1 and 10, but not a prime number.")
is Int -> println("x is an integer number, but not between 1 and 10.")
else -> println("x isn't an integer number.")
}
}
- Jalankan program, lalu verifikasi output:
x is an integer number, but not between 1 and 10.
Program akan mencetak pesan cabang ketiga, tetapi tidak mengirimkan pesan cabang pertama, kedua, atau keempat.

Berikut cara kerja program tersebut:
- Variabel
xdiberi nilai20. - Kemudian program akan mengevaluasi kondisi untuk cabang pertama. Nilai
20bukan nilai2,3,5, atau7sehingga program akan melewati eksekusi bagian isi pertama dan berlanjut ke cabang kedua. - Nilai
20tidak berada di dalam rentang1hingga10sehingga program melewati eksekusi bagian isi kedua dan berlanjut ke cabang ketiga. - Nilai
20adalah dari jenisIntsehingga isix is an integer number, but not between 1 and 10dicetak. - Satu isi dieksekusi sehingga program melanjutkan untuk meninggalkan pernyataan
whendan mengabaikan cabangelse.
Coba
Sekarang praktikkan apa yang telah Anda pelajari di program lampu lalu lintas.
Bayangkan ada warna lampu lalu lintas amber di beberapa negara yang memperingatkan pengemudi dengan cara yang sama seperti lampu lalu lintas berwarna kuning di negara lain. Dapatkah Anda memodifikasi program agar ketentuan tambahan ini tercakup dan mempertahankan kondisi awal?
Menambahkan kondisi tambahan dengan isi yang sama
Tambahkan kondisi tambahan ke program lampu lalu lintas:
- Jika Anda masih membukanya, kembali ke instance Kotlin Playground dengan program lampu lalu lintas Anda.
- Jika Anda sudah menutupnya, buka instance Kotlin Playground baru, lalu masukkan kode ini:
fun main() {
val trafficLightColor = "Yellow"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow" -> println("Slow")
"Green" -> println("Go")
else -> println("Invalid traffic-light color")
}
}
- Di cabang kedua pernyataan
when, tambahkan koma setelah kondisi"Yellow", lalu kondisi"Amber":
fun main() {
val trafficLightColor = "Yellow"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow", "Amber" -> println("Slow")
"Green" -> println("Go")
else -> println("Invalid traffic-light color")
}
}
- Ubah variabel
trafficLightColormenjadi nilai"Amber":
fun main() {
val trafficLightColor = "Amber"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow", "Amber" -> println("Slow")
"Green" -> println("Go")
else -> println("Invalid traffic-light color")
}
}
- Jalankan program ini, lalu verifikasi output-nya:
Slow
4. Menggunakan if/else dan when sebagai ekspresi
Anda telah mempelajari cara menggunakan if/else dan when sebagai pernyataan. Saat menggunakan kondisional sebagai pernyataan, Anda mengizinkan setiap cabang untuk mengeksekusi tindakan yang berbeda dalam isi berdasarkan kondisi.
Anda juga dapat menggunakan kondisional sebagai ekspresi untuk menampilkan nilai yang berbeda untuk setiap cabang kondisi. Jika isi setiap cabang tampak serupa, Anda sebaiknya menggunakan ekspresi bersyarat untuk meningkatkan keterbacaan kode, daripada menggunakan pernyataan bersyarat.

Sintaksis untuk kondisional sebagai ekspresi mirip dengan pernyataan, tetapi baris terakhir isi di setiap cabang harus menampilkan nilai atau ekspresi, dan kondisional ditetapkan ke variabel.
Jika isi hanya berisi nilai atau ekspresi yang ditampilkan, Anda dapat menghapus tanda kurung kurawal agar kode lebih ringkas.

Di bagian berikutnya, Anda akan melihat ekspresi if/else melalui program lampu lalu lintas.
Mengonversi pernyataan if menjadi suatu ekspresi
Ada banyak pengulangan pernyataan println() dalam pernyataan if/else ini:
fun main() {
val trafficLightColor = "Black"
if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
println("Slow")
} else if (trafficLightColor == "Green") {
println("Go")
} else {
println("Invalid traffic-light color")
}
}
Konversikan pernyataan if/else ini menjadi ekspresi if/else dan hapus pengulangan ini:
- Di Kotlin Playground, masukkan program lampu lalu lintas sebelumnya.
- Tentukan variabel
message, lalu tetapkan pernyataanif/else:
fun main() {
val trafficLightColor = "Black"
val message = if (trafficLightColor == "Red") {
println("Stop")
} else if (trafficLightColor == "Yellow") {
println("Slow")
} else if (trafficLightColor == "Green") {
println("Go")
} else {
println("Invalid traffic-light color")
}
}
- Hapus semua pernyataan
println()dan tanda kurung kurawal, tetapi biarkan nilai tetap di dalamnya:
fun main() {
val trafficLightColor = "Black"
val message =
if (trafficLightColor == "Red") "Stop"
else if (trafficLightColor == "Yellow") "Slow"
else if (trafficLightColor == "Green") "Go"
else "Invalid traffic-light color"
}
- Tambahkan pernyataan
println()ke akhir program, lalu teruskan variabelmessagesebagai argumen:
fun main() {
val trafficLightColor = "Black"
val message =
if (trafficLightColor == "Red") "Stop"
else if (trafficLightColor == "Yellow") "Slow"
else if (trafficLightColor == "Green") "Go"
else "Invalid traffic-light color"
println(message)
}
- Jalankan program ini, lalu lihat output-nya:
Invalid traffic-light color
Coba
Konversi program lampu lalu lintas untuk menggunakan ekspresi when, bukan pernyataan when:
- Di Kotlin Playground, masukkan kode ini:
fun main() {
val trafficLightColor = "Amber"
when (trafficLightColor) {
"Red" -> println("Stop")
"Yellow", "Amber" -> println("Slow")
"Green" -> println("Go")
else -> println("Invalid traffic-light color")
}
}
Dapatkah Anda mengonversi pernyataan when menjadi suatu ekspresi sehingga Anda tidak perlu mengulangi pernyataan println()?
- Buat variabel
messagedan tetapkan ke ekspresiwhen:
fun main() {
val trafficLightColor = "Amber"
val message = when(trafficLightColor) {
"Red" -> "Stop"
"Yellow", "Amber" -> "Slow"
"Green" -> "Go"
else -> "Invalid traffic-light color"
}
}
- Tambahkan pernyataan
println()sebagai baris terakhir program, lalu teruskan variabelmessagesebagai argumen:
fun main() {
val trafficLightColor = "Amber"
val message = when(trafficLightColor) {
"Red" -> "Stop"
"Yellow", "Amber" -> "Slow"
"Green" -> "Go"
else -> "Invalid traffic-light color"
}
println(message)
}
5. Kesimpulan
Selamat! Anda telah mempelajari kondisional dan cara menulisnya di Kotlin.
Ringkasan
- Di Kotlin, cabang dapat dicapai dengan kondisional
if/elseatauwhen. - Isi cabang
ifdalam kondisionalif/elsehanya dieksekusi saat ekspresi boolean dalam kondisi cabangifmenampilkan nilaitrue. - Cabang
else ifberikutnya diif/elsebersyarat hanya dieksekusi saat cabangifatauelse ifsebelumnya menampilkan nilaifalse. - Cabang
elseterakhir dalam kondisionalif/elsehanya dieksekusi ketika semua cabangifatauelse ifsebelumnya menampilkan nilaifalse. - Sebaiknya gunakan kondisional
whenuntuk menggantikan kondisionalif/elsejika ada lebih dari dua cabang. - Anda dapat menulis kondisi yang lebih kompleks dalam kondisional
whendengan koma (,), rentangin, dan kata kunciis. - Kondisional
if/elsedanwhendapat berfungsi sebagai sebuah pernyataan atau ekspresi.
