#5 Struct
overview

#5 Struct

September 15, 2026
3 min read

Di bab ini dua array paralel kita yang rapuh diganti sama struct, cara C++ nyusun data jadi satu “paket” yang rapi. Program Data Nilai Mahasiswa akhirnya kelihatan profesional!

Struct Itu Kayak Formulir Pendaftaran

Bayangin kita daftar ulang kampus, ngisi satu formulir: ada kolom nama, kolom NIM, kolom IPK, kolom alamat, semuanya di satu lembar. Nggak mungkin kan kalau tiap data harus nyebar di lembar terpisah? Satu orang = satu formulir, lengkap.

Nah, struct itu persis kayak formulir: tipe data buatan sendiri yang menggabungkan beberapa data lain jadi satu kesatuan. Kalau tadi kita punya string nama[5] dan float ipk[5] (dua lembar terpisah), sekarang kita bikin satu tipe Mahasiswa yang isinya nama + NIM + IPK sekaligus.

Ini jawaban dari keluhan kita di bab 04: “10 atribut per mahasiswa = 10 array paralel? Nggak kebayang.” Dengan struct, tinggal tambah kolom di formulirnya.

Bikin Struct: Cetak Biru Formulir

Struct dideklarasikan di luar main; dia cuma “cetak biru”, belum nyimpen data apa-apa:

struct Mahasiswa {
string nama;
int nim;
float ipk;
};

Penting-penting, perhatiin detailnya:

  • struct Mahasiswa { ... }; dengan huruf besar di awal itu konvensi (bukan aturan keras) biar keliatan ini tipe buatan. Anggota struct (nama, nim, ipk) disebut member atau field.
  • Setiap member ditulis kayak deklarasi variabel biasa: tipe nama;.
  • Jangan lupa titik koma ; setelah kurung kurawal tutup! Ini trap klasik: struct { } butuh ; di akhir, beda sama blok fungsi { } yang nggak butuh. Lupa titik koma = error aneh yang bikin garuk-garuk kepala.

Setelah “cetak biru”-nya ada, kita bisa bikin variabel bertipe struct:

Mahasiswa mhs; // satu "formulir" kosong
mhs.nama = "Budi"; // ngisi kolomnya pake titik (.)
mhs.nim = 123456;
mhs.ipk = 3.75;

Akses member pakai titik (.): mhs.nama, mhs.nim, mhs.ipk. Bacanya “formulir mhs, kolom nama”.

Bisa juga langsung diisi sekaligus pas deklarasi:

Mahasiswa mhs = {"Budi", 123456, 3.75};

Nilainya diisi berurutan sesuai urutan member: nama → "Budi", nim → 123456, ipk → 3.75. Gampang kan.

Array of Struct: Satu Lemari, Banyak Formulir

Ini combo paling jago: struct di dalam array. Satu array, tiap elemennya satu “formulir” lengkap.

const int JUMLAH = 3;
Mahasiswa mhs[JUMLAH]; // 3 formulir: mhs[0], mhs[1], mhs[2]
mhs[0].nama = "Budi";
mhs[0].ipk = 3.75;
mhs[1].nama = "Ani";
mhs[1].ipk = 2.5;

Pola aksesnya mhs[i].nama: indeks array dulu, terus titik, terus member. Dibacanya “formulir nomor i, kolom nama”.

Gabungin sama for dan cin, kita bisa input banyak mahasiswa dengan rapi, dan nggak ada lagi dua array yang harus sejajar terus-terusan.

Program Berkelanjutan: Data Mahasiswa yang Rapih

Ini dia momennya. Program bab 05 (yang pakai dua array paralel) kita rombak total: satu array Mahasiswa, lengkap dengan NIM yang tadinya nggak pernah kesimpen.

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

Bandingin sama bab 05, bedanya jelas:

  • Dulu: string nama[3]; float ipk[3];, dua array terpisah yang harus “dijaga biar sejajar”.
  • Sekarang: Mahasiswa mhs[3];, satu array di mana tiap elemen bawa semua datanya. Nggak ada lagi istilah “sejajar”.
  • Bonusnya, NIM yang di bab 1 cuma numpang lewat sekarang beneran kesimpen rapi di tiap mahasiswa.

Contoh jalannya:

--- Mahasiswa ke-1 ---
Nama: Budi
NIM : 123456
IPK : 3.75
--- Mahasiswa ke-2 ---
Nama: Ani
NIM : 234567
IPK : 2.5
--- Mahasiswa ke-3 ---
Nama: Citra
NIM : 345678
IPK : 2.8
=== Data Mahasiswa ===
1. Budi (NIM 123456, IPK 3.75)
2. Ani (NIM 234567, IPK 2.5)
3. Citra (NIM 345678, IPK 2.8)

Data mahasiswa sekarang satu paket utuh. Di bab berikutnya, bab terakhir seri ini, kita bakal ngintip ke balik layar: di mana sih data-data ini disimpen di memori? Jawabannya, pointer. 🎯

Latihan Soal: Data Buku Perpustakaan

Kita jadi sukarelawan di perpustakaan kampus dan ditugasinn bikin program data buku. Bikinkan program yang:

  1. Bikin struct Buku dengan member: judul (string), penulis (string), dan tahun (int).
  2. Simpan 3 buku dalam array of struct, diisi lewat input dari keyboard.
  3. Tampilkan daftarnya rapi, contohnya:
    ===== DAFTAR BUKU =====
    4. Pemrograman C++ (Andi Wijaya, 2021)
    5. Algoritma dan Struktur Data (Siti Rahma, 2019)
    6. Sistem Operasi (Budi Santoso, 2020)

💡 Hint: kita udah punya semua bahannya. Pola for + cin >> mhs[i].member dari program utama tinggal diganti membernya jadi judul/penulis/tahun.

Discussion