Struktur Dasar Algoritma: REPEAT-UNTIL Lanjutan

Setelah menguasai dasar-dasar perulangan kondisional, mari kita telaah lebih lanjut struktur REPEAT-UNTIL. Struktur ini memiliki karakteristik yang sangat khas yang membedakannya secara fundamental dari perulangan WHILE-DO.

Karakteristik Kunci REPEAT-UNTIL

Perulangan REPEAT-UNTIL disebut sebagai Post-Test Loop (Uji Akhir) karena kondisi perulangan diuji setelah badan perulangan selesai dieksekusi.

1. Eksekusi Minimal Satu Kali

Hal yang paling penting untuk diperhatikan pada REPEAT-UNTIL adalah:

Pernyataan di dalam perulangan akan diproses paling sedikit satu kali.

Ini terjadi karena seleksi kondisi pada statement UNTIL terletak di bagian bawah perulangan. Jadi, meskipun kondisi awal sudah tidak sesuai, blok pernyataan setelah REPEAT akan tetap dikerjakan hingga statement UNTIL.

2. Batas Perulangan Jelas

Pada REPEAT-UNTIL, tidak diperlukan blok statement (Begin dan End) untuk menunjukkan batas perulangannya. Batas perulangannya sudah ditunjukkan secara eksplisit mulai dari kata kunci Repeat sampai Until. Repeat dan Until berfungsi sebagai pengganti Begin dan End.

Perbandingan REPEAT-UNTIL vs. WHILE-DO

Perbedaan mendasar ini dapat dilihat jelas ketika kondisi awal sudah False.

Kasus 1: Menggunakan REPEAT-UNTIL

Pada contoh ini, nilai awal i adalah 10, dan kondisi berhenti adalah i > 5 (kondisi awal sudah True!).

Logika: Kondisi i > 5 sudah benar (10 > 5), tetapi karena pengecekan dilakukan di akhir, perulangan akan dijalankan minimal sekali.

Program contoh1;
Deklarasi
  i : integer;
Algoritma
  i <- 10
  repeat
    write(i);
    writeln('Saya Senang Belajar Pascal')
    i <- i + 1
  until i > 5 // Kondisi diuji di sini
End Algoritma

Hasil Output:

10 Saya Senang Belajar Pascal

Perulangan berhenti setelah iterasi pertama karena:

  1. Aksi dilakukan: write(10) dan i diubah menjadi 11.
  2. Kondisi diuji: 11 > 5 adalah True. Loop berhenti.

Kasus 2: Menggunakan WHILE-DO

Pada kasus yang sama, perulangan WHILE-DO menguji kondisi di awal.

Logika: Kondisi i < 5 diuji sebelum aksi. Karena 10 < 5 adalah False sejak awal, badan perulangan tidak akan pernah dieksekusi.

i <- 10
while i < 5 do // Kondisi diuji di sini
  write(i);
  writeln('Saya Senang Belajar Pascal')
  i <- i + 1
end while

Hasil Output: Tidak ada output yang dihasilkan.

Contoh Perulangan REPEAT-UNTIL Bersarang

Sama seperti perulangan FOR dan WHILE, REPEAT-UNTIL juga dapat digunakan dalam struktur bersarang (nested loop).

Kasus: Menghasilkan output 5 baris yang masing-masing mencetak deret angka 1 sampai 5.

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

Logika:

  • Loop Luar (a): Mengontrol baris, berulang sampai .
  • Loop Dalam (b): Mengontrol kolom, berulang sampai untuk setiap baris.
Program contoh3;
Deklarasi
  a, b : integer;
Algoritma
  a <- 1
  repeat // Loop Luar (Baris)
    b <- 1 // Inisialisasi ulang b setiap baris
    repeat // Loop Dalam (Kolom)
      write(b, ' ')
      b <- b + 1
    until b > 5
    writeln
    a <- a + 1
  until a > 5 // Perhatikan bahwa di pseudocode sumber menggunakan until i > 5. Kita koreksi ke 'a'.
End Algoritma

Kesimpulan

Karakteristik Uji Akhir pada REPEAT-UNTIL menjamin eksekusi minimal satu kali. Ini membuatnya ideal untuk kasus seperti program menu (do...while pada bahasa lain) di mana Anda perlu menampilkan menu dan menerima input setidaknya sekali sebelum bertanya apakah pengguna ingin mengulang. Gunakan WHILE-DO untuk kasus di mana Anda harus memverifikasi kondisi sebelum beraksi, dan REPEAT-UNTIL ketika aksi harus dilakukan minimal sekali.

Tantangan: Tuliskan algoritma menggunakan struktur REPEAT-UNTIL untuk membaca angka dari keyboard dan menjumlahkannya. Proses harus berhenti (until) ketika pengguna memasukkan angka 999. Setelah berhenti, tampilkan total penjumlahan.

This article was updated on October 8, 2025