Menu
Coddy logo textTech

Les énumérations dans les instructions switch

Fait partie de la section Logique & Flux 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 une énumération avec une instruction switch afin de construire un système simple de conseils météorologiques. 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 renvoie rien (void)
    • Utilise une instruction switch pour afficher des conseils météorologiques spécifiques en fonction de la condition :
      • Pour SUNNY : afficher Perfect day for outdoor activities!
      • Pour CLOUDY : afficher Good day for a walk, no sun protection needed.
      • Pour RAINY : afficher Don't forget your umbrella!
      • Pour STORMY : afficher Stay indoors and avoid travel.
      • Pour SNOWY : afficher Drive carefully and dress warmly.
  3. Écrire une fonction nommée getActivitySuggestion qui :
    • Prend un paramètre enum WeatherCondition nommé weather
    • Ne renvoie rien (void)
    • Utilise une instruction switch pour suggérer des activités en fonction de la météo :
      • Pour SUNNY : afficher Suggested activity: Beach or hiking
      • Pour CLOUDY : afficher Suggested activity: Photography or gardening
      • Pour RAINY : afficher Suggested activity: Reading or indoor games
      • Pour STORMY : afficher Suggested activity: Movie marathon
      • Pour SNOWY : afficher Suggested activity: Skiing or hot cocoa
  4. Dans la fonction principale :
    • Déclarer une variable de type enum WeatherCondition nommée currentWeather
    • Lire un entier saisi représentant la condition météorologique (0, 1, 2, 3 ou 4)
    • Affecter la valeur d’énumération correspondante à currentWeather en fonction de la saisie
    • Afficher la condition météorologique actuelle dans ce format exact : Current weather: [numeric_value]
    • Appeler la fonction getWeatherAdvice avec currentWeather
    • Appeler la fonction getActivitySuggestion avec currentWeather

Ce défi montre la puissance de la combinaison des énumérations et des instructions switch pour créer un code lisible et facile à maintenir. Au lieu d’utiliser des cas numériques déroutants dans vos instructions switch, vous utiliserez des constantes d’énumération explicites qui expriment clairement la logique du programme. L’instruction switch devient ainsi auto-documentée, ce qui facilite la compréhension de ce que représente chaque cas et la modification du comportement selon les besoins.

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 Logique & Flux

Entraînez-vous par vous-même : Compilateur C en ligne