Masukkan Password
18 The Complete Kotlin Course #17 - Expression vs Statement - Kotlin Tutorials for Beginners
Lesson ini melanjutkan conditional expression (if / else), tetapi sekarang kita belajar alasan kenapa fitur tersebut sangat berguna di Kotlin.
Fokus utamanya adalah:
Menggunakan
ifsebagai expression untuk langsung menghasilkan nilai.
Contoh akhirnya akan menjadi sangat sederhana:
val minimum = if (x < y) x else y
val maximum = if (x > y) x else y
Dibandingkan menulis banyak baris if-else.
1. Tujuan lesson: mencari nilai minimum dan maksimum
Kita punya dua angka:
val x = 7
val y = 5
Kita ingin mencari:
- angka yang paling kecil β minimum
- angka yang paling besar β maximum
Untuk contoh ini:
x = 7
y = 5
minimum = 5
maximum = 7
Pertanyaannya:
Bagaimana program menentukan angka mana yang lebih kecil atau lebih besar?
Tentu saja kita bisa menggunakan comparison operator:
x < y
x > y
2. Cara pertama: menggunakan if-else biasa
Misalnya kita ingin mencari minimum.
Kita bisa menulis:
val x = 7
val y = 5
var minimum: Int
if (x < y) {
minimum = x
} else {
minimum = y
}
Mari kita pahami.
Kondisinya:
x < y
menjadi:
7 < 5
β
false
Karena false, bagian if dilewati.
Kemudian masuk ke:
else {
minimum = y
}
Maka:
minimum = 5
3. Mencari maximum dengan cara yang sama
Untuk mencari nilai terbesar:
var maximum: Int
if (x > y) {
maximum = x
} else {
maximum = y
}
Dengan:
x = 7
y = 5
Kotlin mengevaluasi:
7 > 5
β
true
Maka:
maximum = x
maximum = 7
Hasil akhirnya:
minimum = 5
maximum = 7
4. Masalahnya: kodenya cukup panjang
Perhatikan:
var minimum: Int
if (x < y) {
minimum = x
} else {
minimum = y
}
var maximum: Int
if (x > y) {
maximum = x
} else {
maximum = y
}
Secara logika tidak salah.
Tetapi sebenarnya kita hanya ingin mengatakan:
“Kalau
xlebih kecil dariy, ambilx; kalau tidak, ambily.”
Kotlin memungkinkan kita menulisnya jauh lebih pendek.
5. Ingat bahwa if adalah expression
Ini adalah materi penting dari lesson sebelumnya.
Kita bisa menulis:
val result = if (condition) {
valueA
} else {
valueB
}
Artinya:
ifakan menghasilkan salah satu nilai.
Contoh:
val age = 20
val status = if (age >= 18) {
"Adult"
} else {
"Minor"
}
Karena:
20 >= 18
β
true
maka if menghasilkan:
"Adult"
Sehingga:
status = "Adult"
6. Sekarang terapkan ke minimum
Kita tadi punya:
var minimum: Int
if (x < y) {
minimum = x
} else {
minimum = y
}
Karena if bisa menghasilkan nilai, kita dapat mengubahnya menjadi:
val minimum = if (x < y) {
x
} else {
y
}
Perhatikan perbedaannya.
Sebelumnya:
minimum = x
Sekarang:
x
Kenapa cukup x?
Karena x menjadi nilai yang dihasilkan oleh expression if.
7. Cara kerja kode minimum
Misalnya:
val x = 7
val y = 5
val minimum = if (x < y) {
x
} else {
y
}
Kotlin mengecek:
x < y
β
7 < 5
β
false
Karena false, Kotlin mengambil nilai dari else:
y
β
5
Maka:
minimum = 5
8. Kalau x lebih kecil?
Misalnya:
val x = 3
val y = 5
val minimum = if (x < y) {
x
} else {
y
}
Kondisinya:
3 < 5
β
true
Maka branch pertama dipilih:
x
β
3
Sehingga:
minimum = 3
Jadi kode yang sama bisa menangani kedua kondisi.
9. Kita bahkan bisa menulisnya satu baris
Kotlin memungkinkan bentuk:
val minimum = if (x < y) x else y
Ini sangat umum.
Bacanya:
“Minimum adalah
xjikax < y, kalau tidak,y.”
Secara mental:
if x < y
β
YA β x
TIDAK β y
10. Maximum juga bisa dibuat satu baris
Versi panjang:
val maximum = if (x > y) {
x
} else {
y
}
Bisa dibuat:
val maximum = if (x > y) x else y
Misalnya:
val x = 7
val y = 5
val maximum = if (x > y) x else y
Evaluasi:
7 > 5
β
true
β
ambil x
β
7
Jadi:
maximum = 7
11. Bandingkan dua pendekatan
Cara panjang
var minimum: Int
if (x < y) {
minimum = x
} else {
minimum = y
}
Cara menggunakan if expression
val minimum = if (x < y) x else y
Logikanya sama.
Tetapi yang kedua jauh lebih ringkas.
12. Kenapa bisa menggunakan val?
Ini juga menarik.
Sebelumnya kita menggunakan:
var minimum: Int
karena nilainya diberikan kemudian:
minimum = x
atau:
minimum = y
Tetapi sekarang:
val minimum = if (x < y) x else y
Nilai minimum langsung ditentukan ketika deklarasi.
Jadi kita tidak perlu var.
Ini sesuai prinsip yang sudah kita pelajari:
Gunakan
valjika variable tidak perlu di-reassign.
13. if sekarang seperti “mesin pemilih nilai”
Ini cara berpikir yang bagus.
Bayangkan:
if (condition) valueA else valueB
sebagai mesin:
condition
β
βββββββββββββββ
β TRUE ? β
ββββββββ¬βββββββ
YES β NO
β β
valueA valueB
\ /
\ /
β β
hasil akhir
Misalnya:
val minimum = if (x < y) x else y
Mesinnya:
Apakah x < y?
β
YA β x
TIDAK β y
Nilai yang dipilih menjadi nilai minimum.
14. Ini inti perbedaan “statement” dan “expression”
Ini bagian yang ditekankan subtitle.
Secara sederhana:
Statement
Lebih berfokus pada:
“Lakukan sesuatu.”
Contohnya sebuah blok kode yang menjalankan operasi.
Expression
Lebih berfokus pada:
“Hasilnya apa?”
Contoh:
5 + 3
menghasilkan:
8
Comparison:
5 > 3
menghasilkan:
true
Dan if expression:
if (5 > 3) "Yes" else "No"
menghasilkan:
"Yes"
15. Contoh if expression yang sederhana
val number = 10
val result = if (number > 5) {
"Big"
} else {
"Small"
}
if menghasilkan salah satu dari:
"Big"
atau:
"Small"
Maka:
result = "Big"
16. Sekarang lihat minimum sebagai expression
val minimum = if (x < y) x else y
Bagian ini:
if (x < y) x else y
adalah expression.
Expression tersebut menghasilkan:
x
atau:
y
Kemudian hasil tersebut diberikan kepada:
minimum
Jadi alurnya:
if (x < y) x else y
β
menghasilkan nilai
β
minimum
17. Contoh dengan angka nyata
val x = 7
val y = 5
val minimum = if (x < y) x else y
val maximum = if (x > y) x else y
println("Minimum: $minimum")
println("Maximum: $maximum")
Mari evaluasi.
Minimum
7 < 5
β
false
β
ambil y
β
5
Maximum
7 > 5
β
true
β
ambil x
β
7
Output:
Minimum: 5
Maximum: 7
18. Kalau angkanya sama?
Misalnya:
val x = 10
val y = 10
val minimum = if (x < y) x else y
val maximum = if (x > y) x else y
Minimum:
10 < 10
β
false
β
ambil y
β
10
Maximum:
10 > 10
β
false
β
ambil y
β
10
Hasil:
minimum = 10
maximum = 10
Ini tetap benar.
19. Kenapa else penting?
Perhatikan:
val minimum = if (x < y) x
Ini tidak mempunyai branch untuk kondisi false.
Kalau kita menggunakan if sebagai expression untuk menghasilkan nilai seperti ini, kita membutuhkan hasil yang jelas untuk kondisi lainnya.
Karena itu bentuk yang aman dan umum:
val minimum = if (x < y) x else y
Ada dua kemungkinan:
x < y β true β x
x < y β false β y
Sehingga minimum selalu mendapatkan nilai.
20. Kita bisa menggunakan block {}
Tidak harus selalu satu baris.
Misalnya:
val minimum = if (x < y) {
println("x is smaller")
x
} else {
println("y is smaller or equal")
y
}
Di sini block tersebut melakukan dua hal:
- mencetak pesan
- menghasilkan nilai terakhir
Contoh jika:
x = 3
y = 5
maka:
x is smaller
dan minimum mendapatkan:
3
Perhatikan bahwa:
println("x is smaller")
x
nilai yang dihasilkan block adalah expression terakhir:
x
21. Ini menghubungkan dengan materi sebelumnya
Kita sudah belajar:
Variable
val x = 7
val y = 5
Comparison operator
x < y
menghasilkan Boolean:
false
Conditional expression
if (x < y) x else y
menghasilkan nilai:
5
Assignment/declaration
val minimum = ...
menyimpan hasil tersebut.
Jadi:
x, y
β
comparison
β
true / false
β
if
β
x atau y
β
minimum
22. Contoh lain: menentukan nilai terbesar
Misalnya kita ingin mendapatkan harga yang lebih mahal:
val priceA = 50_000
val priceB = 75_000
val expensivePrice = if (priceA > priceB) {
priceA
} else {
priceB
}
Kotlin mengevaluasi:
50000 > 75000
β
false
β
ambil priceB
β
75000
Jadi:
expensivePrice = 75000
23. Contoh lain: menentukan status
Tidak hanya angka.
val age = 20
val status = if (age >= 18) {
"Adult"
} else {
"Minor"
}
Hasilnya:
status = "Adult"
Jadi konsep if expression sangat umum.
24. Contoh dengan Boolean
Misalnya:
val isLoggedIn = true
val message = if (isLoggedIn) {
"Welcome"
} else {
"Please login"
}
Karena:
isLoggedIn = true
hasilnya:
message = "Welcome"
25. Contoh dengan String
Misalnya kita sudah belajar String equality:
val answer = "Kotlin"
val result = if (answer == "Kotlin") {
"Correct"
} else {
"Wrong"
}
Di sini:
"Kotlin" == "Kotlin"
β
true
β
"Correct"
Maka:
result = "Correct"
Ini menunjukkan bagaimana lesson-lesson sebelumnya saling terhubung.
26. Bentuk umum if expression
Ada dua bentuk yang perlu kamu kenal.
Multi-line
val result = if (condition) {
valueA
} else {
valueB
}
Single-line
val result = if (condition) valueA else valueB
Keduanya memiliki makna yang sama.
Untuk kondisi yang sederhana, single-line sangat nyaman.
Untuk kode yang lebih kompleks, gunakan {} agar lebih mudah dibaca.
27. Contoh minimum dan maximum yang final
Ini versi yang paling sederhana dari lesson:
fun main() {
val x = 7
val y = 5
val minimum = if (x < y) x else y
val maximum = if (x > y) x else y
println("Minimum: $minimum")
println("Maximum: $maximum")
}
Output:
Minimum: 5
Maximum: 7
Perhatikan betapa singkatnya dibandingkan versi if-else sebelumnya.
28. Ada satu hal yang perlu diluruskan dari subtitle
Subtitle mengatakan kira-kira bahwa bahasa lain seperti Java atau Python tidak mengembalikan nilai dari expression if.
Ini terlalu disederhanakan.
Yang lebih tepat:
- Kotlin memang memiliki
ifsebagai expression dan ini sangat umum digunakan. - Java tradisional memperlakukan
ifsebagai statement, tetapi Java memiliki conditional operator?:untuk menghasilkan nilai. - Python juga memiliki conditional expression, misalnya bentuk
x if condition else y.
Jadi jangan menyimpulkan:
“Kotlin satu-satunya bahasa yang bisa melakukan conditional expression.”
Bukan itu poinnya.
Poin penting lesson ini adalah:
Dalam Kotlin,
ifsecara langsung dapat digunakan sebagai expression untuk menghasilkan sebuah nilai.
29. Jangan tertukar dengan if + assignment
Bandingkan:
Cara lama
var minimum: Int
if (x < y) {
minimum = x
} else {
minimum = y
}
Di sini kita membuat variable terlebih dahulu, kemudian memberikan nilai di dalam branch.
Cara Kotlin yang lebih ekspresif
val minimum = if (x < y) x else y
Di sini:
if expression
β
menghasilkan nilai
β
val minimum
Lebih langsung dan biasanya lebih mudah dibaca.
30. Hubungan dengan val dan var
Ini juga memperkuat materi sebelumnya.
Kalau:
var minimum: Int
if (...) {
minimum = x
} else {
minimum = y
}
kita membutuhkan var karena variable tersebut belum mendapatkan nilai saat deklarasi dan kemudian diisi.
Sedangkan:
val minimum = if (...) x else y
langsung menghasilkan nilai ketika dibuat.
Jadi val sangat cocok.
31. Mental model yang harus kamu simpan
Mulai sekarang, kalau melihat:
val result = if (condition) A else B
bacalah:
“result berisi A jika condition benar, kalau tidak result berisi B.”
Contoh:
val result = if (10 > 5) "Yes" else "No"
Bacanya:
Kalau 10 lebih besar dari 5,
resultadalah"Yes", kalau tidak"No".
Hasil:
result = "Yes"
32. Ringkasan lesson
Sebelum lesson ini
Kita bisa menulis:
var minimum: Int
if (x < y) {
minimum = x
} else {
minimum = y
}
Setelah memahami if expression
Kita bisa menulis:
val minimum = if (x < y) x else y
Begitu juga:
val maximum = if (x > y) x else y
π§ Inti terpenting
Ingat tiga hal ini:
1. if bisa mengecek kondisi
if (x < y) {
println("x is smaller")
}
2. if-else bisa memilih antara dua jalur
if (x < y) {
println("x")
} else {
println("y")
}
3. Di Kotlin, if juga bisa menghasilkan nilai
val minimum = if (x < y) x else y
Jadi pola pikirnya berubah dari:
“Kalau kondisi benar, lakukan sesuatu.”
menjadi:
“Kalau kondisi benar, hasilnya A; kalau salah, hasilnya B.”
Dan itulah alasan kode seperti:
val minimum = if (x < y) x else y
val maximum = if (x > y) x else y
bisa menjadi sangat ringkas.
Alur besarnya:
x dan y
β
comparison operator
β
true / false
β
if expression
β
pilih x atau y
β
simpan ke minimum / maximum
Ini adalah salah satu pola Kotlin yang akan sering kamu gunakan saat menulis kode sehari-hari.