Denah kursi bioskop terdiri atas deret A, B, C, dan tiap deret berisi kursi bernomor. Mencetak seluruh kombinasi berarti mengulang nomor 1 sampai 4 untuk setiap deret, lalu mengulang deretnya sendiri. Struktur loop di dalam loop, atau nested loop, menjawab kebutuhan data berlapis seperti ini: setiap satu iterasi loop luar menuntut satu putaran penuh loop dalam.
Struktur Nested Loop #
Loop luar dan loop dalam memiliki kondisi masing-masing. Runtime menjalankan satu iterasi loop luar, lalu menuntaskan seluruh iterasi loop dalam sebelum kembali ke loop luar; total jumlah eksekusi body adalah perkalian jumlah putaran keduanya.
for (int baris = 1; baris <= 3; baris++)
{
for (int kolom = 1; kolom <= 3; kolom++)
{
Console.Write($"[{baris},{kolom}]");
if (kolom < 3)
{
Console.Write(" ");
}
}
Console.WriteLine();
}Output yang Dihasilkan:
[1,1] [1,2] [1,3]
[2,1] [2,2] [2,3]
[3,1] [3,2] [3,3]Mari kita telaah baris demi baris:
- Baris 1 (
for (int baris ...)): Loop luar mengatur nomor baris dari 1 sampai 3. - Baris 3 (
for (int kolom ...)): Untuk setiap baris, loop dalam menjalankan tiga iterasi penuh dengan variabelkolommiliknya sendiri. - Baris 5–9: Statement
Console.Writemencetak koordinat tanpa pindah baris, danifmenambahkan spasi pemisah kecuali pada kolom terakhir. - Baris 11 (
Console.WriteLine()): Setelah loop dalam selesai, statement ini memindahkan output ke baris berikutnya, lalu loop luar melanjutkan ke baris berikutnya.
Kombinasi totalnya 3 × 3 sama dengan 9 pencetakan. Nilai baris tetap selama satu putaran loop dalam berlangsung, sedangkan kolom berganti di setiap iterasi. Perbedaan peran inilah yang membuat nested loop cocok untuk data dua dimensi: satu variabel mewakili posisi lebar dan satu variabel mewakili posisi tegak.
Menggabungkan Foreach dan For #
Loop luar dan loop dalam tidak wajib sejenis. Kombinasi foreach untuk daftar deret dan for untuk nomor kursi menghasilkan denah kursi yang siap dipakai:
string[] deretKursi = { "A", "B", "C" };
foreach (string deret in deretKursi)
{
for (int nomor = 1; nomor <= 4; nomor++)
{
Console.Write($"{deret}{nomor} ");
}
Console.WriteLine();
}Output yang Dihasilkan:
A1 A2 A3 A4
B1 B2 B3 B4
C1 C2 C3 C4 Loop luar mengunjungi tiga deret, dan loop dalam mencetak empat kursi untuk tiap deret, sehingga totalnya 12 kombinasi. Spasi di akhir setiap baris berasal dari format "{deret}{nomor} " pada Console.Write, yang menambahkan spasi setelah setiap nomor kursi termasuk yang terakhir.