dasarperulanganloopPemula3 mnt baca

Perulangan while dan do-while

Perulangan berbasis kondisi dengan while, plus do-while yang selalu jalan minimal sekali.

while: ulang selama kondisi true

Berbeda dengan for yang menghitung, while mengulang selama kondisinya true. Cocok saat kamu tidak tahu pasti berapa kali harus mengulang.

javascript
let nyawa = 3;
while (nyawa > 0) {
  console.log("Main! Sisa nyawa: " + nyawa);
  nyawa--;
}
console.log("Game over");

Analoginya seperti mengisi ember: terus tuang air selama ember belum penuh. Kamu tidak menghitung gayungnya, yang penting kondisi "belum penuh".

Pola umum: menunggu input valid

javascript
let password = "";
while (password.length < 8) {
  password = password + "a"; // simulasi input
}
console.log("Password diterima");

Di aplikasi nyata, pola ini dipakai untuk validasi: ulangi selama input belum memenuhi syarat.

do-while: jalan dulu, cek belakangan

do-while mirip while, tapi kondisinya dicek di akhir. Akibatnya blok kode selalu dijalankan minimal satu kali:

javascript
let angka = 10;
do {
  console.log("Jalan sekali walau kondisi salah: " + angka);
  angka++;
} while (angka < 5);

Meski angka < 5 langsung salah, pesan tetap tercetak sekali. Ini cocok untuk menu yang harus tampil minimal sekali sebelum user memilih keluar.

Catatan teknis: Risiko terbesar while adalah lupa mengubah variabel kondisi di dalam loop, yang menyebabkan infinite loop. Kalau browser macet saat eksperimen, itu hampir pasti penyebabnya. Selalu pastikan ada baris yang mengubah kondisi menuju false.

while vs for

Pakai for saat jumlah iterasi sudah jelas (misalnya sepanjang array). Pakai while saat iterasi bergantung pada kondisi yang berubah (misalnya menunggu sesuatu selesai). Keduanya bisa saling menggantikan, pilih yang niatnya paling jelas terbaca.

Studi kasus: undian sampai menang

while bersinar untuk simulasi yang jumlah langkahnya tidak diketahui:

javascript
let percobaan = 0;
let menang = false;

while (!menang) {
  percobaan++;
  let dadu = Math.floor(Math.random() * 6) + 1;
  if (dadu === 6) menang = true;
}

console.log("Menang setelah " + percobaan + " lemparan!");

Kamu tidak tahu butuh berapa lemparan untuk dapat angka 6, jadi for tidak cocok. while terus jalan sampai kondisi menang terpenuhi. Untuk keamanan di program nyata, tambahkan batas maksimal iterasi agar tidak infinite loop kalau logikanya salah:

javascript
while (!menang && percobaan < 1000) { /* ... */ }

Batas pengaman seperti ini kebiasaan baik untuk semua while yang kondisinya bergantung pada data dinamis.

Kesimpulan

while untuk kondisi, for untuk hitungan. Tambahkan do-while ke kotak alatmu untuk kasus "tampilkan dulu, tanya belakangan" seperti menu interaktif.