Type énuméré

Un article de Wikipédia, l'encyclopédie libre.

En programmation informatique, un type énuméré (appelé souvent énumération ou juste enum, parfois type énumératif ou liste énumérative) est un type de données qui consiste en un ensemble de valeurs constantes. Ces différentes valeurs représentent différents cas ; on les nomme énumérateurs[réf. nécessaire]. Lorsqu'une variable est de type énuméré, elle peut avoir comme valeur n'importe quel cas de ce type énuméré.

Un exemple typique est la représentation de cartes à jouer ordinaires : la suite ("couleur") ainsi que la hauteur (nombre ou figure) de la carte peuvent être représentés par des énumérations. Dans certains langages, le type booléen (logique) est un type énuméré prédéfini qui possède deux énumérateurs (true et false). Toutefois, les énumérateurs sont souvent écrits en majuscule afin d'indiquer que ce sont des constantes.

Syntaxe et fonctionnement[modifier | modifier le code]

Langage C[modifier | modifier le code]

En C et avec les langages syntaxiquement proches :

Exemple de type personnalisé énuméré
Exemple en
langage C langage C++
//** ****************************************
//** Fichier de déclaration
//** ****************************************

//## Déclaration d'un type personnalisé (liste énumérative).
enum TCouleurCarte
{
   ccTrefle,
   ccCarreau,
   ccCoeur,
   ccPique
};

//## Déclaration d'un type personnalisé (structure).
struct TCarte
{
   enum TCouleurCarte Couleur;
   short int          Valeur;
};

//** ****************************************
//** Fichier d'implémentation
//** ****************************************

//** Définition d'une variable 
//** à partir du type personnalisé (structure).
struct TCarte MaMain[5];

//** Définition d'une variable 
//** à partir du type personnalisé (liste énumérative).
enum TCouleurCarte Atout;

//   Affecter une valeur à l'atout.
Atout = ccTrefle;

//   Affecter une valeur à l'une des cartes de la main.
MaMain[2].Couleur = ccCoeur;
MaMain[2].Valeur  = 10;



En C, les énumérateurs ont une portée globale ou limitée à un bloc. Ils sont équivalents à des entiers. Le premier énumérateur vaut zéro, tandis que tous les suivants correspondent à leur précédent incrémenté de un. Il est possible de choisir explicitement les valeurs des constantes d'énumération (ou de certaines d'entre elles ; dans ce cas, les autres suivent la règle donnée précédemment), comme dans :

enum TCouleurCarte {
    ccTrefle  = 12,
    ccCarreau = 21,
    ccCoeur   = 5,
    ccPique   = 17
};

Source[modifier | modifier le code]