Nested Loop Pascal: Membuat Pola & Tabel dengan Perulangan Bersarang
Setelah menguasai berbagai jenis perulangan, saatnya Anda menaikkan level kemampuan coding Anda dengan mempelajari Perulangan Bersarang atau Nested Loop. Konsep ini sangat mirip dengan Nested IF yang telah kita bahas sebelumnya, yaitu sebuah struktur yang berada di dalam struktur sejenisnya.
Secara sederhana, nested loop adalah perulangan di dalam perulangan. Konsep ini sangat penting untuk menyelesaikan masalah yang berhubungan dengan format baris dan kolom, seperti membuat tabel, pola, atau matriks.
Bagaimana Cara Kerja Nested Loop?
Untuk memahami cara kerjanya, bayangkan sebuah jam analog.
- Jarum Detik adalah Perulangan Dalam (Inner Loop).
- Jarum Menit adalah Perulangan Luar (Outer Loop).
Jarum detik (inner loop) harus berputar penuh sebanyak 60 kali terlebih dahulu, baru setelah itu jarum menit (outer loop) akan bergeser satu kali. Prinsip ini sama persis dalam nested loop: Untuk setiap satu kali iterasi perulangan luar, perulangan dalam akan berjalan dari awal hingga selesai.
Struktur Dasar Nested For
Meskipun bisa diterapkan pada semua jenis perulangan, kita akan fokus pada bentuk FOR yang paling umum digunakan.
// Perulangan Luar (mengontrol baris)
FOR baris := nilai_awal_1 TO nilai_akhir_1 DO
begin
// ... kode yang dieksekusi di setiap baris ...
// Perulangan Dalam (mengontrol kolom)
FOR kolom := nilai_awal_2 TO nilai_akhir_2 DO
begin
// Kode ini akan diulang sampai selesai
// untuk setiap satu iterasi 'baris'
end;
writeln; // Pindah baris setelah perulangan dalam selesai
end;Contoh Bertahap: Dari Garis Menjadi Persegi Panjang
Cara terbaik untuk memahami nested loop adalah dengan melihatnya beraksi.
Langkah 1: Membuat Satu Baris Bintang Pertama, kita buat program sederhana untuk mencetak 5 bintang dalam satu baris.
// Menampilkan 5 bintang dalam 1 baris
for i := 1 to 5 do
begin
write('*');
end;
// Output: *****
Langkah 2: Mengulang Baris Tersebut Sekarang, bagaimana jika kita ingin menampilkan baris ***** tersebut sebanyak 3 kali? Kita bisa "membungkus" perulangan tadi di dalam perulangan lain yang berjalan sebanyak 3 kali. Di sinilah nested loop berperan.
program Pola_Persegi_Panjang;
uses crt;
var
baris, kolom: integer;
begin
clrscr;
// Perulangan luar untuk membuat 3 baris
for baris := 1 to 3 do
begin
// Perulangan dalam untuk membuat 5 bintang di setiap baris
for kolom := 1 to 5 do
begin
write('*');
end;
writeln; // Pindah ke baris baru setelah 5 bintang tercetak
end;
readln;
end.
Hasil Output:
*****
*****
*****
Dapat dilihat bahwa blok kode yang mencetak 5 bintang diulang sebanyak 3 kali oleh perulangan luar.
Studi Kasus 1: Membuat Tabel Perkalian
Nested loop sangat ideal untuk membuat data tabular. Mari kita buat program yang menampilkan tabel perkalian dari 1x1 hingga 5x5. Logikanya, nilai yang dicetak adalah hasil perkalian dari nomor baris dengan nomor kolom.
program Tabel_Perkalian;
uses crt;
var
baris, kolom: integer;
begin
clrscr;
for baris := 1 to 5 do
begin
for kolom := 1 to 5 do
begin
// Cetak hasil perkalian dan beri spasi
write(baris * kolom, ' ');
end;
writeln; // Pindah baris
end;
readln;
end.Studi Kasus 2: Menggambar Pola Segitiga Sederhana
Bagaimana jika jumlah kolom di setiap baris berbeda? Misalnya, baris 1 punya 1 bintang, baris 2 punya 2 bintang, dan seterusnya. Ini adalah penggunaan nested loop yang paling klasik.
Kuncinya adalah membuat batas akhir dari perulangan dalam bergantung pada nilai counter dari perulangan luar. Alih-alih for kolom := 1 to 5 do, kita ubah menjadi for kolom := 1 to baris do.
program Pola_Segitiga;
uses crt;
var
baris, kolom: integer;
begin
clrscr;
for baris := 1 to 5 do
begin
// Jumlah kolom kini bergantung pada 'baris' saat ini
for kolom := 1 to baris do
begin
write('* ');
end;
writeln;
end;
readln;
end.Studi Kasus 3: Pola Segitiga Terbalik Lainnya (Loop Menurun)
Mari kita coba satu variasi terakhir dengan output seperti ini:
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1 Untuk pola ini, baik perulangan luar maupun perulangan dalam sama-sama bergerak turun (DOWNTO).
program Pola_Segitiga_Terbalik_2;
uses crt;
var
baris, kolom: integer;
begin
clrscr;
// Perulangan luar TURUN dari 5 ke 1
for baris := 5 downto 1 do
begin
// Perulangan dalam TURUN dari nilai 'baris' ke 1
for kolom := baris downto 1 do
begin
write(kolom, ' ');
end;
writeln;
end;
readln;
end.Kesimpulan
Perulangan bersarang atau nested loop adalah teknik fundamental yang membuka banyak sekali kemungkinan dalam pemrograman. Seperti yang telah kita lihat, dengan memanipulasi batas awal dan akhir dari perulangan luar dan dalam—bahkan dengan mengkombinasikan FOR-TO-DO dan FOR-DOWNTO-DO—Anda dapat membuat berbagai macam pola dan struktur data dua dimensi.
Kunci utamanya adalah memahami hubungan antara outer loop (yang biasanya mengontrol baris) dan inner loop (yang mengontrol kolom), serta bagaimana perulangan dalam akan selalu menyelesaikan siklusnya untuk setiap langkah dari perulangan luar.
Tantangan: Coba buat program untuk menampilkan pola papan catur sederhana (8x8) menggunakan karakter * dan - secara bergantian.
