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.

csharp
int angka = 10;

do
{
    Console.WriteLine($"Cetak angka {angka}");
    angka++;
} while (angka < 5);

Output yang Dihasilkan:

text
Cetak angka 10

Kondisi 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().

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

text
Percobaan ke-1: PIN salah
Percobaan ke-2: PIN salah
Percobaan ke-3: PIN salah
Kartu terblokir sementara

Mari kita telaah baris demi baris:

  1. Baris 1–3: PIN tersimpan, PIN masukan, dan penghitung percobaan disiapkan sebelum loop.
  2. Baris 5 (do): Body langsung dijalankan tanpa pemeriksaan kondisi lebih dulu.
  3. Baris 7–8: Setiap putaran menaikkan percobaan dan mencetak status kegagalan kecocokan PIN.
  4. Baris 9 (while (...)): Kondisi gabungan pinMasukan != pinTersimpan && percobaan < 3 dinilai setelah setiap putaran. Setelah percobaan ketiga, bagian percobaan < 3 bernilai false, sehingga seluruh kondisi bernilai false dan 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.