Perulangan: for, while, dan do-while
Mengulang pekerjaan dengan for, for-in, while, do-while, plus break dan continue.
Kenapa butuh perulangan?
Bayangkan mencetak angka 1 sampai 100 tanpa loop: 100 baris print. Dengan loop, cukup 3 baris. Perulangan adalah cara menyuruh komputer mengerjakan hal repetitif.
for klasik
void main() {
for (int i = 1; i <= 5; i++) {
print('Hitungan ke-$i');
}
}Struktur for punya tiga bagian di dalam kurung: inisialisasi (int i = 1), kondisi (i <= 5, loop berhenti saat false), dan update (i++, dijalankan tiap putaran selesai).
Output:
Hitungan ke-1
Hitungan ke-2
Hitungan ke-3
Hitungan ke-4
Hitungan ke-5
for-in: untuk koleksi data
Kalau yang diulang adalah isi list atau kumpulan data lain, for-in lebih enak dibaca:
void main() {
var buah = ['apel', 'mangga', 'pisang'];
for (var b in buah) {
print('Saya suka $b');
}
}Tidak perlu mikir index. Variabel b otomatis berisi tiap elemen satu per satu.
while: selama kondisi true
void main() {
int nyawa = 3;
while (nyawa > 0) {
print('Main! Sisa nyawa: $nyawa');
nyawa--;
}
print('Game over');
}Cocok saat jumlah putaran tidak diketahui di awal, mis. menunggu input user yang benar atau membaca data sampai habis.
do-while: jalan dulu, cek belakangan
void main() {
int i = 10;
do {
print('i = $i');
i++;
} while (i < 5);
}Outputnya i = 10 sekali, walau kondisi i < 5 langsung false. Karena cek kondisi dilakukan setelah badan loop jalan, do-while dijamin minimal satu kali eksekusi. Berguna mis. menampilkan menu yang harus muncul dulu sebelum user memilih.
Catatan teknis: Loop tanpa akhir (infinite loop) adalah bug klasik:
while (true)tanpa break, atau lupa update counter di dalam while. Program akan hang dan DartPad akan timeout. Kalau loop terasa tidak berhenti, cek dulu apakah variabel kondisi benar-benar berubah di dalam badan loop.
break dan continue
break: hentikan loop sepenuhnyacontinue: lewati sisa putaran ini, lanjut ke putaran berikut
void main() {
for (int i = 1; i <= 10; i++) {
if (i == 3) continue; // lewati angka 3
if (i == 8) break; // berhenti di angka 8
print(i);
}
}Output: 1, 2, 4, 5, 6, 7. Angka 3 dilewati, loop berhenti sebelum 8.
Latihan: tabel perkalian
void main() {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
print('$i x $j = ${i * j}');
}
print('---');
}
}Loop di dalam loop disebut nested loop. Pola ini dipakai untuk tabel, pola bintang, atau memproses data dua dimensi. Coba ubah angkanya dan lihat hasilnya.