Masukkan Password
23 Loops in Dart Programming | For , For in, For Each loops in Dart | Dart Tutorial #22
Video ini membahas 3 cara melakukan perulangan di Dart:
forloopfor-inloopforEach()
Ketiganya sama-sama bisa digunakan untuk mengulang kode, tetapi tujuan dan cara penggunaannya berbeda.
Ada satu hal penting juga: transcript video ini memiliki beberapa hasil speech-to-text yang salah, misalnya "foreign loop", "for each loop", dan "porridge loop". Yang dimaksud sebenarnya adalah for-in loop dan forEach().
1. Gambaran besar
Sebelum masuk ke masing-masing jenis, pahami dulu konsep loop.
Misalnya kita punya:
print(10);
print(20);
print(30);
print(40);
print(50);
Kalau datanya banyak, menulis seperti itu tentu merepotkan.
Dengan loop kita bisa membuat:
for (int i = 1; i <= 5; i++) {
print(i);
}
Output:
1
2
3
4
5
Jadi:
Loop = mekanisme untuk menjalankan kode berulang kali.
2. for loop
for adalah salah satu loop yang paling sering digunakan.
Bentuk dasarnya:
for (initialization; condition; increment) {
// body loop
}
Ada 3 bagian utama di dalam for:
for (int i = 1; i <= 5; i++) {
│ │ │
│ │ └── perubahan nilai
│ └────────── kondisi
└───────────────────── nilai awal
}
Mari kita bahas satu per satu.
3. Bagian pertama: initialization
Contoh:
int i = 1;
Initialization menentukan:
Loop dimulai dari mana?
Misalnya:
for (int i = 1; ...)
berarti kita mulai dari:
i = 1
Initialization ini dilakukan satu kali saja, yaitu ketika loop mulai.
4. Bagian kedua: condition
Contoh:
i <= 5
Artinya:
Selama
ikurang dari atau sama dengan 5, loop boleh berjalan.
Kondisi harus menghasilkan:
true
atau:
false
Misalnya:
i = 3
3 <= 5
hasilnya:
true
Maka loop dilanjutkan.
Kalau:
i = 6
6 <= 5
hasilnya:
false
Maka loop berhenti.
5. Bagian ketiga: increment/decrement
Contoh:
i++
Artinya:
Tambahkan nilai
isebanyak 1.
Jadi:
1 → 2 → 3 → 4 → 5 → 6
Selain increment, kita juga bisa menggunakan decrement:
i--
Artinya:
5 → 4 → 3 → 2 → 1
Jadi bagian ketiga ini menentukan:
Bagaimana nilai yang digunakan untuk mengontrol loop berubah setiap putaran?
6. Contoh for paling sederhana
Misalnya:
for (int i = 1; i <= 5; i++) {
print(i);
}
Output:
1
2
3
4
5
Sekarang mari kita pahami proses internalnya.
7. Cara kerja for langkah demi langkah
Kode:
for (int i = 1; i <= 3; i++) {
print(i);
}
Langkah 1 — Initialization
int i = 1;
Dilakukan satu kali.
Sekarang:
i = 1
Langkah 2 — Cek kondisi
i <= 3
menjadi:
1 <= 3
Hasil:
true
Langkah 3 — Jalankan body
print(i);
Output:
1
Langkah 4 — Increment
i++
Nilai berubah:
1 → 2
Langkah 5 — Cek kondisi lagi
2 <= 3
true.
Maka body dijalankan:
2
Kemudian:
2 → 3
Putaran berikutnya
Cek:
3 <= 3
true.
Cetak:
3
Kemudian:
3 → 4
Terakhir
Cek:
4 <= 3
false.
Loop berhenti.
Jadi:
1
2
3
8. Pola kerja for
Cara mudah mengingatnya:
INITIALIZATION
↓
CONDITION
↓
true?
↙ ↘
yes no
↓ ↓
BODY selesai
↓
INCREMENT
↓
kembali ke CONDITION
Jadi pola lengkapnya:
start
↓
initialization
↓
condition
↓
body
↓
increment
↓
condition
↓
body
↓
increment
↓
...
↓
false
↓
selesai
9. Kenapa for praktis?
Bandingkan while:
int i = 1;
while (i <= 5) {
print(i);
i++;
}
Dengan for:
for (int i = 1; i <= 5; i++) {
print(i);
}
Hasilnya sama.
Tetapi for lebih ringkas karena:
int i = 1;
i <= 5
i++
semuanya dikumpulkan di satu tempat.
Karena itu for sangat cocok ketika kita sudah tahu pola:
mulai dari mana → berhenti kapan → bertambah/berkurang berapa.
10. for dengan decrement
Tidak harus selalu naik.
Contoh:
for (int i = 5; i >= 1; i--) {
print(i);
}
Output:
5
4
3
2
1
Perhatikan:
i--
Nilai turun satu per satu.
11. for dengan kelipatan tertentu
Kita juga bisa menaikkan lebih dari 1.
Contoh:
for (int i = 0; i <= 10; i += 2) {
print(i);
}
Output:
0
2
4
6
8
10
Karena:
i += 2
artinya:
i = i + 2
Jadi nilainya:
0 → 2 → 4 → 6 → 8 → 10
12. Sekarang masuk ke for-in
Bagian berikutnya dalam video sebenarnya membahas:
for-inloop
Bukan “foreign loop”.
for-in biasanya digunakan ketika kita ingin mengambil setiap elemen dari sebuah collection, seperti:
ListSet- iterable lainnya
Misalnya kita punya:
List<int> numbers = [10, 20, 30];
Kita ingin mencetak semua angka.
Dengan for-in:
for (int number in numbers) {
print(number);
}
Output:
10
20
30
13. Cara membaca for-in
Kode:
for (int number in numbers) {
print(number);
}
Bacanya:
Untuk setiap
numberyang ada di dalamnumbers, lakukan sesuatu.
Kata in sangat membantu memahami maksudnya.
number ← setiap elemen
↓
in
↓
numbers ← collection
14. Bagaimana proses for-in?
Misalnya:
List<int> numbers = [10, 20, 30];
Kemudian:
for (int number in numbers) {
print(number);
}
Prosesnya kira-kira:
Putaran pertama
Ambil elemen pertama:
10
Masukkan ke variabel:
number = 10
Jalankan:
print(number);
Output:
10
Putaran kedua
Ambil elemen kedua:
20
Sekarang:
number = 20
Output:
20
Putaran ketiga
Ambil:
30
Sekarang:
number = 30
Output:
30
Setelah tidak ada elemen lagi, loop selesai.
15. Perbedaan for dan for-in
Ini penting.
for biasa
for (int i = 0; i < numbers.length; i++) {
print(numbers[i]);
}
Kita mengontrol index.
for-in
for (int number in numbers) {
print(number);
}
Kita langsung mendapatkan elemennya.
Jadi:
for | for-in |
|---|---|
| Fokus pada index/perhitungan | Fokus pada setiap elemen |
Kita mengatur i | Dart memberikan elemen |
| Bisa mudah melompat berdasarkan index | Berjalan elemen demi elemen |
| Lebih fleksibel untuk index | Lebih simpel untuk membaca collection |
16. Contoh for vs for-in
Misalnya:
List<String> names = [
"Sam",
"Mark",
"Jack"
];
Menggunakan for
for (int i = 0; i < names.length; i++) {
print(names[i]);
}
Output:
Sam
Mark
Jack
Di sini:
i = 0 → names[0] → Sam
i = 1 → names[1] → Mark
i = 2 → names[2] → Jack
Menggunakan for-in
for (String name in names) {
print(name);
}
Output:
Sam
Mark
Jack
Lebih sederhana.
Karena kita tidak membutuhkan index.
17. Kalau tidak membutuhkan index, for-in sering lebih nyaman
Misalnya hanya ingin mencetak nama:
for (String name in names) {
print(name);
}
Tidak perlu repot dengan:
i = 0
i < names.length
i++
names[i]
Cukup:
name
langsung berisi setiap nama.
18. Sekarang forEach()
Bagian terakhir video membahas:
forEach()
Ini berbeda dari:
for-in
Walaupun tujuan akhirnya bisa sama.
Misalnya:
List<String> names = [
"Sam",
"Mark",
"Jack"
];
Kita bisa menggunakan:
names.forEach((name) {
print(name);
});
Output:
Sam
Mark
Jack
19. Cara membaca forEach()
Kode:
names.forEach((name) {
print(name);
});
Bisa dibaca:
Untuk setiap elemen di dalam
names, jalankan fungsi ini.
Bagian:
(name) {
print(name);
}
adalah sebuah function callback.
Jangan khawatir kalau belum memahami function sepenuhnya.
Untuk sekarang, anggap saja:
“Ini adalah kode yang akan dijalankan untuk setiap elemen.”
20. Apa itu parameter name?
Misalnya:
names.forEach((name) {
print(name);
});
Pada putaran pertama:
name = "Sam"
Maka:
print(name);
mencetak:
Sam
Putaran kedua:
name = "Mark"
Output:
Mark
Putaran ketiga:
name = "Jack"
Output:
Jack
Jadi name hanyalah variabel sementara yang menerima elemen saat ini.
21. Analogi sederhana forEach
Bayangkan kamu memiliki tiga kotak:
[Sam] [Mark] [Jack]
Kemudian kamu berkata:
“Untuk setiap kotak, ambil isinya dan cetak.”
forEach() melakukan konsep seperti itu:
Sam → jalankan function
Mark → jalankan function
Jack → jalankan function
Function-nya:
(name) {
print(name);
}
22. for-in vs forEach()
Keduanya sering digunakan untuk tujuan yang sama.
for-in
for (String name in names) {
print(name);
}
forEach()
names.forEach((name) {
print(name);
});
Output keduanya:
Sam
Mark
Jack
Jadi kapan menggunakan yang mana?
Secara sederhana:
Kalau ingin menulis loop dengan gaya yang mudah dibaca dan fleksibel,
for-insering menjadi pilihan yang nyaman.
forEach() cocok ketika kita memang ingin menjalankan sebuah callback untuk setiap elemen.
23. forEach() sebenarnya bukan keyword loop
Ini juga penting.
Pada:
for (String name in names) {
print(name);
}
for adalah keyword bahasa Dart.
Sedangkan:
names.forEach(...)
forEach adalah method yang dimiliki oleh Iterable/collection yang sesuai.
Jadi secara konsep:
for (...)
dan:
collection.forEach(...)
bukan hal yang identik secara sintaks, walaupun keduanya bisa digunakan untuk mengiterasi elemen.
24. Contoh lengkap ketiganya
Misalnya:
List<int> numbers = [10, 20, 30, 40];
Menggunakan for
for (int i = 0; i < numbers.length; i++) {
print(numbers[i]);
}
Menggunakan for-in
for (int number in numbers) {
print(number);
}
Menggunakan forEach
numbers.forEach((number) {
print(number);
});
Ketiganya menghasilkan:
10
20
30
40
25. Kapan menggunakan yang mana?
Gunakan panduan sederhana ini.
Gunakan for kalau…
Kamu membutuhkan index atau kontrol terhadap angka perulangan.
Contoh:
for (int i = 0; i < names.length; i++) {
print("$i: ${names[i]}");
}
Hasil:
0: Sam
1: Mark
2: Jack
Di sini index diperlukan.
Gunakan for-in kalau…
Kamu hanya ingin mendapatkan setiap elemen.
for (String name in names) {
print(name);
}
Ini biasanya sangat mudah dibaca.
Gunakan forEach() kalau…
Kamu ingin menjalankan sebuah callback/function untuk setiap elemen.
names.forEach((name) {
print(name);
});
26. Contoh for untuk Flutter
Misalnya kamu punya:
List<String> names = [
"Andi",
"Budi",
"Citra"
];
Kalau ingin mengetahui index dan nama:
for (int i = 0; i < names.length; i++) {
print("$i - ${names[i]}");
}
Output:
0 - Andi
1 - Budi
2 - Citra
Ini berguna ketika index memang penting.
27. Contoh for-in yang lebih realistis
Misalnya ada daftar produk:
List<String> products = [
"Laptop",
"Mouse",
"Keyboard"
];
for (String product in products) {
print(product);
}
Output:
Laptop
Mouse
Keyboard
Kita tidak peduli produknya berada di index berapa.
Kita hanya ingin:
Ambil setiap produk dan lakukan sesuatu.
for-in cocok.
28. Contoh forEach()
List<String> products = [
"Laptop",
"Mouse",
"Keyboard"
];
products.forEach((product) {
print("Produk: $product");
});
Output:
Produk: Laptop
Produk: Mouse
Produk: Keyboard
29. Kesalahan pemahaman yang perlu diluruskan
Transcript mengatakan forEach harus menggunakan function yang mengembalikan void.
Untuk pemahaman dasar, itu cukup mendekati, tetapi secara modern Dart signature forEach menggunakan callback yang menghasilkan void, sehingga contoh:
names.forEach((name) {
print(name);
});
memang benar.
Namun yang paling penting:
forEach()bukan sekadar “jenis for lain”; ia adalah method untuk menjalankan callback pada setiap elemen.
30. Ada satu hal penting tentang forEach: break dan continue
Ini salah satu alasan for-in kadang lebih nyaman.
Misalnya kita ingin berhenti ketika menemukan angka 30.
Dengan for-in:
for (int number in numbers) {
if (number == 30) {
break;
}
print(number);
}
Bisa berhenti menggunakan:
break;
Sedangkan forEach() tidak digunakan dengan pola:
forEach((number) {
break; // tidak bisa seperti ini
});
Jadi jika kamu membutuhkan kontrol seperti:
break
continue
atau alur loop yang lebih kompleks, for-in sering lebih cocok.
31. Perbandingan keseluruhan
| Loop | Kegunaan utama |
|---|---|
while | Mengulang selama kondisi true |
do-while | Menjalankan body minimal sekali |
for | Loop dengan initialization, condition, increment/decrement |
for-in | Mengambil elemen satu per satu dari Iterable |
forEach() | Menjalankan callback untuk setiap elemen |
32. Cara mengingat semuanya
Bayangkan kamu memiliki:
List<int> numbers = [10, 20, 30];
for
“Saya mau mengontrol penghitung/index.”
for (int i = 0; i < numbers.length; i++) {
print(numbers[i]);
}
for-in
“Saya mau setiap elemennya.”
for (int number in numbers) {
print(number);
}
forEach
“Jalankan function untuk setiap elemen.”
numbers.forEach((number) {
print(number);
});
33. Ringkasan visual
LOOP DI DART
│
┌─────────────┼──────────────┐
│ │ │
while do-while for
│ │ │
cek dulu jalankan dulu kontrol awal,
│ │ kondisi,
body cek perubahan
│
┌──────┴──────┐
│ │
for-in forEach()
│ │
setiap elemen callback
dari Iterable setiap elemen
34. Cheat sheet
while
while (condition) {
// code
}
Cek dulu, baru jalankan.
do-while
do {
// code
} while (condition);
Jalankan dulu, baru cek.
for
for (int i = 0; i < 10; i++) {
// code
}
Initialization → condition → body → increment → ulangi.
for-in
for (var item in items) {
// code
}
Ambil setiap item dari collection.
forEach
items.forEach((item) {
// code
});
Jalankan callback untuk setiap item.
Inti yang harus benar-benar kamu pahami
Jangan menghafalkan kelima bentuk loop ini sebagai sintaks semata. Pahami pertanyaan berikut:
“Apa yang sebenarnya ingin saya ulang?”
Kalau jawabannya:
- “Saya ingin mengulang berdasarkan kondisi.” →
while - “Saya harus menjalankan minimal satu kali.” →
do-while - “Saya tahu pola mulai, kondisi berhenti, dan kenaikannya.” →
for - “Saya ingin mengambil setiap elemen dari List/Set.” →
for-in - “Saya ingin menjalankan sebuah function untuk setiap elemen.” →
forEach()
Dan karena kamu sedang belajar Dart untuk Flutter, for, for-in, dan iterasi collection akan sangat sering kamu temui, terutama ketika nanti mulai mengolah List dan menampilkan banyak data dalam widget Flutter.