Masukkan Password
23 2.9 While Loop in Dart Programming Language | Loops in Dart | Learn Dart Language | Dart Course
Sekarang kita masuk ke while loop. Kalau sebelumnya kamu sudah belajar for, forEach, dan for-in, sebenarnya while tidak terlalu sulit. Perbedaan utamanya ada pada cara kita mengatur perulangannya.
Catatan: transkrip menyebut “DOT programming language”, maksudnya adalah Dart programming language.
1. Apa itu while loop?
while digunakan untuk mengulang suatu kode selama sebuah kondisi bernilai true.
Bentuk dasarnya:
while (condition) {
// kode yang diulang
}
Cara membacanya:
“Selama kondisi benar, jalankan kode ini.”
Contoh:
int i = 1;
while (i <= 5) {
print(i);
i++;
}
Output:
1
2
3
4
5
Kenapa berhenti di 5?
Karena setelah i menjadi 6, kondisi:
i <= 5
menjadi:
6 <= 5
hasilnya:
false
Maka loop berhenti.
2. Struktur while loop
Perhatikan:
int i = 1;
while (i <= 5) {
print(i);
i++;
}
Ada tiga bagian penting:
int i = 1;
↓
nilai awal
while (i <= 5)
↓
kondisi
i++;
↓
perubahan nilai
Jadi pola berpikirnya adalah:
Mulai dari mana → selama kondisi apa → bagaimana nilainya berubah?
Ini mirip dengan for.
3. Cara kerja while langkah demi langkah
Misalnya:
int i = 1;
while (i <= 5) {
print(i);
i++;
}
Mari kita jalankan secara manual.
Sebelum loop
i = 1
Putaran 1
Dart mengecek:
1 <= 5
Hasil:
true
Maka:
print(i);
mencetak:
1
Kemudian:
i++;
sehingga:
i = 2
Putaran 2
Cek:
2 <= 5
true.
Print:
2
Kemudian:
i = 3
Putaran 3
3 <= 5 → true
Print:
3
Kemudian:
i = 4
Putaran 4
4 <= 5 → true
Print:
4
Kemudian:
i = 5
Putaran 5
5 <= 5 → true
Print:
5
Kemudian:
i = 6
Putaran berikutnya
Sekarang:
6 <= 5
hasilnya:
false
Loop berhenti.
Jadi urutannya:
Cek kondisi
↓
true?
┌──┴──┐
Ya Tidak
↓ ↓
Jalankan Stop
kode
↓
Ubah nilai
↓
Kembali cek kondisi
4. Hal paling penting: kondisi dicek terlebih dahulu
Ini karakteristik penting dari while.
Contoh:
int i = 10;
while (i < 5) {
print(i);
i++;
}
Apa yang terjadi?
Dart tidak mencetak apa pun.
Karena sejak awal:
10 < 5
adalah:
false
Maka kode di dalam {} tidak pernah dijalankan.
Jadi:
whilemengecek kondisi terlebih dahulu, baru menjalankan body.
Ini nanti penting ketika kita membandingkan while dengan do-while.
5. while dibandingkan dengan for
Sebelumnya kita sudah belajar:
for (int i = 1; i <= 10; i++) {
print(i);
}
Dengan while:
int i = 1;
while (i <= 10) {
print(i);
i++;
}
Output keduanya sama:
1
2
3
4
5
6
7
8
9
10
Jadi secara umum:
for
↓
initialization
condition
increment
Sedangkan:
while
↓
initialization di luar
condition di while
increment di dalam
6. Perbedaan sintaks for dan while
for
for (int i = 1; i <= 10; i++) {
print(i);
}
Semua pengaturan loop berada di satu baris:
int i = 1
i <= 10
i++
while
int i = 1;
while (i <= 10) {
print(i);
i++;
}
Kita harus mengatur nilai awal dan perubahan secara terpisah.
7. Kapan menggunakan while?
Cara mudah membedakannya:
Gunakan for
Ketika kamu sudah tahu pola perulangannya.
Contoh:
“Saya mau mencetak angka 1 sampai 100.”
for (int i = 1; i <= 100; i++) {
print(i);
}
Gunakan while
Ketika kamu ingin mengatakan:
“Terus lakukan ini selama kondisi tertentu masih benar.”
Misalnya konsep:
while (passwordBelumBenar) {
// minta password lagi
}
atau:
while (saldo > 0) {
// lakukan transaksi
}
Jadi while sangat cocok untuk perulangan yang bergantung pada kondisi.
8. Contoh menghitung jumlah angka 1 sampai 10
Sesuai contoh di video:
int i = 1;
int sum = 0;
while (i <= 10) {
sum += i;
i++;
}
print(sum);
Output:
55
Kenapa 55?
Karena:
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
= 55
9. Memahami sum += i
Ini sama seperti yang sudah kita pelajari sebelumnya.
sum += i;
sama dengan:
sum = sum + i;
Awalnya:
sum = 0
Kemudian:
sum = 0 + 1 = 1
sum = 1 + 2 = 3
sum = 3 + 3 = 6
sum = 6 + 4 = 10
...
sum = 45 + 10 = 55
Jadi while dapat digunakan untuk melakukan perhitungan berulang.
10. while untuk menghitung mundur
Kita tidak harus selalu menaikkan angka.
Kita juga bisa menggunakan --.
Contoh:
int i = 10;
while (i >= 1) {
print(i);
i--;
}
Output:
10
9
8
7
6
5
4
3
2
1
11. Bagaimana cara kerja hitung mundur?
Awalnya:
i = 10
Kondisi:
i >= 1
Putaran pertama
10 >= 1 → true
Print:
10
Kemudian:
i--;
menjadi:
i = 9
Putaran berikutnya
9 >= 1 → true
Print:
9
Kemudian i menjadi 8.
Begitu seterusnya sampai:
i = 1
Print:
1
Kemudian:
i = 0
Cek:
0 >= 1 → false
Loop berhenti.
12. while untuk angka ganjil
Ada cara yang sangat sederhana untuk mencetak angka ganjil.
Mulai dari 1 dan naikkan 2 setiap kali:
int i = 1;
while (i <= 10) {
print(i);
i += 2;
}
Output:
1
3
5
7
9
Kenapa?
Karena nilai i berubah seperti ini:
1 → 3 → 5 → 7 → 9 → 11
Ketika i = 11:
11 <= 10
adalah false, jadi berhenti.
13. while untuk angka genap
Kalau ingin angka genap:
int i = 2;
while (i <= 20) {
print(i);
i += 2;
}
Output:
2
4
6
8
10
12
14
16
18
20
Ini sangat efisien karena kita langsung melompat dari satu angka genap ke angka genap berikutnya.
14. Alternatif: gunakan %
Ada cara lain.
Kita bisa mulai dari 1 dan mengecek apakah angka tersebut genap.
int i = 1;
while (i <= 20) {
if (i % 2 == 0) {
print(i);
}
i++;
}
Output:
2
4
6
8
10
12
14
16
18
20
Logikanya:
i % 2 == 0
berarti:
“Apakah
ihabis dibagi 2?”
Kalau iya, berarti angka tersebut genap.
15. Dua cara mencari angka genap
Cara 1 — Langsung lompat 2
int i = 2;
while (i <= 20) {
print(i);
i += 2;
}
Cara 2 — Cek menggunakan %
int i = 1;
while (i <= 20) {
if (i % 2 == 0) {
print(i);
}
i++;
}
Keduanya benar.
Tetapi kalau tujuanmu memang hanya mencetak angka genap secara berurutan, cara pertama lebih sederhana.
16. Bagian paling berbahaya: infinite loop
Ini sangat penting dalam while.
Infinite loop adalah:
loop yang tidak pernah berhenti.
Contoh:
int i = 1;
while (i <= 10) {
print(i);
}
Kelihatannya seperti ingin mencetak 1 sampai 10.
Tetapi ada masalah.
Kita lupa:
i++;
Akibatnya:
i = 1
terus-menerus.
Kondisinya selalu:
1 <= 10
yaitu:
true
Maka:
print(1)
print(1)
print(1)
print(1)
print(1)
...
dan tidak pernah berhenti.
17. Kenapa i++ sangat penting?
Bandingkan:
Benar
int i = 1;
while (i <= 10) {
print(i);
i++;
}
Nilai berubah:
1 → 2 → 3 → ... → 10 → 11
Ketika 11:
11 <= 10 → false
Berhenti.
Salah
int i = 1;
while (i <= 10) {
print(i);
}
Nilai:
1 → 1 → 1 → 1 → 1 → ...
Kondisi:
true → true → true → true → ...
Tidak pernah berhenti.
18. Bahkan kondisi true akan membuat infinite loop
Dalam Dart, kita bisa menulis:
while (true) {
print("Hello");
}
Karena:
true
selalu bernilai true.
Maka:
while (true)
↓
true
↓
jalankan
↓
kembali
↓
true
↓
jalankan
↓
...
Program akan terus berjalan.
Ini disebut:
Infinite loop
19. Apakah infinite loop selalu buruk?
Tidak selalu.
Infinite loop kadang memang disengaja, misalnya pada program yang terus menunggu sesuatu.
Contohnya secara konsep:
while (true) {
// terus menunggu input/perintah
}
Tetapi biasanya harus ada cara untuk keluar menggunakan break.
Contoh:
int i = 1;
while (true) {
print(i);
if (i == 5) {
break;
}
i++;
}
Output:
1
2
3
4
5
Ketika i == 5, break menghentikan loop.
Materi break akan membuat konsep ini semakin jelas.
20. Kesalahan umum saat menggunakan while
Kesalahan 1 — Lupa increment
Salah:
int i = 1;
while (i <= 10) {
print(i);
}
Benar:
int i = 1;
while (i <= 10) {
print(i);
i++;
}
Kesalahan 2 — Kondisi salah
Misalnya:
int i = 1;
while (i >= 10) {
print(i);
i++;
}
Tidak akan berjalan sama sekali.
Karena sejak awal:
1 >= 10
adalah false.
Kesalahan 3 — Arah perubahan salah
Misalnya ingin menghitung mundur:
int i = 10;
while (i >= 1) {
print(i);
i++;
}
Ini salah.
Kenapa?
Nilainya:
10 → 11 → 12 → 13 → ...
Tetapi kondisi:
i >= 1
tetap true.
Akibatnya infinite loop.
Seharusnya:
int i = 10;
while (i >= 1) {
print(i);
i--;
}
Nilainya:
10 → 9 → 8 → ... → 1 → 0
Kemudian kondisi menjadi false.
21. Pola penting while
Naik 1–10
int i = 1;
while (i <= 10) {
print(i);
i++;
}
Turun 10–1
int i = 10;
while (i >= 1) {
print(i);
i--;
}
Bilangan ganjil
int i = 1;
while (i <= 10) {
print(i);
i += 2;
}
Bilangan genap
int i = 2;
while (i <= 20) {
print(i);
i += 2;
}
Dengan if
int i = 1;
while (i <= 20) {
if (i % 2 == 0) {
print(i);
}
i++;
}
Menghitung total
int i = 1;
int sum = 0;
while (i <= 10) {
sum += i;
i++;
}
print(sum);
22. Hubungan while dengan materi sebelumnya
Sekarang kita sudah punya beberapa jenis loop:
for
forEach
for-in
while
Gambaran sederhananya:
for
for (int i = 1; i <= 10; i++) {
print(i);
}
Saya tahu pola awal, kondisi, dan perubahan loop.
for-in
for (var item in items) {
print(item);
}
Saya ingin mengambil item satu per satu dari collection.
forEach
items.forEach((item) {
print(item);
});
Saya ingin melakukan sesuatu terhadap setiap item.
while
while (condition) {
// ...
}
Selama kondisi masih benar, terus lakukan.
23. Cara paling mudah memahami while
Bayangkan kamu sedang mengisi ember.
Kamu berkata:
“Selama ember belum penuh, tambahkan air.”
Itu konsep while.
Apakah ember sudah penuh?
↓
Tidak
↓
Tambahkan air
↓
Cek lagi
↓
Apakah ember sudah penuh?
↓
Tidak
↓
Tambahkan air
↓
...
↓
Ya
↓
STOP
Dalam programming:
while (emberBelumPenuh) {
tambahAir();
}
Jadi inti while adalah:
Lakukan terus selama kondisi masih benar.
24. Perbedaan penting while vs do-while
Ini akan sangat membantu untuk materi berikutnya.
while:
while (condition) {
// kode
}
Kondisi dicek dulu.
Sedangkan do-while:
do {
// kode
} while (condition);
Kode dijalankan dulu, baru kondisi dicek.
Misalnya:
int i = 10;
while (i < 5) {
print(i);
}
Tidak mencetak apa pun.
Tetapi:
int i = 10;
do {
print(i);
} while (i < 5);
Akan mencetak:
10
meskipun kondisinya sejak awal false.
Jadi ingat:
while
↓
CEK → JALANKAN
do-while
↓
JALANKAN → CEK
25. Cheat sheet while
Sintaks:
while (condition) {
// kode
}
Pola naik:
int i = 1;
while (i <= 10) {
print(i);
i++;
}
Pola turun:
int i = 10;
while (i >= 1) {
print(i);
i--;
}
Pola genap:
int i = 2;
while (i <= 20) {
print(i);
i += 2;
}
Pola menghitung total:
int i = 1;
int sum = 0;
while (i <= 10) {
sum += i;
i++;
}
26. Rumus mental yang wajib kamu ingat
Setiap kali melihat while, tanyakan 3 hal:
1. Nilai awalnya berapa?
int i = 1;
2. Kapan loop berhenti?
Lihat kondisinya:
while (i <= 10)
Berarti berhenti ketika:
i > 10
3. Bagaimana nilai berubah?
i++;
atau:
i--;
Kalau kamu bisa menjawab tiga pertanyaan ini, biasanya kamu sudah bisa memahami sebuah while loop.
27. Latihan kecil
Coba tebak output dari kode berikut sebelum menjalankannya:
Latihan 1
int i = 1;
while (i <= 5) {
print(i);
i++;
}
Latihan 2
int i = 5;
while (i >= 1) {
print(i);
i--;
}
Latihan 3
int i = 2;
while (i <= 10) {
print(i);
i += 2;
}
Latihan 4
Coba buat program untuk menghasilkan:
1
3
5
7
9
menggunakan while.
Latihan 5
Coba hitung:
1 + 2 + 3 + ... + 100
menggunakan while.
Ringkasan akhir
while loop = ulangi kode selama kondisi bernilai true.
Strukturnya:
nilaiAwal;
while (kondisi) {
// kode yang diulang
perubahanNilai;
}
Contoh:
int i = 1;
while (i <= 10) {
print(i);
i++;
}
Alurnya:
nilai awal
↓
cek kondisi
↓
true?
┌─┴─┐
Ya Tidak
↓ ↓
jalankan STOP
kode
↓
ubah nilai
↓
cek lagi
Dan satu hal yang jangan sampai lupa:
⚠️ Pastikan kondisi
whilepada akhirnya bisa menjadifalse, kecuali memang kamu sengaja membuat infinite loop.
Kalau for-in kita ibaratkan “ambil setiap item”, maka while paling mudah diingat sebagai:
“Selama masih memenuhi kondisi, terus lakukan.”