Loop do-while adalah satu-satunya konstruksi perulangan di C yang mengevaluasi kondisi setelah mengeksekusi body loop. Ada situasi ketika sebuah blok kode wajib dieksekusi minimal satu kali sebelum program memutuskan apakah perlu mengulang—misalnya menampilkan menu pilihan kepada pengguna lalu bertanya apakah ingin keluar, atau meminta input sampai nilai yang dimasukkan valid. Loop while biasa tidak cocok untuk situasi ini karena bisa jadi body tidak pernah dieksekusi jika kondisi awal sudah false. Loop do-while mengatasi kebutuhan tersebut dengan pola “eksekusi dulu, baru cek”. Pada chapter ini kita akan menelaah sintaks do-while, perbedaannya dengan while, serta pola pemakaian yang paling umum yaitu menu interaktif dan validasi input.
Sintaks Dasar do-while #
Bentuk umum do-while di C adalah sebagai berikut:
do {
/* body loop */
} while (ekspresi);Compiler pertama-tama mengeksekusi body loop satu kali. Setelah body selesai, ekspresi di dalam tanda kurung dievaluasi. Jika hasil evaluasi tidak sama dengan 0, kontrol kembali ke awal body dan eksekusi berulang. Jika hasil evaluasi 0, loop berhenti dan eksekusi berlanjut ke statement setelah titik koma. Tanda titik koma setelah while (ekspresi) bersifat wajib—berdasarkan ISO/IEC 9899 §6.8.5.2, sintaks do-while menuntut penutup titik koma untuk memisahkan loop dari statement berikutnya.
#include <stdio.h>
int main(void) {
int i = 1;
do {
printf("Iterasi ke-%d\n", i);
i = i + 1;
} while (i <= 5);
printf("Selesai\n");
return 0;
}Output yang Dihasilkan:
Iterasi ke-1
Iterasi ke-2
Iterasi ke-3
Iterasi ke-4
Iterasi ke-5
SelesaiMari kita telaah baris-baris kode di atas:
- Baris 4 (
int i = 1;): variabel counteridiisi1sebelum loop dimulai. - Baris 6 (
do {): keyworddomenandai awal body loop. Body akan dieksekusi sekurang-kurangnya satu kali terlepas dari nilai kondisi. - Baris 7 (
printf(...)): mencetak pesan dengan nilaiisaat ini. - Baris 8 (
i = i + 1;): menambahisebesar satu agar kondisi akhirnya menjadi false. - Baris 9 (
} while (i <= 5);): setelah body selesai, kondisii <= 5dievaluasi. Jika true, body diulang; jika false, loop berhenti. Titik koma wajib ada.
Menu Interaktif dengan do-while #
Pola paling umum pemakaian do-while adalah menu interaktif yang wajib menampilkan pilihan minimal satu kali kepada pengguna. Berikut contoh simulasi menu pengelolaan tugas:
#include <stdio.h>
int main(void) {
int pilihan;
do {
printf("Menu:\n");
printf(" 1. Tambah tugas\n");
printf(" 2. Lihat tugas\n");
printf(" 3. Keluar\n");
printf("Pilih: ");
if (scanf("%d", &pilihan) != 1) {
pilihan = 0;
}
printf("Anda memilih: %d\n", pilihan);
} while (pilihan != 3);
printf("Program berhenti\n");
return 0;
}Output yang Dihasilkan (input: 1, 2, 3):
Menu:
1. Tambah tugas
2. Lihat tugas
3. Keluar
Pilih: Anda memilih: 1
Menu:
1. Tambah tugas
2. Lihat tugas
3. Keluar
Pilih: Anda memilih: 2
Menu:
1. Tambah tugas
2. Lihat tugas
3. Keluar
Pilih: Anda memilih: 3
Program berhentiPada contoh di atas, menu wajib ditampilkan terlepas dari kondisi apapun—di sinilah do-while unggul dibanding while biasa. Jika kita memakai while, kita harus mengisi pilihan dengan nilai bukan 3 sebelum loop, atau memakai trik do-while terpisah untuk pembacaan input pertama. Dengan do-while, menu langsung tampil sekali dan diulang selama pengguna belum memilih 3.
Validasi Input dengan do-while #
Pola lain yang sering memanfaatkan do-while adalah validasi input pengguna—kita meminta nilai sampai pengguna memasukkan nilai yang berada dalam rentang yang diharapkan:
#include <stdio.h>
int main(void) {
int jumlah;
do {
printf("Masukkan jumlah peserta (1-100): ");
if (scanf("%d", &jumlah) != 1) {
jumlah = 0;
}
if (jumlah < 1 || jumlah > 100) {
printf("Nilai tidak valid, coba lagi\n");
}
} while (jumlah < 1 || jumlah > 100);
printf("Jumlah peserta diset: %d\n", jumlah);
return 0;
}Output yang Dihasilkan (input berurutan: 0, 150, -5, 42):
Masukkan jumlah peserta (1-100): Nilai tidak valid, coba lagi
Masukkan jumlah peserta (1-100): Nilai tidak valid, coba lagi
Masukkan jumlah peserta (1-100): Nilai tidak valid, coba lagi
Masukkan jumlah peserta (1-100): Jumlah peserta diset: 42Loop do-while di atas menjamin prompt “Masukkan jumlah peserta” muncul minimal satu kali, lalu diulang selama nilai yang dimasukkan berada di luar rentang 1..100. Pengguna harus memasukkan nilai valid (42 pada contoh) sebelum program keluar dari loop. Pola ini sangat lazim dalam program interaktif yang membaca input dari pengguna.
Perbandingan do-while dengan while #
Perbedaan mendasar antara do-while dan while adalah kapan kondisi dievaluasi. Tabel berikut merangkum perbedaannya:
| Aspek | while | do-while |
|---|---|---|
| Saat evaluasi kondisi | Sebelum body loop | Setelah body loop |
| Iterasi minimum | 0 (body bisa dilewati) | 1 (body pasti dieksekusi) |
| Cocok untuk | Iterasi dengan kondisi yang sudah diketahui sebelum eksekusi | Menu, validasi input, situasi “eksekusi dulu, tanya kemudian” |
Pilih do-while ketika body wajib dieksekusi minimal satu kali. Pilih while ketika body mungkin perlu dilewati seluruhnya jika kondisi awal tidak terpenuhi.