Masukkan Password
23 The Complete Kotlin Course #22- Ranges - Kotlin Tutorials for Beginners
Materi ini penting karena kita mulai masuk ke for loop dan range di Kotlin. Sebelum benar-benar belajar for, kita perlu memahami range, karena range sangat sering dipakai bersama for.
Kalau sebelumnya:
if→ memilih jalurwhile→ mengulang selama kondisitruebreak→ menghentikan loop
Sekarang kita akan belajar:
- Range → menentukan kumpulan angka yang ingin dilalui
for→ mengulang sesuatu untuk setiap nilai dalam range- Nanti
when→ alternatif yang lebih powerful untuk banyak pilihan kondisi
1. Gambaran besar materi
Bayangkan kita ingin mencetak angka:
0
1
2
3
4
5
Dengan while, kita harus mengatur counter sendiri:
var x = 0
while (x <= 5) {
println(x)
x++
}
Dengan for dan range, nanti kita bisa menulis lebih sederhana:
for (x in 0..5) {
println(x)
}
Di sinilah range menjadi penting.
Range:
0..5
berarti:
“Urutan angka dari 0 sampai 5, termasuk 0 dan 5.”
2. Apa itu Range?
Dalam Kotlin, range adalah cara untuk merepresentasikan suatu urutan nilai yang dapat dihitung secara berurutan.
Contoh:
0..5
menghasilkan urutan:
0
1
2
3
4
5
Secara sederhana, bayangkan range seperti:
“Saya punya sekumpulan angka dari titik A sampai titik B.”
Misalnya:
1..5
berarti:
1, 2, 3, 4, 5
Sedangkan:
10..15
berarti:
10, 11, 12, 13, 14, 15
Range akan sangat berguna ketika kita ingin mengatakan:
“Lakukan sesuatu untuk angka 1 sampai 10.”
3. Closed Range dengan ..
Jenis range pertama yang dijelaskan di video adalah closed range.
Syntax-nya:
start..end
Contoh:
val cr = 0..5
Perhatikan:
0..5
Operator .. membuat closed range.
Artinya:
mulai dari
0sampai5, dan 5 ikut dimasukkan.
Jadi:
0..5
berisi:
0
1
2
3
4
5
4. Kenapa disebut “closed”?
Disebut closed range karena kedua ujungnya termasuk.
Misalnya:
val range = 3..7
isinya:
3, 4, 5, 6, 7
Angka awal 3 masuk.
Angka akhir 7 juga masuk.
Jadi:
3 ≤ x ≤ 7
Kalau menggunakan bahasa matematika:
batas bawah inclusive dan batas atas inclusive.
5. inclusive artinya apa?
Kata inclusive sangat penting dalam materi range.
Kalau kita mengatakan:
5is inclusive
artinya:
angka 5 ikut masuk ke dalam range.
Contoh:
0..5
hasilnya:
0, 1, 2, 3, 4, 5
↑
ikut masuk
Jadi 5 inclusive.
6. Cara melihat isi range
Misalnya:
val cr = 0..5
Kalau kita ingin melihat nilai-nilainya, range bisa digunakan dalam loop.
Contohnya:
for (number in cr) {
println(number)
}
Hasil:
0
1
2
3
4
5
Di sini kita mulai melihat hubungan antara range dan for loop.
7. Half-Open Range dengan until
Jenis kedua yang dibahas video adalah half-open range.
Bentuknya:
start until end
Contoh:
val hor = 0 until 5
Hasilnya:
0
1
2
3
4
Perhatikan bahwa:
5
tidak termasuk.
8. Perbedaan .. dan until
Ini salah satu hal yang wajib kamu hafalkan.
..
0..5
hasil:
0, 1, 2, 3, 4, 5
5 masuk.
until
0 until 5
hasil:
0, 1, 2, 3, 4
5 tidak masuk.
Jadi:
| Range | Hasil |
|---|---|
0..5 | 0, 1, 2, 3, 4, 5 |
0 until 5 | 0, 1, 2, 3, 4 |
Cara mengingat:
.. → sampai dan termasuk
until → sampai sebelum
9. Kenapa until berguna?
until sangat berguna ketika kita ingin menentukan jumlah pengulangan.
Misalnya:
for (i in 0 until 5) {
println(i)
}
Output:
0
1
2
3
4
Loop berjalan 5 kali.
Perhatikan:
0 → putaran 1
1 → putaran 2
2 → putaran 3
3 → putaran 4
4 → putaran 5
Ini nanti sangat berguna ketika bekerja dengan index array/list.
Misalnya sebuah data mempunyai 5 item, index-nya biasanya:
0
1
2
3
4
Bukan:
0
1
2
3
4
5
Karena jumlah item = 5, index terakhir = 4.
Jadi pola seperti:
0 until 5
sangat natural untuk hal seperti itu.
10. Closed Range vs Half-Open Range
Mari kita visualisasikan.
Closed range
0..5
0 ─ 1 ─ 2 ─ 3 ─ 4 ─ 5
● ● ● ● ● ●
↑
termasuk
Half-open range
0 until 5
0 ─ 1 ─ 2 ─ 3 ─ 4 5
● ● ● ● ● ○
↑
tidak termasuk
Jadi perbedaannya sebenarnya hanya pada batas akhir.
11. Bagaimana kalau ingin range menurun?
Nah, sekarang muncul masalah.
Dengan:
0..5
kita mendapatkan:
0
1
2
3
4
5
Artinya range tersebut bergerak naik.
Bagaimana kalau kita ingin:
5
4
3
2
1
0
?
Kita menggunakan:
downTo
Contoh:
val dr = 5 downTo 0
Hasilnya:
5
4
3
2
1
0
12. downTo bersifat inclusive
Ini juga penting.
5 downTo 0
menghasilkan:
5
4
3
2
1
0
Angka 5 masuk.
Angka 0 juga masuk.
Jadi sama-sama inclusive.
Secara sederhana:
5 downTo 0
artinya:
mulai dari 5, turun satu-satu sampai 0, dan 0 tetap termasuk.
13. Perbandingan tiga jenis yang kita pelajari
Sekarang kita punya tiga bentuk penting:
1. Naik, akhir termasuk
0..5
hasil:
0 1 2 3 4 5
2. Naik, akhir tidak termasuk
0 until 5
hasil:
0 1 2 3 4
3. Turun, akhir termasuk
5 downTo 0
hasil:
5 4 3 2 1 0
Tabelnya:
| Syntax | Arah | Batas akhir |
|---|---|---|
0..5 | naik | termasuk 5 |
0 until 5 | naik | tidak termasuk 5 |
5 downTo 0 | turun | termasuk 0 |
14. Kenapa video mengatakan .. dan until selalu increasing?
Untuk bentuk yang dibahas di video:
0..5
dan:
0 until 5
keduanya digunakan untuk bergerak dari nilai yang lebih kecil ke nilai yang lebih besar.
Misalnya:
0..5
bergerak:
0 → 1 → 2 → 3 → 4 → 5
Sedangkan untuk turun:
5 downTo 0
bergerak:
5 → 4 → 3 → 2 → 1 → 0
Jadi jangan mencoba membuat:
5..0
dan berharap mendapatkan:
5, 4, 3, 2, 1, 0
Untuk tujuan itu, gunakan:
5 downTo 0
15. Hubungan Range dengan for
Nah, ini bagian yang paling penting untuk lesson berikutnya.
Range sendiri hanya menggambarkan urutan.
Misalnya:
val numbers = 1..5
Kita punya:
1, 2, 3, 4, 5
Kemudian for dapat mengambil setiap nilai satu per satu:
for (number in numbers) {
println(number)
}
Hasil:
1
2
3
4
5
Secara mental:
range
1..5
↓
1, 2, 3, 4, 5
↓
for mengambil satu per satu
↓
1
2
3
4
5
16. Apa arti number in numbers?
Kode:
for (number in numbers) {
println(number)
}
dibaca:
“Untuk setiap
numberyang ada di dalamnumbers, jalankan kode di dalam{}.”
Misalnya numbers:
1, 2, 3, 4, 5
Maka:
Iterasi pertama
number = 1
jalankan:
println(number)
Output:
1
Iterasi kedua
number = 2
Output:
2
Dan seterusnya.
Sampai:
number = 5
Setelah itu selesai.
17. Hubungan dengan while yang sudah kita pelajari
Sebelumnya kita belajar:
var x = 0
while (x <= 5) {
println(x)
x++
}
Kita sendiri yang harus:
- membuat
x - menentukan kondisi
- mengubah
x
Dengan for:
for (x in 0..5) {
println(x)
}
Kita cukup mengatakan:
“Untuk setiap angka dari 0 sampai 5, lakukan ini.”
Jadi for sering terasa lebih natural ketika kita sudah tahu sekumpulan nilai yang ingin dilewati.
18. Contoh beberapa range
Dari 1 sampai 10
for (i in 1..10) {
println(i)
}
Output:
1
2
3
4
5
6
7
8
9
10
Dari 1 sampai sebelum 10
for (i in 1 until 10) {
println(i)
}
Output:
1
2
3
4
5
6
7
8
9
Dari 10 turun ke 1
for (i in 10 downTo 1) {
println(i)
}
Output:
10
9
8
7
6
5
4
3
2
1
19. Ada satu istilah penting: iteration
Karena kita mulai belajar for, kamu akan sering mendengar istilah iteration atau iterasi.
Iterasi = satu kali putaran loop.
Misalnya:
for (i in 1..3) {
println(i)
}
Ada 3 iterasi:
Iterasi 1 → i = 1
Iterasi 2 → i = 2
Iterasi 3 → i = 3
Setelah itu loop selesai.
Jadi:
iteration = satu putaran
20. Contoh yang lebih nyata
Misalnya kita mempunyai daftar nilai:
80
90
75
88
Kita mungkin ingin melakukan sesuatu terhadap setiap nilai.
Secara konsep:
nilai pertama → proses
nilai kedua → proses
nilai ketiga → proses
nilai keempat → proses
Itulah inti dari loop.
Contoh sederhana:
for (i in 1..4) {
println("Memproses data ke-$i")
}
Output:
Memproses data ke-1
Memproses data ke-2
Memproses data ke-3
Memproses data ke-4
Nanti for akan menjadi sangat penting ketika kita bekerja dengan:
- List
- Array
- String
- data dari API
- file
- database
- dan berbagai koleksi data lainnya.
21. Koreksi beberapa bagian subtitle
Ada beberapa bagian subtitle yang perlu kamu pahami dengan lebih tepat.
❌ “Range data types”
Video menyebut range sebagai semacam “range data types”. Untuk pemahaman beginner, tidak masalah, tetapi lebih tepat:
Range adalah representasi urutan nilai dengan batas tertentu.
Di Kotlin memang ada tipe-tipe range seperti IntRange, tetapi untuk sekarang kamu tidak perlu terlalu fokus pada detail implementasinya.
❌ 0..5 bukan sekadar “method”
.. bukan method biasa.
Ini adalah range operator yang menghasilkan range.
Contoh:
0..5
⚠️ until
until merupakan infix function yang digunakan untuk membentuk range sampai sebelum batas akhir.
Untuk level sekarang, cukup pahami:
0 until 5
→ 0, 1, 2, 3, 4.
Detail tentang infix function bisa dipelajari nanti.
22. Hal yang jangan sampai tertukar
Ada tiga operator yang sekarang harus kamu bedakan:
.. → closed range
until → sampai sebelum batas akhir
downTo → bergerak turun
Contoh:
0..5
→
0 1 2 3 4 5
Sedangkan:
0 until 5
→
0 1 2 3 4
Dan:
5 downTo 0
→
5 4 3 2 1 0
23. Hubungkan dengan materi sebelumnya
Sekarang perjalanan kita mulai terlihat jelas:
Boolean
↓
comparison
↓
if
↓
while
↓
do...while
↓
break
↓
range
↓
for
Sebelumnya kamu belajar:
if (age >= 18) {
println("Adult")
}
Program memilih berdasarkan kondisi.
Kemudian:
while (x < 10) {
println(x)
x++
}
Program mengulang berdasarkan kondisi.
Sekarang:
for (x in 0..10) {
println(x)
}
Program mengulang berdasarkan sekumpulan nilai/range.
24. Mental model paling sederhana
Bayangkan range sebagai jalur angka.
0 ── 1 ── 2 ── 3 ── 4 ── 5
0..5
“Lewati semua angka dari 0 sampai 5.”
0 → 1 → 2 → 3 → 4 → 5
0 until 5
“Lewati angka dari 0 sampai sebelum 5.”
0 → 1 → 2 → 3 → 4
5 downTo 0
“Mulai dari 5 dan turun sampai 0.”
5 → 4 → 3 → 2 → 1 → 0
Kemudian for bisa berjalan di sepanjang jalur tersebut:
for (x in 0..5) {
println(x)
}
25. Ringkasan yang perlu kamu kuasai
Untuk lesson ini, jangan buru-buru menghafal semuanya sekaligus. Kuasai tiga bentuk berikut:
0..5
→ 0, 1, 2, 3, 4, 5
akhir termasuk
0 until 5
→ 0, 1, 2, 3, 4
akhir tidak termasuk
5 downTo 0
→ 5, 4, 3, 2, 1, 0
turun dan akhir termasuk
Dan hubungan utamanya:
Range
↓
menentukan urutan nilai
↓
for
↓
mengambil setiap nilai satu per satu
↓
menjalankan kode
Jadi kalau nanti kamu melihat:
for (i in 1..10) {
println(i)
}
langsung baca dalam kepala:
“Untuk setiap angka
idari 1 sampai 10, cetaki.”
Itulah fondasi utama sebelum kita masuk lebih dalam ke for loop.