Menu
Coddy logo textTech

Enum nelle istruzioni switch

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

Una delle combinazioni più potenti nella programmazione in C consiste nell'usare i valori di enum con le istruzioni switch. Questa combinazione crea una logica di flusso di controllo eccezionalmente leggibile e facile da mantenere, che esprime chiaramente il processo decisionale del programma.

Quando usi le costanti enum come casi in un'istruzione switch, il codice diventa autoesplicativo. Invece di vedere numeri misteriosi come case 0: o case 5:, vedi nomi significativi che ne comunicano immediatamente lo scopo:

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

Questo approccio rende il tuo codice molto più facile da capire e modificare. Chiunque legga questo codice capisce immediatamente cosa rappresenta ogni caso, e aggiungere nuovi casi o cambiare la logica diventa semplice. Il compilatore aiuta anche a individuare gli errori: se scrivi male una costante enum, riceverai un errore di compilazione anziché un bug silenzioso.

challenge icon

Sfida

Facile

Crea un programma in C che utilizzi un enum con un’istruzione switch per realizzare un semplice sistema di consigli meteorologici. Il tuo programma deve:

  1. Definire un enum denominato WeatherCondition con le seguenti costanti, in questo ordine esatto:
    • SUNNY
    • CLOUDY
    • RAINY
    • STORMY
    • SNOWY
  2. Scrivere una funzione denominata getWeatherAdvice che:
    • Accetti un parametro enum WeatherCondition denominato weather
    • Non restituisca nulla (void)
    • Utilizzi un’istruzione switch per stampare consigli specifici in base alle condizioni meteorologiche:
      • Per SUNNY: stampa Perfect day for outdoor activities!
      • Per CLOUDY: stampa Good day for a walk, no sun protection needed.
      • Per RAINY: stampa Don't forget your umbrella!
      • Per STORMY: stampa Stay indoors and avoid travel.
      • Per SNOWY: stampa Drive carefully and dress warmly.
  3. Scrivere una funzione denominata getActivitySuggestion che:
    • Accetti un parametro enum WeatherCondition denominato weather
    • Non restituisca nulla (void)
    • Utilizzi un’istruzione switch per suggerire attività in base alle condizioni meteorologiche:
      • Per SUNNY: stampa Suggested activity: Beach or hiking
      • Per CLOUDY: stampa Suggested activity: Photography or gardening
      • Per RAINY: stampa Suggested activity: Reading or indoor games
      • Per STORMY: stampa Suggested activity: Movie marathon
      • Per SNOWY: stampa Suggested activity: Skiing or hot cocoa
  4. Nella funzione main:
    • Dichiarare una variabile di tipo enum WeatherCondition denominata currentWeather
    • Leggere dall’input un numero intero che rappresenta la condizione meteorologica (0, 1, 2, 3 o 4)
    • Assegnare a currentWeather il valore enum corrispondente in base all’input
    • Stampare la condizione meteorologica corrente in questo formato esatto: Current weather: [numeric_value]
    • Chiamare la funzione getWeatherAdvice con currentWeather
    • Chiamare la funzione getActivitySuggestion con currentWeather

Questa sfida dimostra la potenza della combinazione di enum e istruzioni switch per creare codice leggibile e facile da mantenere. Invece di usare casi numerici poco chiari nelle istruzioni switch, userai costanti enum significative che esprimono chiaramente la logica del programma. L’istruzione switch diventa autoesplicativa, rendendo facile capire cosa rappresenta ogni caso e modificare il comportamento secondo necessità.

Provalo tu

#include <stdio.h>

// TODO: Definisci qui l'enum WeatherCondition

// TODO: Implementa qui la funzione getWeatherAdvice

// TODO: Implementa qui la funzione getActivitySuggestion

int main() {
    // Leggi l'input
    int weatherInput;
    scanf("%d", &weatherInput);
    
    // TODO: Dichiara la variabile currentWeather e assegnale un valore dell'enum in base all'input
    
    // TODO: Stampa la condizione meteorologica attuale nel formato "Current weather: [numeric_value]"
    
    // TODO: Chiama la funzione getWeatherAdvice
    
    // TODO: Chiama la funzione getActivitySuggestion
    
    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