Enum Tanımlama ve Kullanma
Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 56 / 63.
Artık 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 tam da burada öne çıkar: kafa karıştırıcı sayılarla çalışmak yerine açıklayıcı adlar kullanırsınız.
Bir enum türünde değişken bildirmek için diğer tüm değişkenleri bildirmekte kullandığın söz diziminin aynısını kullanırsın:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Ardından bu değişkenlere enum'unuzdaki adlandırılmış sabitleri kullanarak değer atayabilirsiniz:
today = WEDNESDAY;
weekend_day = SATURDAY;Bunu ham sayıları kullanmayla karşılaştırın: today = 2; ve weekend_day = 5;. Enum sürümü, hangi günle çalıştığınızı size hemen söylerken sayılar, her değerin neyi temsil ettiğini hatırlamanızı gerektirir. Bu, kodunuzu çok daha okunabilir ve hatalara daha az yatkın hâle getirir.
Görev
KolayBasit bir görev yönetim sistemi için enum değişkenlerinin bildirimini ve kullanımını gösteren bir C programı oluştur. Programın şunları yapmalıdır:
- Aşağıdaki sabitleri tam olarak bu sırayla içeren
TaskStatusadlı birenumtanımla:PENDINGIN_PROGRESSCOMPLETEDCANCELLED
- main işlevinde:
enum TaskStatustüründe,task1,task2vetask3adlı üç değişken tanımla- Her görevin durumunu temsil eden üç tam sayıyı (0, 1, 2 veya 3) girdiden oku
- Girilen değere göre her görev değişkenine karşılık gelen enum değerini ata:
- Girdi 0 ise
PENDINGata - Girdi 1 ise
IN_PROGRESSata - Girdi 2 ise
COMPLETEData - Girdi 3 ise
CANCELLEData
- Girdi 0 ise
- Her görevin durumunu enum değerlerini kullanarak tam olarak şu biçimde yazdır:
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Her durum kategorisinde kaç görev olduğunu say ve yazdır:
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Toplam etkin görev sayısını (ya
PENDINGya daIN_PROGRESSolan görevleri) hesapla ve tam olarak şu biçimde yazdır:Active tasks: [count]
Bu alıştırma, ham sayılar yerine anlamlı adlar kullanarak enum değişkenlerinin kodu nasıl daha okunabilir hâle getirdiğini gösterir. Enum değişkenlerini tanımlama, girdiye göre enum değerleri atama, karşılaştırmalarda enum sabitlerini kullanma ve enum değerleriyle hesaplamalar yapma pratiği yapacaksın.
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.
Mantık & Akış 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ıKendi başına pratik yap: Online C derleyicisi