Menu
Coddy logo textTech

Enums in Switch-Anweisungen

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 57 von 63.

Eine der leistungsfähigsten Kombinationen in der C-Programmierung ist die Verwendung von enum-Werten mit switch-Anweisungen. Diese Paarung erzeugt eine außergewöhnlich lesbare und wartbare Kontrollflusslogik, die den Entscheidungsprozess Ihres Programms klar zum Ausdruck bringt.

Wenn Sie Enum-Konstanten als Fälle in einer Switch-Anweisung verwenden, wird der Code selbstdokumentierend. Anstatt mysteriöse Zahlen wie case 0: oder case 5: zu sehen, sehen Sie aussagekräftige Namen, die ihren Zweck sofort vermitteln:

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

Dieser Ansatz macht Ihren Code viel einfacher zu verstehen und zu ändern. Jeder, der diesen Code liest, weiß sofort, was jeder Fall darstellt, und das Hinzufügen neuer Fälle oder das Ändern der Logik wird unkompliziert. Der Compiler hilft auch dabei, Fehler zu finden – wenn Sie eine Enum-Konstante falsch schreiben, erhalten Sie einen Kompilierungsfehler anstelle eines stillen Fehlers.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein C-Programm, das ein Enum mit einer Switch-Anweisung verwendet, um ein einfaches Wetterberatungssystem aufzubauen. Ihr Programm sollte:

  1. Definieren Sie ein enum namens WeatherCondition mit den folgenden Konstanten in genau dieser Reihenfolge:
    • SUNNY
    • CLOUDY
    • RAINY
    • STORMY
    • SNOWY
  2. Schreiben Sie eine Funktion namens getWeatherAdvice, die:
    • Einen enum WeatherCondition Parameter namens weather entgegennimmt
    • Nichts zurückgibt (void)
    • Eine switch-Anweisung verwendet, um wetterspezifische Ratschläge basierend auf der Bedingung auszugeben:
      • Für SUNNY: geben Sie Perfect day for outdoor activities! aus
      • Für CLOUDY: geben Sie Good day for a walk, no sun protection needed. aus
      • Für RAINY: geben Sie Don't forget your umbrella! aus
      • Für STORMY: geben Sie Stay indoors and avoid travel. aus
      • Für SNOWY: geben Sie Drive carefully and dress warmly. aus
  3. Schreiben Sie eine Funktion namens getActivitySuggestion, die:
    • Einen enum WeatherCondition Parameter namens weather entgegennimmt
    • Nichts zurückgibt (void)
    • Eine switch-Anweisung verwendet, um Aktivitäten basierend auf dem Wetter vorzuschlagen:
      • Für SUNNY: geben Sie Suggested activity: Beach or hiking aus
      • Für CLOUDY: geben Sie Suggested activity: Photography or gardening aus
      • Für RAINY: geben Sie Suggested activity: Reading or indoor games aus
      • Für STORMY: geben Sie Suggested activity: Movie marathon aus
      • Für SNOWY: geben Sie Suggested activity: Skiing or hot cocoa aus
  4. In der main-Funktion:
    • Deklarieren Sie eine Variable vom Typ enum WeatherCondition namens currentWeather
    • Lesen Sie eine Ganzzahl von der Eingabe ein, die die Wetterbedingung repräsentiert (0, 1, 2, 3 oder 4)
    • Weisen Sie currentWeather basierend auf der Eingabe den entsprechenden Enum-Wert zu
    • Geben Sie die aktuelle Wetterbedingung in genau diesem Format aus: Current weather: [numeric_value]
    • Rufen Sie die Funktion getWeatherAdvice mit currentWeather auf
    • Rufen Sie die Funktion getActivitySuggestion mit currentWeather auf

Diese Herausforderung demonstriert die Stärke der Kombination von Enums mit Switch-Anweisungen, um lesbaren und wartbaren Code zu erstellen. Anstatt verwirrende numerische Fälle in Ihren Switch-Anweisungen zu verwenden, nutzen Sie aussagekräftige Enum-Konstanten, die die Logik des Programms klar ausdrücken. Die Switch-Anweisung wird selbstdokumentierend, was es einfach macht zu verstehen, was jeder Fall darstellt, und das Verhalten bei Bedarf anzupassen.

Spickzettel

Die Verwendung von enum-Werten mit switch-Anweisungen erzeugt eine lesbare und wartbare Kontrollflusslogik:

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

Dieser Ansatz macht den Code selbstdokumentierend, indem aussagekräftige Namen anstelle von mysteriösen Zahlen wie case 0: oder case 5: verwendet werden. Der Compiler hilft dabei, Fehler zu finden, indem er Kompilierungsfehler für falsch geschriebene Enum-Konstanten erzeugt, anstatt unbemerkte Bugs zu verursachen.

Probier es selbst

#include <stdio.h>

// TODO: Definieren Sie hier das WeatherCondition-Enum

// TODO: Implementieren Sie hier die Funktion getWeatherAdvice

// TODO: Implementieren Sie hier die Funktion getActivitySuggestion

int main() {
    // Eingabe lesen
    int weatherInput;
    scanf("%d", &weatherInput);
    
    // TODO: Deklarieren Sie die Variable currentWeather und weisen Sie den Enum-Wert basierend auf der Eingabe zu
    
    // TODO: Geben Sie die aktuelle Wetterbedingung im Format "Current weather: [numeric_value]" aus
    
    // TODO: Rufen Sie die Funktion getWeatherAdvice auf
    
    // TODO: Rufen Sie die Funktion getActivitySuggestion auf
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow