Table des matières indexe chapitre suivant

Chapitre 4 : Déclarations de types

Tables des matières


0. Introduction

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.


1. Diagrammes syntaxiques

partie déclarations de types :
expression de type :
L' identificateur1 de type est

En Turbo-PASCAL, l'expression de type peut également désigner un type procédural

Exemple

    type  jour = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) ;
          intervalle = 1..10 ;
          day = jour ;

2. Ordre des déclarations et définitions récursives

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

  1. type  noeud = record
          valeur : integer ;
          link : noeud                  {!!! interdit!!!}
    end ;
  2. type  noeud = record
          valeur : integer ;
          link : ^noeud                 {!!! aussi interdit!!!}
    end ;

Dans le cas des pointeurs (exemple (b) ci­dessus), 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 ci­dessus 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é.


3. Synonymie

  1. Dans une déclaration de type de la forme

    les identificateur1 de type et identificateur2 de type sont rendus synonymes. Dans la suite du programme, ils pourront être utilisés indifféremment.
    Exemples


  2. Par contre, dans une déclaration de type de la forme

    deux identificateurs de type déclarés au moyen de la même expression de type représentent des types différents; ils ne sont pas synonymes.

    Exemple
    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 ci­dessus, 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).


Table des matières indexe chapitre suivant