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:

Dart
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. Jika kondisi di sini true, program akan melompat kembali ke do. Jika false, 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:

Dart
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:

Dart
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".

Dart
// 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:

Dart
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]

  1. B. Loop akan selalu dieksekusi setidaknya satu kali, terlepas dari kondisinya.

    • Keterangan: Ini adalah definisi utama dari do-while. Badan do dieksekusi terlebih dahulu sebelum kondisi while diperiksa.

  2. B. Nilai x: 10

    • Keterangan: Loop do dieksekusi satu kali. Perintah print dijalankan saat x masih bernilai 10. Kemudian, x ditambah 1 menjadi 11. Setelah itu, kondisi while (11 < 10) diperiksa. Karena kondisi ini false, loop berhenti.

Comments

Popular posts from this blog

📱 Group Study Online – Belajar Bareng Teman Meski Jarak Jauh