Déclarer et utiliser des énumérations
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 56 sur 63.
Maintenant que vous avez défini un enum, vous pouvez créer des variables de ce type d'énumération et leur assigner des valeurs significatives. C'est là que les énumérations brillent vraiment : au lieu de travailler avec des nombres déroutants, vous utilisez des noms descriptifs.
Pour déclarer une variable de type enum, vous utilisez la même syntaxe que pour déclarer n'importe quelle autre variable :
enum DayOfWeek today;
enum DayOfWeek weekend_day;Vous pouvez ensuite affecter des valeurs à ces variables en utilisant les constantes nommées de votre énumération :
today = WEDNESDAY;
weekend_day = SATURDAY;Comparez cela à l'utilisation de nombres bruts : today = 2; et weekend_day = 5;. La version enum vous indique immédiatement avec quel jour vous travaillez, tandis que les nombres vous obligent à vous rappeler ce que chaque valeur représente. Cela rend votre code beaucoup plus lisible et moins sujet aux erreurs.
Défi
FacileCréez un programme C qui démontre la déclaration et l'utilisation de variables enum pour un système simple de gestion de tâches. Votre programme doit :
- Définir un
enumnomméTaskStatusavec les constantes suivantes dans cet ordre exact :PENDINGIN_PROGRESSCOMPLETEDCANCELLED
- Dans la fonction main :
- Déclarer trois variables de type
enum TaskStatusnomméestask1,task2ettask3 - Lire trois entiers à partir de l'entrée représentant le statut de chaque tâche (0, 1, 2 ou 3)
- Attribuer les valeurs enum correspondantes à chaque variable de tâche en fonction de l'entrée :
- Si l'entrée est 0, attribuer
PENDING - Si l'entrée est 1, attribuer
IN_PROGRESS - Si l'entrée est 2, attribuer
COMPLETED - Si l'entrée est 3, attribuer
CANCELLED
- Si l'entrée est 0, attribuer
- Afficher le statut de chaque tâche en utilisant les valeurs enum dans ce format exact :
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Compter et afficher combien de tâches sont dans chaque catégorie de statut :
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Calculer et afficher le nombre total de tâches actives (tâches qui sont soit
PENDINGsoitIN_PROGRESS) dans ce format exact :Active tasks: [count]
- Déclarer trois variables de type
Ce défi démontre comment les variables enum rendent le code plus lisible en utilisant des noms significatifs au lieu de nombres bruts. Vous vous entraînerez à déclarer des variables enum, à attribuer des valeurs enum basées sur l'entrée, à utiliser des constantes enum dans des comparaisons et à effectuer des calculs avec des valeurs enum.
Aide-mémoire
Pour déclarer des variables d'un type enum, utilisez la même syntaxe que pour déclarer n'importe quelle autre variable :
enum DayOfWeek today;
enum DayOfWeek weekend_day;Attribuez des valeurs aux variables enum en utilisant les constantes nommées de votre enum :
today = WEDNESDAY;
weekend_day = SATURDAY;L'utilisation de noms d'enum au lieu de nombres bruts rend le code plus lisible et moins sujet aux erreurs. Comparez today = WEDNESDAY; avec today = 2; - la version enum montre immédiatement avec quel jour vous travaillez.
Essayez vous-même
#include <stdio.h>
// TODO: Définir l'énumération TaskStatus ici
int main() {
// Lire l'entrée pour trois statuts de tâche
int status1, status2, status3;
scanf("%d", &status1);
scanf("%d", &status2);
scanf("%d", &status3);
// TODO: Déclarer trois variables d'énumération TaskStatus (task1, task2, task3)
// TODO: Assigner les valeurs de l'énumération en fonction de l'entrée
// TODO: Afficher les statuts des tâches
// TODO: Compter les tâches dans chaque catégorie
// TODO: Calculer et afficher le nombre de tâches actives
return 0;
}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
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères7Structures (structs)
Qu'est-ce qu'une Struct ?Déclarer une StructCréer des variables de type StructAccéder aux membres d'une StructInitialiser des StructsRécapitulatif : Struct de données étudiant10Énumérations et typedef
enum pour les constantes nomméesDéclarer et utiliser des énumérationsLes énumérations dans les instructions switchUtiliser typedef pour les alias de typestypedef avec les structuresRécapitulatif : Pratique de typedef et enum2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînes