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.