Pertemuan 17
ENUM & STRUCT
Dasar Pemrograman
Renni Angreni, S.Kom.
Mendefinisikan Tipe Data Baru
• Dalam mendeklarasikan variabel, kita
menuliskan :
tipeData namaVariabel;
• tipeData yang bisa dipakai, antara lain :
int, unsigned int, long int,
float, double, char, string, dll.
• Untuk berikutnya, kita dapat
menggunakan enum (enumerasi),
struct (struktur) atau class (kelas)
sebagai nama tipe.
ENUM
• Enumerasi / enum biasa dipakai kalau
kemungkinan nilai dari suatu data telah diketahui,
dan jumlah kemungkinannya tidak banyak.
Misalnya untuk menyatakan nama hari, jenis
kelamin, atau jenis penjualan.
• Sintaxnya :
enum namaEnumerasi { nilai-nilai
yang sah};
• Contoh :
enum nama_hari { Senin, Selasa,
Rabu, Kamis, Jumat, Sabtu, Minggu };
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
enum nama_hari { Senin, Selasa, Rabu, Kamis,
Jumat, Sabtu, Minggu };
nama_hari hari1, hari2;
hari1 = Senin;
hari2 = Jumat;
int selisih = hari2 - hari1;
cout<<"Selisih hari = "<<selisih<<endl;
_getch();
}
• Pada contoh di atas terdapat pendeklarasian tipe enum
berupa nama_hari.
enum nama_hari { Senin, Selasa, Rabu,
Kamis, Jumat, Sabtu, Minggu };
• Pendeklarasian ini menyatakan bahwa anggota tipe enum
nama_hari berupa Senin, Selasa, Rabu, dst…
• Selanjutnya nama_hari hari1, hari2; merupakan
pernyataan untuk mendefinisikan variabel bernama hari1
dan hari2 yang bertipe nama_hari (enum). Masingmasing variabel dapat diisi dengan sebuah anggota dari
tipe enum nama_hari.
hari1 = Senin;
hari2 = Jumat;
• Adapun pernyataan int selisih = hari2 – hari1;
menunjukkan pengenaan operasi matematika pada
variabel bertipe enum dimungkinkan.
• Pada contoh ini variabel selisih akan bernilai 4 (hasil
eksekusi) karena variabel hari2 berisi Jumat yang
bertipe enum (Jumat 4), sedangkan variabel hari1
berisi Senin yang juga bertipe enum (Senin 0) maka
hasil int selisih = hari2 – hari1; menghasilkan
nilai selisih = 4 – 0 = 4.
enum nama_hari { Senin, Selasa, Rabu,
Kamis, Jumat, Sabtu, Minggu };
Senin
0
Selasa
Rabu
Kamis
Jumat
Sabtu
Minggu
1
2
3
4
5
6
• Anggota tipe enum dinyatakan dengan nilai integer secara
internal.
• Manfaat enum dalam C++ :
– Pengisian variabel lebih enak dibaca.
• Kekurangan :
– Ketika di output ke layar, yang muncul adalah
angka yang merepresentasikan nilai dari
anggota enum tersebut.
– Meskipun direpresentasikan sebagai angka,
programmer tidak dapat menugaskan angka ke
tipe data enumerasi.
STRUCT
struct atau terkadang disebut struktur
bermanfaat untuk mengelompokkan sejumlah
data / variabel.
Variabel yang dikelompokkan bisa bertipe data
sama ataupun berbeda.
Struct didefinisikan dengan cara :
struct namaStruct {
anggota1 struct
anggota2 struct
…
};
• Setelah didefinisikan, sebuah variabel bertipe
struct dapat dibuat untuk digunakan dengan
perintah :
namaStruct namaVariabel;
• Setelah variabel struct didefinisikan, masingmasing anggota struct diakses dengan
menggunakan operator "." seperti berikut :
namaVariabel.anggota1;
namaVariabel.anggota2;
#include <iostream>
#include <conio.h>
using namespace std;
struct InfoTanggal {
int tahun;
int bulan;
int tanggal;
};
void main()
{
InfoTanggal ultah;
ultah.tanggal = 30;
ultah.bulan = 2;
ultah.tahun = 2020;
cout<<"Saya ulang tahun tanggal : “
<<ultah.tanggal<<"-"<<ultah.bulan<<"-“
<<ultah.tahun;
_getch();
}
Penugasan STRUCT
Pemberian nilai terhadap suatu struktur dapat dilakukan
dengan bentuk :
variabel1 = variabel2;
Sepanjang kedua variabel adalah variabel struktur bertipe
data yang sama.
Misalknya suatu struct memiliki 3 anggota, maka
pernyataan :
varStruct1 = varStruct2;
sama saja dengan
varStruct1.anggota1 = varStruct2.anggota1;
varStruct1.anggota2 = varStruct2.anggota2;
varStruct1.anggota3 = varStruct2.anggota3;
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
struct InfoTanggal {
int tahun;
int bulan;
int tanggal;
};
InfoTanggal ultahSaya, ultahDia;
ultahSaya.tanggal = 30;
ultahSaya.bulan = 2;
ultahSaya.tahun = 2020;
ultahDia = ultahSaya;
cout<<"Saya ulang tahun tanggal : "
<<ultahDia.tanggal<<"-"<<ultahDia.bulan
<<"-"<<ultahDia.tahun;
_getch();
}
Agregasi STRUCT
Agregasi struct adalah suatu istilah untuk kondisi dimana
suatu struktur merupakan anggota dari struktur yang lain.
Contoh pada struktur pegawai memiliki nomor induk,
nama, alamat, dan tanggal lahir. Tanggal lahir ini juga
merupakan struktur yang memiliki hari, bulan, dan tahun.
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
void main()
{
struct data_tanggal {
int hari;
int bulan;
int tahun;
};
struct pegawai {
int nip;
string nama;
string alamat;
data_tanggal tgl_lahir;
};
… lanjut
lanjutan …
pegawai Pegawai1;
Pegawai1.nip = 201101;
Pegawai1.nama = "Albert";
Pegawai1.alamat = "Jl.Jend.Sudirman";
Pegawai1.tgl_lahir.hari = 7;
Pegawai1.tgl_lahir.bulan = 12;
Pegawai1.tgl_lahir.tahun = 1955;
cout<<"---Data Pegawai------------"<<endl;
cout<<"NIP
: "<<Pegawai1.nip<<endl;
cout<<"Nama
: "<<Pegawai1.nama<<endl;
cout<<"Alamat : "<<Pegawai1.alamat<<endl;
cout<<"Tanggal Lahir : "
<<Pegawai1.tgl_lahir.hari<<"-"
<<Pegawai1.tgl_lahir.bulan<<"-"
<<Pegawai1.tgl_lahir.tahun;
_getch();
}
LATIHAN
1. Buatlah sebuah program C++ yang menyediakan
input data dari user menggunakan struktur
bernama Data berisi nama, berat, dan tinggi
badan. Kemudian tampilkan data itu.
2.
Buatlah sebuah program C++ yang menerima input
lima buah nilai dari mahasiswa. Data mahasiswa terdiri
dari npm, nama, mata kuliah, dan nilai, kemudian
tampilkan jumlah dan rata-rata dari nilai yang diinput.
3. Buatlah sebuah program C++ yang menerima input
empat buah data mahasiswa (terdiri dari npm, nama,
alamat, semester, ipk dan jumlah sks).
Jumlah sks yang dapat diambil berdasarkan ipk yang
diinput :
Jika ipk >= 3.00 maka sks = 24
Jika 2.50 <= ipk < 3.00 maka sks = 22
Jika 2.00 <= ipk < 2.50 maka sks = 20
Jika 1.75 <= ipk < 2.00 maka sks = 18
Jika 1.25 <= ipk < 1.75 maka sks = 16
selain itu sks = 12.
Setelah input selesai, tampilkan di layar data
mahasiswa berupa npm dan sks yang bisa diambil.
… tampilan akhir
-- Sekian --
Dasar Pemrograman
Renni Angreni, S.Kom.