Perulangan (Loop)
for klasik, for-in, forEach, while, do-while, break dan continue, serta pola perulangan yang sering dipakai.
Mengapa perulangan?
Perulangan menjalankan blok kode berkali-kali tanpa menulis ulang. Dart punya beberapa bentuk; pilih yang paling jelas untuk situasimu.
for klasik: jumlah putaran sudah jelas
for (int i = 1; i <= 5; i++) {
print('Putaran ke-$i');
}
| Bagian | Arti |
|---|---|
int i = 1 | Inisialisasi, dijalankan sekali di awal |
i <= 5 | Syarat, diperiksa sebelum tiap putaran |
i++ | Langkah, dijalankan setelah tiap putaran |
for-in: menelusuri isi collection
var buah = ['apel', 'jeruk', 'mangga'];
for (var b in buah) {
print(b);
}
Ini cara paling rapi untuk membaca List atau Set, tanpa mengurus indeks. Bila butuh nomor urut, pakai for klasik atau buah.indexed (Dart 3):
for (var (i, b) in buah.indexed) {
print('${i + 1}. $b'); // 1. apel, 2. jeruk, 3. mangga
}
forEach
buah.forEach(print);
buah.forEach((b) => print(b.toUpperCase()));
forEach tidak bisa memakai break atau continue. Jika butuh keduanya, pakai for-in.
while dan do-while
int n = 3;
while (n > 0) {
print(n);
n--;
}
print('Selesai!');
int percobaan = 0;
do {
percobaan++;
print('Mencoba ke-$percobaan');
} while (percobaan < 3); // do-while selalu jalan minimal sekali
Pastikan ada sesuatu di dalam loop yang akhirnya membuat syarat menjadi salah; kalau tidak, program berputar selamanya (infinite loop).
break dan continue
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) continue; // lewati bilangan genap
if (i > 7) break; // hentikan loop sepenuhnya
print(i); // 1, 3, 5, 7
}
Perulangan bersarang
for (int baris = 1; baris <= 3; baris++) {
var teks = '';
for (int kolom = 1; kolom <= 3; kolom++) {
teks += '${baris * kolom}\t';
}
print(teks);
}
Pola yang sering dipakai
// Menjumlahkan
int total = 0;
for (var n in [4, 8, 15]) {
total += n;
}
// Mencari nilai terbesar
var angka = [3, 9, 2, 7];
int terbesar = angka.first;
for (var n in angka) {
if (n > terbesar) terbesar = n;
}
// Membangun teks
var bintang = '';
for (int i = 0; i < 5; i++) {
bintang += '*';
}
print(bintang); // *****
Error umum
- Program tidak pernah berhenti → lupa mengubah variabel yang dicek di
while. - Selisih satu (off-by-one):
i <= 5dengani < 5menghasilkan jumlah putaran berbeda. Concurrent modification during iteration→ mengubah List (menambah/menghapus) saat sedang di-for-in.