Menu
Coddy logo textTech

Les énumérations dans les instructions switch

Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 57 sur 63.

L'une des combinaisons les plus puissantes en programmation C est l'utilisation de valeurs enum avec des instructions switch. Cette association crée une logique de flux de contrôle exceptionnellement lisible et facile à maintenir qui exprime clairement le processus de prise de décision de votre programme.

Lorsque vous utilisez des constantes d'énumération comme cas dans une instruction switch, le code devient auto-documenté. Au lieu de voir des nombres mystérieux comme case 0: ou case 5:, vous voyez des noms significatifs qui transmettent immédiatement leur but :

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

Cette approche rend votre code beaucoup plus facile à comprendre et à modifier. Quiconque lit ce code sait immédiatement ce que chaque cas représente, et l'ajout de nouveaux cas ou la modification de la logique devient simple. Le compilateur aide également à détecter les erreurs - si vous orthographiez mal une constante d'énumération, vous obtiendrez une erreur de compilation plutôt qu'un bogue silencieux.

challenge icon

Défi

Facile

Créez un programme C qui utilise un enum avec une instruction switch pour construire un système simple de conseil météorologique. Votre programme doit :

  1. Définir un enum nommé WeatherCondition avec les constantes suivantes dans cet ordre exact :
    • SUNNY
    • CLOUDY
    • RAINY
    • STORMY
    • SNOWY
  2. Écrire une fonction nommée getWeatherAdvice qui :
    • Prend un paramètre enum WeatherCondition nommé weather
    • Ne retourne rien (void)
    • Utilise une instruction switch pour afficher des conseils spécifiques à la météo basés sur la condition :
      • Pour SUNNY : affiche Perfect day for outdoor activities!
      • Pour CLOUDY : affiche Good day for a walk, no sun protection needed.
      • Pour RAINY : affiche Don't forget your umbrella!
      • Pour STORMY : affiche Stay indoors and avoid travel.
      • Pour SNOWY : affiche Drive carefully and dress warmly.
  3. Écrire une fonction nommée getActivitySuggestion qui :
    • Prend un paramètre enum WeatherCondition nommé weather
    • Ne retourne rien (void)
    • Utilise une instruction switch pour suggérer des activités basées sur la météo :
      • Pour SUNNY : affiche Suggested activity: Beach or hiking
      • Pour CLOUDY : affiche Suggested activity: Photography or gardening
      • Pour RAINY : affiche Suggested activity: Reading or indoor games
      • Pour STORMY : affiche Suggested activity: Movie marathon
      • Pour SNOWY : affiche Suggested activity: Skiing or hot cocoa
  4. Dans la fonction main :
    • Déclarer une variable de type enum WeatherCondition nommée currentWeather
    • Lire un entier depuis l'entrée représentant la condition météorologique (0, 1, 2, 3 ou 4)
    • Assigner la valeur enum correspondante à currentWeather basée sur l'entrée
    • Afficher la condition météo actuelle dans ce format exact : Current weather: [numeric_value]
    • Appeler la fonction getWeatherAdvice avec currentWeather
    • Appeler la fonction getActivitySuggestion avec currentWeather

Ce défi démontre la puissance de la combinaison des enums avec les instructions switch pour créer un code lisible et facile à maintenir. Au lieu d'utiliser des cas numériques confus dans vos instructions switch, vous utiliserez des constantes enum significatives qui expriment clairement la logique du programme. L'instruction switch devient auto-documentée, ce qui permet de comprendre facilement ce que chaque cas représente et de modifier le comportement si nécessaire.

Aide-mémoire

L'utilisation de valeurs enum avec des instructions switch crée une logique de flux de contrôle lisible et facile à maintenir :

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

Cette approche rend le code auto-documenté en utilisant des noms significatifs au lieu de nombres mystérieux comme case 0: ou case 5:. Le compilateur aide à détecter les erreurs en générant des erreurs de compilation pour les constantes enum mal orthographiées plutôt que des bugs silencieux.

Essayez vous-même

#include <stdio.h>

// TODO: Définir l'énumération WeatherCondition ici

// TODO: Implémenter la fonction getWeatherAdvice ici

// TODO: Implémenter la fonction getActivitySuggestion ici

int main() {
    // Lire l'entrée
    int weatherInput;
    scanf("%d", &weatherInput);
    
    // TODO: Déclarer la variable currentWeather et assigner la valeur de l'énumération basée sur l'entrée
    
    // TODO: Afficher la condition météo actuelle au format "Current weather: [numeric_value]"
    
    // TODO: Appeler la fonction getWeatherAdvice
    
    // TODO: Appeler la fonction getActivitySuggestion
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow