Looping Bersarang

Istilah looping bersarang akan dijumpai apabila kita menggunakan looping di dalam looping yang sudah ada. Maka looping yang ada di bagian dalam harus diselesaikan terlebih dahulu sebelum kembali ke looping yang ada di luarnya. Tidak hanya dapat membuat dua looping, kita bahkan dapat membuat tiga atau empat looping yang saling bersarang di dalam looping yang ada di sebelah luarnya. Sekarang mungkin akan muncul pertanyaan, mengapa kita menggunakan looping bersarang, jika kita dapat menggunakan looping tunggal? Hal ini kembali lagi pada pemecahan masalah yang kita hadapi dan efisiensi penulisan program. Mungkin tidak akan menjadi masalah jika kode program kita hanya beberapa baris atau beberapa puluh baris. Tetapi hal ini akan menjadi masalah, jika kode program kita sudah mencapai ribuan baris dan mungkin juga sudah menggunakan variabel dengan tipe data yang bermacam-macam serta penggunaan prosedur dan fungsi-fungsi yang dideklarasikan sendiri.
Bentuk looping bersarang sebagai berikut;
Looping I
… Looping II
…… Looping III
………
Jika kita membaca programnya akan berjalan dari looping I lalu ke looping II dan looping III. Looping yang ada pada bagian dalam harus diselesaikan terlebih dahulu sebelum kembali ke looping yang ada di sebelah luarnya. Looping III diselesaikan sebelum kembali ke looping II, looping II diselesaikan sebelum kembali ke looping I. Pada saat looping I diulang kembali, maka proses diatas akan kembali diulang. Program berhenti pada saat looping I selesai dikerjakan.
Pascal kembali memberikan kebebasan kepada kita untuk memilih dan menggunakan jenis looping yang akan kita gunakan. Kita dapat menggunakan looping WHILE … DO semua, atau digabungkan dengan looping FOR … DO dan REPEAT … UNTIL

Perhatikan contoh programnya berikut ini;
Uses crt;
Var
a,b,i:integer;
Begin
Clrscr;
a:=1;
i:=1;
While a<=2 do
Begin
For b:=1 to 2 do
Begin
write(i);
i:=i+1;
End;
a:=a+1;
End;
End.

Contoh program diatas menggabungkan dua buah looping WHILE … DO dengan FOR … DO menjadikannya sebagai bentuk looping bersarang dimana looping FOR … DO ada di sebelah dalam.
Adapun jalannya program seperti ini;
Nilai awal: a=1, i=1
Looping I
1<=2? Benar, looping I dijalankan;
Looping II
b=1; cetak nilai i=1
i=1+1 = 2
b=2; cetak nilai i=2
i=2+1 = 3
* Kembali lagi ke looping yang ada di sebelah luar
Looping I
2<=2? Benar, looping I dijalankan;
Looping II
b=1; cetak nilai i=3
i=3+1 = 4
b=2; cetak nilai i=4
i=4+1 = 5
* Kembali lagi ke looping yang ada di sebelah luar
Looping I
3<=2? Salah, looping I tidak dijalankan;
Karena looping I tidak dijalankan, maka otomatis looping II juga tidak akan dikerjakan, karena looping II ada di dalam looping I

Dengan memanfaatkan looping bersarang, coba anda buat bentuk output seperti ini;
*
**
***
****
*****