PERTEMUAN 03
Struktur Data – Array 1D
ARRAY 1 DIMENSI:
Pendalaman &
Pola Algoritmik
160 menit · 8 Bagian · 21 Slide
Dari variabel banyak ke struktur data yang terorganisasi. Fokus pada manipulasi sistematis dan pola algoritma umum.
01 / 21
Tujuan Pertemuan
🎯 Apa yang akan kita capai?
1Menjelaskan penyimpanan array di memori.
2Akses dan manipulasi array secara sistematis.
3Implementasi pola umum (Traversal, Akumulasi, Cari, Maks/Min).
4Merancang solusi berbasis array untuk kasus sederhana.
02 / 21
Learning Flow
🧭 Struktur Besar
1
🚀 Pembukaan & Koneksi
15 min
2
📝 Struktur Dasar
20 min
3
🔄 Pola 1: Traversal
25 min
4
➕ Pola 2: Akumulasi
30 min
5
🔝 Pola 3: Maks & Min
25 min
6
🔍 Pola 4: Pencarian
20 min
7
🏗 Mini Project
20 min
8
🏁 Refleksi
10 min
03 / 21
Bagian 1 · Pembukaan & Koneksi · 15 menit
🚀 Array 1 Dimensi:
Dari Variabel Banyak
ke Struktur Data

Array bukan hanya “kumpulan variabel”.

Ini adalah struktur data pertama yang benar-benar terorganisasi.

04 / 21
Bagian 1 · Review Pointer
🧠 Review Pointer
?Apa itu alamat memori?
?Apa hubungan pointer dan array?
?Mengapa arr bisa dianggap sebagai alamat?
int arr[5]; // arr adalah alamat elemen pertama
0x100
arr[0]
0x104
arr[1]
0x108
arr[2]
0x10C
arr[3]
0x110
arr[4]
05 / 21
Bagian 1 · Visualisasi
🖥 Visualisasi Memori Array
Contiguous: Disimpan berurutan tanpa celah.
Index = Offset: Jarak dari elemen pertama.
arr[2] berarti lompat 2 elemen dari awal.
index 0
14
index 1
82
index 2
37
index 3
51
index 4
29
🚀 Coba di Memory Visualizer
06 / 21
Bagian 2 · Struktur Dasar · 20 menit
📝 Deklarasi & Inisialisasi
int nilai[5];
int angka[5] = {10, 20, 30, 40, 50};
index 0
10
index 1
20
index 2
30
index 3
40
index 4
50
PENTING
  • Ukuran bersifat tetap (statis).
  • Tipe data setiap elemen harus sama.
07 / 21
Bagian 2 · Akses Elemen
🔍 Mengakses Elemen
cout << angka[0];   // Output: 10
angka[2] = 100;     // Mengubah 30 menjadi 100
index 0
10
index 1
20
index 2
30
index 3
40
index 4
50
⚠️Index dimulai dari 0.
⚠️Kesalahan umum: akses di luar batas.
08 / 21
Bagian 2 · Kesalahan Umum
⚠️ Kesalahan Umum
int data[3] = {1, 2, 3};
cout << data[3];  // Apa yang terjadi?
DISKUSI
  • Mengapa ini berbahaya?
  • Tidak ada error saat compile! (Buffer Overflow)
09 / 21
Bagian 3 · Pola 1: Traversal · 25 menit
🔄 Apa Itu Traversal?

Traversal = Mengunjungi semua elemen satu per satu.

10 / 21
Bagian 3 · Pola Traversal
🛠 Pola Traversal Dasar
for(int i = 0; i < 5; i++){
    cout << angka[i] << endl;
}
1Inisialisasi (i = 0)
2Kondisi (i < ukuran)
3Increment (i++)
11 / 21
Bagian 3 · Input Dinamis
📥 Input Dinamis
int n;
cout << "Jumlah data: ";
cin >> n;

const int MAX = 100;
int data[MAX]; // Menggunakan batas tetap

Catatan: Standar C++ menyarankan ukuran array ditentukan saat kompilasi.

12 / 21
Bagian 4 · Pola 2: Akumulasi · 30 menit
➕ Menghitung Total
int total = 0;

for(int i = 0; i < n; i++){
    total += data[i];
}
Gunakan variabel akumulator (total).
Pola umum untuk banyak algoritma.
13 / 21
Bagian 4 · Rata-rata
📊 Menghitung Rata-rata
float rata = (float)total / n;
DISKUSI
Kenapa kita perlu melakukan casting ke (float)?
14 / 21
Bagian 4 · Studi Kasus
🛠 Studi Kasus 1

Kasus: Input nilai 5 mahasiswa.

Tampilkan:

Total Nilai
Rata-rata Nilai
15 / 21
Bagian 5 · Pola 3: Maks & Min · 25 menit
🔝 Mencari Maks & Min

Strategi:

1Anggap elemen pertama (index 0) sebagai yang terbesar/terkecil sementara.
2Bandingkan dengan setiap elemen berikutnya.
3Jika ada yang lebih besar/kecil, update nilai sementara tadi.
16 / 21
Bagian 5 · Implementasi Maks
🏆 Implementasi Maksimum
int maks = data[0];

for(int i = 1; i < n; i++){
    if(data[i] > maks){
        maks = data[i];
    }
}
Mengapa kita mulai loop dari index 1?
17 / 21
Bagian 5 · Studi Kasus
🛠 Studi Kasus 2

Sistem Nilai Mahasiswa:

  • Tentukan Nilai Tertinggi
  • Tentukan Nilai Terendah
  • Tampilkan siapa yang lulus (Nilai ≥ 60)
18 / 21
Bagian 6 · Pola 4: Pencarian · 20 menit
🔍 Linear Search
int cari = 75;
bool ditemukan = false;

for(int i = 0; i < n; i++){
    if(data[i] == cari){
        ditemukan = true;
        break;
    }
}
DISKUSI
  • Apa fungsi break di sana?
  • Apa yang terjadi jika data tidak ditemukan?
19 / 21
Bagian 7 · Mini Project · 20 menit
🏗 Tantangan Terstruktur

Buat program Inventaris Sederhana:

Input: Jumlah barang & Harga tiap barang.

Output:

Total nilai inventaris.
Harga barang termahal & termurah.
20 / 21
Bagian 8 · Refleksi · 10 menit
🏁 Refleksi Konseptual
?Mengapa array disebut struktur data statis?
?Apa keterbatasannya?
?Bagaimana jika ukuran data berubah-ubah?

➡ Pertemuan 4 (Array 2D)
➡ Pertemuan 5 (Struct)

21 / 21
Kesimpulan
💡 Struktur Algoritmik
Operasi berbasis perulangan.
Setiap elemen harus diperiksa satu per satu.
Sangat cocok untuk data berukuran tetap.