Struktur Dasar Algoritma: Perulangan FOR Bersarang (Nested Loop)
Setelah menguasai dasar-dasar perulangan tunggal (seperti FOR-DO), saatnya Anda mempelajari konsep yang lebih kompleks namun sangat kuat: Perulangan Bersarang atau Nested Loop.
Perulangan bersarang adalah perulangan yang berada di dalam perulangan yang lainnya. Konsep ini sangat penting dalam algoritma untuk memproses data yang berbentuk dua dimensi, seperti tabel, matriks, atau pola-pola geometris.
Cara Kerja Perulangan FOR Bersarang
Untuk memahami logika nested loop, ingatlah prinsip ini:
Perulangan yang lebih dalam (inner loop) akan diproses terlebih dahulu sampai selesai (habis), kemudian perulangan yang lebih luar (outer loop) baru akan bertambah. Setelah itu, proses akan kembali ke perulangan yang lebih dalam lagi, dimulai dari nilai awalnya, dan seterusnya.
Struktur Umum:
For I := nilai_awal_luar to nilai_akhir_luar Do
begin
// Perulangan Luar (Outer Loop)
For J := nilai_awal_dalam to nilai_akhir_dalam Do
begin
// Perulangan Dalam (Inner Loop)
// Kode ini diulang sepenuhnya untuk setiap langkah 'I'
end;
// Perintah pindah baris (biasanya Writeln)
end;Contoh 1: Mencetak Kombinasi Angka Baris dan Kolom
Contoh ini menunjukkan bagaimana perulangan luar (I) dan perulangan dalam (J) berinteraksi, dengan output pasangan angka dibatasi oleh titik (.).
Algoritma:
- Perulangan luar (
I) berjalan dari 1 sampai 5. - Perulangan dalam (
J) berjalan dari 1 sampai 3. - Aksi mencetak
I.J.
Program ForBersarang;
Deklarasi
I, J: integer;
Algoritma
For I = 1 to 5 Do
For J = 1 to 3 Do
Write(I, '.', J) // Mencetak I.J
Endfor
Endfor
End Algoritma
Implementasi Pascal:
Program ForBersarang;
Var
I,J: integer;
Begin
For I:=1 to 5 Do
Begin
For J:=1 to 3 Do
Begin
// Output direvisi menjadi I.J untuk kejelasan
Write (I, '.', J, ' ');
End;
Writeln; // Pindah baris setelah inner loop selesai
End;
Readln;
End.
Hasil Output:
Output terdiri dari 5 baris dan setiap baris memiliki 3 pasangan angka I.J:
1.1 1.2 1.3
2.1 2.2 2.3
3.1 3.2 3.3
4.1 4.2 4.3
5.1 5.2 5.3 Studi Kasus: Membuat Pola Bintang (Pola Geometris)
Nested loop adalah alat utama untuk membuat pola-pola geometris di layar. Perulangan luar (X) mengontrol baris, sementara perulangan dalam (Y) mengontrol kolom di setiap baris.
Contoh 2: Pola Segitiga Siku-siku (Naik)
Untuk membuat segitiga, jumlah kolom harus bergantung pada nomor baris saat ini.
Algoritma:
- Perulangan luar (
X) berjalan dari 1 sampai 5. - Perulangan dalam (
Y) berjalan dari 1 sampaiX. - Aksi mencetak bintang (
*).
Program Bintang;
Deklarasi
x,y: integer
Algoritma
for x = 1 to 5 do // Baris
for y = 1 to x do // Kolom
write('*')
writeln // Pindah baris
endfor
endfor
End Algoritma
Hasil Output:
*
**
***
****
*****Contoh 3: Pola Segitiga Terbalik (Menurun)
Untuk membuat pola terbalik, kita membuat perulangan dalam agar berjalan dari nomor baris saat ini (X) hingga batas akhir.
Algoritma:
- Perulangan luar (
X) berjalan dari 1 sampai 5. - Perulangan dalam (
Y) berjalan dariXsampai 5. - Aksi mencetak bintang (
*).
Program Bintang2;
Deklarasi
x,y: integer
Algoritma
for x = 1 to 5 do // Baris
for y = x to 5 do // Kolom
write('*')
writeln
endfor
endfor
End Algoritma
Hasil Output:
*****
****
***
**
* Penggabungan Logika: Nested Loop dengan IF-THEN-ELSE
Nested loop dapat digabungkan dengan struktur IF-THEN-ELSE untuk membuat pola yang lebih kompleks berdasarkan kondisi tertentu.
Contoh 4: Pola Pagar Baris Ganjil-Genap
Contoh ini membuat pola di mana baris ganjil dicetak dengan * dan baris genap dicetak dengan #. Logikanya adalah menguji variabel perulangan luar (X) menggunakan operator modulo (mod).
Algoritma:
- Perulangan luar (
X) dan dalam (Y) sama-sama berjalan 1 sampai 5. - Jika nomor baris (
X) dibagi 2 sisanya tidak nol (<> 0), berarti baris Ganjil, cetak*. - Selain itu (Genap), cetak
#.
Program Pagar;
Deklarasi
x,y: integer
Algoritma
for x = 1 to 5 do
for y = 1 to 5 do
if (x mod 2 <> 0) then // Cek Ganjil
write('*')
else // Cek Genap
write('#')
endif
writeln
endfor
endfor
End Algoritma
Hasil Output:
*****
#####
*****
#####
***** Kesimpulan
Perulangan FOR Bersarang (Nested Loop) adalah teknik kunci dalam pemrograman yang memungkinkan Anda memproses data dan struktur dua dimensi secara efisien. Kuncinya adalah selalu mengingat hierarki: perulangan luar mengontrol baris dan perulangan dalam menyelesaikan semua kolom untuk setiap langkah perulangan luar.
Dengan menggabungkan Nested Loop dengan struktur IF-THEN-ELSE, Anda dapat membuat program yang menghasilkan pola visual yang sangat beragam dan kompleks.
Tantangan: Modifikasi Contoh 4 (Pola Pagar) agar simbol * dan # bergantian, tidak hanya berdasarkan baris ganjil/genap, tetapi juga kolom ganjil/genap di setiap baris.
