TYPES ENUMERES NON STANDARDS

Si les types predefinis mentionnes precedement ne vous suffisent pas, vous pouvez declarer (donc creer) d'autres types. Il faut d'abord definir le type que vous desirez creer en donnant la liste ordonnee de toutes les valeurs possibles :

exemple :

TYPE tjour=(lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche);

Toutes le variables de ce type ne pourront pas avoir d'autres valeurs que celles que l'on a enumerees.

Il faut ensuite declarer quelles variables seront de ce type :

ex: VAR jour1,jour2:tjour;

On peut alors les utiliser dans le programme grace a :

* des affectations : JOUR1:=mercredi;

JOUR2:=JOUR1;

* des fonctions predefinies: PRED (precedent), SUCC (suivant), ORD (numero d'ordre (dans la declaration), entre 0 et N-1)

ex: pred(mardi)=lundi

succ(mardi)=mercredi

ord(mardi)=1

* des comparaisons : lundi<mercredi mais attention dimanche>lundi (suivant l'ordre donne dans la declaration)

* des boucles : FOR jour1:=lundi TO vendredi DO ...

* des selections de cas : CASE jour2 OF

lundi : ...;

samedi,dimanche : ...

END

Rq1: les types entiers, booleens, caracteres sont des types enumeres predefinis. Toutes ces possibilites s'y appliquent donc (succ(10)=11, ord('A')=65,...). Par contre les reels ne sont pas enumeres (on ne peut pas definir de successeur), et ni CASE ni FOR ne peuvent s'y appliquer.

Rq2: READLN et WRITELN ne fonctionnent pas en standard pour les types definis par l'utilisateur, mais plusieurs compilateurs l'acceptent (pas TURBO).