Apa itu Enum dalam Bahasa Pemrograman?

Pendek untuk enumerasi, enum tipe variabel dapat ditemukan di C (ANSI, bukan K&R asli), C ++ dan C #. Idenya adalah bahwa alih-alih menggunakan int untuk mewakili satu set nilai, tipe dengan set nilai terbatas digunakan sebagai gantinya.

Misalnya, jika kita menggunakan warna pelangi, yaitu

  1. Merah
  2. jeruk
  3. Kuning
  4. hijau
  5. Biru
  6. Nila
  7. Violet

Jika enum tidak ada, Anda dapat menggunakan a #menetapkan (dalam C) atau const di C ++ / C # untuk menentukan nilai-nilai ini. Misalnya

Terlalu Banyak Ints untuk Dihitung!

Masalahnya adalah masih banyak lagi int dari warna. Jika violet memiliki nilai 7, dan program memberikan nilai 15 ke variabel maka itu jelas bug tetapi mungkin tidak terdeteksi karena 15 adalah nilai yang valid untuk int.

Enums to the Rescue

Enum adalah tipe yang ditentukan pengguna yang terdiri dari sekumpulan konstanta bernama yang disebut enumerator. Warna-warna pelangi akan dipetakan seperti ini .:

Sekarang secara internal, kompiler akan menggunakan int untuk menampung ini dan jika tidak ada nilai yang diberikan, merah akan menjadi 0, oranye adalah 1 dll.

instagram viewer

Intinya adalah itu warna pelangi adalah tipe dan hanya variabel lain dari tipe yang sama dapat ditugaskan untuk ini. C lebih mudah dijalankan (yaitu diketik dengan kurang ketat), tetapi C ++ dan C # tidak akan mengizinkan tugas kecuali Anda memaksanya dengan menggunakan gips.

Anda tidak terjebak dengan ini penyusun nilai yang dihasilkan, Anda dapat menetapkan konstanta integer Anda sendiri seperti yang ditunjukkan di sini.

Memiliki warna biru dan indigo dengan nilai yang sama bukan kesalahan karena pencacah mungkin menyertakan sinonim seperti merah dan merah.

Perbedaan Bahasa

Dalam C, the variabel deklarasi harus didahului dengan kata enum seperti dalam

Dalam C ++, tidak diperlukan sebagai warna pelangi adalah tipe berbeda yang tidak memerlukan awalan tipe enum.

Dalam C # nilai-nilai diakses oleh nama tipe seperti pada

Apa gunanya Enums?

Menggunakan enum meningkatkan tingkat abstraksi dan membuat programmer memikirkan tentang apa artinya nilai daripada khawatir tentang bagaimana mereka disimpan dan diakses. Ini mengurangi terjadinya bug.

Berikut ini sebuah contoh. Kami memiliki satu set lampu lalu lintas dengan tiga lampu- merah, kuning dan hijau. Di Inggris, urutan lampu lalu lintas berubah dalam empat fase ini.

  1. Merah - Lalu Lintas Berhenti.
  2. Kedua Merah dan Kuning - Lalu lintas Masih berhenti, tetapi lampu akan berubah menjadi hijau.
  3. hijau - Lalu lintas bisa bergerak.
  4. Kuning - Peringatan perubahan segera menjadi merah.

Contoh Lampu Lalu Lintas

Lampu dikontrol dengan menulis ke tiga bit bagian bawah byte kontrol. Ini ditata sebagai pola bit di bawah ini dalam biner di mana RYG mewakili tiga bit. Jika R adalah 1, lampu merah menyala dll.

Dalam hal ini, mudah untuk melihat bahwa empat keadaan di atas sesuai dengan nilai 4 = Merah pada, 6 = Merah + Kuning keduanya aktif, 1 = hijau dan 2 = Kuning di.

Dengan fungsi ini

Menggunakan Kelas Sebagai ganti Enums

Dalam C ++ dan C # kita perlu membuat kelas lalu kelebihan beban operator | untuk memungkinkan ATAU jenis lampu lalu lintas.

Dengan menggunakan enum, kami mencegah masalah dengan bit lain yang ditugaskan ke byte kontrol bulb. Mungkin beberapa bit lainnya mengontrol swa-uji atau sakelar "Green Lane". Dalam hal ini, bug yang memungkinkan bit-bit ini diatur dalam penggunaan normal dapat mendatangkan malapetaka.

Yang pasti, kami akan menutupi bit dalam SetTrafficlights ()fungsi jadi tidak peduli berapa nilainya dilewatkan, hanya tiga bit terbawah yang diubah.

Kesimpulan

Enum memiliki manfaat ini:

  • Mereka membatasi nilai yang bisa diambil oleh variabel enum.
  • Mereka memaksa Anda untuk memikirkan semua nilai yang mungkin diambil oleh enum.
  • Mereka adalah konstan daripada angka, meningkatkan keterbacaan Kode sumber