Struktur Dasar Algoritma: Perulangan WHILE-DO

Setelah menguasai struktur dasar Runtunan dan Pemilihan, kita tiba pada struktur ketiga yang membuat program menjadi dinamis: Perulangan (Repetition). Di antara berbagai jenis perulangan, WHILE-DO adalah salah satu yang paling fundamental.

Perulangan WHILE-DO adalah jenis perulangan kondisional yang digunakan untuk mengulang satu blok pernyataan berkali-kali, yang jumlahnya belum bisa ditentukan di awal. Jumlah pengulangan bergantung pada nilai suatu kondisi.

Konsep Dasar WHILE-DO

Pernyataan WHILE berguna untuk memproses suatu pernyataan atau satu blok pernyataan beberapa kali.

Prinsip Kerja (Cek Dulu, Baru Kerjakan)

Perulangan WHILE-DO menganut prinsip "Pre-Test Loop" (Uji Awal):

  1. Program akan menguji nilai <kondisi> terlebih dahulu.
  2. Pernyataan atau aksi akan diulang jika kondisi bernilai True.
  3. Jika kondisi bernilai False sejak awal, maka pernyataan tidak akan dilaksanakan sama sekali, dan program akan keluar dari blok perulangan.

Alur ini memastikan bahwa badan perulangan mungkin tidak dieksekusi sama sekali (0 kali) jika kondisi awalnya sudah False.

Bentuk Penulisan

Perulangan WHILE-DO dapat digunakan untuk mengulang satu pernyataan tunggal atau satu blok pernyataan (Begin-End).

1. Untuk Satu Pernyataan:

While <kondisi> Do
  <pernyataan-1>; ]

2. Untuk Blok Pernyataan (Lebih dari Satu Aksi):

While <kondisi> Do 
Begin
  <pernyataan-1>; 
  <pernyataan-n>; 
End; 

Studi Kasus 1: Perulangan Sederhana (Penjumlahan Deret)

Perulangan WHILE-DO sering digunakan untuk tugas-tugas yang membutuhkan akumulasi nilai.

Kasus: Menjumlahkan deret .

Logika: Kita harus mengulang proses penjumlahan sebanyak kali.

VariabelKeteranganNilai Awal
nBanyaknya suku deret.Dibaca dari input
iSuku deret (pencacah/counter).1
jumlahTotal akumulasi nilai.0

Algoritma:

  1. Inisialisasi jumlah = 0 dan i = 1.
  2. Ulangi selama i <= n.
  3. Di dalam perulangan, hitung jumlah = jumlah + i.
  4. Tambahkan i = i + 1 (Penting! Agar loop tidak tak terbatas).

Implementasi Pascal:

Program JumlahDeret;
Var
  n, i, jumlah: integer;
Begin
  Write('Masukkan banyaknya suku deret :'); 
  Readln(n); 
  jumlah := 0; 
  i := 1; 
  
  While i <= n do // Ulangi sebanyak n kali
  Begin
    jumlah := jumlah + i; // Akumulasi
    i := i + 1; // Counter
  End; 
  
  Write('Jumlah = ', jumlah); 
  readln;
End.

Hasil Output (Jika n = 10): Jumlah = 55

Studi Kasus 2: Perulangan Bersarang (Nested WHILE-DO)

Sama seperti FOR, perulangan WHILE-DO juga dapat di-nested (bersarang) untuk membuat pola dua dimensi. Pola luar menentukan baris, dan pola dalam menentukan kolom.

Kasus: Menghasilkan pola segitiga siku-siku dari angka 1:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

Logika:

  • Loop Luar (a): Berjalan sampai (mengontrol baris).
  • Loop Dalam (b): Berjalan sampai a (mengontrol kolom).

Algoritma:

a <- 1
while a <= 5 do // Loop Luar (Baris)
  b <- 1 
  while b <= a do // Loop Dalam (Kolom)
    write(b, ' ')
    b <- b + 1
  endwhile
  writeln // Pindah baris
  a <- a + 1
endwhile

Pada pola di atas, setiap kali a bertambah, perulangan b (kolom) akan mencetak angka lebih banyak hingga mencapai batas a.

Studi Kasus 3: Input Data Dinamis (Rata-Rata)

WHILE-DO sangat tepat digunakan untuk proses di mana jumlah data tidak diketahui, atau tergantung pada input awal pengguna.

Kasus: Menghitung rata-rata buah bilangan bulat yang dibaca dari keyboard.

Logika:

  1. Baca jumlah data yang diinginkan (n).
  2. Ulangi proses input (Read(x)) dan penjumlahan (jumlah = jumlah + x) sebanyak n kali.
  3. Hitung rerata = jumlah / n di luar perulangan.

Implementasi Pascal (Potongan Kode):

Var
  n, x, i, jumlah: integer;
  rerata: real; // Tipe data Real untuk rata-rata
Begin
  Write('Masukkan Banyaknya Data: ');
  Readln(n);
  jumlah := 0; // Inisialisasi total
  i := 1; // Inisialisasi counter
  
  While i <= n do // Perulangan akan berhenti saat i > n
  Begin
    Write('Data ke', i, '=');
    Readln(x); // Input data
    jumlah := jumlah + x; // Akumulasi total
    i := i + 1; // Counter
  End;
  
  rerata := jumlah / n; // Hitung rata-rata setelah loop selesai
  Writeln('Rata-rata = ', rerata);
End.

Kesimpulan

Perulangan WHILE-DO adalah perulangan kondisional yang sangat fleksibel. Karena ia menguji kondisi di awal (Pre-Test Loop), ia ideal untuk skenario di mana Anda perlu memastikan suatu syarat terpenuhi sebelum aksi dimulai, atau ketika jumlah pengulangan baru diketahui saat program berjalan, seperti pada kasus input data dinamis.

Tantangan: Buatlah program yang menanyakan password. Program harus terus mengulang pertanyaan WHILE password yang dimasukkan pengguna salah. Setelah password benar, tampilkan pesan "Selamat Datang!".

This article was updated on October 8, 2025