Masukkan Password
19 The Complete Kotlin Course #18 - While Loop - Kotlin Tutorials for Beginners
Di bagian ini kita mulai masuk ke konsep loop, yaitu salah satu konsep paling penting dalam pemrograman. Kalau sebelumnya kita belajar if untuk memilih apakah suatu kode dijalankan, sekarang while digunakan untuk menjalankan kode berulang kali selama kondisi tertentu masih true.
Ada juga beberapa bagian subtitle yang salah transkrip, terutama pada perhitungan. Saya akan luruskan supaya tidak membingungkan.
1. Apa itu Loop?
Loop adalah mekanisme untuk menjalankan suatu blok kode berulang kali.
Misalnya kita ingin mencetak angka 1 sampai 5.
Tanpa loop, kita bisa saja menulis:
println(1)
println(2)
println(3)
println(4)
println(5)
Tapi kalau ingin mencetak 1 sampai 1.000, tentu tidak mungkin kita menulis println() seribu kali.
Di sinilah loop berguna.
Secara sederhana:
jalankan kode
↓
cek kondisi
↓
masih true?
↙ ↘
yes no
↓ ↓
ulang berhenti
2. Apa itu while loop?
while berarti kurang lebih:
“Selama kondisi ini benar, jalankan kode ini.”
Syntax dasarnya:
while (condition) {
// kode yang diulang
}
Contoh:
var x = 1
while (x < 5) {
println(x)
x = x + 1
}
Hasil:
1
2
3
4
Kenapa?
Karena Kotlin melakukan proses seperti ini:
x = 1
↓
1 < 5 ? → true
↓
print 1
↓
x = 2
↓
2 < 5 ? → true
↓
print 2
↓
x = 3
↓
3 < 5 ? → true
↓
print 3
↓
x = 4
↓
4 < 5 ? → true
↓
print 4
↓
x = 5
↓
5 < 5 ? → false
↓
BERHENTI
Jadi inti while adalah:
Cek → jalankan → kembali cek → jalankan → kembali cek → … → berhenti ketika false.
3. Struktur while
Perhatikan:
while (x < 5) {
println(x)
}
Ada dua bagian utama:
while ( x < 5 ) {
└─────┘
condition
{
println(x)
}
└──────────────┘
loop body
A. Condition
x < 5
Ini adalah kondisi yang menghasilkan Boolean:
true
atau
false
B. Loop body
{
println(x)
}
Ini adalah kode yang akan dijalankan berulang kali selama kondisi true.
4. Hubungannya dengan if
Ini sangat penting karena kita baru saja belajar if.
if:
if (condition) {
// jalankan sekali
}
while:
while (condition) {
// jalankan berulang kali
}
Misalnya:
if (x < 100) {
println(x)
}
Artinya:
Kalau
x < 100, jalankan kode satu kali.
Sedangkan:
while (x < 100) {
println(x)
}
Artinya:
Selama
x < 100, jalankan kode berulang kali.
Jadi:
if | while |
|---|---|
| Percabangan | Perulangan |
| Mengecek kondisi | Mengecek kondisi |
| Biasanya menjalankan blok paling banyak sekali | Bisa menjalankan blok berkali-kali |
| Berhenti setelah blok selesai | Kembali mengecek kondisi |
5. Apa itu Iteration?
Di subtitle disebutkan istilah iteration.
Iteration atau iterasi sederhananya adalah:
Satu kali putaran loop.
Contoh:
var x = 1
while (x < 5) {
println(x)
x = x + 1
}
Putaran pertama:
x = 1
Putaran kedua:
x = 2
Putaran ketiga:
x = 3
Putaran keempat:
x = 4
Itu berarti loop melakukan 4 iterasi.
Mental model:
Iteration 1
↓
Iteration 2
↓
Iteration 3
↓
Iteration 4
↓
Condition false
↓
STOP
6. Sekarang kita bahas contoh dari video
Contoh di video sebenarnya kurang jelas karena subtitle-nya banyak salah transkrip.
Kode yang dimaksud kira-kira:
var x = 1
while (x < 100) {
x = x + x + 1
println(x)
}
Perhatikan baris ini:
x = x + x + 1
Ini yang menyebabkan angka berubah menjadi:
3
7
15
31
63
127
Mari kita hitung pelan-pelan.
7. Iterasi pertama
Awalnya:
x = 1
Kemudian Kotlin mengecek:
x < 100
Substitusikan x = 1:
1 < 100
Hasilnya:
true
Maka kode di dalam while dijalankan:
x = x + x + 1
Masukkan x = 1:
x = 1 + 1 + 1
Hasil:
x = 3
Kemudian:
println(x)
Mencetak:
3
Jadi:
Awal x = 1
1 < 100 → true
x = 1 + 1 + 1
x = 3
print → 3
8. Iterasi kedua
Sekarang nilai x sudah:
3
Loop kembali ke atas.
Kotlin mengecek:
x < 100
Menjadi:
3 < 100
Hasil:
true
Maka:
x = x + x + 1
Menjadi:
x = 3 + 3 + 1
Jadi:
x = 7
Kemudian:
println(x)
Hasil:
7
9. Iterasi ketiga
Sekarang:
x = 7
Cek:
7 < 100
→ true
Jalankan:
x = 7 + 7 + 1
Hasil:
x = 15
Print:
15
10. Iterasi keempat
Sekarang:
x = 15
Cek:
15 < 100
→ true
Kemudian:
x = 15 + 15 + 1
x = 31
Print:
31
11. Iterasi kelima
Sekarang:
x = 31
Cek:
31 < 100
→ true
Kemudian:
x = 31 + 31 + 1
x = 63
Print:
63
12. Iterasi keenam
Sekarang:
x = 63
Cek:
63 < 100
→ true
Kemudian:
x = 63 + 63 + 1
x = 127
Print:
127
13. Kenapa setelah 127 loop berhenti?
Ini bagian yang sangat penting.
Setelah menghasilkan:
x = 127
Kotlin kembali ke atas dan mengecek:
x < 100
Sekarang:
127 < 100
Hasilnya:
false
Karena false, maka:
STOP
Loop selesai.
Jadi output lengkapnya:
3
7
15
31
63
127
14. Visualisasi seluruh proses
Kalau dibuat seperti tabel:
| Iterasi | Nilai x sebelum kondisi | x < 100 | Nilai x setelah x+x+1 | Output |
|---|---|---|---|---|
| 1 | 1 | true | 3 | 3 |
| 2 | 3 | true | 7 | 7 |
| 3 | 7 | true | 15 | 15 |
| 4 | 15 | true | 31 | 31 |
| 5 | 31 | true | 63 | 63 |
| 6 | 63 | true | 127 | 127 |
| - | 127 | false | - | stop |
Perhatikan pola pentingnya:
1
↓
3
↓
7
↓
15
↓
31
↓
63
↓
127
Setiap kali:
nilai baru = nilai lama + nilai lama + 1
atau:
nilai baru = 2 × nilai lama + 1
15. “Old x” dan “new x”
Di video instruktur mencoba menjelaskan konsep old value dan new value.
Misalnya:
x = x + x + 1
Ketika x masih 3, kita bisa membacanya sebagai:
x baru = x lama + x lama + 1
Jadi:
x baru = 3 + 3 + 1
= 7
Kemudian nilai x sekarang menjadi 7.
Jadi:
SEBELUM SESUDAH
x = 3 x = 7
↓ ↑
└── 3 + 3 + 1 ────────────┘
Ini bukan berarti Kotlin membuat dua variabel bernama oldX dan newX.
Itu hanya cara kita membayangkan proses perhitungan agar lebih mudah dipahami.
16. Bagian paling penting: jangan lupa mengubah nilai kondisi
Perhatikan contoh ini:
var x = 1
while (x < 5) {
println(x)
}
Ini bermasalah.
Kenapa?
Karena x tidak pernah berubah.
x = 1
Kemudian:
1 < 5 → true
Print:
1
Kembali ke atas.
1 < 5 → true
Print:
1
Kembali lagi.
1 < 5 → true
Print:
1
Dan seterusnya…
1
1
1
1
1
1
1
...
Ini disebut infinite loop atau loop tak terbatas.
17. Bagaimana cara menghindari infinite loop?
Pastikan ada sesuatu yang membuat kondisi akhirnya menjadi false.
Contohnya:
var x = 1
while (x < 5) {
println(x)
x = x + 1
}
Di sini:
x = x + 1
mengubah x.
Sehingga:
1 → 2 → 3 → 4 → 5
Ketika:
5 < 5
hasilnya:
false
Loop berhenti.
18. Pola umum while
Hampir semua while sederhana bisa kita pahami dengan pola:
var nilai = nilaiAwal
while (kondisi) {
// lakukan sesuatu
// ubah nilai agar suatu saat kondisi false
}
Misalnya menghitung 1 sampai 10:
var number = 1
while (number <= 10) {
println(number)
number = number + 1
}
Output:
1
2
3
4
5
6
7
8
9
10
19. Kenapa var digunakan?
Perhatikan:
var number = 1
Kita menggunakan var karena nilai number berubah:
1
↓
2
↓
3
↓
4
...
Kalau menggunakan:
val number = 1
kita tidak bisa melakukan:
number = number + 1
karena val tidak boleh di-reassign.
Jadi ini menghubungkan dengan materi sebelumnya:
val → nilai/reference tidak bisa di-reassign
var → bisa di-reassign
Untuk variabel penghitung loop yang nilainya berubah, biasanya kita menggunakan var.
20. while sangat berguna untuk kondisi yang belum kita tahu jumlah pengulangannya
Misalnya:
“Selama user belum memasukkan password yang benar, terus minta password.”
Secara konsep:
while (password salah) {
minta password lagi
}
Atau:
“Selama saldo masih cukup, lakukan transaksi.”
Konsepnya:
while (saldo >= harga) {
lakukan transaksi
}
Jadi while sangat cocok ketika kita berpikir:
“Lakukan terus selama kondisi X masih benar.”
21. Analogi kehidupan sehari-hari
Bayangkan kamu sedang mengisi ember.
Kamu berkata:
“Selama ember belum penuh, tambahkan air.”
Itu adalah while.
while (ember belum penuh) {
tambahkan air
}
Prosesnya:
Ember 20%
↓
belum penuh? TRUE
↓
tambah air
Ember 40%
↓
belum penuh? TRUE
↓
tambah air
Ember 70%
↓
belum penuh? TRUE
↓
tambah air
Ember 100%
↓
belum penuh? FALSE
↓
STOP
Persis seperti:
while (condition) {
// lakukan sesuatu
}
22. Alur eksekusi while
Ini pola yang sebaiknya kamu hafalkan secara konsep:
┌───────────────┐
│ START │
└───────┬───────┘
↓
┌───────────────┐
│ cek condition │
└───────┬───────┘
↓
┌──────┴──────┐
│ │
true false
│ │
↓ ↓
┌────────────┐ STOP
│ loop body │
└─────┬──────┘
│
└──────────────→ kembali cek condition
Inilah inti dari while.
23. Hubungan materi yang sudah kita pelajari
Kalau kita sambungkan dengan pelajaran sebelumnya:
Langkah 1 — Variable
var x = 1
Kita menyimpan data.
Langkah 2 — Comparison
x < 100
Kita membandingkan nilai.
Langkah 3 — Boolean
Hasil perbandingan adalah:
true / false
Langkah 4 — while
Boolean tersebut digunakan untuk menentukan apakah loop dilanjutkan:
while (x < 100) {
...
}
Jadi:
Variable
↓
Comparison
↓
Boolean
↓
while
↓
jalankan kode
↓
ubah variable
↓
cek lagi
↓
Boolean
↓
ulang / berhenti
Ini sebenarnya merupakan gabungan dari beberapa materi yang sudah kamu pelajari.
24. Perbedaan if dan while yang harus benar-benar dipahami
Misalnya:
var x = 1
if (x < 5) {
println(x)
}
Hanya:
cek sekali
↓
true
↓
print
↓
selesai
Sedangkan:
var x = 1
while (x < 5) {
println(x)
x++
}
Prosesnya:
cek
↓
true → jalankan
↓
ubah x
↓
cek lagi
↓
true → jalankan
↓
ubah x
↓
cek lagi
↓
...
↓
false
↓
selesai
Jadi:
if= “kalau…”
while= “selama…”
Cara mengingatnya:
IF
"Kalau kondisi benar, lakukan."
WHILE
"Selama kondisi benar, terus lakukan."
25. Catatan tentang x++
Nanti kamu mungkin melihat penulisan:
x++
Daripada:
x = x + 1
Keduanya menaikkan x sebesar 1.
Misalnya:
var x = 1
x++
Setelah itu:
x = 2
Untuk sekarang cukup pahami bahwa x++ adalah cara singkat untuk menaikkan nilai x satu angka.
26. Yang perlu diluruskan dari subtitle
Ada beberapa kesalahan transkrip/penjelasan yang perlu kamu waspadai.
1. Perhitungan di subtitle berantakan
Bagian seperti:
“three equal three plus one which results in seven”
jelas salah secara matematika.
Yang benar untuk kode:
x = x + x + 1
adalah:
3 + 3 + 1 = 7
Bukan:
3 + 1 = 7
2. Angka output
Output yang dimaksud adalah:
3
7
15
31
63
127
Subtitle di beberapa bagian menulis angka seperti 1 7, 30 63, dan sebagainya karena kesalahan transkripsi.
3. while true
Subtitle menyebut:
while (true) {
// code
}
Ini valid secara Kotlin.
Tetapi kalau tidak ada break atau mekanisme lain untuk menghentikannya, loop tersebut akan berjalan terus:
true
↓
jalankan
↓
true
↓
jalankan
↓
true
↓
jalankan
↓
...
Ini bisa menjadi infinite loop.
4. “while introduces a scope”
Benar bahwa blok:
while (condition) {
...
}
memiliki scope untuk deklarasi lokal di dalamnya.
Misalnya:
while (x < 5) {
val message = "Hello"
println(message)
}
message hanya tersedia di dalam blok tersebut.
Ini mirip dengan scope pada if yang sudah kita bahas.
27. Contoh sederhana untuk latihan
Coba pahami kode ini:
fun main() {
var number = 1
while (number <= 5) {
println("Number: $number")
number++
}
}
Output:
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5
Urutannya:
number = 1
↓
1 <= 5 → true
↓
print 1
↓
number = 2
↓
2 <= 5 → true
↓
print 2
↓
...
↓
number = 5
↓
5 <= 5 → true
↓
print 5
↓
number = 6
↓
6 <= 5 → false
↓
STOP
28. Inti pelajaran hari ini
Kalau dari seluruh video ini hanya boleh mengingat beberapa hal, ingat ini:
while = perulangan berdasarkan kondisi
while (condition) {
// kode
}
Artinya:
Selama
conditionbernilaitrue, jalankan kode di dalam{}.
Alur:
cek kondisi
↓
true?
↙ ↘
yes no
↓ ↓
jalan STOP
↓
ubah data
↓
cek lagi
Contoh:
var x = 1
while (x < 5) {
println(x)
x++
}
Hasil:
1
2
3
4
Dan satu hal yang sangat penting:
Pastikan kondisi
whilepada akhirnya bisa menjadifalse, kalau tidak kamu berisiko membuat infinite loop.
Ringkasan hubungan dengan materi sebelumnya
var
↓
menyimpan nilai yang bisa berubah
↓
comparison operator
↓
x < 5
↓
Boolean
↓
true / false
↓
while
↓
ulangi kode selama true
↓
nilai berubah
↓
cek lagi
↓
false
↓
STOP
Jadi sebenarnya while bukan konsep yang berdiri sendiri. Ia adalah gabungan dari variable + comparison operator + Boolean + control flow yang sudah kamu pelajari sebelumnya.