Mesin ATM selalu menampilkan layar permintaan PIN terlebih dahulu, baru kemudian menilai jawaban pengguna. Kebutuhan menjalankan body lebih dulu lalu menilai kondisi inilah yang dijawab do-while loop. Pada struktur ini, body dijamin dieksekusi minimal satu kali tanpa memandang kondisi awal, karena pemeriksaan kondisi berada di bagian akhir.
Struktur Do-While #
Do-while loop diawali kata kunci do, diikuti body, lalu while (kondisi) di bagian akhir yang wajib ditutup titik koma. Kelupaan menuliskan titik koma tersebut langsung ditolak compiler, dan kondisi juga tetap ditulis di dalam tanda kurung sama seperti pada while loop. Runtime menjalankan body terlebih dahulu, baru memeriksa kondisi; bila true, body diulang, dan bila false, eksekusi berlanjut ke statement setelah loop. Pola seperti ini disebut post-test loop karena kondisi dinilai setelah body.
int angka = 10;
do
{
Console.WriteLine($"Cetak angka {angka}");
angka++;
} while (angka < 5);Output yang Dihasilkan:
Cetak angka 10Kondisi angka < 5 bernilai false sejak awal karena 10 sudah melewatinya, tetapi body tetap dijalankan satu kali. Perilaku ini menjadi pembeda utama dengan while loop, yang pada kondisi awal false tidak menjalankan body sama sekali.
Simulasi Verifikasi PIN #
Alur meminta PIN pada ATM mengikuti pola post-test: prompt harus tampil terlebih dulu, baru kecocokan dinilai. Contoh berikut menyimulasikan tiga kali percobaan dengan PIN yang salah; pada program nyata, nilai pinMasukan berasal dari Console.ReadLine().
string pinTersimpan = "1234";
string pinMasukan = "9999";
int percobaan = 0;
do
{
percobaan++;
Console.WriteLine($"Percobaan ke-{percobaan}: PIN salah");
} while (pinMasukan != pinTersimpan && percobaan < 3);
Console.WriteLine("Kartu terblokir sementara");Output yang Dihasilkan:
Percobaan ke-1: PIN salah
Percobaan ke-2: PIN salah
Percobaan ke-3: PIN salah
Kartu terblokir sementaraMari kita telaah baris demi baris:
- Baris 1–3: PIN tersimpan, PIN masukan, dan penghitung percobaan disiapkan sebelum loop.
- Baris 5 (
do): Body langsung dijalankan tanpa pemeriksaan kondisi lebih dulu. - Baris 7–8: Setiap putaran menaikkan
percobaandan mencetak status kegagalan kecocokan PIN. - Baris 9 (
while (...)): Kondisi gabunganpinMasukan != pinTersimpan && percobaan < 3dinilai setelah setiap putaran. Setelah percobaan ketiga, bagianpercobaan < 3bernilaifalse, sehingga seluruh kondisi bernilaifalsedan loop berhenti.
Perhatikan juga operator && pada kondisi tersebut: penilaian berhenti lebih awal begitu salah satu bagian bernilai false, sehingga perbandingan PIN tidak selalu perlu dijalankan ulang pada putaran berikutnya.