enum dalam Pernyataan switch
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 57 dari 63.
Salah satu kombinasi paling ampuh dalam pemrograman C adalah menggunakan nilai enum dengan pernyataan switch. Kombinasi ini menghasilkan logika alur kontrol yang sangat mudah dibaca dan dipelihara, serta dengan jelas menggambarkan proses pengambilan keputusan programmu.
Saat kamu menggunakan konstanta enum sebagai case dalam pernyataan switch, kode menjadi terdokumentasi dengan sendirinya. Alih-alih melihat angka misterius seperti case 0: atau case 5:, kamu melihat nama bermakna yang langsung menunjukkan tujuannya:
switch (day) {
case MONDAY:
case TUESDAY:
case WEDNESDAY:
case THURSDAY:
case FRIDAY:
printf("It's a weekday\n");
break;
case SATURDAY:
case SUNDAY:
printf("It's a weekend\n");
break;
}Pendekatan ini membuat kodemu jauh lebih mudah dipahami dan diubah. Siapa pun yang membaca kode ini langsung tahu arti setiap kasus, dan menambahkan kasus baru atau mengubah logikanya menjadi mudah. Compiler juga membantu mendeteksi error. Jika kamu salah mengeja konstanta enum, kamu akan mendapatkan error kompilasi, bukan bug yang tidak terdeteksi.
Tantangan
MudahBuat program C yang menggunakan enum dengan pernyataan switch untuk membangun sistem saran cuaca sederhana. Programmu harus:
- Mendefinisikan
enumbernamaWeatherConditiondengan konstanta berikut dalam urutan yang tepat:SUNNYCLOUDYRAINYSTORMYSNOWY
- Menulis fungsi bernama
getWeatherAdviceyang:- Menerima parameter
enum WeatherConditionbernamaweather - Tidak mengembalikan nilai apa pun (void)
- Menggunakan pernyataan
switchuntuk mencetak saran khusus berdasarkan kondisi cuaca:- Untuk
SUNNY: cetakPerfect day for outdoor activities! - Untuk
CLOUDY: cetakGood day for a walk, no sun protection needed. - Untuk
RAINY: cetakDon't forget your umbrella! - Untuk
STORMY: cetakStay indoors and avoid travel. - Untuk
SNOWY: cetakDrive carefully and dress warmly.
- Untuk
- Menerima parameter
- Menulis fungsi bernama
getActivitySuggestionyang:- Menerima parameter
enum WeatherConditionbernamaweather - Tidak mengembalikan nilai apa pun (void)
- Menggunakan pernyataan
switchuntuk menyarankan aktivitas berdasarkan cuaca:- Untuk
SUNNY: cetakSuggested activity: Beach or hiking - Untuk
CLOUDY: cetakSuggested activity: Photography or gardening - Untuk
RAINY: cetakSuggested activity: Reading or indoor games - Untuk
STORMY: cetakSuggested activity: Movie marathon - Untuk
SNOWY: cetakSuggested activity: Skiing or hot cocoa
- Untuk
- Menerima parameter
- Di dalam fungsi utama:
- Mendeklarasikan variabel bertipe
enum WeatherConditionbernamacurrentWeather - Membaca bilangan bulat dari input yang mewakili kondisi cuaca (0, 1, 2, 3, atau 4)
- Menetapkan nilai enum yang sesuai ke
currentWeatherberdasarkan input - Mencetak kondisi cuaca saat ini dengan format yang tepat berikut:
Current weather: [numeric_value] - Memanggil fungsi
getWeatherAdvicedengancurrentWeather - Memanggil fungsi
getActivitySuggestiondengancurrentWeather
- Mendeklarasikan variabel bertipe
Tantangan ini menunjukkan manfaat menggabungkan enum dengan pernyataan switch untuk membuat kode yang mudah dibaca dan dipelihara. Daripada menggunakan kasus numerik yang membingungkan dalam pernyataan switch, kamu akan menggunakan konstanta enum yang bermakna dan menjelaskan logika program dengan jelas. Pernyataan switch menjadi mudah dipahami tanpa penjelasan tambahan, sehingga kamu dapat memahami hal yang diwakili setiap kasus dan mengubah perilakunya sesuai kebutuhan.
Coba sendiri
#include <stdio.h>
// TODO: Definisikan enum WeatherCondition di sini
// TODO: Implementasikan fungsi getWeatherAdvice di sini
// TODO: Implementasikan fungsi getActivitySuggestion di sini
int main() {
// Baca input
int weatherInput;
scanf("%d", &weatherInput);
// TODO: Deklarasikan variabel currentWeather dan tetapkan nilai enum berdasarkan input
// TODO: Tampilkan kondisi cuaca saat ini dalam format "Current weather: [numeric_value]"
// TODO: Panggil fungsi getWeatherAdvice
// TODO: Panggil fungsi getActivitySuggestion
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