Masukkan Password
22 2.8 For in Loop in Dart Programming Language | Loops in Dart | Learn Dart Language | Dart Course
Pada materi ini kita masuk ke for-in loop di Dart. Konsepnya sebenarnya cukup sederhana, dan kalau kamu sudah memahami for dan forEach, for-in akan terasa sangat mudah.
Catatan kecil: di transkrip tertulis “DOT programming language”, maksudnya adalah Dart programming language.
1. Apa itu for-in loop?
for-in digunakan untuk mengambil setiap item dari sebuah collection satu per satu, misalnya dari:
ListSet- collection lain yang bisa diiterasi
Bentuk paling sederhananya:
for (var item in list) {
print(item);
}
Cara membacanya:
“Untuk setiap
itemyang ada di dalamlist, lakukan sesuatu.”
Misalnya kita punya:
List<String> players = [
"Messi",
"Ronaldo",
"Neymar"
];
Kita bisa menampilkan semua pemain:
for (String player in players) {
print(player);
}
Output:
Messi
Ronaldo
Neymar
2. Memahami bagian-bagian for-in
Perhatikan:
for (String player in players) {
print(player);
}
Ada beberapa bagian penting:
for ( String player in players ) {
└──────┘ └───────┘
variabel collection
for
Menandakan bahwa kita sedang membuat perulangan.
String
Tipe data dari setiap item.
Karena players berisi String, maka variabel player juga bertipe String.
player
Ini adalah variabel sementara yang akan berisi item yang sedang diproses.
Nama player bebas.
Misalnya:
for (String x in players) {
print(x);
}
juga valid.
Tetapi:
for (String player in players) {
print(player);
}
lebih mudah dibaca karena nama variabelnya menjelaskan isi datanya.
in
in menghubungkan variabel dengan collection.
Artinya kurang lebih:
ambil item dari collection ini.
players
Ini adalah collection yang ingin kita lewati satu per satu.
3. Bagaimana sebenarnya for-in bekerja?
Misalnya:
List<String> players = [
"Messi",
"Ronaldo",
"Neymar"
];
for (String player in players) {
print(player);
}
Bayangkan Dart melakukan proses seperti ini:
Putaran pertama
player = "Messi"
Kemudian:
print(player);
hasil:
Messi
Putaran kedua
player = "Ronaldo"
hasil:
Ronaldo
Putaran ketiga
player = "Neymar"
hasil:
Neymar
Setelah semua item selesai, loop berhenti.
Jadi secara mental:
List
↓
Messi → player → print
Ronaldo → player → print
Neymar → player → print
4. Contoh paling dasar
Mari kita buat program sederhana:
void main() {
List<String> items = [
"Item 1",
"Item 2"
];
for (String item in items) {
print(item);
}
}
Output:
Item 1
Item 2
Perhatikan bahwa kita tidak perlu menggunakan index.
Tidak perlu:
items[0]
items[1]
dan tidak perlu membuat:
int i = 0;
Inilah salah satu kelebihan for-in.
5. Dibandingkan dengan for biasa
Sebelumnya kita sudah belajar for:
List<String> players = [
"Messi",
"Ronaldo",
"Neymar"
];
for (int i = 0; i < players.length; i++) {
print(players[i]);
}
Dengan for-in, menjadi:
for (String player in players) {
print(player);
}
Keduanya menghasilkan:
Messi
Ronaldo
Neymar
Tetapi cara berpikirnya berbeda.
for biasa
for (int i = 0; i < players.length; i++) {
print(players[i]);
}
Kita bekerja dengan index.
index 0 → Messi
index 1 → Ronaldo
index 2 → Neymar
for-in
for (String player in players) {
print(player);
}
Kita langsung mendapatkan value/item.
player → Messi
player → Ronaldo
player → Neymar
Jadi:
for→ fokus pada index dan kontrol perulangan.for-in→ fokus pada setiap item.
6. for-in dengan var
Dalam transkrip juga dijelaskan bahwa kita tidak harus selalu menuliskan tipe data.
Misalnya:
List<String> items = [
"Item 1",
"Item 2"
];
for (String item in items) {
print(item);
}
Bisa ditulis:
for (var item in items) {
print(item);
}
Hasilnya sama:
Item 1
Item 2
Dart akan mengetahui bahwa item adalah String karena items adalah List<String>.
7. Kenapa tipe data harus sesuai?
Ini bagian penting dari transkrip.
Misalnya kita punya:
List<int> items = [10, 20, 30, 40];
Artinya:
itemsadalah list yang berisiint.
Kalau kita menulis:
for (String item in items) {
print(item);
}
Ini salah.
Kenapa?
Karena kita mengatakan:
item → String
tetapi data sebenarnya:
10 → int
20 → int
30 → int
40 → int
Jadi seharusnya:
for (int item in items) {
print(item);
}
atau:
for (var item in items) {
print(item);
}
8. Contoh for-in dengan angka
Misalnya:
List<int> numbers = [
10,
20,
30,
40,
50
];
for (int number in numbers) {
print(number);
}
Output:
10
20
30
40
50
Pada setiap putaran, variabel number mendapatkan satu angka.
Putaran 1 → number = 10
Putaran 2 → number = 20
Putaran 3 → number = 30
Putaran 4 → number = 40
Putaran 5 → number = 50
9. Menghitung jumlah semua item
Nah, bagian ini adalah contoh yang sangat berguna.
Misalnya:
List<int> numbers = [10, 20, 30, 40, 50];
Kita ingin menghitung total.
Buat variabel sum:
int sum = 0;
Kemudian:
for (int number in numbers) {
sum += number;
}
Terakhir:
print(sum);
Program lengkap:
void main() {
List<int> numbers = [10, 20, 30, 40, 50];
int sum = 0;
for (int number in numbers) {
sum += number;
}
print(sum);
}
Output:
150
10. Bagaimana sum += number bekerja?
Ini sangat penting untuk dipahami.
sum += number;
sama dengan:
sum = sum + number;
Mari kita jalankan secara manual.
Awalnya:
sum = 0
Putaran 1
number = 10
sum = 0 + 10
sum = 10
Putaran 2
number = 20
sum = 10 + 20
sum = 30
Putaran 3
number = 30
sum = 30 + 30
sum = 60
Putaran 4
number = 40
sum = 60 + 40
sum = 100
Putaran 5
number = 50
sum = 100 + 50
sum = 150
Akhirnya:
sum = 150
Jadi for-in sangat berguna ketika kita ingin memproses seluruh isi List.
11. for-in + if
Kita juga bisa menggabungkan for-in dengan kondisi.
Misalnya kita ingin hanya mencetak angka genap:
List<int> numbers = [10, 15, 20, 25, 30];
for (int number in numbers) {
if (number % 2 == 0) {
print(number);
}
}
Output:
10
20
30
Kenapa?
Karena:
number % 2 == 0
berarti angka tersebut habis dibagi 2.
12. Contoh for-in + if-else
Kita bisa membuat program untuk menentukan apakah setiap angka genap atau ganjil:
List<int> numbers = [10, 15, 20, 25, 30];
for (int number in numbers) {
if (number % 2 == 0) {
print("$number adalah genap");
} else {
print("$number adalah ganjil");
}
}
Output:
10 adalah genap
15 adalah ganjil
20 adalah genap
25 adalah ganjil
30 adalah genap
Ini menunjukkan bahwa for-in bukan hanya untuk print.
Kita bisa melakukan berbagai proses terhadap setiap item.
13. Lalu bagaimana dengan index?
Nah, ini bagian yang perlu diperhatikan.
for-in secara langsung memberikan value, bukan index.
Misalnya:
List<String> names = [
"Ahad",
"Ali",
"Budi"
];
for (String name in names) {
print(name);
}
Kita mendapatkan:
Ahad
Ali
Budi
Tetapi tidak langsung mendapatkan:
0
1
2
Jadi kalau kita membutuhkan index, for-in bukan pilihan paling sederhana.
14. Cara mendapatkan index dengan for biasa
Kalau membutuhkan index, cara yang sangat mudah adalah for biasa:
List<String> names = [
"Ahad",
"Ali",
"Budi"
];
for (int i = 0; i < names.length; i++) {
print("Index: $i, Value: ${names[i]}");
}
Output:
Index: 0, Value: Ahad
Index: 1, Value: Ali
Index: 2, Value: Budi
Ini salah satu alasan mengapa for biasa masih penting.
15. Cara mendapatkan index dengan for-in
Transkrip menunjukkan cara lain menggunakan:
indexOf()
Misalnya:
List<String> names = [
"Ahad",
"Ali",
"Budi"
];
for (String name in names) {
int index = names.indexOf(name);
print("Index: $index, Value: $name");
}
Output:
Index: 0, Value: Ahad
Index: 1, Value: Ali
Index: 2, Value: Budi
indexOf() mencari index dari suatu value.
Misalnya:
names.indexOf("Ahad")
hasil:
0
Sedangkan:
names.indexOf("Budi")
hasil:
2
16. Tetapi ada kelemahan indexOf()
Ini penting karena contoh di video memang bisa bekerja, tetapi bukan cara terbaik untuk mendapatkan index dalam semua kasus.
Misalnya:
List<String> names = [
"Ahad",
"Ali",
"Ahad"
];
Ada dua "Ahad".
Kalau kita melakukan:
for (String name in names) {
print(names.indexOf(name));
}
hasilnya bisa:
0
1
0
Padahal index sebenarnya:
0 → Ahad
1 → Ali
2 → Ahad
Kenapa "Ahad" yang kedua menghasilkan 0?
Karena:
indexOf("Ahad")
mencari kemunculan pertama dari "Ahad".
Jadi indexOf() tidak cocok jika List memiliki data duplikat dan kita ingin mengetahui index aktual setiap iterasi.
17. Kalau ingin index + value, gunakan asMap()
Seperti yang sudah kita bahas pada forEach, kita bisa menggunakan:
asMap()
Contohnya:
List<String> names = [
"Ahad",
"Ali",
"Ahad"
];
names.asMap().forEach((index, name) {
print("Index: $index, Value: $name");
});
Output:
Index: 0, Value: Ahad
Index: 1, Value: Ali
Index: 2, Value: Ahad
Namun untuk pemula, tidak perlu terlalu fokus ke bagian ini dulu.
Yang paling penting sekarang:
for-indigunakan ketika kita hanya perlu mendapatkan item satu per satu.
Kalau membutuhkan index, for biasa sering kali lebih sederhana.
18. Perbandingan for, forEach, dan for-in
Karena kita sudah belajar ketiganya, sekarang kita bandingkan.
Misalnya:
List<String> names = [
"Ahad",
"Ali",
"Budi"
];
for
for (int i = 0; i < names.length; i++) {
print(names[i]);
}
Fokus:
index + kontrol loop
forEach
names.forEach((name) {
print(name);
});
Fokus:
lakukan sesuatu untuk setiap item
for-in
for (String name in names) {
print(name);
}
Fokus:
ambil setiap item satu per satu
Ketiganya bisa menghasilkan output yang sama.
19. Mana yang harus digunakan?
Gunakan for-in ketika:
“Saya ingin memproses semua item dan tidak terlalu membutuhkan index.”
Contoh:
for (String name in names) {
print(name);
}
Gunakan for biasa ketika:
“Saya membutuhkan index atau ingin mengontrol jalannya loop.”
Contoh:
for (int i = 0; i < names.length; i++) {
print("$i: ${names[i]}");
}
Gunakan forEach ketika:
“Saya ingin menjalankan suatu fungsi untuk setiap item.”
Contoh:
names.forEach((name) {
print(name);
});
Untuk sekadar mengunjungi item dalam List, for-in sering terasa paling natural dan mudah dibaca.
20. Analogi sederhana
Bayangkan kamu punya sebuah keranjang:
Keranjang
┌─────────┐
│ Apel │
│ Jeruk │
│ Mangga │
└─────────┘
Dengan for-in:
for (String fruit in fruits) {
print(fruit);
}
Artinya:
“Ambil buah satu per satu dari keranjang.”
Pertama:
fruit = Apel
Kemudian:
fruit = Jeruk
Kemudian:
fruit = Mangga
Kita tidak perlu peduli buah tersebut berada di index berapa.
Kita hanya berkata:
“Berikan saya setiap item.”
Itulah inti for-in.
21. Kesalahan yang sering dilakukan pemula
Kesalahan 1 — Tipe data tidak cocok
Salah:
List<int> numbers = [10, 20, 30];
for (String number in numbers) {
print(number);
}
Karena numbers berisi int.
Benar:
for (int number in numbers) {
print(number);
}
atau:
for (var number in numbers) {
print(number);
}
Kesalahan 2 — Mengira item adalah keyword
Misalnya:
for (String item in items) {
print(item);
}
item bukan keyword.
Kita bisa menggantinya:
for (String x in items) {
print(x);
}
atau:
for (String product in items) {
print(product);
}
atau:
for (String name in items) {
print(name);
}
Nama variabel bebas, tetapi sebaiknya jelas.
Kesalahan 3 — Mengira for-in memberikan index
Misalnya:
for (String name in names) {
print(name);
}
name berisi:
Ahad
Ali
Budi
bukan:
0
1
2
Kalau butuh index, gunakan for biasa atau pendekatan lain yang memang menyediakan index.
Kesalahan 4 — Memaksakan for-in untuk semua kasus
Jangan berpikir:
“Karena
for-inlebih simpel, berarti selalu harus digunakan.”
Tidak.
Misalnya kita ingin:
Index: 0
Index: 1
Index: 2
for biasa mungkin lebih jelas:
for (int i = 0; i < names.length; i++) {
print(i);
}
Pilih loop berdasarkan kebutuhan.
22. Pola dasar yang perlu kamu hafalkan
for-in dengan String
for (String item in items) {
print(item);
}
for-in dengan integer
for (int number in numbers) {
print(number);
}
Menggunakan var
for (var item in items) {
print(item);
}
Menghitung total
int sum = 0;
for (int number in numbers) {
sum += number;
}
Dengan kondisi
for (int number in numbers) {
if (number % 2 == 0) {
print(number);
}
}
23. Cara paling mudah mengingat for-in
Ingat kalimat ini:
“Untuk setiap ITEM di dalam COLLECTION, lakukan sesuatu.”
Misalnya:
for (var item in items) {
print(item);
}
Bacanya:
“Untuk setiap
itemdi dalamitems, printitem.”
Contoh lain:
for (var name in names) {
print("Hello $name");
}
Bacanya:
“Untuk setiap
namedi dalamnames, cetak Hello name.”
24. Ringkasan besar
| Loop | Fokus utama | Mendapat item? | Mudah mendapatkan index? |
|---|---|---|---|
for | kontrol loop/index | ✅ | ✅ |
forEach | aksi untuk setiap item | ✅ | ❌ secara langsung |
for-in | mengambil item satu per satu | ✅ | ❌ secara langsung |
Sintaks utama:
for (var item in collection) {
// lakukan sesuatu
}
Contoh:
List<String> names = [
"Ahad",
"Ali",
"Budi"
];
for (var name in names) {
print(name);
}
Output:
Ahad
Ali
Budi
Dan contoh yang sangat penting:
List<int> numbers = [10, 20, 30, 40, 50];
int sum = 0;
for (int number in numbers) {
sum += number;
}
print(sum);
Output:
150
Inti materi hari ini:
for-in
↓
ambil item satu per satu
↓
proses setiap item
↓
selesai ketika semua item sudah diproses
Kalau for biasa kita ingat sebagai “saya mengontrol index”, maka for-in paling mudah diingat sebagai “saya ingin setiap item”.
Setelah for, forEach, dan for-in, fondasi looping-mu sudah mulai kuat. Materi berikutnya yang biasanya sangat penting adalah while dan do-while, karena cara berpikirnya sedikit berbeda: kita mengulang berdasarkan kondisi, bukan berdasarkan isi collection.