struct dalam C++.struct dan union.enumeration untuk kode yang lebih deskriptif.Bagaimana cara menyimpan data yang terdiri dari berbagai tipe berbeda dalam satu kesatuan?
Mahasiswa sudah mempelajari Array 1D & 2D.
int nilai[5] = {80, 75, 90, 85, 70};
Menyimpan data mahasiswa dengan 4 array terpisah:
Definisi: Struct adalah kumpulan variabel dengan tipe berbeda yang dikelompokkan dalam satu unit.
struct Mahasiswa {
string nim; // Anggota 1
string nama; // Anggota 2
float ipk; // Anggota 3
int semester; // Anggota 4
}; // <--- Jangan lupa titik koma!
struct: Keyword untuk memulai definisi.Mahasiswa: Nama tipe data baru buatan Anda.{...};: Daftar anggota dan diakhiri semicolon.Mahasiswa mhs1;
Sekarang mhs1 adalah sebuah objek yang memiliki 4 "ruangan" di dalamnya.
mhs1.nim = "2401010001";
mhs1.nama = "Budi";
mhs1.ipk = 3.75;
mhs1.semester = 4;
cout << mhs1.nama; // Output: Budi
. untuk mengakses atau mengisi anggota struct.
Masalah: cin >> berhenti saat bertemu spasi.
cin.ignore(); // Membersihkan buffer
getline(cin, mhs1.nama); // Membaca satu baris penuh
getline jika Anda ingin menginput nama lengkap yang mengandung spasi.
Buatlah struct Buku dengan field sebagai berikut:
judul (string)pengarang (string)harga (int)Lalu buat satu variabel buku1 dan isi datanya!
Mahasiswa daftar[3]; // Membuat 3 slot mahasiswa
Akses: daftar[0].nama = "Budi";
Program ini akan meminta input 3 mahasiswa, lalu menampilkan siapa yang memiliki IPK paling tinggi.
Dalam kondisi tertentu (seperti sistem tertanam/IoT), memori sangat terbatas.
Contoh: Data sensor yang bisa berupa int (suhu bulat) atau float (suhu presisi).
union Data {
int angka;
float desimal;
};
Data d1;
d1.angka = 10;
d1.desimal = 3.14; // Nilai 'angka' akan tertimpa!
int status = 2;
Kode di atas sulit dibaca dan dipahami!
enum Status { AKTIF, CUTI, LULUS };
Status mhs1 = LULUS;
if (mhs1 == LULUS) { ... }
Mapping di belakang layar:
Masalah: cin tidak tahu cara mengisi variabel Enum secara langsung.
int pilihan;
cin >> pilihan;
mhs1.kondisi = static_cast<Status>(pilihan);
static_cast<Tipe> digunakan untuk mengubah satu tipe ke tipe lain secara eksplisit.
struct Mahasiswa {
string nama;
Status kondisi; // Menggunakan enum Status
};
Mahasiswa s1;
s1.nama = "Andi";
s1.kondisi = AKTIF;
Ini membuat data mahasiswa jauh lebih deskriptif dibanding hanya menggunakan angka int.
JenisKelamin { LAKI, PEREMPUAN }.Pasien yang berisi:
Fitur:
struct lebih baik daripada array paralel?union daripada struct?enum dibanding const int?Di pertemuan berikutnya, kita akan belajar Linked List.
Node dalam linked list didefinisikan menggunakan Struct.