PERTEMUAN 04
Struktur Data โ€“ Array 2D
ARRAY 2 DIMENSI:
Matriks &
Data Tabular
160 menit ยท 20 Bagian Materi
Representasi data dalam bentuk tabel. Dari satu baris ke baris dan kolom yang terorganisasi.
01 / 20
Tujuan Pertemuan
๐ŸŽฏ Apa yang akan kita capai?
1Memahami konsep baris dan kolom pada Array 2D.
2Deklarasi, inisialisasi, dan akses elemen matriks.
3Implementasi Traversal 2D menggunakan Nested Loop.
4Operasi dasar matriks (Penjumlahan & Transpos).
02 / 20
Learning Flow
๐Ÿงญ Struktur Besar
1
๐Ÿš€ Review & Motivasi
15 min
2
๐Ÿ“ Konsep Dasar
25 min
3
๐Ÿ”„ Traversal & Contoh
30 min
4
๐Ÿ›  Studi Kasus
30 min
5
โž• Operasi Matriks
15 min
6
๐Ÿ— Praktikum
40 min
7
๐Ÿ Refleksi
20 min
03 / 20
Bagian 1 ยท Review & Motivasi
๐Ÿง  Review Array 1D
โ–ธDisimpan berurutan di memori.
โ–ธDiakses dengan satu indeks.
โ–ธCocok untuk data berbentuk list.
int nilai[5];
DISKUSI
Jika ada 5 mahasiswa dan 3 mata kuliah, apakah Array 1D cukup? Apa masalahnya jika pakai 3 array terpisah?
04 / 20
Bagian 1 ยท Masalah Nyata
๐Ÿ“Š Sistem Nilai Mahasiswa
Mahasiswa Algoritma Matematika Inggris
Mhs 1859080
Mhs 2707585
Mhs 3958892
Mhs 4808288
Mhs 5757880
Bagaimana cara menyimpan data tabular seperti ini secara efisien dalam program?
05 / 20
Bagian 2 ยท Konsep Dasar
๐Ÿ’ก Solusi: Array 2 Dimensi
int nilai[5][3];
1Indeks pertama (5): Jumlah Baris (Mahasiswa)
2Indeks kedua (3): Jumlah Kolom (Mata Kuliah)

nilai[2][1] berarti mahasiswa ke-3, mata kuliah ke-2 (karena indeks mulai dari 0).

0,0
85
0,1
90
0,2
80
1,0
70
1,1
75
1,2
85
2,0
95
2,1
88
2,2
92
3,0
80
3,1
82
3,2
88
4,0
75
4,1
78
4,2
80
06 / 20
Bagian 2 ยท Visualisasi
๐Ÿ–ฅ Visualisasi Logis vs Memori

Visualisasi Logis (Tabel 5×3):

0,0
85
0,1
90
0,2
80
1,0
70
1,1
75
1,2
85
2,0
95
2,1
88
2,2
92
3,0
80
3,1
82
3,2
88
4,0
75
4,1
78
4,2
80

Visualisasi Memori (Linear):

0x100
85
0x104
90
0x108
80
0x10C
70
0x110
75
0x114
85
0x118
95
0x11C
88
0x120
92
0x124
80
0x128
82
0x12C
88
0x130
75
0x134
78
0x138
80
Meskipun kita melihatnya sebagai tabel, di memori data tetap disimpan linear berurutan (Row-Major Order).
07 / 20
Bagian 2 ยท Struktur Dasar
๐Ÿ“ Deklarasi & Inisialisasi
int matriks[2][3] = {
    {1, 2, 3}, // Baris 0
    {4, 5, 6}  // Baris 1
};
โ–ธTotal elemen = 2 × 3 = 6.
โ–ธSetiap baris dibungkus kurung kurawal {}.
08 / 20
Bagian 2 ยท Akses Elemen
๐Ÿ” Mengakses Elemen
cout << matriks[0][1];  // Output: 2
matriks[1][2] = 10;     // Mengubah 6 menjadi 10
[0][0]
1
[0][1]
2
[0][2]
3
[1][0]
4
[1][1]
5
[1][2]
6
HATI-HATI
Kesalahan umum: Tertukar antara indeks baris dan kolom.
09 / 20
Bagian 3 ยท Traversal & Contoh
๐Ÿ”„ Traversal 2D:
Nested Loop
for(int i = 0; i < baris; i++){
    for(int j = 0; j < kolom; j++){
        cout << matriks[i][j] << " ";
    }
    cout << endl;
}
1Loop luar (i) mengontrol baris mana yang sedang diakses.
2Loop dalam (j) mengunjungi setiap kolom pada baris tersebut.
Terminal Output
10 / 20
Bagian 3 ยท Template Umum
๐Ÿ›  Template Umum Traversal
for(int i = 0; i < jumlahBaris; i++){
    for(int j = 0; j < jumlahKolom; j++){
        // Proses elemen matriks[i][j]
    }
}
Pola ini adalah fondasi untuk hampir semua manipulasi data 2D.
11 / 20
Bagian 4 ยท Studi Kasus
๐Ÿ›  Studi Kasus 1:
Sistem Nilai

Kebutuhan:

  • Data: 5 Mahasiswa, 3 Mata Kuliah.
  • Tugas:
    1. Input nilai dari keyboard.
    2. Hitung rata-rata nilai tiap mahasiswa.
    3. Hitung rata-rata nilai tiap mata kuliah.
int nilai[5][3];
12 / 20
Bagian 4 ยท Input Data
๐Ÿ“ฅ Input Data 2D
for(int i = 0; i < 5; i++){
    for(int j = 0; j < 3; j++){
        cout << "Nilai mhs " << i+1
             << " matkul " << j+1 << ": ";
        cin >> nilai[i][j];
    }
}
โ–ธi+1 dan j+1 hanya untuk tampilan (user-friendly).
โ–ธPenyimpanan tetap di [i][j] (mulai dari 0).
13 / 20
Bagian 4 ยท Pengolahan Baris
๐Ÿ“Š Rata-rata Tiap Mahasiswa
for(int i = 0; i < 5; i++){
    int jumlah = 0;
    for(int j = 0; j < 3; j++){
        jumlah += nilai[i][j];
    }
    cout << "Rata-rata mhs " << i+1
         << ": " << (float)jumlah / 3 << endl;
}
KONSEP PENTING
Variabel jumlah harus di-reset menjadi 0 setiap kali ganti baris (mahasiswa baru).
14 / 20
Bagian 4 ยท Pengolahan Kolom
๐Ÿ“‰ Rata-rata Tiap Mata Kuliah
for(int j = 0; j < 3; j++){ // Loop Kolom di luar
    int jumlah = 0;
    for(int i = 0; i < 5; i++){ // Loop Baris di dalam
        jumlah += nilai[i][j];
    }
    cout << "Rata-rata matkul " << j+1
         << ": " << (float)jumlah / 5 << endl;
}
Bandingkan dengan slide sebelumnya. Di sini kita menukar urutan loop untuk memproses data per kolom.
15 / 20
Bagian 5 ยท Operasi Matriks
โž• Penjumlahan Dua Matriks
// Syarat: Ukuran A dan B harus sama
for(int i = 0; i < 3; i++){
    for(int j = 0; j < 3; j++){
        C[i][j] = A[i][j] + B[i][j];
    }
}
1
2
3
4
+
5
6
7
8
=
6
8
10
12
16 / 20
Bagian 5 ยท Operasi Matriks
๐Ÿ”ƒ Transpos Matriks
for(int i = 0; i < 3; i++){
    for(int j = 0; j < 3; j++){
        matriksTranspos[j][i] = matriks[i][j];
    }
}

Matriks Asal:

0,0
1
0,1
2
1,0
3
1,1
4
โฎ•

Transpos:

0,0
1
0,1
3
1,0
2
1,1
4
Matrix Transpose Illustration
17 / 20
Bagian 6 ยท Praktikum
๐Ÿ— Tantangan Terstruktur

Buatlah program untuk mengecek Matriks Simetris (3×3):

1Input semua elemen matriks 3×3 dari keyboard.
2Tentukan apakah matriks tersebut simetris (elemen [i][j] sama dengan [j][i]).
3Tampilkan output "YA" jika simetris, atau "TIDAK" jika tidak simetris.
PETUNJUK
Matriks simetris adalah matriks yang sama dengan transposnya. Contoh: Baris 1 sama dengan Kolom 1, dst.
18 / 20
Bagian 7 ยท Refleksi
๐Ÿ Diskusi Reflektif
?Apa perbedaan mendasar pola Traversal 1D dan 2D?
?Mengapa kita membutuhkan nested loop untuk Array 2D?
?Kapan penggunaan Array 2D lebih tepat dibanding Array 1D?
19 / 20
Kesimpulan
๐Ÿ’ก Rangkuman Hari Ini
โœ”Array 2D menyimpan data dalam baris dan kolom.
โœ”Nested loop adalah kunci akses data tabular.
โœ”Operasi baris vs kolom ditentukan oleh urutan loop.
โœ”Penjumlahan dan transpos adalah operasi dasar matriks.
NEXT STEP
Bagaimana jika kita ingin menyimpan data dengan tipe berbeda (Nama, NIM, IPK) dalam satu struktur?
โžก Pertemuan 5: Struct
20 / 20
Penutup
๐Ÿš€ Dunia Nyata Array 2D

Konsep yang Anda pelajari hari ini adalah dasar dari:

โ–ธPengolahan Citra: Gambar adalah matriks piksel.
โ–ธGame: Board games (Catur, Tic-Tac-Toe).
โ–ธData Science: Spreadsheet dan Tabel Database.