Enum
 Enum est un moyen d'assigner automatiquement des valeurs successives à des constantes, et donc d'attribuer des noms à des codes ou des numéros.
Par exemple, un programme de dessin doit utiliser des pinceaux, crayons, remplissage, ombrages, etc...
 Plutôt que d'utiliser un numéro dans les messages designant les composants du programme, on crée un enum:

enum
PINCEAU, CRAYON, REMPLISSAGE, OMBRAGE, etc...
/enum

La structure enum peut avoir aussi une syntaxe simplifiée:
enum PINCEAU, CRAYON, REMPLISSAGE, SHADOWN, etc...
Le let est inutile ici et peut être omis puisqu'il n'y a pas de condition après le mot-clé enum.

Aux identifieurs sont assignées les valeurs de 0 à n-1, si leur nombre est n.
L'enum ci-dessus est donc équivalent à:
constant integer PINCEAU = 0
constant integer CRAYON = 1
constant integer REMPLISSAGE = 2
constant integer OMBRAGE = 3
etc...

Il est possible de redémarrer la numérotation à toute position dans la liste:

Exemple de renumérotation enum PINCEAU, CRAYON = 4, REMPLISSAGE, OMBRAGE

print PINCEAU, CRAYON, REPLISSAGE,
 OMBRAGE
Affiche: > 0 4 5 6


 Enum permet d'assigner des littéraux entiers, réels ou textuels. Une valeur est associée avec un double point (et non le signe égal qui rédémarre la numérotation), et si rien n'est associé, un nombre entier sera assigné.

Exemple d'affectations. enum
ZERO : "a0" ,
ONE : "a1" ,
TWO: "a2",
THREE ,
FOUR : 3.15 ,
FIVE
/enum

print ZERO, ONE, TWO, THREE, FOUR, FIVE
Affiche: > a0 a1 a2 0 3.15 1


Un exemple plus significatif... Les codes des modes d'accès aux fichier sont assignés aux noms de opérations, dans une structure enum.

Exemple de codage. enum LIRE:"r", ECRIRE:"w", AJOUTER:"a"

file f = fopen("infile", LIRE)
file g = fopen("outfile", ECRIRE)

 Utilisez des enums pour rendre vos programmes plus lisibles. Cela ne coûte
rien en resources, car chaque nom est remplacé par la valeur dans le code Php ou C++ généré!
Bien sûr, cela ne rend pas le code généré plus lisible ;-)


 Exercices

1) Soit une liste de constantes de types divers. Réécrivez plus simplement le code avec une structure enum. Puis afficher les valeurs dans l'ordre a, b, c, d.

constant int a = 0
constant int b = 4
constant real c = 0.5
constant int d = 3

Réponse