Jika pembahasan tentang perulangan FOR DO, WHILE DO dan REPEAT UNTIL sudah cukup rumit, maka materi kali ini akan membuat anda semakin pusing, hehe…
Dalam tutorial belajar bahasa pemrograman Pascal di Duniailkom kali ini kita akan membahas perulangan bersarang atau nested loop.
Pengertian Perulangan Bersarang (Nested Loop) Pascal
Secara sederhana, perulangan bersarang atau dalam bahasa inggris sering disebut sebagai nested loop adalah perulangan di dalam perulangan. Sebelumnya kita sudah mempelajari tentang nested IF, yakni IF di dalam IF. Nested loop kurang lebih mirip seperti itu.
Berikut format dasar nested loop menggunakan perulangan FOR DO:
FOR (variabel_counter_1) := (nilai_awal_1) TO (nilai_akhir_1) DO begin  (kode program yang ingin diulang disini...)   FOR (variabel_counter_2) := (nilai_awal_2) TO (nilai_akhir_2) DO  begin    (kode program yang ingin diulang disini...)  end;  end;
Materi tentang nested loop ini memang cukup rumit, karena melibatkan 2 kali perulangan. Maka tidak heran jika banyak tugas sekolah / kampus / kuliah yang berkaitan dengan nested loop.
Soal yang hampir selalu keluar adalah membuat segitiga bintang, yang menggunakan prinsip nested loop. Agar lebih paham, mari kita masuk ke contoh kode program.
Contoh Kode Program Pascal untuk Nested Loop
Sebagai permulaan, saya akan membuat sebuah perulangan FOR DO 'biasa', yang kode programnya adalah sebagai berikut:
program nested_loop; uses crt; var  i: integer; begin  clrscr;  for i := 1 to 5 do    begin      writeln('*');    end;     readln; end.
Tidak ada yang baru disini. Saya membuat perulangan FOR DO menaik sebanyak 5 kali dari angka 1 ke 5. Disetiap perulangan ini saya menampilkan sebuah karakter bintang. Hasilnya terlihat 5 bintang ditampilkan ke bawah. Ini karena saya menggunakan perintah writeln.
Bagaimana jika saya ganti writeln menjadi write? Dapatkan anda menebak hasilnya?
program nested_loop; uses crt; var  i: integer; begin  clrscr;  for i := 1 to 5 do    begin      write('*');    end;     readln; end.
Yup, sekarang bintang ini berjejer dari kiri ke kanan dalam 1 baris. Jumlah bintangnya ada 5 buah karena saya memang menjalankan 5 kali perulangan (perintah for i := 1 to 5 do).
Pemahaman tentang perbedaan writeln dan write di dalam perulangan sangat penting untuk bisa memahami konsep nested loop yang kita pelajari.
Baik saya akan membuat sebuah kode program untuk nested loop. Bisakah anda menebak bagaimana hasil akhirnya?
program nested_loop; uses crt; var  i,j: integer; begin  clrscr;  for i := 1 to 5 do  begin          for j := 1 to 5 do      begin        write('#');      end;         writeln('*');  end;     readln; end.
Di awal program saya mendefenisikan 2 buah variabel, yakni i dan j. Kedua variabel ini berfungsi sebagai variabel counter. Variabel i untuk perulangan terluar, dan variabel j untuk perulangan terdalam.
Silahkan anda pelajari sejenak kode program diatas. Kalau perlu corat coret di kertas bagaimana setiap perulangan di jalankan.
Ketika perulangan i dijalankan pertama kali, program akan lanjut ke perulangan j. Di perulangan j ini saya membuat 5 kali perulangan untuk perintah write('#'). Artinya, di layar akan tampil tanda # sebanyak 5 kali. Karena saya menggunakan write, maka tanda pagar akan berjejer dalam 1 baris.
Setelah perulangan j selesai dijalankan sebanyak 5 kali, berikutnya terdapat perintah writeln('*'). Ini akan menampilkan 1 karakter bintang dan pindah baris. Artinya di layar akan tampil #####*. Lima buah tanda pagar berasal dari perulangan j, dan satu tanda bintang berasal dari perulangan i.
Kode program akan kembali menjalankan perulangan i kedua (ingat, saya membuat for i := 1 to 5 do, artinya perulangan i akan dijalankan sebanyak 5 kali). Di perulangan kedua ini akan dijalankan kode program yang kurang lebih sama seperti sebelumnya, dan akan menampilkan tanda #####*.
Ini terus dilakukan sebanyak 5 kali. Hasil akhirnya adalah sebagai berikut:
Jika anda kurang memahami kenapa hasilnya bisa seperti ini, kembali silahkan baca dengan perlahan penjelasan saya sebelumnya.
Anda juga bisa ubah kode program tersebut, misalnya diganti dengan karakter lain, atau menambah total perulangan, kemudian analisa bagaimana hasilnya. Pemahaman ini sangat diperlukan untuk mengerti bagaimana konsep nested loop.
Tutorial tentang nested loop ini akan berlanjut, dimana kita akan menggunakan variabel counter i dan j di dalam perulangan bersarang.
bang Andre,dari contoh kode program untuk nested loop menggunakan variabel i dan j,kenapa pengulangannya kebawah ,tidak kesamping.
hasil nya mengapa tidak : #####*#####*#####*#####*#####*
tolong dijeskan bang Andre
Karena di akhir perulangan i, saya menggunakan writeln('*'), sehingga perulangan berikutnya akan tampil di bawah (baris baru). Kalau hanya menggunakan write('*'), hasilnya akan kesamping…
bang kalau repeat until bersarang gimana??
Konsepnya sama saja, tinggal disesuaikan dengan program yang akan dirancang…
Kalau untuk tutorialnya, saya tampung dulu ya…
Kalau pengen hasilnya berurut kayak
*
**
***
****
Sampai 10 terus langsung lanjut 10 le 1 gimana caranya?
Bisa lanjut kesini: https://www.duniailkom.com/tutorial-belajar-pascal-cara-membuat-segitiga-bintang-bahasa-pemrograman-pascal/