Table des matières indexe chapitre suivant

Chapitre 2 : Les types du langage PASCAL

Table des matières


0. Introduction

Toute donnée manipulée par un programme PASCAL est typée. Le but de ce chapitre est de décrire les types disponibles, á savoir :

Pour chacun de ces types, on trouvera dans ce qui suit :

Les valeurs de tout type simple sont appelées des scalaires. Par exemple, les entiers, les réels et les booléens sont des scalaires. Par contre, chaque valeur d'un type structuré est elle­même une collection de valeurs (par exemple un vecteur ou une matrice).


1. Types simples

Remarque :

Lorsque la valeur calculée á l'aide des opérateurs et des fonctions prédéfinies n'est pas comprise dans l'ensemble des valeurs permises, la définition du PASCAL standard impose qu'une erreur soit signalée. Par contre, en PASCAL­UVA, aucune erreur n'est signalée lorsque l'opérateur, la procédure ou la fonction s'applique á une (des) valeur(s) du type integer, char ou real: le résultat donné est donc faux (par exemple, succ(maxint) = -maxint-1).

1.1. integer

1.2. char

1.3. Boolean

1.4. real

  • Ordre : l'ordre sur les réels.
  • Opérateurs :
        résultat réel : les opérateurs arithmétiques
            +   -   *   /
        résultat booléen : tous les opérateurs relationnels
            =   <   >   <=   >=   <>
  • Fonctions prédéfinies :
    Si x est de type réel
            abs : x  abs(x) = |2| , la valeur absolue de x
            sqr : x  sqr(x) = x
            sqrt  :  x  sqrt(x) = x, la racine carrée positive de x, avec x>=0
            sin : x  sin(x), le sinus de x radians
            cos : x  cos(x), le cosinus de x radians
            arctan : x  arctan(x), l'arc tangente, en radians, de x
            ln : x  ln(x), avecx > 0
            exp : x  exp(x) = e
            trunc : x  trunc(x) = la partie entière de x ( x   si  x>0, et x  si x > 0)
            round  :  x   round(x)  = l'entier le plus proche de x (
            trunc(x - 0.5) si x  0, trunc(x + 0.5) si x > 0 ).
  • Remarque : les fonctions pred, succ, ord ne sont pas prédéfinies sur les réels.

    1.5. Types énumérés

    1.6. Types intervalles


    2. Types structurés

    La section précédente montre qu'un type simple se définit entre autres par un ensemble de valeurs et que chaque valeur de type simple est un scalaire.
    La valeur d'un type structuré, par contre, n'est pas un scalaire : chaque valeur est elle­même une collection de valeurs. L'objet de cette section est de présenter les différents types structurés.

    2.1. Tableaux (array of ...)

    2.1.1. Définition et diagramme syntaxique
    Un type tableau (array) est un type structuré permettant de définir une collection finie et ordonnée de valeurs toutes de même type. La collection est ordonnée : chaque valeur est repérable par sa position au sein de la collection, position identifiée par un ou plusieurs indices. Pour définir complètement un type tableau, il faut spécifier 2.1.2. Strings
    Le type
        packed array [1..N] of char
    (avec N une constante 1) définit un tableau de N caractères encore appelé une chaîne de N caractères ou string.
    Le mot packed signifie que la représentation en mémoire est optimisée. L'accès aux éléments est cependant moins efficace. En fait, on peut définir n'importe quel type structuré comme étant packed. L'intérêt de cette technique est discutable sauf dans le cas présent.
    Ces chaînes de caractères se manipulent comme les autres tableaux (en particulier, on peut accéder á chacun des caractères qui les composent). Mais contrairement aux autres tableaux, ces chaînes possèdent les caractéristiques suivantes : 2.1.3. Tableaux multidimensionnels
    On appelle tableau multidimensionnel un tableau á plusieurs indices.
    Exemples

    Remarque
    Un tableau multidimensionnel á k indices peut être vu comme un tableau de tableaux de k-1 indices. Par exemple, une matrice M×N peut être vue comme un vecteur de M valeurs, chaque valeur étant elle­même un vecteur de N éléments. Comme le type des valeurs d'un tableau en PASCAL peut être quelconque, on peut définir les tableaux multidimensionnels comme des tableaux de tableaux.

    Exemples
    Les deux tableaux définis ci­dessus auraient pu l'être comme suit :

    Remarque
    La déclaration

        array [1..1000, 1..1000] of integer
    définit une matrice d' un million de nombres entiers ! Beaucoup d'ordinateurs imposent des limites quant au nombre total d'objets représentables simultanément en mémoire (sans oublier que les constructions d'un programme prennent également de la place !). Un million de nombres entiers occupent une place qui dépasse l'espace disponible dans un grand nombre d'ordinateurs de petite ou moyenne taille.

    2.2. Enregistrements (record)

    Un type record (on dit encore structure ou enregistrement) est un type structuré permettant de définir une collection finie de valeurs pouvant être de types différents. Chaque valeur est appelé un champ de la structure. A chaque champ est associé un nom; ce nom (ou identificateur) permet de désigner la valeur dans les expressions (cfr Ch 7). Il est clair que tous les champs d'une structure doivent avoir des noms différents. Pour définir complètement un type record, il faut spécifier

    Cas particulier : les enregistrements á champs variants
    On a vu dans le paragraphe précédent que pour définir complètement un type record, il faut spécifier le nom de chaque champ et le type de chaque champ. Il existe des applications où la valeur d'un champ influence la signification d'autres champs. Par exemple, supposons qu'une administration communale belge souhaite répertorier ses habitants; s'il s'agit de Belges, on souhaite connaître leur régime linguistique; s'il s'agit d'étrangers, on souhaite connaître leur nationalité.
    Un record á champs variants permet de rendre l'existence d'un champ dépendant de la valeur d'une autre champ de la structure.

    On notera que la partie variante du record doit être la dernière partie de la définition du record. L'utilisation de ce type de record est expliqué en Ch 8.2.4

    2.3. Ensembles (set of ...)

    Le set correspond partiellement au concept mathémathique d'ensemble, c'est­á­dire une collection d'éléments tous du même type, sans répétition. En PASCAL, le type des éléments contenus dans l'ensemble doit être un type énuméré, un type intervalle, le type Boolean ou le type char; ce type peut être donné explicitement ou par un identificateur de type (cfr Ch 4).

    2.4. Fichiers (file of ...)

    Un fichier est une collection totalement ordonnée (ou séquence) d'éléments de même type. La longueur d'un fichier, définie par le nombre d'éléments du fichier peut varier et n'est pas fixée dans le type. Cfr Ch 10 pour l'usage des objets de type file of.

    3.Types pointeurs

    A tout identificateur de type T (cfr Ch 4) peut être associé un type ``pointeur vers un élément de type T'', dont les valeurs sont soit des ``adresses'' d'éléments de type T, soit une valeur conventionnelle appelée valeur­nil, et qui n'est l'adresse d'aucun élément (cfr Ch 9).


    Table des matières indexe chapitre suivant