Déclarer et utiliser des énumérations
Fait partie de la section Logique & Flux 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 d’un type énuméré, vous utilisez la même syntaxe que pour déclarer toute 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 avec l’énumération vous indique immédiatement à quel jour vous travaillez, tandis qu’avec les nombres, vous devez vous souvenir de ce que chaque valeur représente. Cela rend votre code beaucoup plus lisible et moins sujet aux erreurs.
Défi
FacileCréez un programme en C qui montre comment déclarer et utiliser des variables d’énumération pour un système simple de gestion des tâches. Votre programme doit :
- Définir une
enumnomméeTaskStatusavec 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 saisis représentant l’état de chaque tâche (0, 1, 2 ou 3)
- Attribuer les valeurs d’énumération correspondantes à chaque variable de tâche en fonction de la saisie :
- Si la saisie est 0, attribuer
PENDING - Si la saisie est 1, attribuer
IN_PROGRESS - Si la saisie est 2, attribuer
COMPLETED - Si la saisie est 3, attribuer
CANCELLED
- Si la saisie est 0, attribuer
- Afficher l’état de chaque tâche en utilisant les valeurs d’énumération dans ce format exact :
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Compter et afficher le nombre de tâches dans chaque catégorie d’état :
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Calculer et afficher le nombre total de tâches actives (les tâches qui sont soit
PENDING, soitIN_PROGRESS) dans ce format exact :Active tasks: [count]
- Déclarer trois variables de type
Ce défi montre comment les variables d’énumération rendent le code plus lisible en utilisant des noms significatifs au lieu de nombres bruts. Vous vous exercerez à déclarer des variables d’énumération, à attribuer des valeurs d’énumération en fonction de la saisie, à utiliser des constantes d’énumération dans des comparaisons et à effectuer des calculs avec des valeurs d’énumération.
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 Logique & Flux
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înesEntraînez-vous par vous-même : Compilateur C en ligne