Enum Tanımlama ve Kullanma
Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 56 / 63.
Bir enum tanımladığınıza göre, bu enum türünde değişkenler oluşturabilir ve onlara anlamlı değerler atayabilirsiniz. Enum'ların asıl parladığı yer burasıdır; kafa karıştırıcı sayılarla çalışmak yerine açıklayıcı isimler kullanırsınız.
Bir enum türünde değişken bildirmek için, diğer herhangi bir değişkeni bildirirken kullandığınız söz diziminin aynısını kullanırsınız:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Daha sonra, enum'ınızdaki adlandırılmış sabitleri kullanarak bu değişkenlere değer atayabilirsiniz:
today = WEDNESDAY;
weekend_day = SATURDAY;Bunu ham sayılar kullanmakla karşılaştırın: today = 2; ve weekend_day = 5;. Enum versiyonu size hangi günle çalıştığınızı anında söyler, oysa sayılar her bir değerin neyi temsil ettiğini hatırlamanızı gerektirir. Bu, kodunuzu çok daha okunabilir hale getirir ve hata payını azaltır.
Görev
KolayBasit bir görev yönetim sistemi için enum değişkenlerinin tanımlanmasını ve kullanılmasını gösteren bir C programı oluşturun. Programınız şunları yapmalıdır:
- Aşağıdaki sabitleri tam olarak bu sırayla içeren
TaskStatusadında birenumtanımlayın:PENDINGIN_PROGRESSCOMPLETEDCANCELLED
- Ana fonksiyonda (main function):
task1,task2vetask3adındaenum TaskStatustipinde üç değişken tanımlayın.- Her bir görevin durumunu temsil eden üç tam sayıyı (0, 1, 2 veya 3) girdiden okuyun.
- Girdiye göre her bir görev değişkenine karşılık gelen enum değerlerini atayın:
- Girdi 0 ise,
PENDINGatayın. - Girdi 1 ise,
IN_PROGRESSatayın. - Girdi 2 ise,
COMPLETEDatayın. - Girdi 3 ise,
CANCELLEDatayın.
- Girdi 0 ise,
- Her bir görevin durumunu enum değerlerini kullanarak tam olarak şu formatta yazdırın:
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Her bir durum kategorisinde kaç görev olduğunu sayın ve yazdırın:
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Aktif görevlerin (
PENDINGveyaIN_PROGRESSolan görevler) toplam sayısını hesaplayın ve tam olarak şu formatta yazdırın:Active tasks: [count]
Bu meydan okuma, enum değişkenlerinin ham sayılar yerine anlamlı isimler kullanarak kodu nasıl daha okunabilir hale getirdiğini göstermektedir. Enum değişkenlerini tanımlama, girdiye dayalı enum değerleri atama, karşılaştırmalarda enum sabitlerini kullanma ve enum değerleriyle hesaplamalar yapma pratiği yapacaksınız.
Kopya kağıdı
Bir enum türünde değişkenler bildirmek için, diğer herhangi bir değişkeni bildirmekle aynı sözdizimini kullanın:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Enum'ınızdaki adlandırılmış sabitleri kullanarak enum değişkenlerine değerler atayın:
today = WEDNESDAY;
weekend_day = SATURDAY;Ham sayılar yerine enum isimlerini kullanmak, kodu daha okunabilir ve hataya daha az eğilimli hale getirir. today = WEDNESDAY; ile today = 2; ifadelerini karşılaştırın - enum versiyonu hangi günle çalıştığınızı anında gösterir.
Kendin dene
#include <stdio.h>
// TODO: TaskStatus enum yapısını burada tanımlayın
int main() {
// Üç görev durumu için girişi oku
int status1, status2, status3;
scanf("%d", &status1);
scanf("%d", &status2);
scanf("%d", &status3);
// TODO: Üç adet enum TaskStatus değişkeni bildirin (task1, task2, task3)
// TODO: Girişe göre enum değerlerini atayın
// TODO: Görev durumlarını yazdırın
// TODO: Her kategorideki görevleri sayın
// TODO: Aktif görev sayısını hesaplayın ve yazdırın
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma7Yapılar (structs)
Struct Nedir?Struct TanımlamaStruct Değişkenleri OluşturmaStruct Üyelerine ErişmeStruct BaşlatmaÖzet: Öğrenci Verisi Struct'ı10Enum'lar ve Typedef
İsimlendirilmiş Sabitler için enumEnum Tanımlama ve KullanmaSwitch İfadelerinde Enum KullanımıTür Takma Adları için typedef KullanımıStruct'lar ile typedef KullanımıÖzet: Typedef ve Enum Pratiği2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String Fonksiyonları