Menguasai Loop do-while di Dart: Eksekusi Dulu, Cek Kondisi Kemudian!
Menguasai Loop do-while di Dart: Eksekusi Dulu, Cek Kondisi Kemudian!
Selamat datang di blog ini! Saat belajar pemrograman, kita pasti akan bertemu dengan konsep "loop" atau perulangan. Ada banyak jenis loop, seperti for, while, dan for-in. Tapi hari ini, kita akan membahas satu jenis loop yang punya keunikan tersendiri: do-while loop.
Apa yang membuatnya spesial? Sesuai dengan materi yang kita bahas: "Eksekusi minimal sekali kemudian pengecekan kondisi."
Mari kita bedah lebih dalam!
1. Apa Itu do-while Loop?
Berbeda dengan while loop biasa yang mengecek kondisi sebelum menjalankan kode di dalamnya, do-while loop adalah kebalikannya.
do-while loop akan selalu menjalankan blok kodenya setidaknya satu kali. Setelah blok kode itu selesai dijalankan, barulah ia akan mengecek kondisi while. Jika kondisi tersebut bernilai true, loop akan diulang. Jika false, loop akan berhenti.
Ini bisa diibaratkan seperti "Coba lakukan dulu, baru cek apakah perlu diulang."
2. Sintaks Dasar do-while di Dart
Sintaks atau cara penulisan do-while loop dalam bahasa Dart (yang digunakan oleh Flutter) sangat sederhana:
do {
// Blok kode yang akan dieksekusi
// Kode ini dijamin berjalan minimal 1x
} while (kondisi); // Perhatikan titik koma (;) di sini!
Penjelasan:
do { ... }: Ini adalah "badan" loop. Kode apa pun di dalam kurung kurawal ini akan dieksekusi.while (kondisi);: Ini adalah pengecekan kondisi. Jikakondisidi sinitrue, program akan melompat kembali kedo. Jikafalse, program akan lanjut ke baris kode setelah loop.
3. Perbedaan Kunci: while vs do-while
Perbedaan ini sangat penting. Mari kita lihat dua contoh kode dengan kondisi awal yang sama-sama false.
Contoh while loop:
int i = 5;
print("Memulai while loop...");
while (i < 5) {
// Kondisi (5 < 5) adalah false
// Kode ini TIDAK AKAN PERNAH dijalankan
print("Iterasi while ke-$i");
i++;
}
print("Selesai while loop.");
Output:
Memulai while loop...
Selesai while loop.
Lihat? Blok kode print di dalam while tidak pernah tereksekusi.
Contoh do-while loop:
int i = 5;
print("Memulai do-while loop...");
do {
// Kode ini akan dijalankan 1x
print("Iterasi do-while ke-$i");
i++;
} while (i < 5); // Cek kondisi (6 < 5) -> false
print("Selesai do-while loop.");
Output:
Memulai do-while loop...
Iterasi do-while ke-5
Selesai do-while loop.
Nah, di sinilah keajaibannya! Meskipun kondisi (i < 5) dari awal sudah false, blok do tetap berjalan satu kali.
4. Implementasi do-while dalam Konteks Widget Flutter
Anda mungkin bertanya, "Kapan saya pakai ini di Flutter?"
Di Flutter, Anda jarang menggunakan do-while untuk membangun layout widget secara langsung di dalam method build(). Namun, loop ini sangat berguna dalam logika aplikasi atau event handler (seperti di dalam onPressed sebuah Tombol).
Contoh paling klasik adalah memaksa pengguna melakukan sesuatu sampai valid.
Bayangkan Anda ingin menampilkan dialog AlertDialog yang meminta persetujuan pengguna. Anda tidak ingin dialog itu tertutup sampai pengguna menekan tombol "Setuju".
// Fungsi ini harus dipanggil dari dalam context (misal: onPressed)
void tampilkanDialogPersetujuan(BuildContext context) async {
bool disetujui = false;
do {
// Tampilkan dialog dan tunggu hasilnya (true/false)
disetujui = await showDialog<bool>(
context: context,
barrierDismissible: false, // User tidak bisa menutup dialog
builder: (BuildContext ctx) {
return AlertDialog(
title: Text("Persetujuan Penting"),
content: Text("Anda harus menyetujui syarat dan ketentuan untuk lanjut."),
actions: [
TextButton(
child: Text("Batal"),
onPressed: () {
// Mengembalikan 'false'
Navigator.of(ctx).pop(false);
},
),
TextButton(
child: Text("Setuju"),
onPressed: () {
// Mengembalikan 'true'
Navigator.of(ctx).pop(true);
},
),
],
);
},
) ?? false; // Jika dialog ditutup (misal error), anggap 'false'
// Jika user menekan 'Batal', 'disetujui' akan 'false'
// dan kondisi 'while (disetujui == false)' akan true,
// sehingga loop akan mengulang dan dialog muncul lagi.
} while (disetujui == false);
// Kode ini hanya akan tercapai jika 'disetujui' bernilai 'true'
print("User telah menyetujui S&K!");
// Lanjutkan ke halaman berikutnya...
}
Dalam contoh di atas, dialog akan minimal tampil satu kali (do). Jika pengguna menekan "Batal" (disetujui == false), kondisi while akan true dan dialog akan ditampilkan lagi. Loop ini hanya akan berhenti jika pengguna menekan "Setuju".
5. Latihan: Uji Pemahamanmu!
Sekarang, coba jawab dua pertanyaan ini untuk menguji pemahaman Anda.
Soal 1:
Manakah pernyataan yang paling akurat mendeskripsikan karakteristik utama dari 'do-while loop'?
A. Loop hanya akan dieksekusi jika kondisi di awal bernilai 'true'.
B. Loop akan selalu dieksekusi setidaknya satu kali, terlepas dari kondisinya.
C. Loop digunakan khusus untuk iterasi pada koleksi atau array.
D. Loop akan berhenti dieksekusi segera setelah kondisi bernilai 'false' di awal.
E. Loop harus memiliki jumlah iterasi yang pasti sebelum dijalankan.
Soal 2:
Perhatikan cuplikan kode Dart berikut:
int x = 10;
do {
print("Nilai x: $x");
x++;
} while (x < 10);
Apa output yang akan tercetak di konsol?
A. Tidak ada output yang tercetak.
B. Nilai x: 10
C. Nilai x: 11
D. Terjadi error karena kondisi awalnya 'false'.
E. Loop tak terbatas (infinite loop).
(Scroll ke bawah untuk melihat jawaban)
Kesimpulan
do-while loop adalah alat yang ampuh dalam kotak peralatan pemrograman Anda. Ingat aturan utamanya: "Eksekusi minimal sekali, baru cek kondisi."
Gunakan loop ini saat Anda perlu memastikan sebuah aksi (seperti meminta input, menampilkan menu, atau dialog) benar-benar terjadi setidaknya satu kali sebelum program memutuskan untuk mengulanginya atau tidak.
Semoga bermanfaat!
[Jawaban Latihan]
B. Loop akan selalu dieksekusi setidaknya satu kali, terlepas dari kondisinya.
Keterangan: Ini adalah definisi utama dari
do-while. Badandodieksekusi terlebih dahulu sebelum kondisiwhilediperiksa.
B. Nilai x: 10
Keterangan: Loop
dodieksekusi satu kali. Perintahprintdijalankan saatxmasih bernilai 10. Kemudian,xditambah 1 menjadi 11. Setelah itu, kondisiwhile (11 < 10)diperiksa. Karena kondisi inifalse, loop berhenti.
Comments
Post a Comment