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 todayTantangan
MudahBuat program C yang mendefinisikan enum untuk warna lampu lalu lintas dan menunjukkan penggunaannya. Programmu harus:
- Mendefinisikan
enumbernamaTrafficLightdengan konstanta berikut dalam urutan yang tepat:REDYELLOWGREEN
- Di fungsi utama:
- Mendeklarasikan variabel bertipe
enum TrafficLightbernamacurrentLight - Membaca bilangan bulat dari input yang mewakili status lampu lalu lintas (0, 1, atau 2)
- Menetapkan nilai enum yang sesuai ke
currentLightberdasarkan input:- Jika input bernilai 0, tetapkan
RED - Jika input bernilai 1, tetapkan
YELLOW - Jika input bernilai 2, tetapkan
GREEN
- Jika input bernilai 0, tetapkan
- 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: cetakAction: Stop - Jika
YELLOW: cetakAction: Caution - Jika
GREEN: cetakAction: Go
- Jika
- Menghitung dan mencetak lampu berikutnya dalam urutan:
- Jika lampu saat ini adalah
RED(0), lampu berikutnya adalahGREEN(2) - Jika lampu saat ini adalah
YELLOW(1), lampu berikutnya adalahRED(0) - Jika lampu saat ini adalah
GREEN(2), lampu berikutnya adalahYELLOW(1)
- Jika lampu saat ini adalah
- Mencetak lampu berikutnya dengan format yang tepat ini:
Next light: [enum_name]
- Mendeklarasikan variabel bertipe
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;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Dasar-Dasar Pointer
Apa Itu Pointer?Mendeklarasikan PointerOperator Address-Of (&)Operator Dereference (*)Pointer NULLRekap: Dasar-Dasar Pointer4Proyek: Utilitas Teks Sederhana
Gambaran Umum ProyekMenghitung Karakter7Struktur (struct)
Apa Itu struct?Mendeklarasikan structMembuat Variabel structMengakses Anggota structMenginisialisasi structRingkasan: struct Data Siswa10Enum dan typedef
enum untuk Konstanta BernamaMendeklarasikan dan Menggunakan enumenum dalam Pernyataan switchMenggunakan typedef untuk Alias Tipetypedef dengan structRingkasan: Latihan typedef dan enum2Pointer dan array
Nama array sebagai pointerElemen array dan pointerAritmetika pointerMembandingkan pointerRangkuman: Menelusuri array dengan pointer5Pointer dan Fungsi
Penerusan dengan NilaiMeneruskan Pointer ke FungsiMengubah Variabel melalui PointerContoh Klasik: SwapMeneruskan Array ke FungsiRingkasan: Argumen Pointer Fungsi8Struct dan Pointer
Pointer ke StructOperator Panah (->)Mengirim Struct berdasarkan NilaiMengirim Pointer StructAlokasi Dinamis StructUlasan: Memodifikasi Struct dengan Pointer11Tantangan Rangkuman Akhir
Rangkuman: Penggabungan string DinamisRangkuman: array berisi structRangkuman: Penghitung Frekuensi Kata3Array char dan String
String sebagai array charPenanda akhir nullInput String dengan scanfMenggunakan strlen()Menggunakan strcpy()Menggunakan strcat()Menggunakan strcmp()Ulasan: Fungsi String DasarLatihan sendiri: Compiler C online