Mengenal Tipe Data Enumerasi dalam C++ (Disertai Gambar & Video Penjelasan)

Tipe data bentukan merupakan tipe data yang dibentuk atau dibuat sendiri sesuai kebutuhan dalam program yang akan kita buat. Dalam bahasa asing, tipe ini dikenal dengan istilah user defined types. Tipe data bentukan diperoleh dari tipe data yang sudah ada (tipe data primitive). Namun dianggap terpisah dan tidak seperti tipe data dasar tersebut. Adapun jenis tipe data bentukan, yaitu:

  • Struct
  • Union
  • Enumeration
  • Typedef
  • Class

Enum Sebagai Tipe Data Bentukan

Enum adalah singkatan dari enumeration. Dalam Bahasa Indonesia tipe enum dikenal dengan istilah enumerasi. Enum merupakan salah satu jenis dari tipe data bentukan dalam bahasa pemrograman C++.

Enum adalah tipe data bentukan pengguna (user-defined data type) dimana nilainya terbatas hanya pada himpunan nilai dalam konstanta yang ditentukan sendiri (nilai yang diperbolehkan untuk disimpan ke dalam variabel).

Nilai yang terbatas pada nilai konstanta yang ditentukan sendiri disebut sebagai enumerator. Variabel / objek bertipe enum hanya dapat menyimpan satu dari setnilai yang ditentukan tersebut.

Kapan kita perlu menggunakan enum?

  • Enum digunakan ketika kita hanya menginginkan nilai-nilai tertentu (set nilai) yang dapat disimpan ke dalam suatu variabel. Sebagai contoh, misalnya kita memiliki tipe enum merek_motor_jepang yang hanya dapat menampung nilai konstanta yamaha, honda, dan suzuki. Jika suatu objek dideklarasikan dengan tipe enum tadi, maka variabel tersebut hanya dapat diisi dengan nilai dari ketiga konstanta tadi. Selain itu maka akan dianggap salah atau error.
  • Ketika ingin mencegah terjadinya kesalahan pengisian nilai variabel. Suatu objek yang dideklarasikan menggunakan tipe enum maka variabel tersebut hanya dapat menampung nilai yang termasuk kedalam nilai yang telah ditentukan. Selain itu akan bernilai salah pada saat dicompile. Hal ini mencega terjadinya kesalahan pemrosesan data.
  • Ketika menggunakan switch case. Nilai setiap blok case dapat didefenisikan pada enum sehingga dapat dipastikan bahwa nilai yang digunakan adalah nilai yang dapat diterima.

Dari sisi efisiensi penggunaan memory, enum membutuhkan lebih sedikit memory dibanding array dan struct. Enum hanya menggunakan satu nilai dari konstanta yang ada. Sedangkan struct dan array ukurannya akan menyesuaikan dengan banyaknya nilai yang ada.


Mendeklarasikan Tipe Enum

Sebelum dapat digunakan suatu tipe enum harus dideklarasikan terlebih dahulu. Adapun sintaks pendeklarasian enum dapat dilihat pada sintaks 1 berikut.

Sintaks 1

enum nama_tipe { n1, n2, n3,…, nN};

Keterangan:

  • enum : Keyword yang digunakan untuk mendeklarasikan enum.
  • nama_tipe : Diisi dengan nama yang diinginkan yang merepresentasikan set nilai konstanta yang akan digunakan.
  • n1, n2, …, nN : Konstanta pertama, kedua hingga ke-N yang dapat digunakan jika suatu objek dibentuk menggunakan enum saat ini.

Gambar ilustrasi dari sintaks 1 dapat dilihat pada gambar 1.

Gambar 1. Sintaks pendeklarasian enum.

Agar dapat lebih mudah memahami penggunaan sintaks di atas, perhatikan contoh yang diberikan pada gambar 2.

Gambar 2. Contoh penggunaan sintaks pendeklarasian enum.

Jika enum di atas dideklarasikan, maka akan terbentuk tipe enum hariKantor dan secara default konstanta yang ada di pada tipe hariKantor menampung nilai yang dimulai dari 0 hingga sebanyak N konstanta. Seperti ditampilkan berikut ini:

Senin = 0
Selasa = 1
Rabu = 2
Kamis = 3
jumat = 4
Sabtu = 5

Inisialisasi Nilai Konstanta Enum

Jika ingin mengubah nilai default dari konstanta, maka cukup menginisialisasikan nilai pada konstanta enum. Perhatikan contoh pada gambar 3.

Gambar 3. Contoh mendeklarasikan nilai enumerator (bukan default).

Jika tipe enum hariKantor di atas dideklarasikan maka nilai yang ditampung oleh konstantanya adalah sebagai berikut:

Senin = 1
Selasa = 2
Rabu = 3
Kamis = 4
jumat = 5
Sabtu = 6

Namun, jika bentuk penginisialisasiannya seperti berikut ini:

enum hariKantor {
  Senin, 
  Selasa,
  Rabu = 5,
  Kamis,
  Jumat,
  Sabtu
};

Maka nilai yang ditampung oleh konstanta adalah sebagai berikut:

Senin = 0
Selasa = 1
Rabu = 5
Kamis = 6
jumat = 7
Sabtu = 8

Dapat kita lihat bahwa konstanta Senin dan Selasa bernilai 0 dan 1. Sedangkan konstanta Rabu hingga Sabtu nilainya berlanjut yakni 5, 6, 7, dan 8.


Mendeklarasikan Objek Enum

Objek / variabel yang dibentuk dari suatu tipe enum hanya akan menerima nilai konstanta yang telah didefenisikan pada pendeklarasian tipe enum pembentuk objek tersebut.

Adapun sintaks pendeklarasian objek dari tipe enum yang dibentuk adalah sebagai berikut:

Sintaks 2

enum nama_tipe{n1, n2, n3,…, nN} nama_objek;

Keterangan:

  • nama_objek : diisi dengan nama objek/variabel yang kita inginkan. Jika variabel atau objek ini dibentuk dari suatu enum, maka objek tersebut hanya dapat menampung nilai konstanta yang telah didefenisikan pada saat pendeklarasian tipe enum.

Gambar ilustrasi dari sintaks 2 dapat dilihat pada gambar 4.

Gambar 4. Ilustrasi sintaks 2 untuk mendeklarasikan objek.

Agar dapat lebih mudah memahami penggunaan sintaks di atas, perhatikan contoh yang diberikan pada gambar 5.

Gambar 5. Contoh penerapan sintaks 2.

Dari sintaks dan gambar di atas dapat diketahui bahwa suatu objek dapat dideklarasikan pada saat pendeklarasian tipe enum. Pada contoh di atas, objek hariKerja dibentuk dari enum hariKantor. Oleh karena itu, Objek hariKerja hanya dapat menerima nilai konstanta yang didefenisikan pada tipe hariKantor.

Jika suatu enum dideklarasikan untuk membentuk lebih dari satu objek, maka pisahkan setiap objek dengan tanda koma (perhatikan sintaks 2).

Namun, juga terdapat cara lain untuk mendeklarasikan objek. Perhatikan sintaks 3.

Sintaks 3

nama_tipe_enum nama_objek;

Keterangan:

  • nama_tipe_enum : diisi dengan nama tipe enum yang telah dideklarasikan sebelumnya.

Gambar ilustrasi dari sintaks 3 dapat dilihat pada gambar 6.

Gambar 6. Ilustrasi sintaks 3 untuk mendeklarasikan objek.

Agar dapat lebih mudah memahami penggunaan sintaks di atas, perhatikan contoh yang diberikan pada gambar 7.

Gambar 7. Contoh penggunaan sintaks pendeklarasian objek sintaks 3.

Pada contoh di atas dapat diketahui bahwa pendeklarasian objek juga dapat dilakukan secara terpisah. Namun, perlu diingat bahwa tipe enum pembentuk objek harus dideklarasikan terlebih dahulu.


Inisialisasi Nilai Objek Enum

Adapun sintaks menginisialisasikan nilai konstanta enum ke dalam objek atau variabel bertipe enum dapat dilihat pada sintaks 4.

sintaks 4

nama_objek = konstanta_enum;

Keterangan:

  • nama_objek : adalah nama variabel/objek yang dibentuk dari tipe enum
  • konstanta_enum : adalah konstanta yang nilainya akan diisikan ke dalam objek

Agar dapat dipahami lebih mudah, perhatikan ilustrasi yang diberikan pada gambar 8.

Gambar 8. Sintaks penginisialisasian nilai objek.

Berikut kami juga berikan contoh penginisialisasian nilai objek yang benar dan salah. Perhatikan gambar 9.

Gambar 9. Penginisialisasian nilai objek.

Berdasarkan contoh diatas maka dapat diketahui bahwa suatu objek hanya dapat menerima nilai konstanta dari tipe enum pembentuknya. Jika suatu objek diinisialisasikan dengan nilai konstanta yang bukan dari tipe enum pembentulknya maka akan terjadi error.


Contoh Program Sederhana

Mendeklarasikan enum dan membentuk objek

#include <iostream>
using namespace std;

enum namaPresiden { 
    Soekarno, 
    Soeharto, 
    Habibie, 
    Megawati, 
    Gusdur, 
    SBY, 
    Jokowi
} presidenku;

int main()
{
    namaPresiden presiden;
    presiden = Habibie;
    cout << "Presiden Indonesia ke-" << presiden + 1;
    return 0;
}

Output:

Presiden ke-3

Berdasarkan program dan output di atas, dapat diketahui bahwa nilai 3 pada output diperoleh dari presiden + 1 (perhatikan perintah baris 18). Presiden yang diisi denga nilai Habibie, awalnya bernilai 2 karena berada pada konstanta urutan ke-3 (secara default nilai dimulai dari 0). Secara default nilai keseluruhan konstanta adalah sebagai berikut:

Soekarno = 0 
Soeharto = 1
Habibie = 2
Megawati = 3
Gusdur = 4
SBY = 5
Jokowi = 6

Program di atas tidak akan error selama objek presiden diisi dengan nilai konstanta yang dideklarasikan pada tipe namaPresiden. Jika anda mencoba memasukkan nama konstanta diluar konstanta namaPresiden pada objek presiden, maka error akan terjadi. Berikut contohnya :

presiden = Vladimir;

Output:

main.cpp:17:16: error: 'Vladimir' was not declared in this scope

Menginisialisasikan Nilai Konstanta Enum

Selain menggunakan nilai konstanta default, kita juga dapat menginisialisasikannya secara manual. Kita dapat langsung menginisialisasikan nilai yang diinginkan pada saat pendeklarasian tipe enum. Perhatikan contoh program berikut:

#include <iostream>
using namespace std;

enum namaPresiden { 
    Soekarno, 
    Soeharto, 
    Habibie = 5, 
    Megawati, 
    Gusdur, 
    SBY, 
    Jokowi
} presidenku;

int main()
{
    namaPresiden presiden;
    presiden = Megawati;
    cout << "Presiden Indonesia ke-" << presiden + 1;
    return 0;
}

Output

Presiden Indonesia ke-7

Nilai 7 pada output diperoleh dari presiden + 1 (baris 18), dimana isi variabel presiden yang merupakan Megawati bernilai 6. Megawati bernilai 6 karena melanjutkan nilai dari konstanta sebelumnya yaitu Habibie yang bernilai 5. Namun nilai konstanta sebelum Habibie tetap mengikuti nilai default yaitu 0 dan 1. Selengkapnya seperti berikut:

    Soekarno = 0 
    Soeharto = 1 
    Habibie = 5 
    Megawati = 6 
    Gusdur = 7
    SBY = 8
    Jokowi = 9

Semoga dapat menambah wawasan teman-teman yang masih baru dalam dunia pemrograman. Semoga bermanfaat.

Jika ingin mendengarkan penjelasan secara lisan, jangan sungkan untuk mengunjungi channel youtube kami “PAKKODING“.

Oh iya, share halaman ini agar orang-orang yang baru belajar pemrograman dapat terbantu.

Salam hangat dari tim pakkoding.id

 1,935 total views,  3 views today

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *