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
in
untuk menentukan perilaku umum bagi berbagai cabang dalam kondisionalwhen
. - Cara menggunakan kata kunci
is
untuk 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 == 1
sebagai 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 variabeltrafficLightColor
dan tetapkan nilai"Red"
:
fun main() {
val trafficLightColor = "Red"
}
- Tambahkan pernyataan
if
untuk 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 kuncielse
diikuti 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
trafficLightColor
ke nilaiGreen
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
trafficLightColor
ke 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
.
Berikut alasan pesan hanya mencetak pesan Slow
, bukan baris lainnya:
- Variabel
trafficLightColor
diberi 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 cabangif
dan tidak mencetak pesanStop
. - Karena cabang
if
menghasilkan 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 if
dan mencetak pesanSlow
. - Karena boolean
expression
dari cabangelse if
menampilkan nilaitrue
, program akan melewati cabang lainnya. Dengan demikian, semua pernyataan di cabangelse
tidak 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
trafficLightColor
ke 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
Go
hanya jika variabeltrafficLightColor
diberi nilai"Green"
. - Pesan
Invalid traffic-light color
saat variabeltrafficLightColor
tidak 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 if
saat 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 if
terakhir, tambahkan cabangelse
dengan 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
trafficLightColor
variabel 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 variabeltrafficLightColor
sebagai 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
else
diikuti 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
trafficLightColor
ke 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
trafficLightColor
diberi 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
when
yang menyertakan beberapa cabang untuk kondisi2
,3
,5
dan7
, 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
else
dengan 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
, dan7
dipisahkan 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 kunciin
diikuti dengan rentang1..10
dan 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
x
menjadi 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
x
diberi nilai4
. - Kemudian program akan mengevaluasi kondisi untuk cabang pertama. Nilai
4
bukan nilai2
,3
,5
, atau7
sehingga program akan melewati eksekusi bagian isi pertama dan berlanjut ke cabang kedua. - Nilai
4
antara1
dan10
sehingga 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
when
dan 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
x
menjadi jenisAny
. Ini menandakan bahwax
dapat 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 kunciis
dan jenis dataInt
dengan 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
x
menjadi 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
x
diberi nilai20
. - Kemudian program akan mengevaluasi kondisi untuk cabang pertama. Nilai
20
bukan nilai2
,3
,5
, atau7
sehingga program akan melewati eksekusi bagian isi pertama dan berlanjut ke cabang kedua. - Nilai
20
tidak berada di dalam rentang1
hingga10
sehingga program melewati eksekusi bagian isi kedua dan berlanjut ke cabang ketiga. - Nilai
20
adalah dari jenisInt
sehingga isix is an integer number, but not between 1 and 10
dicetak. - Satu isi dieksekusi sehingga program melanjutkan untuk meninggalkan pernyataan
when
dan 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
trafficLightColor
menjadi 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 variabelmessage
sebagai 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
message
dan tetapkan ke ekspresiwhen
:
fun main() {
val trafficLightColor = "Amber"
val message = when(trafficLightColor) {
"Red" -> "Stop"
"Yellow", "Amber" -> "Proceed with caution."
"Green" -> "Go"
else -> "Invalid traffic-light color"
}
}
- Tambahkan pernyataan
println()
sebagai baris terakhir program, lalu teruskan variabelmessage
sebagai argumen:
fun main() {
val trafficLightColor = "Amber"
val message = when(trafficLightColor) {
"Red" -> "Stop"
"Yellow", "Amber" -> "Proceed with caution."
"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/else
atauwhen
. - Isi cabang
if
dalam kondisionalif/else
hanya dieksekusi saat ekspresi boolean dalam kondisi cabangif
menampilkan nilaitrue
. - Cabang
else if
berikutnya diif/else
bersyarat hanya dieksekusi saat cabangif
atauelse if
sebelumnya menampilkan nilaifalse
. - Cabang
else
terakhir dalam kondisionalif/else
hanya dieksekusi ketika semua cabangif
atauelse if
sebelumnya menampilkan nilaifalse
. - Sebaiknya gunakan kondisional
when
untuk menggantikan kondisionalif/else
jika ada lebih dari dua cabang. - Anda dapat menulis kondisi yang lebih kompleks dalam kondisional
when
dengan koma (,
), rentangin
, dan kata kunciis
. - Kondisional
if/else
danwhen
dapat berfungsi sebagai sebuah pernyataan atau ekspresi.