Masukkan Password
20 2.6 For Loop in Dart Programming Language | Loops in Dart | Learn Dart Language | Dart Course
Materi kali ini membahas for loop di Dart, dan ini merupakan materi yang sangat penting karena hampir semua program nyata akan menggunakan perulangan.
Ada sedikit kesalahan transkripsi pada caption, misalnya βDOT programmingβ maksudnya Dart programming, dan βfar loopβ maksudnya for loop.
1. Apa itu Loop?
Loop adalah mekanisme untuk menjalankan blok kode berulang kali selama kondisi tertentu masih terpenuhi.
Bayangkan kamu ingin mencetak:
Hello
Hello
Hello
Hello
Hello
Kalau tidak menggunakan loop, kamu harus menulis:
print("Hello");
print("Hello");
print("Hello");
print("Hello");
print("Hello");
Kalau harus 100 kali, tentu sangat merepotkan.
Dengan loop:
for (int i = 1; i <= 100; i++) {
print("Hello");
}
Jauh lebih sederhana.
Jadi ide utama loop adalah:
“Daripada menulis kode yang sama berkali-kali, suruh komputer mengulanginya.”
2. Apa itu for Loop?
for loop adalah salah satu jenis loop yang paling sering digunakan.
Secara umum:
for (initialization; condition; increment) {
// kode yang diulang
}
Contoh:
for (int i = 1; i <= 10; i++) {
print(i);
}
Ada 3 bagian penting di dalam for:
for ( initialization ; condition ; increment ) {
bagian 1 bagian 2 bagian 3
}
Mari kita bahas satu per satu.
3. Bagian Pertama: Initialization
Contoh:
int i = 1;
Ini disebut initialization atau inisialisasi.
Contoh lengkap:
for (int i = 1; i <= 10; i++) {
print(i);
}
Bagian:
int i = 1
berarti kita membuat variabel i dan memberikan nilai awal 1.
Jadi:
i = 1
adalah titik awal loop.
Biasanya variabel loop diberi nama:
i
atau:
j
k
i biasanya berasal dari istilah index/iteration, dan ini sudah menjadi kebiasaan umum dalam pemrograman.
4. Bagian Kedua: Condition
Bagian kedua:
i <= 10
Ini adalah condition.
Condition menentukan:
“Apakah loop masih boleh berjalan?”
Misalnya:
i <= 10
Jika hasilnya:
true
maka loop dijalankan.
Jika hasilnya:
false
maka loop berhenti.
Jadi:
true β lanjut
false β berhenti
Ini sama dengan konsep if yang sudah kita pelajari sebelumnya.
5. Bagian Ketiga: Increment
Bagian ketiga:
i++
Ini disebut increment.
Artinya:
i = i + 1
Jadi setiap satu putaran selesai, nilai i bertambah satu.
Misalnya:
i = 1
i = 2
i = 3
i = 4
...
i = 10
Setelah i menjadi 11:
11 <= 10
hasilnya:
false
Maka loop berhenti.
6. Mari Bongkar Contoh for
Perhatikan:
for (int i = 1; i <= 10; i++) {
print(i);
}
Kita bisa membacanya seperti ini:
“Buat
imulai dari 1. Selamaikurang dari atau sama dengan 10, jalankanprint(i). Setelah setiap putaran, tambahkanisebanyak 1.”
Urutannya:
i = 1
β
1 <= 10 β true
β
print(1)
β
i++
β
i = 2
β
2 <= 10 β true
β
print(2)
β
i++
β
...
β
i = 10
β
10 <= 10 β true
β
print(10)
β
i++
β
i = 11
β
11 <= 10 β false
β
STOP
Output:
1
2
3
4
5
6
7
8
9
10
7. Urutan Kerja for Loop
Ini bagian yang sangat penting untuk dipahami.
Bentuk:
for (initialization; condition; increment) {
statement;
}
Urutannya bukan:
initialization
condition
increment
statement
Tetapi:
1. initialization
2. condition
3. statement
4. increment
5. condition
6. statement
7. increment
8. condition
...
Contoh:
for (int i = 1; i <= 3; i++) {
print(i);
}
Prosesnya:
Initialization:
i = 1
Condition:
1 <= 3 β true
Print:
1
Increment:
i = 2
Condition:
2 <= 3 β true
Print:
2
Increment:
i = 3
Condition:
3 <= 3 β true
Print:
3
Increment:
i = 4
Condition:
4 <= 3 β false
STOP
Output:
1
2
3
8. Kenapa i++ Penting?
Misalnya:
for (int i = 1; i <= 10; i++) {
print(i);
}
i++ membuat nilai i bergerak:
1 β 2 β 3 β 4 β ... β 10
Tanpa perubahan nilai, condition bisa terus bernilai sama.
Misalnya secara konsep:
int i = 1;
while (i <= 10) {
print(i);
}
i tidak pernah berubah.
Akibatnya:
1 <= 10 β true
1 <= 10 β true
1 <= 10 β true
1 <= 10 β true
...
Loop tidak pernah selesai.
Ini disebut infinite loop.
9. Increment Lebih dari 1
Pada video, kita juga melihat:
i += 2;
Artinya:
i = i + 2;
Contoh:
for (int i = 1; i <= 10; i += 2) {
print(i);
}
Nilainya:
1
3
5
7
9
Kenapa tidak ada 2, 4, 6, 8, 10?
Karena kita menambahkan 2 setiap putaran:
1
β +2
3
β +2
5
β +2
7
β +2
9
β +2
11
Kemudian:
11 <= 10
β false.
Loop berhenti.
10. Increment dengan 3
Misalnya:
for (int i = 1; i <= 10; i += 3) {
print(i);
}
Hasil:
1
4
7
10
Karena:
1 β 4 β 7 β 10 β 13
Saat i = 13:
13 <= 10
β false.
11. Increment Bisa Menggunakan ++
Untuk bertambah satu:
i++;
atau:
i += 1;
Keduanya menghasilkan perubahan nilai yang sama:
1 β 2 β 3 β 4
Sedangkan:
i += 2;
menghasilkan:
1 β 3 β 5 β 7
12. Menghitung dari 1 sampai 20
Contoh:
for (int i = 1; i <= 20; i++) {
print(i);
}
Output:
1
2
3
...
18
19
20
Kita hanya perlu mengubah:
i <= 10
menjadi:
i <= 20
13. for Loop untuk List
Nah, bagian ini sangat penting karena for loop sering digunakan bersama List.
Misalnya:
List<String> names = [
"Ahad",
"Ali",
"Budi",
"Siti",
"Rina"
];
List tersebut mempunyai 5 data.
Index-nya:
Index Value
0 Ahad
1 Ali
2 Budi
3 Siti
4 Rina
Perhatikan:
Index List dimulai dari 0.
Bukan 1.
14. Mendapatkan Jumlah Data dengan .length
Kita bisa menggunakan:
names.length
Hasilnya:
5
Karena ada 5 item.
Tetapi index terakhir adalah:
4
Jadi:
length = 5
index = 0, 1, 2, 3, 4
Ini konsep yang sangat penting.
15. Menampilkan Semua Item List
Kita bisa menggunakan:
List<String> names = [
"Ahad",
"Ali",
"Budi",
"Siti",
"Rina"
];
for (int i = 0; i < names.length; i++) {
print(names[i]);
}
Output:
Ahad
Ali
Budi
Siti
Rina
Mari kita pahami:
int i = 0;
Karena index dimulai dari 0.
Kemudian:
i < names.length
Karena:
names.length = 5
Maka kondisi:
i < 5
Nilai i:
0
1
2
3
4
Ketika i = 5:
5 < 5
β false.
Loop berhenti.
16. Kenapa Menggunakan <, Bukan <=?
Ini salah satu kesalahan paling umum saat belajar loop dan List.
Kita memiliki:
names.length
sebesar:
5
Index yang valid:
0
1
2
3
4
Tidak ada:
5
Jadi kita menggunakan:
i < names.length
bukan:
i <= names.length
Kalau menggunakan <=
Misalnya:
for (int i = 0; i <= names.length; i++) {
print(names[i]);
}
Ketika i = 5, program mencoba:
names[5]
Padahal index terakhir hanya:
names[4]
Akibatnya terjadi error RangeError karena index berada di luar batas List.
17. Cara Mengingat List
Ini pola yang sangat sering digunakan:
for (int i = 0; i < list.length; i++) {
print(list[i]);
}
Hafalkan pola ini.
Misalnya:
List<String> fruits = [
"Apple",
"Banana",
"Orange"
];
for (int i = 0; i < fruits.length; i++) {
print(fruits[i]);
}
Output:
Apple
Banana
Orange
18. Menampilkan Index dan Value
Kita juga bisa mencetak index sekaligus value:
List<String> names = [
"Ahad",
"Ali",
"Budi",
"Siti",
"Rina"
];
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
Index: 3, Value: Siti
Index: 4, Value: Rina
Perhatikan bagian:
${names[i]}
Kita menggunakan string interpolation yang sudah dipelajari sebelumnya.
19. Mengapa names[i]?
Misalnya:
names[0]
artinya:
Ambil item pada index 0.
Jadi:
names[0] β Ahad
names[1] β Ali
names[2] β Budi
names[3] β Siti
names[4] β Rina
Karena i berubah:
i = 0 β names[0]
i = 1 β names[1]
i = 2 β names[2]
...
Loop bisa mengambil semua item satu per satu.
20. for Loop untuk Menghitung Jumlah
Sekarang kita masuk ke contoh yang lebih menarik.
Misalnya kita ingin menghitung:
1 + 2 + 3 + ... + 10
Kita bisa menggunakan for.
Pertama:
int total = 0;
Kenapa mulai dari 0?
Karena kita akan menambahkan angka satu per satu.
Kemudian:
for (int i = 1; i <= 10; i++) {
total += i;
}
Terakhir:
print(total);
Program lengkap:
int total = 0;
for (int i = 1; i <= 10; i++) {
total += i;
}
print(total);
Output:
55
21. Bagaimana Bisa Mendapatkan 55?
Mari kita lakukan secara manual.
Awalnya:
total = 0
Putaran pertama:
total = 0 + 1
total = 1
Putaran kedua:
total = 1 + 2
total = 3
Putaran ketiga:
total = 3 + 3
total = 6
Kemudian:
6 + 4 = 10
10 + 5 = 15
15 + 6 = 21
21 + 7 = 28
28 + 8 = 36
36 + 9 = 45
45 + 10 = 55
Maka:
total = 55
22. Memahami total += i
Baris:
total += i;
adalah bentuk singkat dari:
total = total + i;
Contoh jika:
total = 10
i = 5
maka:
total += i;
sama dengan:
total = 10 + 5;
sehingga:
total = 15
Ini memanfaatkan assignment operator yang sudah kita pelajari.
23. Menjumlahkan 1 sampai 100
Kita tinggal mengubah batas:
int total = 0;
for (int i = 1; i <= 100; i++) {
total += i;
}
print(total);
Hasilnya:
5050
Jadi for loop sangat berguna untuk operasi berulang seperti ini.
24. Menjumlahkan Bilangan Ganjil
Sekarang kita bisa menggunakan increment 2.
int total = 0;
for (int i = 1; i <= 100; i += 2) {
total += i;
}
print(total);
Nilai yang dijumlahkan:
1 + 3 + 5 + 7 + ... + 99
Hasil:
2500
Kenapa hanya bilangan ganjil?
Karena kita mulai dari:
1
kemudian selalu menambahkan:
2
sehingga:
1 β 3 β 5 β 7 β 9 β ...
25. Menjumlahkan Bilangan Genap
Untuk bilangan genap, kita mulai dari 2:
int total = 0;
for (int i = 2; i <= 100; i += 2) {
total += i;
}
print(total);
Yang dijumlahkan:
2 + 4 + 6 + 8 + ... + 100
Hasil:
2550
Perhatikan perbedaannya:
| Ganjil | Genap |
|---|---|
mulai 1 | mulai 2 |
i += 2 | i += 2 |
| 1, 3, 5, 7… | 2, 4, 6, 8… |
26. for + if
Sekarang kita bisa menggabungkan loop dengan condition.
Misalnya kita ingin mencetak angka genap dari 1 sampai 10.
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
print("Even: $i");
}
}
Output:
Even: 2
Even: 4
Even: 6
Even: 8
Even: 10
Bagaimana cara kerjanya?
Loop menghasilkan:
1
2
3
4
5
6
7
8
9
10
Kemudian setiap angka diperiksa:
i % 2 == 0
Jika true β angka genap β print.
Jika false β tidak melakukan apa-apa.
27. for + if-else
Kita juga bisa menampilkan ganjil dan genap:
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
print("$i is even");
} else {
print("$i is odd");
}
}
Output:
1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even
Ini menggabungkan tiga materi:
for loop
+
if-else
+
modulus (%)
28. Perhatikan Perbedaan Dua Cara Mencari Bilangan Ganjil
Kita bisa langsung melompati angka genap:
for (int i = 1; i <= 10; i += 2) {
print(i);
}
Hasil:
1
3
5
7
9
Atau kita bisa memeriksa setiap angka:
for (int i = 1; i <= 10; i++) {
if (i % 2 != 0) {
print(i);
}
}
Hasilnya juga:
1
3
5
7
9
Bedanya:
Cara pertama
i += 2
Loop hanya melewati angka:
1 β 3 β 5 β 7 β 9
Cara kedua
i++
Loop melewati semuanya:
1 β 2 β 3 β 4 β 5 β ...
kemudian if memilih yang ganjil.
29. Infinite Loop
Ini bagian yang sangat penting.
Infinite loop adalah loop yang tidak pernah berhenti.
Misalnya kondisi selalu true.
Contoh yang berbahaya:
int i = 1;
while (i > 0) {
print(i);
}
i tidak pernah berubah, sehingga:
1 > 0 β true
1 > 0 β true
1 > 0 β true
...
Program akan terus berjalan.
Pada for loop, kita juga bisa membuat kondisi yang tidak pernah menjadi false.
Misalnya secara konsep:
for (int i = 1; i > 0; i++) {
print(i);
}
Perhatikan:
i = 1
1 > 0 β true
i = 2
2 > 0 β true
i = 3
3 > 0 β true
...
Nilai i justru semakin besar, sehingga kondisi:
i > 0
selalu true.
Akibatnya loop tidak berhenti secara normal.
30. Kenapa Infinite Loop Berbahaya?
Karena program akan terus melakukan pekerjaan.
Misalnya:
for (int i = 1; i > 0; i++) {
print("Hello");
}
Program akan menghasilkan:
Hello
Hello
Hello
Hello
Hello
...
terus-menerus.
Program bisa menghabiskan:
- CPU
- memory/output buffer
- resource komputer
Saat sedang menjalankan program di terminal, biasanya kamu bisa menghentikannya secara manual dengan Ctrl + C.
31. Cara Mencegah Infinite Loop
Sebelum menjalankan loop, tanyakan tiga hal:
1. Dari mana nilai dimulai?
int i = 1;
2. Kapan loop berhenti?
i <= 10
3. Apakah nilai berubah menuju kondisi berhenti?
i++
Contoh yang benar:
1 β 2 β 3 β ... β 10 β 11
β
11 <= 10
β
false
β
STOP
Kalau kamu bisa menjelaskan tiga hal tersebut, kemungkinan besar loop-mu aman.
32. for Loop Mundur
Kita tidak harus selalu naik.
Kita juga bisa melakukan decrement.
Contoh:
for (int i = 10; i >= 1; i--) {
print(i);
}
Output:
10
9
8
7
6
5
4
3
2
1
Perhatikan:
i--
berarti:
i = i - 1
Jadi sekarang arahnya:
10 β 9 β 8 β 7 β ... β 1
Ketika:
i = 0
condition:
0 >= 1
menjadi false.
Loop berhenti.
33. Pola Penting for Loop
Ada beberapa pola yang sebaiknya kamu kenali.
Dari 1 sampai 10
for (int i = 1; i <= 10; i++) {
print(i);
}
Dari 0 sampai 9
for (int i = 0; i < 10; i++) {
print(i);
}
Mundur
for (int i = 10; i >= 1; i--) {
print(i);
}
Naik 2
for (int i = 1; i <= 10; i += 2) {
print(i);
}
Menelusuri List
for (int i = 0; i < list.length; i++) {
print(list[i]);
}
34. Kesalahan Pemula yang Sering Terjadi
Kesalahan 1 β Salah menggunakan < dan <=
Untuk angka:
for (int i = 1; i <= 10; i++)
berarti 1 sampai 10.
Untuk List:
for (int i = 0; i < list.length; i++)
biasanya menggunakan <.
Kenapa?
Karena length bukan index terakhir.
Jika:
length = 5
maka:
index terakhir = 4
Kesalahan 2 β Lupa i++
Misalnya:
for (int i = 1; i <= 10;) {
print(i);
}
i tidak berubah.
Akibatnya kondisi:
1 <= 10
akan terus true.
Bisa menyebabkan infinite loop.
Kesalahan 3 β Salah arah increment/decrement
Misalnya ingin:
10 β 9 β 8 β ... β 1
tetapi menulis:
i++
Itu justru:
10 β 11 β 12 β 13 β ...
Condition mungkin tidak pernah menjadi false.
Untuk mundur gunakan:
i--
Kesalahan 4 β Salah index List
Salah:
list[5]
jika list.length hanya 5.
Index valid:
0, 1, 2, 3, 4
35. Cara Membaca for Loop dengan Cepat
Kalau melihat:
for (int i = 1; i <= 10; i++) {
print(i);
}
langsung baca:
Mulai dari 1, selama tidak lebih dari 10, jalankan kode, lalu naik satu.
Kalau:
for (int i = 0; i < list.length; i++) {
print(list[i]);
}
baca:
Mulai dari index 0, selama index masih berada sebelum
length, ambil item pada index tersebut, lalu pindah ke index berikutnya.
36. Hubungan dengan Materi Sebelumnya
Sekarang mulai terlihat bahwa materi-materi kita saling terhubung.
Kita sudah belajar:
Assignment
i += 2;
Increment
i++;
Relational operator
i <= 10
Logical operator
Misalnya:
i >= 1 && i <= 10
Modulus
i % 2 == 0
Condition
if (...)
List
list[i]
Sekarang semuanya bisa digabungkan dengan:
FOR LOOP
Inilah alasan kenapa belajar programming secara bertahap sangat membantu. Konsep-konsep yang sebelumnya terlihat terpisah mulai bekerja bersama.
37. Contoh Program Lengkap
Berikut contoh yang menggabungkan input + for + if + modulus + assignment:
import 'dart:io';
void main() {
print("Enter a number:");
int n = int.parse(stdin.readLineSync()!);
int evenTotal = 0;
int oddTotal = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 == 0) {
evenTotal += i;
} else {
oddTotal += i;
}
}
print("Even total: $evenTotal");
print("Odd total: $oddTotal");
}
Misalnya user memasukkan:
10
Program akan menghitung:
Even:
2 + 4 + 6 + 8 + 10 = 30
Odd:
1 + 3 + 5 + 7 + 9 = 25
Output:
Even total: 30
Odd total: 25
Ini contoh yang bagus untuk melihat bagaimana beberapa konsep Dart yang sudah kamu pelajari mulai digabungkan.
38. Cheat Sheet for Loop
| Bagian | Fungsi |
|---|---|
initialization | Menentukan nilai awal |
condition | Menentukan apakah loop lanjut |
increment | Mengubah nilai setiap putaran |
{ } | Kode yang akan diulang |
Format:
for (initialization; condition; increment) {
// repeated code
}
Contoh paling dasar:
for (int i = 1; i <= 10; i++) {
print(i);
}
Naik satu
i++
Naik dua
i += 2
Naik tiga
i += 3
Turun satu
i--
Turun dua
i -= 2
39. Inti Materi yang Harus Kamu Kuasai
Kalau diringkas, ada 5 hal utama dari materi ini.
1. Loop digunakan untuk pengulangan
Daripada:
print("Hello");
print("Hello");
print("Hello");
kita bisa:
for (int i = 1; i <= 3; i++) {
print("Hello");
}
2. for memiliki tiga bagian
for (initialization; condition; increment)
3. Condition menentukan kapan berhenti
i <= 10
Selama true, loop berjalan.
Ketika false, loop berhenti.
4. Index List dimulai dari 0
Untuk List:
for (int i = 0; i < list.length; i++) {
print(list[i]);
}
5. Hati-hati dengan infinite loop
Pastikan nilai variabel loop benar-benar bergerak menuju kondisi yang membuat loop berhenti.
π§ Cara paling mudah mengingat
Setiap kali melihat:
for (int i = 1; i <= 10; i++) {
// code
}
ingat kalimat:
“Mulai dari mana β sampai kapan β berubah bagaimana?”
Dalam contoh ini:
Mulai dari mana? β 1
Sampai kapan? β <= 10
Berubah bagaimana? β +1
Dan untuk List:
for (int i = 0; i < list.length; i++) {
print(list[i]);
}
ingat:
“List dimulai dari index 0, dan berhenti sebelum
length.”
Kalau dua pola ini sudah benar-benar kamu pahami, kamu sudah memiliki fondasi yang kuat untuk masuk ke jenis loop berikutnya seperti for-in, forEach, while, dan do-while.