BAB XI TIPE DATA TINGKAT LANJUT 11.1 ENUMERASI Enumerasi (enumeration) adalah suatu tipe data yang mempunyai elemen-elemen bernilai konstanta dengan urutan yang sudah tertentu. Nilai-nilai dari konstanta elemen ini berupa nilai-nilai integer yang diwakili oleh nama-nama pengenal yang ditulis diantara kurung ‘{‘ dan kurung ‘}’. Tipe data enumerasi dapat dideklarasikan dengan menggunakan kata kunci enum. Contoh 11.1: #include <stdio.h> main( ) { enum {Minggu, Senin, Selasa, Rabu, Kamis, Jum’at, Sabtu}; printf(“%d “,Minggu); printf(“%d “,Senin); printf(“%d “,Selasa); printf(“%d “,Rabu); printf(“%d “,Kamis); printf(“%d “,Jum’at); printf(“%d “,Sabtu); } 11.2 UNION Pada C, union memungkinkan suatu lokasi memori ditempati oleh dua atau lebih variabel yang bisa saja tipenya berlainan. Contoh pendefinisian tipe union yang dinamakan sebagai bil_bulat, yang digunakan untuk menyatakan data bertipe karakter atau integer; union bil_bulat { unsigned int di; unsigned char dc[2]; }; Pendeklarasian suatu variabel-union bernama bil_x yang bertipe bil_bulat dilakukan dengan cara penulisan sebagai berikut : union bil_bulat bil_x; Gambar 11.1 memperlihatkan di dan dc berbagi tempat pada lokasi yang sama. (di dan dc[0] mempunyai alamat yang sama). dc [0] di dc [1] Gambar 11.1 Variabel union dalam memori Dalam hal ini, kompiler akan menyediakan ruangan yang cukup untuk menampung field atau elemen pada union yang membutuhkan memori paling besar. Pada pendeklarasian variabel bil_x misalnya, memori yang ditempati variabel ini adalah 2 byte (yaitu ukuran dari tipe int). Elemen dari sebuah union dapat diakses dengan bentuk : Variabel_union.namaelemen Misalnya : bil_x.di = 321; Untuk mengisi 321 ke elemen union bernama di. Dengan pengisian ini, maka dc[0] akan bernilai byte 0 dari di, sedangkan dc[1] bernilai byte 1 dari di. Contoh 11.2: #include <stdio.h> main( ) { union { unsigned int di; unsigned char dc[2]; } bil_x; bil_x.di = 321; printf(“di = %d dc[0] = %d dc[1] = %d \n”, bil_x.di, bil_x.dc[0], bil_x.dc[1]); } Hasil : di = 321 dc[0] = 65 dc[1] = 1 11.3 STRUKTUR Pada bahasa pemrograman lain biasa disebut dengan record. Struktur adalah sekelompok tipe data yang dibuat menjadi tipe data tunggal. Kata kunci yang digunakan adalah struct. Bentuk Umum : struct namastruktur { deklarasi_var_1 ; deklarasi_var_2 ; -------deklarasi_var_n ; } Keterangan : namastruktur, adalah nama variabel dari struktur atau record. Deklarasi_var_1, deklarasi_var_2, s.d. , deklarasi_var_n. adalah sekelompok tipedata yang merupakan anggota pembentuk tipe data tunggal daripada (struktur) namastruktur. Misalnya struktur data_tanggal, bisa tersusun dari tanggal, bulan dan tahun. Contoh : struct data_tanggal { int tanggal; int bulan; int tahun; } 11.3.1 Mendefinisikan Variabel Struktur Apabila suatu struktur telah dideklarasikan, struktur ini dapat digunakan untuk mendefinisikan suatu variabel. Misalnya : data_tanggal tanggal_lahir; atau, struct data_tanggal { int tanggal; int bulan; int tahun; }tanggal_lahir; merupakan pendefinisian variabel struktur tanggal_lahir bertipe struktur data_tanggal. Dengan adanya pendefinisian ini, tanggal_lahir telah memiliki tiga buah anggota/elemen, yaitu : tanggal (bertipe integer) bulan (bertipe integer) tahun (bertipe integer) 11.3.2 Mengakses Anggota Struktur Anggota/elemen struktur dapat diakses secara individual dengan menyebutkan nama variabel strukturnya diikuti oleh operator titik dan nama dari elemen struktur. Bentuk umum akses Anggota struktur: Variabelstruktur.nama_anggota Tanda titik diberikan diantara nama variabel struktur dan nama anggota. Misalnya : Tanggal_lahir.tanggal = 19; Contoh diatas merupakan pernyataan penugasan untuk memberikan nilai anggota tanggal pada variabel struktur tanggal_lahir. 19 ke Pada C, struktur bisa lebih berdaya guna, karena disamping berisi data, pada struktur dapat diisi fungsi pengolahan dari pada data itu sendiri. Dengan ini struktur bertindak seperti kelas. Hanya saja anggota struktur bersifat publik.