Академический Документы
Профессиональный Документы
Культура Документы
CHAPITRE 4
OBJECTIFS
GAGE PASCAL.
STANDARDS DE CE LANGAGE.
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.
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
Exemple 4.2
FIGURE 4.1
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DTIQUETTES.
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.
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.
+ Identificateur de constante
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.
FIGURE 4.3
DIAGRAMME SYNTAXIQUE DUNE CONSTANTE CHANE DE CARACTRES.
FIGURE 4.4
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE CONSTANTE.
80 INTRODUCTION LA PROGRAMMATION EN PASCAL/DELPHI
Exemple 4.3
Notons quon ne peut pas modifier la valeur dun identificateur de constante lintrieur
dun programme.
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.
FIGURE 4.5
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE VARIABLES.
Exemple 4.4
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).
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>
FIGURE 4.6
DIAGRAMME SYNTAXIQUE DUN ENTIER OU CONSTANTE ENTIRE.
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
ou
VAR age : INTEGER;
annee, mois : INTEGER;
jour : INTEGER;
Exemple 4.6
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
FIGURE 4.7
FORMAT DE REPRSENTATION DUN NOMBRE REL EN POINT FLOTTANT.
Exemple 4.7
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).
Exemple 4.8
ou
VAR salairbrut : REAL;
salairnet : REAL;
Exemple 4.9
ou
VAR sexe : CHAR;
reponse : CHAR;
LES TYPES DE DONNES DU LANGAGE PASCAL 87
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.
Exemple 4.10
ou
VAR fini : BOOLEAN;
trace : BOOLEAN;
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.
FIGURE 4.8
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE TYPE.
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.
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
ou
VAR vect1 : vecteur;
vect2 : vecteur;
Dans une dclaration de tableau, lexpression entre les crochets sert spcifier le
domaine des valeurs possibles des indices.
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
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
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.
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;
Exemple 4.15
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
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.
FIGURE 4.9
DIAGRAMME SYNTAXIQUE DUNE DCLARATION DE TYPE INTERVALLE.
Exemple 4.17
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.
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.
FIGURE 4.11
DIAGRAMME HIRARCHIQUE DUNE DCLARATION DE TYPE ENREGISTREMENT.
Exemple 4.19
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
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
On peut crire :
etudiant.nom = 'JACQUES'
etudiant.age = 35
infoclasse.nomprof = 'Rosemont'
infoclasse.annee = 1992
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.
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
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.
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;
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
Exemple 4.23