Dans le langage PASCAL, il est possible d'associer un identificateur á un type (tels que ceux décrits au Chapitre 2 de la Partie I) , via une déclaration de type. Ce chapitre explique comment s'y prendre.
partie déclarations de types :
expression de type :
L' identificateur1 de type est
Exemple
type jour = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) ; intervalle = 1..10 ; day = jour ;
En règle générale en PASCAL,
_______________________________________________________________ | tout identificateur doit être déclaré avant d'être utilisé. | |______________________________________________________________|C'est en particulier le cas pour les identificateurs de type.
Dans une déclaration de type, l'expression de type
(cfr diagramme syntaxique)
ne peut contenir l'identificateur2 de type
(c'estádire qu'il ne peut y avoir de définition récursive).
Exemples
type noeud = record valeur : integer ; link : noeud {!!! interdit!!!} end ;
type noeud = record valeur : integer ; link : ^noeud {!!! aussi interdit!!!} end ;
Dans le cas des pointeurs (exemple (b) cidessus), il est cependant
possible de définir le type de façon récursive par une
déclaration préalable d'un type pointeur :
Exemple
type ptr = ^noeud ; noeud = record valeur : integer ; link : ptr end ;
On remarque que la déclaration du type ptr de l'exemple cidessus fait appel á l'identificateur noeud non encore défini. Ceci constitue la seule exception á la règle selon laquelle tout identificateur doit être déclaré avant d'être utilisé.
type entier = integer ; nombre = entier ;"entier" et "integer" sont synonymes; "nombre" et "entier" sont synonymes. Par transitivité, "nombre" est synonyme de "integer".
type entier = integer ; nombre = integer ;Par transitivité, "entier" et "nombre" sont synonymes.
type vect1 = array [1..10] of integer ; vect2 = array [1..10] of integer ;vect1 et vect2 ne sont pas synonymes; ils représentent, au sens du langage PASCAL, deux types différents !
Le fait que deux types définis de façon identique, comme dans l'exemple cidessus, ne soient pas synonymes entraîne un certain nombre de conséquences quant aux opérations permises sur des variables de ces types (cfr Ch 8.2.2 et Ch 11.2.4).