Menu
Coddy logo textTech

Switch İfadelerinde Enum Kullanımı

Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 57 / 63.

C programlamadaki en güçlü kombinasyonlardan biri, enum değerlerini switch ifadeleriyle birlikte kullanmaktır. Bu eşleşme, programınızın karar verme sürecini net bir şekilde ifade eden, olağanüstü derecede okunabilir ve bakımı kolay kontrol akışı mantığı oluşturur.

Bir switch ifadesinde enum sabitlerini case olarak kullandığınızda, kod kendi kendini belgeleyen bir hale gelir. case 0: veya case 5: gibi gizemli sayılar görmek yerine, amaçlarını anında ileten anlamlı isimler görürsünüz:

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;
}

Bu yaklaşım, kodunuzun anlaşılmasını ve değiştirilmesini çok daha kolay hale getirir. Bu kodu okuyan herkes her bir durumun neyi temsil ettiğini anında anlar ve yeni durumlar eklemek veya mantığı değiştirmek basit hale gelir. Derleyici ayrıca hataları yakalamaya da yardımcı olur; bir enum sabitini yanlış yazarsanız, sessiz bir hata yerine bir derleme hatası alırsınız.

challenge icon

Görev

Kolay

Basit bir hava durumu danışma sistemi oluşturmak için switch ifadesiyle birlikte bir enum kullanan bir C programı oluşturun. Programınız şunları yapmalıdır:

  1. Aşağıdaki sabitleri tam olarak bu sırayla içeren WeatherCondition adında bir enum tanımlayın:
    • SUNNY
    • CLOUDY
    • RAINY
    • STORMY
    • SNOWY
  2. Şu özelliklere sahip getWeatherAdvice adında bir fonksiyon yazın:
    • weather adında bir enum WeatherCondition parametresi alır
    • Hiçbir şey döndürmez (void)
    • Duruma göre hava durumuna özel tavsiyeler yazdırmak için bir switch ifadesi kullanır:
      • SUNNY için: Perfect day for outdoor activities! yazdırın
      • CLOUDY için: Good day for a walk, no sun protection needed. yazdırın
      • RAINY için: Don't forget your umbrella! yazdırın
      • STORMY için: Stay indoors and avoid travel. yazdırın
      • SNOWY için: Drive carefully and dress warmly. yazdırın
  3. Şu özelliklere sahip getActivitySuggestion adında bir fonksiyon yazın:
    • weather adında bir enum WeatherCondition parametresi alır
    • Hiçbir şey döndürmez (void)
    • Hava durumuna göre aktiviteler önermek için bir switch ifadesi kullanır:
      • SUNNY için: Suggested activity: Beach or hiking yazdırın
      • CLOUDY için: Suggested activity: Photography or gardening yazdırın
      • RAINY için: Suggested activity: Reading or indoor games yazdırın
      • STORMY için: Suggested activity: Movie marathon yazdırın
      • SNOWY için: Suggested activity: Skiing or hot cocoa yazdırın
  4. Main fonksiyonu içinde:
    • currentWeather adında enum WeatherCondition tipinde bir değişken tanımlayın
    • Hava durumu koşulunu temsil eden bir tamsayıyı (0, 1, 2, 3 veya 4) girdiden okuyun
    • Girdiye göre ilgili enum değerini currentWeather değişkenine atayın
    • Mevcut hava durumu koşulunu tam olarak şu formatta yazdırın: Current weather: [numeric_value]
    • currentWeather ile getWeatherAdvice fonksiyonunu çağırın
    • currentWeather ile getActivitySuggestion fonksiyonunu çağırın

Bu zorluk, okunabilir ve bakımı kolay kod oluşturmak için enum'ları switch ifadeleriyle birleştirmenin gücünü göstermektedir. Switch ifadelerinizde kafa karıştırıcı sayısal durumlar kullanmak yerine, programın mantığını açıkça ifade eden anlamlı enum sabitleri kullanacaksınız. Switch ifadesi kendi kendini belgeleyen bir hale gelerek, her bir durumun neyi temsil ettiğini anlamayı ve gerektiğinde davranışı değiştirmeyi kolaylaştırır.

Kopya kağıdı

enum değerlerini switch ifadeleriyle kullanmak, okunabilir ve sürdürülebilir kontrol akışı mantığı oluşturur:

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;
}

Bu yaklaşım, case 0: veya case 5: gibi gizemli sayılar yerine anlamlı isimler kullanarak kodun kendi kendini belgelemesini sağlar. Derleyici, yanlış yazılmış enum sabitleri için sessiz hatalar yerine derleme hataları oluşturarak hataların yakalanmasına yardımcı olur.

Kendin dene

#include <stdio.h>

// TODO: WeatherCondition enum yapısını burada tanımlayın

// TODO: getWeatherAdvice fonksiyonunu burada uygulayın

// TODO: getActivitySuggestion fonksiyonunu burada uygulayın

int main() {
    // Girdiyi oku
    int weatherInput;
    scanf("%d", &weatherInput);
    
    // TODO: currentWeather değişkenini bildirin ve girdiye göre enum değerini atayın
    
    // TODO: Mevcut hava durumunu "Current weather: [numeric_value]" formatında yazdırın
    
    // TODO: getWeatherAdvice fonksiyonunu çağırın
    
    // TODO: getActivitySuggestion fonksiyonunu çağırın
    
    return 0;
}
quiz iconKendini test et

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