Вы находитесь на странице: 1из 26

LES TYPES DE DONNES DU LANGAGE PASCAL 75

CHAPITRE 4

LES TYPES DE DONNES DU LANGAGE PASCAL

OBJECTIFS

PRSENTER LES NOTIONS DTIQUETTE, DE CONS-


TANTE ET DE VARIABLE DANS LE CONTEXTE DU LAN-

GAGE PASCAL.

DFINIR LES TYPES DE DONNES STANDARDS ET NON

STANDARDS DE CE LANGAGE.

RPERTORIER LES FONCTIONS STANDARDS INTRIN-


SQUES AU LANGAGE PASCAL.
76 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI
LES TYPES DE DONNES DU LANGAGE PASCAL 77

Ce chapitre traite des diffrents types de donnes dans le langage PASCAL. Dans ce
contexte, nous commencerons par prciser le sens de certaines notions de base telles
que tiquette, constante et variable. Par la suite, nous distinguerons les types de don-
nes standards et non standards, ce qui nous amnera finalement aux fonctions stan-
dards du langage PASCAL.

4.1 LA NOTION DTIQUETTE

Dans le langage PASCAL, on dsigne par tiquette un nombre entier, suivi des deux-
points (:), plac au dbut dune instruction excutable et qui identifie de manire unique
cette instruction.

Exemple 4.1

Association dune tiquette une instruction :


3 : WRITELN('C''EST LA TROISIEME ETIQUETTE DU PROGRAMME.');

Dans cet exemple, le chiffre 3 plac au dbut de linstruction constitue ltiquette. De


cette faon, il est possible de se rfrer cette instruction simplement en spcifiant
ltiquette 3. Le mot rserv correspondant tiquette en PASCAL est LABEL.

Les dclarations dtiquettes seffectuent conformment au diagramme syntaxique de


la figure 4.1. Selon ce diagramme, pour dclarer une tiquette, on place le nombre
entier sans signe reprsentant cette tiquette entre le mot cl LABEL et un point-
virgule. Pour dclarer plusieurs tiquettes, on place dabord le mot cl LABEL, suivi
de la liste des nombres entiers sans signe reprsentant ces tiquettes, ceux-ci tant
spars lun de lautre par une virgule, le tout se terminant par un point-virgule.
78 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

Exemple 4.2

a) Dclaration dune tiquette :


LABEL 1;

b) Dclaration de trois tiquettes :


LABEL 4, 8, 10;

LABEL Entier sans signe ;

FIGURE 4.1
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DTIQUETTES.

4.2 LES CONSTANTES ET LES VARIABLES

Dune manire gnrale, les donnes sont manipules dans lordinateur soit comme des
constantes, soit comme des variables. Il importe donc de spcifier dans les programmes
qui manipulent ces donnes et ce ds le dpart sil sagit dune constante ou dune
variable. Cest ce quon appelle une dclaration de constante ou de variable.

4.2.1 La notion de constante

Une constante est une donne qui a une valeur fixe tout au long du programme dans
lequel elle est utilise. En PASCAL, on en distingue deux types : les constantes num-
riques et les constantes chanes de caractres.

Un diagramme syntaxique de constante numrique a t prsent au chapitre prcdent


la figure 3.9. Il est toutefois possible de gnraliser cette dfinition en introduisant les
notions dj connues de nombre sans signe et didentificateur. Ainsi, selon la figure 4.2,
LES TYPES DE DONNES DU LANGAGE PASCAL 79

on peut obtenir une constante numrique en affectant dun signe (+ ou ) un nombre


sans signe ou un identificateur.

+ Identificateur de constante

Nombre sans signe

FIGURE 4.2
DIAGRAMME SYNTAXIQUE DUNE CONSTANTE NUMRIQUE.

Quant la constante chane de caractres, aussi appele littrale, elle correspond une
suite de caractres encadre par deux apostrophes. La figure 4.3 en donne le dia-
gramme syntaxique.

' Caractre '

FIGURE 4.3
DIAGRAMME SYNTAXIQUE DUNE CONSTANTE CHANE DE CARACTRES.

Pour associer un identificateur une constante numrique ou chane de caractres, il


faut faire une dclaration de constante. Ainsi, conformment la figure 4.4, pour
dclarer une seule constante, on fait suivre le mot cl CONST du nom de la constante
(identificateur de constante), suivi du symbole dgalit, suivi de la constante, suivi
finalement dun point-virgule. Dans le cas dune dclaration de plusieurs constantes, on
rpte lopration prcdente pour chaque nouvelle constante dclarer, sans toutefois
rpter le mot cl CONST.

CONST Identificateur = Constante ;

FIGURE 4.4
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE CONSTANTE.
80 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

Exemple 4.3

a) Dclaration dune constante numrique :


CONST huit = 8;

b) Dclaration de deux constantes numriques et dune constante chane de carac-


tres :
CONST huit = 8;
tps = 0.07;
manuel = 'INTRODUCTION A LA PROGRAMMATION';

Notons quon ne peut pas modifier la valeur dun identificateur de constante lintrieur
dun programme.

4.2.2 La notion de variable

La mmoire de lordinateur se compose dune srie de cellules rpondant chacune


une adresse en mmoire. Ces cellules, dont la taille dpend du type dordinateur,
contiennent des donnes accessibles par lintermdiaire de noms symboliques appels
variables. Une variable est donc un nom donn une adresse en mmoire, permettant
ainsi de consulter ou de modifier le contenu de cette dernire.

Le contenu dune adresse est constitu dun ensemble dlments binaires qui, pris
isolment, nont aucune signification prcise. Ce nest que le contexte qui dterminera
le type de donnes qui est reprsent. Par exemple, dans la mmoire dun ordinateur,
la suite binaire
110010101001100001101011

peut aussi bien reprsenter un nombre entier, un nombre rel, une chane de caractres
ou un tout autre type de donnes. Cest le type de la variable, telle que celle-ci a t
dclare dans le programme, qui nous renseignera.
LES TYPES DE DONNES DU LANGAGE PASCAL 81

Toute variable utilise dans un programme PASCAL doit tre dclare la section de
dclaration des variables. La syntaxe de cette dclaration est donne la figure 4.5.
Selon ce diagramme syntaxique, pour dclarer une variable, on fait suivre le mot cl
VAR du nom (identificateur) de la variable, suivi des deux-points (:), suivi du type de
la variable, suivi finalement dun point-virgule. Dans le cas o la dclaration porte sur
plusieurs variables de mme type, la liste des variables spares deux deux par une
virgule remplace la variable unique de lopration prcdente. Lorsque les variables
dclarer sont de types diffrents, on les regroupe selon leur type. Cette notion de type
sert prciser lensemble des valeurs que peut prendre une donne. ce titre, il
convient de mentionner quil existe deux catgories de types de donnes en PASCAL :
les types standards et les types non standards, lesquels font lobjet des sections qui vont
suivre.

VAR Identificateur : Type ;

FIGURE 4.5
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE VARIABLES.

Exemple 4.4

a) Dclaration dune variable :


VAR age : type;

b) Dclaration de quatre variables de mme type :


VAR age, annee, mois, jour : type;

c) Dclaration de plusieurs variables de types diffrents :


VAR age, annee, mois, jour : type1;
nom, prenom : type2;
salairbrut, salairnet : type3;
82 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

4.3 LES TYPES DE DONNES STANDARDS

Les types de donnes standards ne sont autres que des types de base, prdfinis dans
le langage et qui, par consquent, peuvent tre utiliss dans les programmes sans une
dfinition pralable. En PASCAL, on compte quatre types de donnes standards :
les entiers qui correspondent au mot cl INTEGER,
les rels (REAL),
les caractres (CHAR),
les boolens (BOOLEAN).

4.3.1 Les entiers

On dsigne par constante entire, ou tout simplement entier, tout nombre entier positif,
ngatif ou nul. Un nombre entier positif ou nul est dsign, en PASCAL, par le terme
entier sans signe dont le diagramme syntaxique a t prsent au chapitre prcdent et
fait lobjet de la figure 3.7. De mme, un nombre entier ngatif est considr comme
un entier sans signe auquel on affecte un signe ngatif (). Ainsi, comme le montre la
figure 4.6, une constante entire nest rien dautre quun entier sans signe affect dun
signe positif ou ngatif. Ce qui peut encore scrire, en notation BNF :
<signe> := + /
<entier> := <entier sans signe> / <signe> <entier sans signe>

Entier sans signe


FIGURE 4.6
DIAGRAMME SYNTAXIQUE DUN ENTIER OU CONSTANTE ENTIRE.

La reprsentation en mmoire des nombres entiers est assujettie des contraintes


matrielles qui limitent la taille des mots ou des registres utiliss par les ordinateurs. En
effet, pour un ordinateur mots de n bits, le plus grand et le plus petit entiers que lon
peut reprsenter sont respectivement :
Nmax = + 2n-1 1
Nmin = 2n-1
LES TYPES DE DONNES DU LANGAGE PASCAL 83

Ainsi, pour un micro-ordinateur mots de 16 bits (n = 16), on a :

Nmax = + 2n-1 1 = + 216-1 1 = + 32 767


Nmin = 2n-1 = 216-1 = 32 768

En PASCAL, la valeur Nmax prend une signification particulire : cest le plus grand
entier quun ordinateur peut traiter. Aussi, lappelle-t-on MAXINT, mot cl rsultant
de la contraction des mots MAXimum INTeger et dont la valeur est prdfinie. En
PASCAL, il existe le type LONGINT (pour LONG INTeger) pour dsigner des entiers
plus grands que MAXINT.

Exemple 4.5

a) Dclaration dune variable entire :


VAR age : INTEGER;

b) Dclaration de quatre variables entires :


VAR age, annee, mois, jour : INTEGER;

ou
VAR age : INTEGER;
annee, mois : INTEGER;
jour : INTEGER;

4.3.2 Les rels

Tout nombre rel N peut tre crit sous la forme :


N = 0.f 10e
o f dsigne un nombre entier reprsentant la partie fractionnaire ou mantisse, et e un
nombre entier positif ou ngatif reprsentant une puissance de 10.

Cette expression est donc la reprsentation en point flottant du nombre rel N.


84 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

Exemple 4.6

a) Reprsentation en point flottant du rel 3.1416 :


3.1416 = 3.1416 100 = 0.31416 101

b) Reprsentation en point flottant du rel 0.000005 :


0.000005 = 0.000005 100 = 0.5 10-5

c) Reprsentation en point flottant du rel 1945 :


1945 = 1945 100 = 0.1945 104

Il est donc clair quon peut reprsenter tout nombre rel par deux entiers dont lun serait
la mantisse et lautre lexposant. Il suffit, pour cela, de choisir un format appropri pour
les identifier dans la chane de bits reprsentant le nombre rel en question. Ainsi, le
nombre maximal quon peut reprsenter en point flottant dpend du nombre dlments
binaires composant chacune de ces parties dans la conception du systme. Par exemple,
si on choisit un format selon lequel 5 bits sont rservs la mantisse et 3 bits
lexposant, pour un mot de mmoire de 8 bits, on a ce qui suit :
valeur maximale de mantisse : 25 1 = 32 1 = 31
valeur maximale de lexposant : 23 1 = 8 1 = 7.

Donc, le plus grand rel que lon peut reprsenter dans un tel format est :
0.31 107 = 3,100,000.00

videmment, plus lexposant est lev, plus le nombre reprsent sera considrable; et
plus la mantisse est grande, plus la prcision est apprciable.

tant donn que mantisse et exposant peuvent, leur tour, tre positifs ou ngatifs, il
importe de retenir, dans chaque cas, un bit pour indiquer le signe. Si on convient
dutiliser le bit 1 pour le signe ngatif et 0 pour le signe positif, un nombre rel peut
tre reprsent selon le format de la figure 4.7. Notons que, dans une telle reprsenta-
tion, le signe de la mantisse est galement celui du nombre rel reprsent.
LES TYPES DE DONNES DU LANGAGE PASCAL 85

MANTISSE EXPOSANT

S S
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Signe de la mantisse Signe de lexposant

FIGURE 4.7
FORMAT DE REPRSENTATION DUN NOMBRE REL EN POINT FLOTTANT.

Exemple 4.7

Considrons un ordinateur mots de 16 bits. Un rel y est reprsent selon la conven-


tion et le format de la figure 4.7, avec 10 bits de mantisse, 1 bit de signe de mantisse,
4 bits dexposant et 1 bit de signe dexposant. Pour un tel ordinateur, que vaut la suite
binaire :
1 0100110010 0 1011
interprte comme un rel? Examinons cette suite :
Le bit de signe de la mantisse tant 1, il sagit l dun nombre ngatif.
La mantisse tant 0100110010, elle correspond au nombre dcimal (base 10) 306.
Le bit de signe de lexposant tant 0, lexposant est donc positif.
Lexposant tant 1011, il correspond au nombre dcimal 11.

Donc, cette suite binaire quivaut :


0.306 1011 = 30,600,000,000.00

On peut constater que, mme si les rels sont eux aussi sujets des limites en PASCAL,
ils permettent malgr tout de reprsenter des nombres plus grands que ceux que permet-
tent les entiers. Aussi, est-il possible de traiter les nombres entiers qui dpassent MAXINT
tout simplement en les considrant comme des rels (Exemple 4.6c).

La dclaration des variables relles seffectue conformment au diagramme syntaxique


de la figure 4.5.
86 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

Exemple 4.8

a) Dclaration dune variable relle :


VAR salairbrut : REAL;

b) Dclaration de deux variables relles :


VAR salairbrut, salairnet : REAL;

ou
VAR salairbrut : REAL;
salairnet : REAL;

4.3.3 Les caractres

Comme nous lavons mentionn au chapitre prcdent, tout langage de programmation


se dfinit partir dun ensemble de symboles constituant son alphabet. En PASCAL,
ces symboles correspondent au type CHAR, mot cl servant dsigner les caractres
pouvant tre affichs lcran ou imprims.

La dclaration des variables caractres seffectue conformment au diagramme


syntaxique de la figure 4.5.

Exemple 4.9

a) Dclaration dune variable de type caractre :


VAR sexe : CHAR;

b) Dclaration de deux variables de type caractre :


VAR sexe, reponse : CHAR;

ou
VAR sexe : CHAR;
reponse : CHAR;
LES TYPES DE DONNES DU LANGAGE PASCAL 87

4.3.4 Les boolens

Il arrive souvent que lon veut savoir si un nonc est vrai ou faux. Cette situation
logique ou boolenne ncessite deux possibilits qui peuvent tre reprsentes, dans la
mmoire de lordinateur, par un bit. Ce bit quivaut 0 pour la valeur vraie et 1 pour
la valeur fausse, ou vice versa suivant la convention adopte. En PASCAL, une varia-
ble est dite de type boolen (BOOLEAN) lorsquelle ne peut prendre que lune des
deux valeurs suivantes : TRUE (vraie) ou FALSE (faux). Soulignons que BOOLEAN,
TRUE et FALSE sont trois mots cls du langage PASCAL.

La dclaration des variables boolennes seffectue conformment au diagramme


syntaxique de la figure 4.5.

Exemple 4.10

a) Dclaration dune variable de type boolen :


VAR fini : BOOLEAN;

b) Dclaration de deux variables de type boolen :


VAR fini, trace : BOOLEAN;

ou
VAR fini : BOOLEAN;
trace : BOOLEAN;

4.4 LES TYPES DE DONNES NON STANDARDS

Le langage PASCAL permet au programmeur de dfinir, partir des quatre types


standards que nous venons de voir, des types propres un problme donn. De tels
types sont dits non standards; cest le cas des tableaux, des chanes de caractres, des
numrations, des intervalles, des ensembles, des enregistrements, des fichiers et des
pointeurs. Avant de les utiliser dans un programme PASCAL, il faut dabord les
88 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

dclarer. Les tableaux, les ensembles, les enregistrements et les fichiers constituent des
donnes structures, et les quatre autres des types de base. La figure 4.8 prsente le
diagramme syntaxique dune dclaration de type.

TYPE Identificateur = Type ;

FIGURE 4.8
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE TYPE.

4.4.1 Les tableaux

Un tableau est une structure comprenant un nombre fixe dlments de mme type,
rpondant un nom collectif. Ces lments peuvent tre de type entier, rel, caractre,
boolen ou autre. Dans ce dernier cas, il est de la responsabilit du programmeur de
sassurer que tout type non standard a bel et bien t dfini au pralable avant dy faire
rfrence.

Un paramtre trs important dun tableau, cest sa taille, qui nest autre que le nombre
dlments quil peut contenir. La taille dun tableau est limite par la capacit de
mmoire de lordinateur considr.

On serait port croire que les lments dun tableau sont conscutifs dans cette
mmoire, ce qui nest pas toujours le cas. Intuitivement, un tableau nest quun ensem-
ble de valeurs repres chacune par un jeu dindices. Deux oprations fondamentales
touchent les tableaux : lemmagasinage des valeurs dans le tableau et la restitution de
ces valeurs au besoin. On accde un lment du tableau en spcifiant le nom de celui-
ci et un ou plusieurs indices qui se rfrent cet lment. Le nombre dindices
spcifier dpend du nombre de dimensions du tableau.

Les tableaux une dimension

Un tableau une dimension est une structure linaire dans laquelle chaque lment est
repr par un seul indice. On lappelle aussi un vecteur. Do le mot cl ARRAY utilis
en PASCAL pour le dclarer.
LES TYPES DE DONNES DU LANGAGE PASCAL 89

Exemple 4.11

a) Dclaration dun type tableau une dimension :


TYPE vecteur = ARRAY [1..10] of INTEGER;

b) Dclaration subsquente de deux variables de type vecteur :


VAR vect1, vect2 : vecteur;

ou
VAR vect1 : vecteur;
vect2 : vecteur;

Dans une dclaration de tableau, lexpression entre les crochets sert spcifier le
domaine des valeurs possibles des indices.

Les tableaux deux dimensions

Le cas le plus simple de tableau plusieurs dimensions est le tableau deux dimen-
sions. Cest une structure de donnes dans laquelle chaque lment est repr par deux
indices : un indice indiquant le numro de la ligne et un autre indiquant le numro de
la colonne. Cest donc un vecteur dont chacun des lments ou composantes est lui-
mme un vecteur. Do leur appellation quivalente de matrice dans laquelle llment
auquel on se rfre se trouve lintersection de la ligne et de la colonne spcifies par
les indices.

Exemple 4.12

Soit la dclaration suivante :


TYPE matrice = ARRAY[1..5, 1..4] OF REAL;
VAR chemin1, chemin2 : matrice;
90 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

Elle permet de dfinir deux tableaux ayant chacun cinq lignes et quatre colonnes. De
tels tableaux sont capables de contenir vingt (5 4) nombres rels. Le troisime
lment de la quatrime ligne de chemin2 est identifi par chemin2[4, 3].

Notons que le type matrice, un vecteur de vecteur, peut galement se dfinir comme
suit :
TYPE matrice = ARRAY[1..5] of ARRAY[1..4] OF REAL;

Exemple 4.13

Soit la dclaration suivante :


TYPE matrice2 = ARRAY[4..7, 2..3] OF REAL;
VAR mat1 : matrice2;

Elle permet de dfinir un tableau deux dimensions mat1 ayant quatre (7 4 + 1) lignes
et deux (3 2 + 1) colonnes pouvant contenir huit (4 2) nombres rels.

Les tableaux trois dimensions

Il existe galement en PASCAL des tableaux trois dimensions, considrs comme des
vecteurs dont chacune des composantes ou cellules correspond une matrice. Cette
structure ncessite donc trois indices dont le premier se rfre une cellule-matrice ou
tranche, alors que les deux autres spcifient la ligne et la colonne dans la tranche en
question.

Exemple 4.14

Voici trois dclarations quivalentes dun mme type tab3, un tableau trois dimen-
sions de trois tranches, trois lignes et trois colonnes en PASCAL :
LES TYPES DE DONNES DU LANGAGE PASCAL 91

TYPE
tab3 = ARRAY[1..3] OF ARRAY[2..4] OF ARRAY [1..3] OF INTEGER;

ou tab3 = ARRAY[1..3] OF ARRAY[2..4, 1..3] OF INTEGER;


ou tab3 = ARRAY[1..3, 2..4, 1..3] OF INTEGER;

4.4.2 Les chanes de caractres

En PASCAL standard, le type chane de caractres nexiste pas. Cependant, dans


certaines versions drives, le type STRING a t introduit pour dsigner une chane
de caractres. Dans ce contexte, STRING serait un mot cl dsignant une chane de 255
caractres et serait quivalent STRING[255]. Une chane de 20 caractres serait
dfinie par STRING[20]. En Pascal, le type STRING dsigne une chane pouvant
contenir jusqu 255 caractres.

Exemple 4.15

a) Dclaration dun type chane de caractres de longueur 255 :


TYPE chaine1 = STRING;

b) Dclaration dun type chane de caractres de longueur 20 :


TYPE chaine2 = STRING[20];

En PASCAL standard, le type chane de caractres est implant comme un tableau


compact (PACKED ARRAY) de caractres.

4.4.3 Les numrations

Le type numration est dfini par une suite de valeurs ou didentificateurs constituant
un ensemble ordonn. Sa dclaration est conforme au diagramme syntaxique de la
figure 4.8.
92 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

Exemple 4.16

a) Dclaration dun type numration identifi par jour :


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

b) Dclaration dun type numration identifi par weekend :


TYPE weekend = (samedi, dimanche);

4.4.4 Les intervalles

Le type intervalle, comme son nom lindique, permet de dfinir un ensemble ordonn
de valeurs ou didentificateurs se situant entre une borne infrieure et une borne sup-
rieure, toutes deux des constantes en PASCAL. Sa dclaration est donne par le dia-
gramme syntaxique de la figure 4.9.

TYPE Identificateur = Constante Constante ;


:

FIGURE 4.9
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE TYPE INTERVALLE.

Exemple 4.17

a) Dclaration dun type intervalle identifi par mois :


TYPE mois = 1..12;

b) Dclaration dun type intervalle identifi par majuscule :


TYPE majuscule = 'A'..'Z';

c) Dclaration dun type intervalle identifi par joursemaine :


TYPE jour = (dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi);
joursemaine = lundi..vendredi;
LES TYPES DE DONNES DU LANGAGE PASCAL 93

Dans cet exemple, le type mois est dfini partir des bornes 1 et 12, alors que le type
majuscule utilise les caractres A et Z comme bornes infrieure et suprieure
respectivement. ce sujet, il convient de noter deux choses :
les bornes sont toutes des constantes bien dfinies dans le langage PASCAL,
correspondant aux types standards INTEGER et CHAR;
ces intervalles correspondent des sous-ensembles finis et ordonns densembles
prdfinis en PASCAL.

Dans le cas du type joursemaine dont les bornes ne sont pas des constantes PASCAL,
il est ncessaire de dfinir au pralable le type jour, constituant ainsi un ensemble
ordonn dont joursemaine est un sous-ensemble. La dfinition pralable du type jour
fait de lundi et vendredi des constantes pouvant servir de bornes au type joursemaine
donnant la liste des cinq jours de la semaine.

On notera par ailleurs que les ensembles de base qui servent dfinir le type intervalle
sont des ensembles finis dlments non rels. Cest pourquoi les types numration et
intervalle sont considrs comme des types scalaires. De plus, le choix des bornes
infrieure et suprieure doit respecter lordre des lments dans lensemble de base.
Ainsi, en se rfrant la figure 4.9, la constante qui prcde les deux points (..) doit tre
de rang infrieur celle qui les suit.

4.4.5 Les ensembles

Dans le langage PASCAL, le type ensemble (SET) fait rfrence un sous-ensemble


dun type de base pralablement dfini et rentrant dans lune des catgories suivantes :
standard, numration ou intervalle. La figure 4.10 prsente le diagramme syntaxique
de la dclaration dun type ensemble, partir dun type de base pralablement dfini.

TYPE Identificateur = SET OF Type ;

FIGURE 4.10
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE TYPE ENSEMBLE.
94 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

Exemple 4.18

Dclaration dune variable jourferie de type ensemble partir des types joursemaine
et jour :
TYPE jour = (dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi);
joursemaine = SET OF jour;
VAR jourferie : joursemaine;

Dans cet exemple, jour est le type de base, joursemaine le type ensemble et jourferie
une variable de type joursemaine.

Les lments dun ensemble sont des valeurs ou identificateurs de lensemble de base
gnralement placs entre crochets. Un ensemble vide ne contient aucun lment
lintrieur des crochets.

Tout comme en mathmatique, il est possible deffectuer en PASCAL un certain nom-


bre doprations de base sur les ensembles. Dcrivons ces oprations.
La runion de deux ensembles (+) : la runion de deux ensembles A et B est not
A + B; cest lensemble de tous les lments appartenant soit A soit B.
Lintersection de deux ensembles (*) : leur intersection est note A * B et corres-
pond lensemble de tous les lments appartenant la fois A et B.
La diffrence de deux ensembles () : la diffrence entre A et B est note A B
et correspond lensemble des lments prsents dans A et absents dans B.
Lgalit de deux ensembles (=) : lgalit de deux ensembles A et B se note
A = B et exprime le fait que ces deux ensembles possdent les mmes lments.
Lingalit de deux ensembles (< >) : lingalit () de deux ensembles A et B se
note en PASCAL A < > B et exprime le fait que ces deux ensembles ne contien-
nent pas exactement les mmes lments .
Linclusion dun ensemble dans un autre (=<) : lorsque tous les lments dun
ensemble A sont aussi lments dun ensemble B, on dit que A est inclus dans B,
ce qui se traduit en PASCAL par la notation A =< B.
Lappartenance un ensemble (IN) : enfin, pour exprimer le fait quun l-
ment a appartient un ensemble A, en PASCAL, on crit : a IN A.
LES TYPES DE DONNES DU LANGAGE PASCAL 95

4.4.6 Les enregistrements

Un enregistrement (RECORD) ou article est une structure de donnes compose dun


ensemble dlments qui ne sont pas ncessairement du mme type, appels champs,
et qui sont manipuls comme un tout. Les champs peuvent tre de type entier, rel,
caractre, boolen, tableau, chane de caractres, intervalle, numration, ensemble ou
autre. Ils sont dsigns par des noms ou identificateurs distincts; cependant, deux
enregistrements distincts peuvent avoir des noms de champs identiques. La figure 4.11
prsente le diagramme syntaxique dune dclaration de type enregistrement.

TYPE Identificateur = RECORD Identificateur : Type END ;

FIGURE 4.11
DIAGRAMME HIRARCHIQUE DUNE DCLARATION DE TYPE ENREGISTREMENT.

Exemple 4.19

a) Dclaration dun type enregistrement identifi par personne :


TYPE personne = RECORD
nom, prenom : STRING[20];
age : INTEGER;
END;

b) Dclaration dun type enregistrement identifi par classe, partir dun type en-
registrement personne :
TYPE personne = RECORD
nom, prenom : STRING[20];
age : INTEGER;
END;
classe = RECORD
nomprof : STRING[30];
eleve : ARRAY[1..40] OF personne;
annee : INTEGER;
END;
96 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

On accde linformation contenue dans un enregistrement en juxtaposant un point


entre le nom de lenregistrement et le nom du champ auquel on veut accder. Dans le
cas du traitement de plusieurs champs dun mme enregistrement, on peut viter la
rptition du nom de cet enregistrement en utilisant linstruction WITH dont le format
est le suivant :
WITH enregistrement DO
BEGIN
expression(champ_1);
...........
expression(champ_n);
END;

Dans ce bloc, enregistrement dsigne le nom de lenregistrement dont les champs font
lobjet de rptition, tandis que expression(champ_i) reprsente une expression ou une
instruction mettant champ_i contribution, champ_i tant un champ de enregistre-
ment.

Exemple 4.20

Considrons les dclarations suivantes :


TYPE personne = RECORD
nom, prenom : STRING[20];
age : INTEGER;
END;
classe = RECORD
nomprof : STRING[30];
eleve : ARRAY[1..40] OF personne;
annee : INTEGER;
END;
VAR etudiant : personne;
infoclasse : classe;
LES TYPES DE DONNES DU LANGAGE PASCAL 97

On peut crire :
etudiant.nom = 'JACQUES'
etudiant.age = 35
infoclasse.nomprof = 'Rosemont'
infoclasse.annee = 1992

4.4.7 Les fichiers

On dsigne par fichier (FILE) une structure de donnes regroupant une srie dlments
de mme type, gnralement maintenus en mmoire secondaire, sur disque ou sur
bande magntique. Laccs ces lments obit un certain nombre de principes qui
permettent de distinguer les diffrentes sortes de fichiers : squentiel, accs direct,
accs alatoire. La figure 4.12 prsente le diagramme syntaxique dune dclaration de
type fichier.

TYPE Identificateur = FILE OF Type ;

FIGURE 4.12
DIAGRAMME SYNTAXIQUE DE DCLARATION DE TYPE FICHIER.

Exemple 4.21

Dclaration dun fichier identifi par dossier, partir dun type personne pralablement
dfini :
TYPE personne = RECORD
nom, prenom : STRING[20];
age : INTEGER;
END;
VAR dossier : FILE OF personne;
98 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

4.4.8 Les pointeurs

Toute information traite par lordinateur rside une certaine adresse dans la m-
moire. Un pointeur fait rfrence ladresse de la mmoire o cette information est
stocke. Cest donc une variable dynamique dont le contenu est lui-mme une adresse.
Un pointeur P qui ne renvoie aucune adresse prend la valeur nulle (NIL); on dit dans
ce cas que P ne pointe sur aucun lment.

La dclaration dun type pointeur, en PASCAL, est donne par le diagramme syntaxique
de la figure 4.13.

TYPE Identificateur = ^ Type ;

FIGURE 4.13
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE TYPE POINTEUR.

Exemple 4.22

Dclaration dun type pointeur identifi par avance, partir dun type personne
pralablement dfini :
TYPE personne = RECORD
nom, prenom : STRING[20];
age : INTEGER;
END;
avance = ^personne;

4.5 LES FONCTIONS STANDARDS

Il existe en PASCAL un certain nombre de fonctions qui nont pas besoin dtre
dfinies par le programmeur et qui sont intrinsques au langage : on les appelle les
fonctions standards du PASCAL. En voici la liste :
LES TYPES DE DONNES DU LANGAGE PASCAL 99

ABS(X) cette fonction retourne la valeur absolue du nombre X.

ARCTAN(X) cette fonction retourne la valeur de larc tangente du nombre X.


CHR(X) cette fonction retourne le caractre dont le numro dordre est gal
lentier X.
COS(X) cette fonction retourne le cosinus du nombre X.

EXP(X) cette fonction retourne lexponentielle du nombre X.

LN(X) cette fonction retourne le logarithme nprien du nombre X.


ORD(X) cette fonction retourne le numro dordre de X dans lensemble des
valeurs du mme type.
PRED(X) cette fonction retourne la valeur prcdente de X dans lensemble type
associ.
ROUND(X) cette fonction retourne lentier le plus proche du rel X :
ROUND(2.3) = 2, alors que ROUND(2.7) = 3.
SIN(X) cette fonction retourne le sinus du nombre X.

SQR(X) cette fonction retourne le carr du nombre X.

SQRT(X) cette fonction retourne la racine carre du nombre positif ou nul X.


SUCC(X) cette fonction retourne la valeur suivante de llment non rel X dans
lensemble type associ.
TRUNC(X) cette fonction retourne la partie entire du nombre rel X.

Exemple 4.23

a) Considrons un nombre rel X de valeur 324.6. Pour cette valeur de X, on a :


ABS(X) = 324.6
TRUNC(X) = 324
ROUND(X) = 325
100 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI

b) Considrons un nombre entier X de valeur 4. Pour cette valeur de X, on a :


SQR(X) = 16
SQRT(X) = 2
CHR(X) = 'D' (en considerant l'ensemble des lettres majuscules)

c) Considrons le type jour de lexemple 4.17. Pour X = mardi, on a :


ORD(X) = 3
SUCC(X) = mercredi
PRED(X) = lundi

Вам также может понравиться