Masukkan Password
24 break & labeled break in Dart | Dart break statement | Dart tutorial #23
Video ini membahas break di Dart. Konsepnya cukup sederhana, tetapi akan menjadi sedikit lebih menarik ketika masuk ke nested loop dan labeled break.
Saya jelaskan dari dasar dan sekaligus luruskan beberapa bagian transcript yang kurang tepat.
1. Apa itu break?
break adalah keyword di Dart yang digunakan untuk:
menghentikan loop lebih awal dan langsung keluar dari loop tersebut.
Normalnya, sebuah loop akan terus berjalan selama kondisinya masih true.
Misalnya:
for (int i = 1; i <= 10; i++) {
print(i);
}
Output:
1
2
3
4
5
6
7
8
9
10
Loop berhenti karena akhirnya:
i = 11
sehingga:
11 <= 10
menjadi:
false
Tetapi bagaimana kalau kita ingin loop berhenti sebelum kondisi normalnya menjadi false?
Misalnya:
“Cetak angka, tetapi kalau sudah sampai 5, langsung berhenti.”
Kita bisa menggunakan:
break;
2. Contoh paling sederhana
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
print(i);
}
Output:
1
2
3
4
Kenapa 5 tidak dicetak?
Karena ketika:
i == 5
kondisi if menjadi true.
Kemudian:
break;
langsung menghentikan loop.
3. Cara berpikir tentang break
Anggap saja break seperti tombol:
🛑 STOP! Keluar dari loop sekarang juga.
Misalnya loop sedang berjalan:
1
2
3
4
5
6
7
...
Kemudian kita mengatakan:
if (i == 5) {
break;
}
Ketika mencapai 5:
1
2
3
4
5 ← break!
↓
keluar
Jadi angka setelah 5 tidak diproses lagi.
4. break berbeda dengan kondisi loop
Ini konsep yang sangat penting.
Tanpa break:
for (int i = 1; i <= 10; i++) {
print(i);
}
Loop berhenti ketika:
i <= 10
menjadi false.
Dengan break:
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
print(i);
}
Sekarang ada dua kemungkinan loop berhenti:
Cara pertama: kondisi for menjadi false
i > 10
Cara kedua: break dijalankan
break;
Jadi:
Kondisi menentukan kapan loop secara normal berhenti, sedangkan
breakmemungkinkan kita menghentikannya secara paksa dari dalam loop.
5. Urutan contoh break
Perhatikan:
for (int i = 1; i <= 10; i++) {
if (i == 3) {
break;
}
print(i);
}
Mari kita jalankan.
Putaran 1
i = 1
Cek:
i == 3
1 == 3 → false
Jadi:
print(i);
Output:
1
Putaran 2
i = 2
Cek:
2 == 3 → false
Cetak:
2
Putaran 3
i = 3
Cek:
3 == 3 → true
Masuk:
break;
Loop langsung berhenti.
Maka output akhirnya:
1
2
Perhatikan:
Angka 3 tidak dicetak, karena
breakterjadi sebelumprint(i).
6. break bisa digunakan pada beberapa jenis loop
Dalam Dart, break bisa digunakan untuk keluar dari loop seperti:
while
int i = 1;
while (i <= 10) {
if (i == 5) {
break;
}
print(i);
i++;
}
Output:
1
2
3
4
do-while
int i = 1;
do {
if (i == 5) {
break;
}
print(i);
i++;
} while (i <= 10);
Output:
1
2
3
4
for
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
print(i);
}
for-in
List<int> numbers = [10, 20, 30, 40, 50];
for (int number in numbers) {
if (number == 30) {
break;
}
print(number);
}
Output:
10
20
7. break juga berhubungan dengan switch
Video juga mengatakan bahwa break digunakan pada switch.
Dalam gaya switch klasik yang dibahas video, contohnya:
int day = 2;
switch (day) {
case 1:
print("Senin");
break;
case 2:
print("Selasa");
break;
case 3:
print("Rabu");
break;
default:
print("Hari tidak valid");
}
Kalau:
day = 2
maka:
Selasa
break digunakan untuk keluar dari switch setelah case yang sesuai selesai.
Namun ada catatan penting untuk Dart modern:
Sintaks
switchDart modern sudah mendukung pattern matching dan memiliki aturan yang berbeda dari switch klasik dalam video. Jadi jangan menganggapbreakselalu wajib di setiapcasepada semua bentukswitchmodern.
Untuk belajar dari video tersebut, pahami dulu konsep dasarnya:
breakmenghentikan alur dan keluar dari struktur yang sedang dijalankan.
8. Apa yang terjadi setelah break?
Ini juga penting.
Misalnya:
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
print(i);
}
print("Selesai");
Output:
1
2
3
4
Selesai
Setelah:
break;
program tidak kembali ke bagian increment dan tidak melakukan putaran berikutnya.
Program langsung keluar dari loop dan lanjut ke:
print("Selesai");
Jadi secara visual:
loop
↓
i == 5?
↓
true
↓
break
↓
keluar dari loop
↓
kode setelah loop
9. break bukan berarti menghentikan seluruh program
Ini kesalahpahaman yang cukup umum.
Misalnya:
for (int i = 1; i <= 10; i++) {
if (i == 3) {
break;
}
print(i);
}
print("Program masih berjalan");
Output:
1
2
Program masih berjalan
Jadi break tidak menghentikan program secara keseluruhan.
break hanya menghentikan loop atau struktur switch yang menjadi targetnya.
10. Sekarang masuk ke nested loop
Bagian ini adalah bagian penting dari video.
Apa itu nested loop?
Nested loop adalah:
Loop yang berada di dalam loop lain.
Contoh:
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
print("i = $i, j = $j");
}
}
Kita punya dua loop:
outer loop
↓
┌───────────────────┐
│ inner loop │
│ │
│ │
└───────────────────┘
Loop luar disebut:
outer loop
Loop dalam disebut:
inner loop
11. Bagaimana nested loop bekerja?
Kode:
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
print("i = $i, j = $j");
}
}
Kita mulai:
i = 1
Kemudian masuk ke inner loop.
Inner loop berjalan:
j = 1
j = 2
j = 3
Jadi:
i = 1, j = 1
i = 1, j = 2
i = 1, j = 3
Setelah inner loop selesai, outer loop naik:
i = 2
Inner loop mulai lagi dari awal:
i = 2, j = 1
i = 2, j = 2
i = 2, j = 3
Kemudian:
i = 3
dan:
i = 3, j = 1
i = 3, j = 2
i = 3, j = 3
Output lengkap:
i = 1, j = 1
i = 1, j = 2
i = 1, j = 3
i = 2, j = 1
i = 2, j = 2
i = 2, j = 3
i = 3, j = 1
i = 3, j = 2
i = 3, j = 3
12. Apa yang terjadi jika kita menggunakan break di inner loop?
Misalnya:
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
break;
}
print("i = $i, j = $j");
}
}
Perhatikan posisi break:
outer for
│
└── inner for
│
└── break
break tersebut berada di inner loop.
Maka yang dihentikan adalah:
inner loop saja.
13. Mari kita jalankan
Awalnya:
i = 1
Masuk inner loop.
j = 1
Cek:
j == 2
1 == 2 → false
Cetak:
i = 1, j = 1
j = 2
Cek:
2 == 2
true.
Jalankan:
break;
Inner loop berhenti.
Jadi:
i = 1, j = 1
saja yang dicetak untuk i = 1.
Tetapi outer loop masih hidup.
Outer loop kemudian lanjut:
i = 2
Inner loop dibuat lagi dari awal:
j = 1
Cetak:
i = 2, j = 1
Ketika:
j = 2
break lagi.
Kemudian outer loop:
i = 3
dan hal yang sama terjadi.
Output:
i = 1, j = 1
i = 2, j = 1
i = 3, j = 1
14. Kenapa break hanya menghentikan inner loop?
Karena break biasa berlaku terhadap:
loop terdekat yang membungkusnya.
Misalnya:
for (...) { // outer
for (...) { // inner
break;
}
}
break berada di dalam:
for (...) { // inner
Jadi target terdekatnya adalah inner loop.
Bukan outer loop.
Cara mengingatnya:
breakbiasa = keluar dari loop terdekat.
15. Lalu bagaimana cara keluar dari outer loop?
Dart menyediakan konsep:
labeled break
atau break dengan label.
Contohnya:
outerLoop:
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
break outerLoop;
}
print("i = $i, j = $j");
}
}
Perhatikan:
outerLoop:
Ini adalah label.
Kemudian:
break outerLoop;
berarti:
Keluar dari loop yang memiliki label
outerLoop.
16. Apa itu label?
Label bisa dianggap sebagai nama yang kita berikan kepada sebuah loop.
Contohnya:
outerLoop:
for (...) {
...
}
Kita memberikan nama:
outerLoop
kepada loop tersebut.
Kemudian kita bisa mengatakan:
break outerLoop;
Artinya:
“Keluar dari loop yang namanya
outerLoop.”
Formatnya:
namaLabel:
for (...) {
...
}
Kemudian:
break namaLabel;
17. Contoh labeled break
outerLoop:
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
break outerLoop;
}
print("i = $i, j = $j");
}
}
Mari kita jalankan.
Awalnya:
i = 1
Inner loop:
j = 1
Kondisi:
j == 2
false.
Maka:
i = 1, j = 1
Kemudian:
j = 2
Kondisi:
2 == 2
true.
Jalankan:
break outerLoop;
Sekarang bukan hanya inner loop yang dihentikan.
Outer loop juga langsung dihentikan.
Program keluar dari keseluruhan:
outerLoop:
for (...) {
...
}
Output hanya:
i = 1, j = 1
18. Bandingkan break biasa dan labeled break
break biasa
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
break;
}
}
}
Artinya:
Keluar dari inner loop terdekat.
Labeled break
outerLoop:
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
break outerLoop;
}
}
}
Artinya:
Keluar dari loop yang diberi label
outerLoop.
19. Gambaran visual
break biasa
OUTER LOOP
┌─────────────────────────┐
│ │
│ INNER LOOP │
│ ┌─────────────────┐ │
│ │ │ │
│ │ BREAK ──────┼───┼──► keluar INNER
│ │ │ │
│ └─────────────────┘ │
│ │
└─────────────────────────┘
↓
OUTER tetap lanjut
break outerLoop
OUTER LOOP
┌─────────────────────────┐
│ │
│ INNER LOOP │
│ ┌─────────────────┐ │
│ │ │ │
│ │ BREAK OUTER ────┼──────► keluar OUTER
│ │ │ │
│ └─────────────────┘ │
│ │
└─────────────────────────┘
20. Analogi sederhana
Bayangkan kamu memiliki:
Gedung
└── Lantai
└── Ruangan
Kamu sedang berada di sebuah ruangan.
break
Seperti mengatakan:
“Saya keluar dari ruangan ini.”
Tapi masih berada di lantai/gedung.
break outerLoop
Seperti mengatakan:
“Saya keluar dari gedung ini sekalian.”
Inilah ide labeled break.
21. break vs continue
Ini penting karena setelah belajar break, biasanya orang sering bingung dengan continue.
break
Berhenti total dari loop.
if (i == 5) {
break;
}
Loop selesai.
continue
Lewati putaran saat ini, lalu lanjut ke putaran berikutnya.
Contoh:
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
print(i);
}
Output:
1
2
4
5
Ketika i == 3, angka 3 dilewati, tetapi loop tidak berhenti.
Jadi:
break → STOP LOOP
continue → SKIP PUTARAN INI
Ini perbedaan yang sangat penting.
22. Contoh kasus nyata
Misalnya kita mencari sebuah nama dalam list.
List<String> names = [
"Andi",
"Budi",
"Citra",
"Deni"
];
Kita ingin mencari "Citra".
for (String name in names) {
if (name == "Citra") {
print("Ditemukan!");
break;
}
}
Ketika "Citra" ditemukan:
break;
Loop berhenti.
Tidak perlu memeriksa:
Deni
lagi.
Ini salah satu penggunaan break yang sangat masuk akal:
Kalau data yang dicari sudah ditemukan, tidak perlu melanjutkan pencarian.
23. Contoh lain: validasi
Misalnya:
List<int> numbers = [10, 20, 30, -5, 40];
Kita ingin berhenti ketika menemukan angka negatif.
for (int number in numbers) {
if (number < 0) {
print("Angka negatif ditemukan!");
break;
}
print(number);
}
Output:
10
20
30
Angka negatif ditemukan!
Angka 40 tidak diproses karena loop sudah dihentikan.
24. Bagian transcript yang perlu diluruskan
Ada beberapa hal yang perlu kamu perhatikan dari video.
Pertama
Video mengatakan break hanya valid di loop dan switch.
Untuk konteks pembelajaran dasar, ini benar sebagai gambaran penggunaan break.
Tetapi Dart modern memiliki fitur kontrol alur dan pattern/switch yang lebih kaya, sehingga aturan detailnya jangan dihafalkan hanya dari contoh video lama.
Kedua
Video mengatakan:
break pada
forEachdapat digunakan.
Ini perlu diperhatikan.
Jangan menyamakan:
for (var item in items) {
if (...) {
break;
}
}
dengan:
items.forEach((item) {
// ...
});
break adalah kontrol alur untuk loop/switch, sedangkan forEach() adalah pemanggilan method dengan callback. Kamu tidak bisa begitu saja menaruh break di dalam callback forEach() untuk menghentikan forEach.
Kalau membutuhkan break, biasanya lebih jelas menggunakan:
for (var item in items) {
if (...) {
break;
}
}
25. Cara mengingat break
Bayangkan ada loop:
LOOP
↓
kerjakan
↓
kerjakan
↓
kerjakan
↓
BREAK!
↓
KELUAR
Jadi kata kuncinya:
break= keluar dari loop sekarang.
Kalau nested loop:
outer
└── inner
└── break
maka:
breakbiasa keluar dari inner loop terdekat.
Kalau:
outerLoop:
outer
└── inner
└── break outerLoop
maka:
break outerLoopkeluar dari loop yang diberi labelouterLoop.
26. Ringkasan akhir
break biasa
break;
Fungsinya:
Menghentikan loop terdekat dan keluar dari loop tersebut.
Labeled break
outerLoop:
for (...) {
...
break outerLoop;
}
Fungsinya:
Menghentikan struktur loop yang dituju oleh label.
Dalam nested loop
for (...) { // outer
for (...) { // inner
break;
}
}
break menghentikan:
INNER
bukan:
OUTER
Perbedaan dengan continue
break
↓
berhenti total
continue
↓
lewati putaran sekarang
↓
lanjut putaran berikutnya
Cheat sheet
// break biasa
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
}
Artinya: berhenti ketika i mencapai 5.
// nested loop + break
for (...) {
for (...) {
break;
}
}
Artinya: keluar dari inner loop.
// labeled break
outer:
for (...) {
for (...) {
break outer;
}
}
Artinya: keluar dari loop yang diberi label outer.
Kalau dibuat menjadi satu kalimat yang paling mudah diingat:
Loop biasanya berhenti karena kondisinya
false, sedangkanbreakmemungkinkan kita berkata: “berhenti sekarang juga, saya sudah tidak ingin melanjutkan loop ini.”