Menu
CoddyTech

enum untuk Konstanta Bernama

Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 55 dari 63.

Saat menulis program C, kamu sering perlu bekerja dengan kumpulan nilai konstan yang saling terkait. Misalnya, kamu mungkin perlu merepresentasikan hari dalam seminggu, bulan dalam setahun, atau berbagai status dalam program. Daripada menggunakan angka mentah seperti 0, 1, 2, kamu bisa menggunakan enum untuk membuat nama yang bermakna bagi konstanta ini.

Tipe enumerasi, atau enum, memungkinkan kamu mendefinisikan sekelompok konstanta bilangan bulat bernama. Ini membuat kodemu jauh lebih mudah dibaca dan dipelihara. Berikut sintaks dasarnya:

enum DayOfWeek {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

Secara default, nama pertama mendapat nilai 0, nama kedua mendapat 1, dan seterusnya. Jadi, MONDAY sama dengan 0, TUESDAY sama dengan 1, dan SUNDAY sama dengan 6. Pendekatan ini jauh lebih jelas daripada mengingat bahwa hari 0 berarti Senin atau hari 6 berarti Minggu.

Menggunakan enum membuat kodemu mendokumentasikan dirinya sendiri dan membantu mencegah error yang dapat terjadi saat menggunakan angka ajaib di seluruh programmu.

Kamu bisa mendeklarasikan variabel bertipe enum dan menetapkan nilai enum padanya:

enum DayOfWeek today;
today = MONDAY;  // menetapkan 0 ke today
challenge icon

Tantangan

Mudah

Buat program C yang mendefinisikan enum untuk warna lampu lalu lintas dan menunjukkan penggunaannya. Programmu harus:

  1. Mendefinisikan enum bernama TrafficLight dengan konstanta berikut dalam urutan yang tepat:
    • RED
    • YELLOW
    • GREEN
  2. Di fungsi utama:
    • Mendeklarasikan variabel bertipe enum TrafficLight bernama currentLight
    • Membaca bilangan bulat dari input yang mewakili status lampu lalu lintas (0, 1, atau 2)
    • Menetapkan nilai enum yang sesuai ke currentLight berdasarkan input:
      • Jika input bernilai 0, tetapkan RED
      • Jika input bernilai 1, tetapkan YELLOW
      • Jika input bernilai 2, tetapkan GREEN
    • Mencetak status lampu saat ini dengan format yang tepat ini: Current light: [enum_name]
    • Mencetak nilai numerik lampu saat ini dengan format yang tepat ini: Numeric value: [number]
    • Menentukan dan mencetak tindakan berdasarkan lampu saat ini:
      • Jika RED: cetak Action: Stop
      • Jika YELLOW: cetak Action: Caution
      • Jika GREEN: cetak Action: Go
    • Menghitung dan mencetak lampu berikutnya dalam urutan:
      • Jika lampu saat ini adalah RED (0), lampu berikutnya adalah GREEN (2)
      • Jika lampu saat ini adalah YELLOW (1), lampu berikutnya adalah RED (0)
      • Jika lampu saat ini adalah GREEN (2), lampu berikutnya adalah YELLOW (1)
    • Mencetak lampu berikutnya dengan format yang tepat ini: Next light: [enum_name]

Tantangan ini menunjukkan bagaimana konstanta enum membuat kode lebih mudah dibaca daripada menggunakan angka mentah. Daripada mengingat bahwa 0 berarti merah, 1 berarti kuning, dan 2 berarti hijau, kamu bisa menggunakan nama yang bermakna seperti RED, YELLOW, dan GREEN. Kamu akan berlatih mendefinisikan enum, menggunakan konstanta enum dalam penetapan nilai dan perbandingan, serta mengakses nilai bilangan bulat yang mendasari konstanta enum.

Coba sendiri

#include <stdio.h>

// TODO: Definisikan enum TrafficLight di sini

int main() {
    // Baca input
    int input;
    scanf("%d", &input);
    
    // TODO: Deklarasikan variabel currentLight dan tetapkan nilai enum berdasarkan input
    
    // TODO: Tampilkan status lampu saat ini
    
    // TODO: Tampilkan nilai numerik
    
    // TODO: Tampilkan tindakan berdasarkan lampu saat ini
    
    // TODO: Hitung dan tampilkan lampu berikutnya
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C online