Menu
Coddy logo textTech

enum per costanti denominate

Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 55 di 63.

Quando scrivi programmi in C, spesso hai bisogno di lavorare con insiemi di valori costanti correlati. Per esempio, potresti dover rappresentare i giorni della settimana, i mesi dell'anno o diversi stati in un programma. Invece di usare numeri grezzi come 0, 1, 2, puoi usare enum per creare nomi significativi per queste costanti.

Un tipo enumerato, o enum, ti permette di definire un gruppo di costanti intere con nome. Questo rende il tuo codice molto più leggibile e facile da mantenere. Ecco la sintassi di base:

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

Per impostazione predefinita, il primo nome riceve il valore 0, il secondo 1 e così via. Quindi MONDAY è uguale a 0, TUESDAY è uguale a 1 e SUNDAY è uguale a 6. Questo approccio è molto più chiaro che ricordare che il giorno 0 significa lunedì o che il giorno 6 significa domenica.

L'uso di enum rende il codice autoesplicativo e aiuta a prevenire gli errori che possono verificarsi quando si usano numeri magici nel programma.

Puoi dichiarare variabili di tipo enum e assegnare loro valori enum:

enum DayOfWeek today;
today = MONDAY;  // assegna 0 a today
challenge icon

Sfida

Facile

Crea un programma in C che definisca un enum per i colori del semaforo e ne dimostri l’uso. Il programma deve:

  1. Definire un enum denominato TrafficLight con le seguenti costanti in quest’ordine esatto:
    • RED
    • YELLOW
    • GREEN
  2. Nella funzione principale:
    • Dichiarare una variabile di tipo enum TrafficLight denominata currentLight
    • Leggere un intero dall’input che rappresenti lo stato del semaforo (0, 1 o 2)
    • Assegnare il valore enum corrispondente a currentLight in base all’input:
      • Se l’input è 0, assegnare RED
      • Se l’input è 1, assegnare YELLOW
      • Se l’input è 2, assegnare GREEN
    • Stampare lo stato attuale del semaforo in questo formato esatto: Current light: [enum_name]
    • Stampare il valore numerico del semaforo attuale in questo formato esatto: Numeric value: [number]
    • Determinare e stampare l’azione in base al colore attuale del semaforo:
      • Se RED: stampare Action: Stop
      • Se YELLOW: stampare Action: Caution
      • Se GREEN: stampare Action: Go
    • Calcolare e stampare il colore successivo del semaforo nella sequenza:
      • Se il colore attuale è RED (0), il successivo è GREEN (2)
      • Se il colore attuale è YELLOW (1), il successivo è RED (0)
      • Se il colore attuale è GREEN (2), il successivo è YELLOW (1)
    • Stampare il colore successivo in questo formato esatto: Next light: [enum_name]

Questa sfida dimostra come le costanti enum rendano il codice più leggibile rispetto all’uso di numeri grezzi. Invece di ricordare che 0 significa rosso, 1 significa giallo e 2 significa verde, puoi usare nomi significativi come RED, YELLOW e GREEN. Ti eserciterai a definire un enum, a usare le costanti enum nelle assegnazioni e nei confronti e ad accedere ai valori interi sottostanti delle costanti enum.

Provalo tu

#include <stdio.h>

// TODO: Definisci qui l'enum TrafficLight

int main() {
    // Leggi l'input
    int input;
    scanf("%d", &input);
    
    // TODO: Dichiara la variabile currentLight e assegnale un valore enum in base all'input
    
    // TODO: Stampa lo stato del semaforo corrente
    
    // TODO: Stampa il valore numerico
    
    // TODO: Stampa l'azione in base al semaforo corrente
    
    // TODO: Calcola e stampa il prossimo stato del semaforo
    
    return 0;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C online