Tipe Enumerasi

Enumerasi adalah sekumpulan konstanta bilangan bulat / integer. Masing-masing konstanta dalam enumerasi 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++ 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 <iostream>

using namespace std;

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

int main(){
    cout << "SATU = " << SATU << endl;
    cout << "DUA = " << DUA << endl;
    cout << "TIGA = " << TIGA << endl;
    cout << "EMPAT = " << EMPAT << endl;
    cout << "LIMA = " << LIMA << endl;
    cout << "ENAM = " << ENAM << endl;
    cout << "TUJUH = " << TUJUH << endl;
    cout << "DELAPAN = " << DELAPAN << endl;
    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 <iostream>

using namespace std;

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

int main(){
    cout << "SATU = " << SATU << endl;
    cout << "DUA = " << DUA << endl;
    cout << "TIGA = " << TIGA << endl;
    cout << "EMPAT = " << EMPAT << endl;
    cout << "LIMA = " << LIMA << endl;
    cout << "ENAM = " << ENAM << endl;
    cout << "TUJUH = " << TUJUH << endl;
    cout << "DELAPAN = " << DELAPAN << endl;
    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 <iostream>

using namespace std;

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

struct pegawai{
    string nama;
    int nik;
    int gaji;
    int usia;
    Jenis_kelamin jk;
    pilihan kode;
};

int main(){
       pegawai peg;
       
       peg.nama = "Geri";
       peg.gaji = 5000000;
       peg.nik = 1107130630;
       peg.usia = 26;
       peg.jk = Pria;
       peg.kode = EMPAT;

       cout << "nama pegawai: " << peg.nama << endl;
       cout << "nomor induk pegawai: " << peg.nik << endl;
cout << "gaji pokok: " << peg.gaji << endl;
cout << "usia: " << peg.usia << endl;
cout << "gender: " << peg.jk << endl;
cout << "kode: " << peg.kode << endl;
return 0; }

Dari contoh di atas, kita bisa melihat bahwa nilai-nilai suatu set konstanta dalam enumerasi tidak harus 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.