Menu
Coddy logo textTech

enum pour les constantes nommées

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

Lors de l'écriture de programmes en C, vous avez souvent besoin de travailler avec des ensembles de valeurs constantes liées. Par exemple, vous pourriez avoir besoin de représenter les jours de la semaine, les mois de l'année ou différents états dans un programme. Au lieu d'utiliser des nombres bruts comme 0, 1, 2, vous pouvez utiliser enum pour créer des noms significatifs pour ces constantes.

Un type énuméré, ou enum, vous permet de définir un groupe de constantes entières nommées. Cela rend votre code beaucoup plus lisible et plus facile à maintenir. Voici la syntaxe de base :

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

Par défaut, le premier nom reçoit la valeur 0, le deuxième reçoit 1, et ainsi de suite. Ainsi, MONDAY est égal à 0, TUESDAY est égal à 1, et SUNDAY est égal à 6. Cette approche est bien plus claire que de se rappeler que le jour 0 signifie lundi ou que le jour 6 signifie dimanche.

L'utilisation de enum rend votre code auto-documenté et aide à prévenir les erreurs qui peuvent survenir lors de l'utilisation de nombres magiques tout au long de votre programme.

Vous pouvez déclarer des variables de type enum et leur assigner des valeurs enum :

enum DayOfWeek today;
today = MONDAY;  // assigne 0 à today
challenge icon

Défi

Facile

Créez un programme C qui définit un enum pour les couleurs des feux de signalisation et démontre son utilisation. Votre programme doit :

  1. Définir un enum nommé TrafficLight avec les constantes suivantes dans cet ordre exact :
    • RED
    • YELLOW
    • GREEN
  2. Dans la fonction principale :
    • Déclarer une variable de type enum TrafficLight nommée currentLight
    • Lire un entier à partir de l'entrée représentant l'état du feu de signalisation (0, 1 ou 2)
    • Attribuer la valeur d'énumération correspondante à currentLight en fonction de l'entrée :
      • Si l'entrée est 0, attribuer RED
      • Si l'entrée est 1, attribuer YELLOW
      • Si l'entrée est 2, attribuer GREEN
    • Afficher l'état actuel du feu dans ce format exact : Current light: [enum_name]
    • Afficher la valeur numérique du feu actuel dans ce format exact : Numeric value: [number]
    • Déterminer et afficher l'action basée sur le feu actuel :
      • Si RED : afficher Action: Stop
      • Si YELLOW : afficher Action: Caution
      • Si GREEN : afficher Action: Go
    • Calculer et afficher le prochain feu dans la séquence :
      • Si le feu actuel est RED (0), le suivant est GREEN (2)
      • Si le feu actuel est YELLOW (1), le suivant est RED (0)
      • Si le feu actuel est GREEN (2), le suivant est YELLOW (1)
    • Afficher le prochain feu dans ce format exact : Next light: [enum_name]

Ce défi démontre comment les constantes enum rendent le code plus lisible que l'utilisation de nombres bruts. Au lieu de se rappeler que 0 signifie rouge, 1 signifie jaune et 2 signifie vert, vous pouvez utiliser des noms significatifs comme RED, YELLOW et GREEN. Vous vous entraînerez à définir une énumération, à utiliser des constantes d'énumération dans des affectations et des comparaisons, et à accéder aux valeurs entières sous-jacentes des constantes d'énumération.

Aide-mémoire

Une enum vous permet de définir un groupe de constantes entières nommées, rendant le code plus lisible que l'utilisation de nombres bruts :

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

Par défaut, le premier nom reçoit la valeur 0, le deuxième reçoit 1, et ainsi de suite. Ainsi, MONDAY est égal à 0, TUESDAY est égal à 1, etc.

Vous pouvez déclarer des variables de type enum et leur assigner des valeurs d'énumération :

enum DayOfWeek today;
today = MONDAY;  // assigne 0 à today

Essayez vous-même

#include <stdio.h>

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

int main() {
    // Lire l'entrée
    int input;
    scanf("%d", &input);
    
    // TODO: Déclarer la variable currentLight et assigner la valeur de l'énumération basée sur l'entrée
    
    // TODO: Afficher le statut actuel du feu
    
    // TODO: Afficher la valeur numérique
    
    // TODO: Afficher l'action basée sur le feu actuel
    
    // TODO: Calculer et afficher le prochain feu
    
    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