Menu
Coddy logo textTech

enum für benannte Konstanten

Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 55 von 63.

Beim Schreiben von C-Programmen müssen Sie häufig mit Sätzen verwandter Konstantenwerte arbeiten. Beispielsweise müssen Sie möglicherweise Wochentage, Monate des Jahres oder verschiedene Zustände in einem Programm darstellen. Anstatt einfache Zahlen wie 0, 1, 2 zu verwenden, können Sie enum verwenden, um aussagekräftige Namen für diese Konstanten zu erstellen.

Ein Aufzählungstyp, oder enum, ermöglicht es Ihnen, eine Gruppe von benannten Ganzzahlkonstanten zu definieren. Dies macht Ihren Code wesentlich lesbarer und einfacher zu warten. Hier ist die grundlegende Syntax:

enum DayOfWeek {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

Standardmäßig erhält der erste Name den Wert 0, der zweite den Wert 1 und so weiter. Somit entspricht MONDAY 0, TUESDAY entspricht 1 und SUNDAY entspricht 6. Dieser Ansatz ist viel klarer, als sich merken zu müssen, dass Tag 0 Montag oder Tag 6 Sonntag bedeutet.

Die Verwendung von enum macht Ihren Code selbstdokumentierend und hilft dabei, Fehler zu vermeiden, die auftreten können, wenn Sie Magic Numbers in Ihrem gesamten Programm verwenden.

Du kannst Variablen vom Enum-Typ deklarieren und ihnen Enum-Werte zuweisen:

enum DayOfWeek today;
today = MONDAY;  // weist today 0 zu
challenge icon

Aufgabe

Einfach

Erstelle ein C-Programm, das ein enum für Ampelfarben definiert und dessen Verwendung demonstriert. Dein Programm sollte:

  1. Ein enum namens TrafficLight mit den folgenden Konstanten in genau dieser Reihenfolge definieren:
    • RED
    • YELLOW
    • GREEN
  2. In der main-Funktion:
    • Eine Variable vom Typ enum TrafficLight mit dem Namen currentLight deklarieren
    • Eine Ganzzahl aus der Eingabe lesen, die den Zustand der Ampel darstellt (0, 1 oder 2)
    • Den entsprechenden enum-Wert basierend auf der Eingabe currentLight zuweisen:
      • Wenn die Eingabe 0 ist, RED zuweisen
      • Wenn die Eingabe 1 ist, YELLOW zuweisen
      • Wenn die Eingabe 2 ist, GREEN zuweisen
    • Den aktuellen Ampelstatus in genau diesem Format ausgeben: Current light: [enum_name]
    • Den numerischen Wert der aktuellen Ampel in genau diesem Format ausgeben: Numeric value: [number]
    • Die Aktion basierend auf der aktuellen Ampel bestimmen und ausgeben:
      • Wenn RED: Action: Stop ausgeben
      • Wenn YELLOW: Action: Caution ausgeben
      • Wenn GREEN: Action: Go ausgeben
    • Die nächste Ampel in der Sequenz berechnen und ausgeben:
      • Wenn die aktuelle Ampel RED (0) ist, ist die nächste GREEN (2)
      • Wenn die aktuelle Ampel YELLOW (1) ist, ist die nächste RED (0)
      • Wenn die aktuelle Ampel GREEN (2) ist, ist die nächste YELLOW (1)
    • Die nächste Ampel in genau diesem Format ausgeben: Next light: [enum_name]

Diese Aufgabe zeigt, wie enum-Konstanten den Code lesbarer machen als die Verwendung von reinen Zahlen. Statt sich daran zu erinnern, dass 0 Rot, 1 Gelb und 2 Grün bedeutet, kannst du aussagekräftige Namen wie RED, YELLOW und GREEN verwenden. Du übst das Definieren eines enum, die Verwendung von enum-Konstanten in Zuweisungen und Vergleichen sowie den Zugriff auf die zugrunde liegenden Ganzzahlwerte von enum-Konstanten.

Probier es selbst

#include <stdio.h>

// TODO: Definiere hier das TrafficLight-Enum

int main() {
    // Eingabe lesen
    int input;
    scanf("%d", &input);
    
    // TODO: Deklariere die Variable currentLight und weise ihr basierend auf der Eingabe einen Enum-Wert zu
    
    // TODO: Aktuellen Ampelstatus ausgeben
    
    // TODO: Numerischen Wert ausgeben
    
    // TODO: Aktion basierend auf der aktuellen Ampel ausgeben
    
    // TODO: Nächste Ampelphase berechnen und ausgeben
    
    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 Logik & Ablauf

Übe selbstständig: Online-C-Compiler