Nilai ujian satu kelas sering direkam dalam bentuk tabel: setiap baris mewakili siswa, setiap kolom mewakili mata pelajaran. Array satu dimensi tidak sanggup memodelkan dua arah tersebut secara langsung. Array multidimensi menyediakan struktur baris dan kolom dalam satu objek, sehingga posisi data cukup dinyatakan dengan sepasang indeks.
Struktur Array Dua Dimensi #
Deklarasi array dua dimensi memakai satu koma di dalam kurung siku, misalnya int[,]. Inisialisasinya ditulis bertingkat: kurung luar memuat baris, kurung dalam memuat kolom. Properti Rank melaporkan jumlah dimensi, sedangkan method GetLength(dimensi) melaporkan ukuran tiap dimensi.
int[,] nilaiKelas =
{
{ 80, 75, 90 },
{ 85, 70, 95 }
};
Console.WriteLine(nilaiKelas.Rank);
Console.WriteLine(nilaiKelas.GetLength(0));
Console.WriteLine(nilaiKelas.GetLength(1));
Console.WriteLine(nilaiKelas.Length);
Console.WriteLine(nilaiKelas[1, 2]);Output yang Dihasilkan:
2
2
3
6
95Mari kita telaah baris demi baris:
- Baris 1-4: Array
nilaiKelasdibuat berukuran 2 baris dan 3 kolom; tanda koma padaint[,]menandai array dua dimensi. - Baris 6 (
nilaiKelas.Rank):Rankmelaporkan jumlah dimensi, yaitu2. - Baris 7-8 (
GetLength(0)danGetLength(1)): Dimensi0adalah baris (2 elemen), dimensi1adalah kolom (3 elemen). - Baris 9 (
nilaiKelas.Length):Lengthmenghitung seluruh sel, yaitu2 x 3 = 6. - Baris 10 (
nilaiKelas[1, 2]): Indeks dipisah koma; baris1kolom2memuat nilai95.
Menelusuri Baris dan Kolom #
Foreach menelusuri array multidimensi dalam urutan baris: seluruh baris pertama terlebih dahulu, lalu baris berikutnya. Bila posisi baris dan kolom dibutuhkan, gunakan dua for loop bersarang.
foreach (int nilai in nilaiKelas)
{
Console.Write($"{nilai} ");
}
Console.WriteLine();
for (int baris = 0; baris < nilaiKelas.GetLength(0); baris++)
{
int jumlahBaris = 0;
for (int kolom = 0; kolom < nilaiKelas.GetLength(1); kolom++)
{
jumlahBaris += nilaiKelas[baris, kolom];
}
Console.WriteLine($"Jumlah baris {baris}: {jumlahBaris}");
}Output yang Dihasilkan:
80 75 90 85 70 95
Jumlah baris 0: 245
Jumlah baris 1: 250Foreach mencetak keenam nilai secara berurutan tanpa mengetahui batas baris dan kolom; bagi foreach, array multidimensi hanyalah rangkaian sel yang dilewati dari awal ke akhir. Loop luar menjalankan jumlahBaris baru untuk tiap baris, dan loop dalam menjumlahkan seluruh kolom pada baris tersebut: 80 + 75 + 90 menghasilkan 245, lalu 85 + 70 + 95 menghasilkan 250. Perhatikan pula bahwa Console.Write mencetak tanpa pindah baris, sehingga keenam nilai tampil dalam satu deret.
Array Lebih dari Dua Dimensi #
C# tidak membatasi jumlah dimensi pada satu koma saja. Array tiga dimensi ditulis int[,,], misalnya data penjualan per cabang, per hari, dan per jam. Cara mengaksesnya tetap sama: tiga indeks dipisah koma seperti data[1, 2, 0], dan Rank melaporkan angka 3 untuk struktur tersebut.
Kebutuhan seperti itu jarang muncul di program sehari-hari, dan bila muncul, struktur data yang lebih ekspresif biasanya lebih mudah dibaca. Untuk baris yang panjangnya tidak seragam, array jagged pada bab berikutnya memberikan fleksibilitas yang tidak dimiliki array multidimensi.