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:

c
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.

c
#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:

text
Iterasi ke-1
Iterasi ke-2
Iterasi ke-3
Iterasi ke-4
Iterasi ke-5
Selesai

Mari kita telaah baris-baris kode di atas:

  1. Baris 4 (int i = 1;): variabel counter i diisi 1 sebelum loop dimulai.
  2. Baris 6 (do {): keyword do menandai awal body loop. Body akan dieksekusi sekurang-kurangnya satu kali terlepas dari nilai kondisi.
  3. Baris 7 (printf(...)): mencetak pesan dengan nilai i saat ini.
  4. Baris 8 (i = i + 1;): menambah i sebesar satu agar kondisi akhirnya menjadi false.
  5. Baris 9 (} while (i <= 5);): setelah body selesai, kondisi i <= 5 dievaluasi. Jika true, body diulang; jika false, loop berhenti. Titik koma wajib ada.

Pola paling umum pemakaian do-while adalah menu interaktif yang wajib menampilkan pilihan minimal satu kali kepada pengguna. Berikut contoh simulasi menu pengelolaan tugas:

c
#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):

text
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 berhenti

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

c
#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):

text
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: 42

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

Aspekwhiledo-while
Saat evaluasi kondisiSebelum body loopSetelah body loop
Iterasi minimum0 (body bisa dilewati)1 (body pasti dieksekusi)
Cocok untukIterasi dengan kondisi yang sudah diketahui sebelum eksekusiMenu, 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.