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.

csharp
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:

text
[1,1] [1,2] [1,3]
[2,1] [2,2] [2,3]
[3,1] [3,2] [3,3]

Mari kita telaah baris demi baris:

  1. Baris 1 (for (int baris ...)): Loop luar mengatur nomor baris dari 1 sampai 3.
  2. Baris 3 (for (int kolom ...)): Untuk setiap baris, loop dalam menjalankan tiga iterasi penuh dengan variabel kolom miliknya sendiri.
  3. Baris 5–9: Statement Console.Write mencetak koordinat tanpa pindah baris, dan if menambahkan spasi pemisah kecuali pada kolom terakhir.
  4. 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:

csharp
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:

text
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.