#3 Array
overview

#3 Array

September 15, 2026
2 min read

Di bab ini program kita belajar nyimpen banyak data sekaligus pakai array. Dari yang tadinya cuma 3 mahasiswa, sekarang bisa 5, 10, 100, tanpa bikin 100 variabel. Program Data Nilai Mahasiswa makin mirip beneran!

Array Itu Deretan Kotak Bernomor

Di bab 1 kita kenal variabel = kotak berlabel. Nah, kalau kita butuh 5 kotak buat 5 nilai, apa kita bikin 5 variabel kayak nilai1, nilai2, nilai3…? Coba bayangin kalau nilainya 100, udah pusing duluan.

Di sinilah array masuk. Array itu satu variabel yang berisi deretan kotak bernomor. Bayangin lemari arsip: satu lemari, banyak laci, tiap laci punya nomor.

int nilai[5]; // satu array berisi 5 kotak bertipe int
string nama[3]; // satu array berisi 3 kotak bertipe string

Yang paling penting dan sering bikin orang baru bingung: nomor indeksnya mulai dari 0, bukan 1. Jadi array int nilai[5] punya kotak dengan nomor 0, 1, 2, 3, dan 4, total 5.

nilai[0] nilai[1] nilai[2] nilai[3] nilai[4]
?? ?? ?? ?? ??

Buat ngisi kotaknya, kita pakai nomor indeks dengan kurung siku:

int nilai[5];
nilai[0] = 80;
nilai[1] = 90;
nilai[2] = 85;
nilai[3] = 70;
nilai[4] = 95;

Atau kalau mau langsung diisi sekaligus pas deklarasi, ini namanya inisialisasi:

int nilai[3] = {80, 90, 85};

Nah, perhatiin: {80, 90, 85} itu otomatis masuk ke nilai[0], nilai[1], nilai[2]. Nilai pertama = indeks 0, terus ke bawah.

Untuk ngambil nilainya, sama aja, sebut indeksnya:

cout << nilai[0] << endl; // cetak 80
cout << nilai[2] << endl; // cetak 85

⚠️ Hati-hati: Index Out of Bounds

Ini salah satu lubang klasik di C++. Kalau array luarnya int nilai[5], maka indeks yang sah cuma 0 sampai 4. Kalau kita coba akses nilai[5] atau nilai[10], C++ nggak akan memperingatkan; dia cuma baca atau ngisi memori yang bukan punya array itu. Hasilnya bisa nilai sampah, crash, atau program ngebug misterius.

Beda dari bahasa lain yang langsung teriak “IndexError!”, C++ percaya kita tau apa yang kita lakuin. Jadi disiplin: selalu pastikan indeks di dalam batas 0 sampai ukuran-1.

Ngeloparin Array: Kerja Bak Air Mengalir

Karena indeks array itu angka berurutan (0, 1, 2, 3, …), for adalah pasangannya yang sempurna. Ini pola paling umum di seluruh dunia C++:

const int JUMLAH = 5;
int nilai[JUMLAH];
// ngisi
for (int i = 0; i < JUMLAH; i++) {
cout << "Nilai ke-" << (i + 1) << ": ";
cin >> nilai[i];
}
// nampilin
for (int i = 0; i < JUMLAH; i++) {
cout << "Nilai ke-" << (i + 1) << " = " << nilai[i] << endl;
}

Perhatiin dua hal penting:

  1. const int JUMLAH = 5; dipake buat ukuran array. Kenapa? Karena ukuran array di C++ harus angka yang diketahui dari awal, dan pakai JUMLAH sekali aja bikin kode gampang diubah (ganti 5 jadi 100 = ganti satu tempat doang). Plus JUMLAH ini dipake di loop, jadi ukuran dan loop selalu konsisten, nggak bakal kebablasan.
  2. i < JUMLAH di kondisi loop yang ngejamin kita nggak nyentuh indeks di luar batas. Loop jalan dari i = 0 sampai i = 4; pas i = 5, kondisi 5 < 5 jadi false dan loop berhenti. Aman.

Kalau kita liat (i + 1) di dalam output, itu cuma biar tampilannya mulai dari 1 (buat manusia) meskipun indeks aslinya mulai dari 0.

Program Berkelanjutan: Nyimpen 5 Mahasiswa

Oke, upgrade program kita. Bab sebelumnya cuma bisa 3 mahasiswa, dan datanya langsung diproses lalu ilang. Sekarang dengan array, kita bisa nyimpen data 5 mahasiswa terus nampilin lagi kapan aja.

#include <iostream>
using namespace std;
int main() {
const int JUMLAH = 5;
string nama[JUMLAH];
float ipk[JUMLAH];
for (int i = 0; i < JUMLAH; i++) {
cout << "--- Mahasiswa ke-" << (i + 1) << " ---" << endl;
cout << "Nama: ";
cin >> nama[i];
cout << "IPK : ";
cin >> ipk[i];
}
cout << "\n=== Data Mahasiswa ===" << endl;
for (int i = 0; i < JUMLAH; i++) {
cout << (i + 1) << ". " << nama[i] << " (IPK " << ipk[i] << ")" << endl;
}
return 0;
}

Yang baru di sini:

  • Ada dua array paralel: string nama[JUMLAH] dan float ipk[JUMLAH]. Ini pola “dua array sejajar”: nama[i] dan ipk[i] di indeks yang sama itu milik mahasiswa yang sama. nama[0] (“Budi”) pasangannya ipk[0] (3.75).
  • Loop input muter 5 kali; tiap muter ngisi nama[i] dan ipk[i].
  • Loop tampil muter 5 kali lagi, nyetak semua data yang udah kesimpen. Ini yang ngebuktiin array “nyimpen”: datanya bertahan.

Contoh jalannya:

--- Mahasiswa ke-1 ---
Nama: Budi
IPK : 3.75
--- Mahasiswa ke-2 ---
Nama: Ani
IPK : 2.5
... (dan seterusnya)
=== Data Mahasiswa ===
1. Budi (IPK 3.75)
2. Ani (IPK 2.5)
3. Citra (IPK 2.8)
... (dan seterusnya)

Kelemahan program ini: dua array paralel itu rapuh. Coba bayangin someday harus nyimpen 10 atribut per mahasiswa, 10 array paralel? Nggak kebayang. Dan kode input/tampil sekarang numpuk di main, bakal makin panjang tiap tambah fitur. Bab 05 akan bungkus logika jadi fungsi, dan bab 06 bakal rapiin datanya pake struct. Sabar ya, pelan-pelan kece!

Latihan Soal: Analisis Nilai Tugas

Dosen kita baru aja ngasih 10 nilai tugas dan mau kita jadi “asisten” yang ngolah nilainya. Bikinkan program yang:

  1. Menerima 10 nilai tugas (int) ke dalam satu array.
  2. Menampilkan semua nilai yang tadi diinput.
  3. Menampilkan nilai tertinggi, nilai terendah, dan rata-ratanya.

Contoh jalannya:

Masukkan 10 nilai tugas:
Nilai ke-1: 80
Nilai ke-2: 90
... (sampai 10)
=== Hasil Analisis ===
Semua nilai: 80 90 85 70 95 88 92 60 75 81
Nilai tertinggi : 95
Nilai terendah : 60
Rata-rata : 81.6

💡 Hint: buat cari nilai tertinggi, mulai dari tertinggi = nilai[0], terus bandingin satu-satu pake if. Loop + if = senjata kombo kita di bab ini.

Discussion