Tipe Data Enumerasi

Enumerasi adalah sekumpulan konstanta bilangan bulat / integer yang masing-masing konstanta akan memiliki nama dan nilai yang berbeda. Enumerasi lebih ditujukan untuk penanganan kesalahan proses input, output maupun proses pengolahan data dalam internal CPU. Penggunaan konstanta yang didefinisikan atau pun enumerasi akan mempermudah penanganan kesalahan daripada saat hanya menggunakan angka.

Contoh deklarasi tipe enumerasi dalam bahasa C atau C++ adalah sebagai berikut:
  • enum pilihan {SATU, DUA, TIGA, EMPAT, LIMA, ENAM, TUJUH, DELAPAN};
  • enum angka{satu=1, dua, tiga, empat, lima};
Contoh kode program yang menggunakan tipe enumerasi adalah sebagai berikut.
#include <stdio.h>

enum pilihan {SATU, DUA, TIGA, EMPAT, LIMA, ENAM, TUJUH, DELAPAN};

int main(){
    printf("SATU = %d ?\n", SATU);
    printf("DUA = %d ?\n", DUA);
    printf("TIGA = %d ?\n", TIGA);
    printf("EMPAT = %d ?\n", EMPAT);
    printf("LIMA = %d ?\n", LIMA);
    printf("ENAM = %d ?\n", ENAM);
    printf("TUJUH = %d ?\n", TUJUH);
    printf("DELAPAN = %d ?\n", DELAPAN);
    return 0;
}

Jika konstanta pertama di dalam suatu set enumerasi tidak diberi nilai maka secara default nilai anggota pertamanya adalah 0. Nilai-nilai anggota selanjutnya adalah 1, 2, 3 dan seterusnya. Untuk contoh pertama di atas, maka nilai dari masing-masing anggota tipe enumerasi yaitu :
  • SATU=0
  • DUA=1
  • TIGA=2
  • EMPAT=3
  • LIMA=4
  • ENAM=5
  • TUJUH=6
  • DELAPAN=7
Jika ada pemberian nilai pada anggota-anggota variabel dengan tipe enumerasi, maka urutan nilai berikutnya akan dilanjutkan sesuai dengan nilai anggota sebelumnya. Contoh pemberian nilai pada anggota enumerasi adalah seperti contoh di bawah ini.
#include <stdio.h>

enum pilihan {SATU=1, DUA, TIGA, EMPAT, LIMA, ENAM, TUJUH, DELAPAN};

int main(){
    printf("SATU = %d ?\n", SATU);
    printf("DUA = %d ?\n", DUA);
    printf("TIGA = %d ?\n", TIGA);
    printf("EMPAT = %d ?\n", EMPAT);
    printf("LIMA = %d ?\n", LIMA);
    printf("ENAM = %d ?\n", ENAM);
    printf("TUJUH = %d ?\n", TUJUH);
    printf("DELAPAN = %d ?\n", DELAPAN);
    return 0;
}
Nilai konstanta pada contoh kode program di atas adalah :
  • SATU=1
  • DUA=2
  • TIGA=3
  • EMPAT=4
  • LIMA=5
  • ENAM=6
  • TUJUH=7
  • DELAPAN=8
Berikut ini adalah contoh kode program lain yang menggunakan tipe enumerasi.
#include <stdio.h>
#include <string.h>

enum Jenis_kelamin {Pria, Wanita};
enum pilihan {SATU=29, DUA, TIGA, EMPAT, LIMA, ENAM, TUJUH=21, DELAPAN};

int main(){
struct pegawai{
    char nama[100];
    int nik;
    int gaji;
    int usia;
    Jenis_kelamin jk;
    pilihan kode;
};

pegawai peg;
       //mendeklarasikan variabel peg1 bertipe pegawai
       strcpy(peg.nama, "Geri");
       peg.gaji = 5000000;
       peg.nik = 1107130630;
       peg.usia = 26;
       peg.jk = Pria;
       peg.kode = EMPAT;

       //Menampilkan nilai yang diisikan kelayar

       printf("nama pegawai: %s\n", peg.nama);
       printf("nomor induk pegawai: %d\n", peg.nik);
       printf("gaji pokok: %d\n", peg.gaji);
       printf("usia: %d\n", peg.usia);
       printf("gender: %d\n", peg.jk);
       printf("kode: %d\n", peg.kode);
       return 0;
}

Dari contoh di atas, kita bisa melihat bahwa nilai-nilai suatu set konstanta dalam enumerasi tidak mesti berurutan. Anggota tipe enumerasi bisa bernilai berapapun, dan bilangan selanjutnya akan dimulai dari nilai baru yang diinisialisasikan. Tipe enumerasi yang nilai anggotanya tidak berurutan kurang tepat untuk digunakan di dalam perulangan. Jika kalian menggunakan enumerasi dalam perulangan, maka nilai yang ditampilkan bukan nilai konstanta dalam enumerasi. Untuk memastikannya, kalian bisa mencoba untuk menggunakan tipe enumerasi yang punya beberapa nilai acak di dalam perulangan.