Vous êtes sur la page 1sur 27

Bruno Delb

http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Sommaire
PRSENTATION.......................................................................................................4
LE PROGRAMME SOURCE, LE PROGRAMME COMPIL.................................................................4
LES SPCIFICITS DE TURBO PASCAL 3.0...........................................................................4
Ldition, la compilation........................................................................................4
Les touches de fonction F7, F8..............................................................................4
La squence ce touches Ctrl-K, C...........................................................................4
La squence de touches Ctrl-K, W, Ctrl-K, ............................................................4
Les directi!es......................................................................................................"
LES TIQUETTES ET LE BRANCHEMENT DIRECT [LABEL, GOTO]................................................5
LA SORTIE [EXIT, HALT].............................................................................................5
HISTORIQUE...........................................................................................................7
LA NAISSANCE DE PASCAL..............................................................................................7
LVOLUTION DE PASCAL................................................................................................7
LE P CODE................................................................................................................7
LES BASES...............................................................................................................9
INTRODUCTION...........................................................................................................9
Les identificateurs................................................................................................#
Les r$%les...........................................................................................................#
LA STRUCTURE DU PROGRAMME........................................................................................9
&ndiquer le nom du pro%ramme '(ro%ram)..............................................................#
*finir un +loc ',e%in, -nd)..................................................................................#
&nsrer un commentaire './ /0 1 2).......................................................................#
LE CONTRLE DE LCRAN............................................................................................10
3fficher un te4te 'Write, WriteLn)........................................................................56
(ositionner le curseur '7oto89.............................................................................56
Contr:ler lafficha%e 'Clr;cr, *ela<, *elLine, &nsLine, Ctr-ol)..................................56
LA PRSENTATION......................................................................................................10
Le d+ordement de li%ne.....................................................................................56
Les conseils.......................................................................................................56
LA DCLARATION, LASSIGNATION......................................................................!
LES VARIABLES.........................................................................................................13
=ommer une !aria+le.........................................................................................5>
-!aluer une !aria+le...........................................................................................5>
DCLARER UNE VARIABLE [VAR].....................................................................................13
AFFECTER UNE VALEUR UNE VARIABLE............................................................................14
3ffecter une e4pression ? une !aria+le '@A)..........................................................54
3ffecter une !aleur lue au cla!ier ? une !aria+le 'ead).........................................54
LES OPRATEURS.................................................................................................."
INTRODUCTION.........................................................................................................15
LES OPRATEURS ARITHMTIQUES [*, /, DIV, MOD, +, -].....................................................15
LES OPRATEURS DE COMPARAISON [<, >, =, <>, <=, >=]...............................................15
LES FONCTIONS ARITHMTIQUES [ABS, COS, EXP, FRAC, ...].................................................16
REMARQUES.............................................................................................................16
Lordre des priorits............................................................................................5B
Les erreurs dCappro4imation................................................................................57
1
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
LES RPTITIONS ................................................................................................9
INTRODUCTION.........................................................................................................19
LA BOUCLE WHILE.....................................................................................................19
3l%orithme de While...Wend................................................................................5#
LA BOUCLE REPEAT....................................................................................................20
LA BOUCLE FOR........................................................................................................20
Les param$tres Do et *oEnDo..............................................................................F6
La frquence de ,e%in .. -nd dans For..................................................................F6
3l%orithme de For...............................................................................................F5
REMARQUES.............................................................................................................21
La +oucle dCattente.............................................................................................F5
Gtiliser For a!ec prcaution.................................................................................FF
LES CONDITIONS..................................................................................................#!
DFINITION.............................................................................................................23
LE DOMAINE DE DFINITION..........................................................................................23
TESTER UNE EXPRESSION EN FONCTION DE PLUSIEURS VALEURS [CASE].....................................23
emarques........................................................................................................F4
Com+iner plusieurs constantes............................................................................F4
LES CONDITIONS [IF, THEN, ELSE].................................................................................24
REMARQUES.............................................................................................................25
Gne erreur classique...........................................................................................F"
Les tests en cascade...........................................................................................F"
LES PROCDURES ET LES $ONCTIONS...................................................................#7
LE BLOC D'INSTRUCTIONS.............................................................................................27
LES TYPES DE VARIABLE...............................................................................................27
La !aria+le %lo+ale.............................................................................................F7
La !aria+le locale...............................................................................................F7
LA PROCDURE [PROCEDURE]........................................................................................27
3ppeler une procdure ? partir dCune autre procdure............................................F7
Les mthodes dCappel dCune procdure.................................................................F8
LES FONCTIONS........................................................................................................28
3ppeler une fonction...........................................................................................F8
3ffecter la !aleur dCune fonction..........................................................................F8
La dfinition nCinter!enant quCapr$s appel.............................................................F#
REMARQUES.............................................................................................................29
La pro%rammation modulaire...............................................................................F#
*iffrencier !aria+le %lo+ale et !aria+le locale.......................................................F#
Les param$tres dCentre, de sortie, mi4te.............................................................F#
Leffet de +ord...................................................................................................F#
LES T%PES DE STRUCTURES..................................................................................!&
LES CONSTANTES......................................................................................................30
Hodifier une constante 'A)..................................................................................>6
*clarer une constante 'Const)...........................................................................>6
Gtiliser une e4pression dans la dclaration............................................................>6
LES TYPES SCALAIRES.................................................................................................30
*clarer un t<pe scalaire.....................................................................................>6
Le t<pe ordinal...................................................................................................>6
LES TABLEAUX [ARRAY]...............................................................................................31
3ccder ? un lment.........................................................................................>5
Gtiliser des ta+leau4 multidimensionel..................................................................>5
Le t<pe sous-port.............................................................................................>5
LENSEMBLE.............................................................................................................31
-ffectuer des oprations sur un ensem+le.............................................................>F
2
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
*limiter des domaines de !alidit.......................................................................>F
Gtiliser les constantes pour le d+o%a%e...............................................................>F
3
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Pr'(e)*a*io)
Le +ro,ramme (o-r.e, /e +ro,ramme .om+i/'
Un programme crit en Pascal est appel programme source. Il n'est pas
comprhensible directement par l'ordinateur. Pour qu'il puisse tre
excut, il faut procder une autre tape : la compilation. C'est l tout le
rle de Turbo Pascal. Le rsultat est un programme en langage machine.
Le( (+'.i0i.i*'( 1e T-r2o Pa(.a/ !.&
L'1i*io), /a .om+i/a*io)
Turbo Pascal fournit un petit diteur de texte. Pour y accder, il suffit de
presser E lorsque vous tes au menu. Pour compiler un programme
source, pressez C. Il sera compil en mmoire. Si vous voulez le compiler
en crant un fichier COM, pressez O (Options), puis C (Com-File), Q
(Quitter le menu des options) et enfin C (Compile). Pour l'excuter il ne
vous restera plus qu' quitter Turbo Pascal et lancer le fichier COM.
Le( *o-.3e( 1e 0o).*io) $7, $4
Les touches du bloc curseur remplissent les fonctions usuelles d'dition.
Les touches de fonction F7 et F8 dlimitent respectivement le dbut et la
fin d'un bloc.
La ('5-e).e .e *o-.3e( C*r/67, C
Les touches Ctrl-K puis C recopie le bloc slectionn par F7 et F8 l'endroit
positionn par le curseur. Les touches Ctrl-K puis Y effacent le contenu de
ce bloc.
La ('5-e).e 1e *o-.3e( C*r/67, 8, C*r/67, R
Les touches Ctrl-K puis W permettent d'enregistrer sur disque le bloc
slectionn, tandis que Ctrl-K puis R effectue le contraire : la lecture du
bloc.
4
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( 1ire.*i9e(
Vous pouvez fournir une directive de compilation Turbo Pascal :
"{$lettre}", lettre dsignant une lettre ou un groupe de lettres d'une ou de
directives de compilation.
Voici une liste de directives de Turbo Pascal :
Dire.*i9e De(.ri+*io)
{$I+} Contrle des Entres - Sorties autoris (par dfaut)
{$I-} Contrle des Entres - Sorties interdit
{$V+} Test de la longueur d'une chane autoris (par
dfaut)
{$V-} Test de la longueur dune chane interdit
{$R+} Contrle de l'index de champ autoris
{$R-} Contrle de lindex de champ interdit (par dfaut)
Le( '*i5-e**e( e* /e 2ra).3eme)* 1ire.* :LABEL, GOTO;
Lutilisation de Label et de Goto est une mauvaises habitudes.
Turbo Pascal admet les instructions :
Label NOM
... ...
Goto NOM
L'intrt d'une telle instruction est visible par exemple dans le cas suivant :
Si erreur Alors
Faire
Message d'erreur
Aller la fin du programme
FinFaire
Corps du programme
La (or*ie :E<IT, HALT;
Deux autres instructions sont aussi utilises :
Exit quitte le bloc programme courant
alt quitte le programme
5
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Hi(*ori5-e
La )ai((a).e 1e Pa(.a/
Pascal est un langage de programmation cr en 1963 par le Professeur
Niklaus Wirth de l'Eidgenossisch Technische Hochshcule de Zurich. Il a pris
naissance aprs constatation de Dahl et de Dijkstra que 50 % du cot de
l'laboration d'un logiciel incombait la maintenance, contre 10 %
seulement pour la premire criture du programme. Ceci explique la
naissance d'un langage de science exacte, et non pas artistique.
Wirth s'est inspir de l'Algol, et a dot Pascal d'une certaine cohrence (il
en est le seul auteur, au contraire de Ada), d'une simplicit, et d'une
efficacit.
L'9o/-*io) 1e Pa(.a/
Plusieurs versions ont t ds lors cres :
premire version Zurich sur un CDC 6000
implantation sur micro-ordinateurs effectue par Kenneth
BOWLES de l'Universit of California at San Diego (UCSD) :
version optimise (overlays, librairies, utilisation statistiques pour
la frquence des instructions, ...),
beaucoup d'autres : TINY PASCAL, PASCAL MT+, PASCAL JRT, ...
et maintenant le phnomne TURBO PASCAL.
Le P Co1e
Ds l'origine apparut l'ide suivante =
le programme source est transform en P Code, vritable
langage indpendant de la machine (90 % du travail total
fournir).
le P Code, comprit par une machine virtuelle (P Machine) est
alors transform en langage machine sur la machine spcifique
(10 % du travail total fournir).
7
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( 2a(e(
I)*ro1-.*io)
La syntaxe est un ensemble de rgles d'utilisation des mots, nombres et
ponctuation.
Le( i1e)*i0i.a*e-r(
Les noms, ou identificateurs, sont fournis dans les procdures, fonctions et
variables. Un identificateur reconnait au maximum huit caractres.
Toutefois, vous pouvez en utiliser plus, condition cependant de ne pas
oublier que seuls les huit premiers seront reconnus par le langage.
Le( r=,/e(
Il y a trois rgles pour les identificateurs :
ils doivent tous commencer par une lettre
les caractres suivant le premier doivent tre soit une lettre soit
un chiffre, et rien d'autre
les mots rservs ne peuvent tre utiliss comme noms
d'identificateurs.
La (*r-.*-re 1- +ro,ramme
I)1i5-er /e )om 1- +ro,ramme :Pro,ram;
Un programme doit commencer par le mot rserv PROGRAM suivi du
caractre ; (point virgule).
D'0i)ir -) 2/o. :Be,i), E)1;
Puis il faut fournir le jeu d'instruction dans le Block Statement , qui
comprend la fois BEGIN et END. A l'unique exception END. , tous les
ordres du programme doit finir par un point-virgule.
Enfin, tous les ordres du programme principal sont dcals de trois
espaces par rapport BEGIN.
I)('rer -) .omme)*aire :>? ?@ A B;
Des commentaires peuvent tre ajouts n'importe o dans un programme.
Ils sont introduits par (* et termins par *). Ils seront ignors aussi bien
lors de l'excution du programme que lors de la compilation du source.
9
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le .o)*rC/e 1e /'.ra)
A00i.3er -) *eD*e :8ri*e, 8ri*eL);
Les ordres WRITE et WRITELN affichent des messages l'cran. WRITE
permet d'afficher plusieurs mots, tandis qu' chaque excution de
WRITELN, un saut de ligne et un retour chariot sont oprs.
Po(i*io))er /e .-r(e-r :Go*o<%
On peut galement dplacer le curseur sur l'cran par emploi de l'ordre
GOTOXY. Le coin suprieur gauche correspond au point de coordonnes
0,0. Le point de coordonnes 1,1 correspond au point situ l'intersection
de la deuxime colonne et de la deuxime ligne.
Co)*rC/er /a00i.3a,e :C/rS.r, De/aE, De/Li)e, I)(Li)e, C*rEo/;
De plus, Pascal met votre disposition un certain nombre d'instructions
trs utiles :
Instruction Description
ClrS!r
Efface l'cran et place le curseur en haut gauche de
l'cran
"ela#
Attend Temps millisecondes
"elLine
Efface la ligne contenant le curseur
$nsLine
Insre la ligne contenant le curseur
CtrEol
Efface de la position du curseur jusqu' la fin de la ligne
La +r'(e)*a*io)
Le 1'2or1eme)* 1e /i,)e
Dans l'ventualit o la liste des paramtres ne tienne pas sur une ligne,
arrangez-vous, si possible, de faire aligner les suivants avec les
prcdents.
Les deux ordres %&$'ELN (liste de donn)es*+ et %&$'E (liste de donn)es*+ %&$'ELN+
sont quivalents.
Lorsqu'une assignation d'une expression une variable est faite et qu'elle
ne tient pas sur une ligne, la suite est inscrite juste sous la partie
prcdente de l'expression. Pour READ et READLN, c'est la mme chose
que pour WRITE et WRITELN.
Le( .o)(ei/(
Les abrviations
Premier conseil : dans la limite du possible, vitez de dpasser huit
caractres de longueur pour les noms d'identificateurs, afin d'viter le
10
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
conflit de nomrs d d'ventuelles duplication. Essayez donc d'utiliser des
abrviations standards, comme lorsque vous prenez des notes lors d'une
confrence.
Dans le mme ordre d'ides, vitez de trop abrger les noms
d'identificateurs puisqu'il y a alors risque de crer des noms qui se
ressemblent, source d'erreur.
Les commentaires
Deuxime conseil : afin de faciliter la comprhension du programme,
placez des commentaires entre les BEGIN...END.
Un commentaire plac au dbut renseigne sur l'auteur, la date d'criture,
le numro de la version, ...
Les paramtres
Troisime conseil : les paramtres (ce qui est situ entre parenthses),
devraient tre spars par une virgule (,), suivi d'un espace ( ), le tout
pour faciliter la relecture du programme. De mme, il serait judicieux de
placer un espace juste aprss la parenthse d'ouverture.
11
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
La 1'./ara*io), /a((i,)a*io)
Le( 9aria2/e(
Les variables sont des emplacements dans la mmoire de l'ordinateur.
Elles portent chacunes un nom. Vous devez dclarer lesquelles seront
utilises, ainsi que les genres de valeurs qu'elles prendront.
Nommer -)e 9aria2/e
Chaque nom de variable est dcal de trois espaces de VAR. A sa droite,
doit figurer un commentaire explicitant son utilisation. Chaque type de
variable est dcal de trois espaces, suivant la syntaxe : type; . Pour ce
qui est des attributs de longueur (entre accolades), le mme traitement est
fait que pour les parenthses.
E9a/-er -)e 9aria2/e
Le rsultat d'une opration arithmtique sera rel si l'un au moins des
facteurs est rel.
D'./arer -)e 9aria2/e :Far;
VAR est le mot rserv qui indique l'ordinateur que vous allez utiliser des
variables. Leur nom et leur champ de valeur sera indiqu juste aprs VAR.
La dclaration VAR doit tre dcale de trois espaces, et une ligne doit tre
saute la fois avant l'ordre VAR et aprs la dernire variable dclare.
L'ordre VAR reconnait les types suivants.
TE+e De(.ri+*io)
Integer Nombre entier compris entre 32767 et - 32768
Byte Sous ensemble de INTEGER, compris entre 0 et 255
String Chane de caractres d'au plus 80 caractres s'il figure [nombre] juste aprs STRING,
alors la chane est limite au nombre indiqu entre parenthse (limite suprieure fixe
256)
Char Un seul caractre
Boolean Contient la valeur TRUE (vrai) ou FALSE (faux)
Real Nombre rel (souvent exprim en notation scientifique)
13
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
A00e.*er -)e 9a/e-r G -)e 9aria2/e
A00e.*er -)e eD+re((io) G -)e 9aria2/e :HI;
Assignation directe range une valeur directement dans une variable. Le
symbole := est alors plac entre le nom de la variable ( gauche) et la
valeur ( droite).
Le schma d'une affectation directe est le suivant :
Variable_Rceptrice := Expression_Source;
Une expression tant une suite hirarchise d'oprations lmentaires.
Notez que le rsultat d'une opration arithmtique est rel si l'un au moins
des facteurs est rel.
A00e.*er -)e 9a/e-r /-e a- ./a9ier G -)e 9aria2/e :Rea1;
L'ordre READ permet l'ordinateur de capter une donne en cours
d'excution du programme. Utilisez READ si un enter (ou return) n'est
pas obligatoire la fin de la saisie. Sinon, employe READLN.
Les variables BOOLEAN ne peuvent recevoir de valeur qu'en assignation
directe. Avec les variables CHAR, READ est utilis, mais la plupart du
temps, ce sera READLN, puis qu'un return est le plus souvent demand.
14
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( o+'ra*e-r(
I)*ro1-.*io)
Les oprateurs arithmtiques sont des symboles qiu indiquent
l'ordinateur d'effectuer certaines oprations mathmatiques. On peut citer
l'addition, la division, ... Ils sont utiliss avec des variables de type entier
(INTEGER ou LONG INTEGER) ou rel (REAL).
Les oprateurs arithmtiques et de comparaison sont prcds et suivis
d'un espace.
De plus, les expressions logiques (utilisant la logique boolenne) contenant
plusieurs oprateurs doivent utiliser des parenthses.
Le( o+'ra*e-r( ari*3m'*i5-e( :?, J, Di9, Ko1, L, 6;
Ces oprateurs standards sont :
O+'ra*e-r De(.ri+*io)
* Multiplication
/ Division
DIV Division d'entiers
MOD Module (le reste, nombre entier, de la division de X par Y)
+ Addition
- Soustraction
Remarque : les rsultats, sauf exception indique, sont des nombres rels.
Le( o+'ra*e-r( 1e .om+arai(o) :M, N, I, MN, MI, NI;
Voici maintenant une liste des oprateurs de comparaison :
O+'ra*e-r De(.ri+*io)
< plus petit que
> plus grand que
= gal (diffrent de :=)
<> diffrent
>= plus grand ou gal (dans cet ordre !)
<= plus petit ou gal (dans cet ordre !)
Cas particulier : les chanes de caractres.
15
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Note : les comparaisons sont effectues de la mme manire pour les
chanes de caractres que pour les nombres. Un A est plus petit
qu'un B ! (voir les codes ASCII pour plus de prcisions).
Le( 0o).*io)( ari*3m'*i5-e( :A2(, Co(, ED+, $ra., ...;
Voici d'autres fonctions arithmtiques disponibles :
$o).*io) De(.ri+*io)
Abs (Nombre) Renvoit la partie absolue de nombre
ArcTan (Nombre) Renvoit l'arc-tangente de nombre
Cos (Nombre) Renvoit le cosinus de nombre
Exp (Nombre) Renvoit l'exponentielle de nombre
Frac (Nombre) Renvoit la partie dcimale de nombre
Int (Nombre) Renvoit la partie entire de nombre (en rel)
Ln (Nombre) Renvoit le logarithme nprien de nombre
Pred (Nombre) Equivaut Nombre := Nombre - 1
Sin (Nombre) Renvoit le cosinus de nombre
Sqr (Nombre) Renvoit le carr de nombre
Sqrt (Nombre) Renvoit la racine carre de nombre
Round (Nombre) Renvoit l'arrondi l'entier le plus proche de
nombre (en entier)
Trunc (Nombre) Renvoit la partie entire de nombre (en entier)
Random Renvoit un nombre alatoire compris entre 0 et 1
Random (Nombre) Renvoit un nombre alatoire compris entre 0 et
nombre
Succ (Nombre) Equivaut Nombre := Nombre + 1
Remar5-e(
Lor1re 1e( +riori*'(
Aprs avoir tenu compte des priorits des oprateurs, l'ordinateur effectue
les calculs de gauche droite.
Voici l'ordre de priorit des oprateurs :
d'abord les multiplications et les divisions (*, /, DIV, MOD)
ensuite les additions et les soustractions (+, -)
Toutefois, vous pouvez indiquer l'ordinateur d'effectuer un groupe
d'oprations avant les autres (quelque soit leur degr de priorit). Ce
groupe est dlimit par des parenthses, de la mme manire qu'en
mathmatiques.
Note : pour effectuer les calculs, vous pouvez intgrer des oprateurs dans
des expressions d'assignation de variables.
16
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( erre-r( 1Oa++roDima*io)
Attention, rappelez-vous que l'ensemble mathmatiques de la machine
n'est pas continu, cause du manque de prcision de l'ordinateur. Il peut
donc arriver que certains rsultats semblent prsenter des erreurs.
17
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( r'+'*i*io)(
I)*ro1-.*io)
Un des grands intrts de l'ordinateur est la possibilit de rpter de
nombreuses fois une mme tche. Les instructions de boucle ont donc t
crs. Ils permettent donc de faire rpter une squence d'instructions en
un minimum d'instructions.
Voyons While et Repeat. Ils permettent la rptition d'une srie d'ordres un
certain nombre de fois. Ce nombre n'est pas pr-dfini, puisque la boucle
est effectue tant que la condition indique est remplie.
La 2o-./e 83i/e
La syntaxe de la boucle while est :
%$LE expression "O ordre+
A/,ori*3me 1e 83i/e...8e)1
, -. a
'ant /ue 0!ondition1 et (, 0. b* faire
Commen!er
(ordres*
, . , 2 pas ()/uation de d)finition*
Fin
Fin de tant /ue
La condition d'arrt est :
si p > 0 : (j > b) et (condition fausse)
si p < 0 : (j < b) et (condition fausse)
ou encore, cas particulier :
'ant /ue 0!ondition1 faire
Commen!er
(ordres*
Fin
Si une seule instruction, on peut crire Tant que "<condition> faire
<ordre>"
19
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
La 2o-./e Re+ea*
Et celle de la boucle repeat : "REPEAT ordre UNTIL expression;" o
expression a un rle de valeur boolenne.
L'algorithme de Repeat .. Until est le suivant :
Faire 3arier , de n b par pas de p tant /ue 0!ondition1
4our !5a/ue ,
(ordres*
FinFaire
La 2o-./e $or
Voyons maintenant la boucle FOR. Sa syntaxe est "FOR variable:=
expression1 TO expression2 DO ordre;" (parcours squentiel en sens
croissant) ou "FOR variable:= expression1 DOWNTO expression2 DO
ordre;" (parcours squentiel en sens dcroissant).
Notez que la variable et les expressions doivent tre du mme type. De
plus, le nombre de fois que la boucle est excut est gal la diffrence
entre les expressions plus un. La variable est utilise comme compteur, ou
variable de contrle, et contient toutes les valeurs entires comprises entre
expression1 et expression2.
Le( +aram=*re( To e* DoP)To
TO dit l'ordinateur d'incrmenter le compteur. DOWNTO fait l'oppos : il
y a dcrmentation. Si avec TO, expression1 est infrieur expression2,
(ou le contraire avec DOWNTO), alors la boucle n'est pas du tout excute.
La 0r'5-e).e 1e Be,i) .. E)1 1a)( $or
Les ordres entre BEGIN et END peuvent tre aussi nombreux que vous le
voulez. Toutefois, vous ne pourrez pas utiliser la variable de nom celui du
compteur, sauf action prcise sur le compteur recherche. De plus, la
sortie de la boucle, la variable de contrle doit tre considre comme
ayant une valeur non dfinie. En ce sens, que sa valeur aura t altre
par la boucle.
20
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
A/,ori*3me 1e $or
Pour mieux comprendre les boucles de parcours conditionnelles, tudiez les
deux algorithmes suivants :
Algorithme de FOR...NEXT :
(initialisation induites*
Faire 3arier , de a b par pas de p tant /ue 0!ondition1
4our !5a/ue ,
(ordres*
FinFaire
(op)rations finales*
Il y a deux critres d'arrt, qui constituent ainsi une formulation d'une
limite absolument ncessaire.
si p>0, ils sont J>b et condition fausse
si p<0, ils sont J<b et condition fausse
Naturellement, la condition d'arrt doit tre ralisable en un nombre fini
d'itrations.
Remar5-e(
La diffrence entre WHILE et REPEAT est que REPEAT vrifie l'expression
la fin de la boucle, alors que WHILE le fait, mais au dbut. Donc REPEAT
est excut au moins une fois, alors que pour WHILE, ce n'est pas
obligatoire.
REPEAT implique la prsence de BEGIN...END. Et mme, si vous
l'ommettez, l'ordinateur en place une, mais invisible .
Mmes conseils appliquer que pour les autres chapitres : dcaler de trois
espaces les ordres situs dans les boucles fermes par FOR, WHILE ou
REPEAT. Rappelez-vous cependant que la structure BEGIN..END n'est pas
ncessaire dans une boucle REPEAT.
La 2o-./e 1Oa**e)*e
En plaant un point-virgule (;) juste aprs DO, vous gnrez une boucle
d'attente, c'est--dire qu'un certain laps de temps s'coule sans qu'aucune
instruction ne soit excute.
21
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
U*i/i(er $or a9e. +r'.a-*io)
De plus, prenez garde ceci. La structure :
FO& $ -. 6 'O 67 "O
FO& , -. 6 'O 67 "O
8EG$N
EN"+
8EG$N
EN"+
est valide. Mais la structure suivante est invalide :
FO& $ -. 6 'O 67 "O
8EG$N
FO& , -. 6 'O 67 "O
EN"+
8EG$N
EN"+
22
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( .o)1i*io)(
D'0i)i*io)
Les ordres de condition constituent le coeur de tout programme effectuant
une dcision . Grce celles-ci, l'ordinateur devient trs puissant.
Ces instructions sont :
$F expression 'EN ordre+
ou
$F expression 'EN ordre
ELSE ordre+
o expression est de type boolen, et ordre est soit un ordre seul, ou alors
une structure du type BEGIN..END.
Dans le premier cas, si (IF) l'expression est vraie, alors (THEN) excute les
ordre(s) suivants.
Dans le second cas, si (IF) l'expression est vraie, alors (THEN) excute les
ordre(s) suivants sinon (ELSE) excute ces autres ordres.
IF..THEN..ELSE constitue un irdre en lui-mme et doit donc satisfaire la
rgle du point-virgule .
Le 1omai)e 1e 1'0i)i*io)
Un algorithme est conu pour un groupe de donnes (ou paramtres) dont
le domaine de validit prsente souvent des restrictions par rapport leur
ensemble de dfinition.
Te(*er -)e eD+re((io) e) 0o).*io) 1e +/-(ie-r( 9a/e-r( :Ca(e;
Il existe un autre genre d'ordre conditionnel : CASE. La syntaxe est :
CASE expression OF
!onstant- ordre+
!onstant- ordre+
... ...
!onstant- ordre+
EN"+
L'instruction CASE permet de choisir un traitement, et un au plus, parmi
plusieurs, en fonction d'un critre. Si aucune condition n'est remplie, il y a
erreur. Si une condition est remplie, alors seul le traitement correspondant
est excut, puis le programme reprend la suite.
23
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Remar5-e(
L'expression et les constantes doivent videment tre du mme type ! De
plus, la constante ne peut tre une variable.
Notez que l aussi, comme pour la boucle REPEAT, cette instruction a un
BEGIN induit, mais pas un END cette fois. De plus, vous n'avez pas le droit
de placer une BEGIN.
Com2i)er +/-(ie-r( .o)(*a)*e(
Au cas o vous voulez combiner plusieurs constantes, en ce sens que si
expression est gal constante1 ou constante2, ... vous devez placer les
diffrentes constantes les unes aprs les autres, spares chacunes d'une
virgule. Nous vous conseillons toutefois de placer la premire constante sur
la premire ligne, la seconde sur la seconde, ...
Les constantes sont dcales de deux ou trois espaces. Les commentaires
seront plutt placs la fin des instructions CASE et IF.
Le( .o)1i*io)( :I0, T3e), E/(e;
Toujours les conseils pour facilit la relecture et la comprhension du
programme.
Tout d'abord, les ordres utiliss dans l'ordre IF doivent tre dcals de 2
ou 3 espaces. Si vous utilisez un ELSE, il doit venir se placer sous le IF, et
mme chose pour ses ordres que pour IF.
Notez aussi que raccorder ELSE l'ordre IF peut aider identifier
rapidement une instruction de branchement.
Le schma d'un test est :
S$ 5#pot59se satisfaite
ALO&S (: donn)e !orre!te :* lan!er l'algorit5me
S$NON erreur de donn)e
Ainsi, si la condition est remplie alors le premier traitement, et lui seul, est
lanc (lancer l'algorithme). Si elle est fausse, alors seul le second
traitement, et lui seul, est lanc (erreur de donne).
24
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Remar5-e(
U)e erre-r ./a((i5-e
Attention l'erreur classique de placer un point-virgule (;) devant le ELSE !
Un IF est suivi d'un point-virgule si et seulement s'il prcde une autre
instruction dans le mme groupe BEGIN.
Le( *e(*( e) .a(.a1e
Remarquez l'intrt des tests en cascade : il permettent d'amliorer les
performances d'un programme, en y effectuant le minimum indispensable
de tests.
25
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( +ro.'1-re( e* /e( 0o).*io)(
Le 2/o. 1Oi)(*r-.*io)(
Chaque bloc en Pascal est identifi par un nom. Immdiatement aprs ce
nom, se trouve le bloc lui-mme, dlimit par BEGIN..END.
La syntaxe est la suivante :
Nom (entr)e - x; #; <+ sortie - a; b*+
a et b constituent les paramtres formels
x, y et z constituent les paramtres effectifs
Le( *E+e( 1e 9aria2/e
La 9aria2/e ,/o2a/e
Une variable dclare en dbut de programme est dite variable globale,
puis qu'elle sera utilise partout dans le programme.
La 9aria2/e /o.a/e
Si une variable est dclare l'intrieur d'un bloc autre que le bloc
principal, la variable est appele variable locale. Celle-ci ne peut tre
accde qu' partir du bloc o elle a t dclare.
La +ro.'1-re :Pro.e1-re;
Elle est similaire au programme (PROGRAM). Toutefois, il existe deux
diffrences :
le mot rserv PROCEDURE est utilis la place de PROGRAM
le END est suivi d'un point-virgule la place d'un point.
L'objectif majeur d'une procdure est d'effectuer une tche spcifique.
Cette tche, ou routine, est gnralement excute plus d'une fois, et
souvent appele de divers endroits du programme.
A++e/er -)e +ro.'1-re G +ar*ir 1O-)e a-*re +ro.'1-re
Attention aussi une chose : une procdure B peut appeler une procdure
A la seule condition que la dfinition de A figure avant celle de B. De
plus, il doit alors y avoir correspondance absolue entre ces paramtres
(mme nombre, mme type). De mme, une constante, une variable, une
procdure, ou une tiquette dclare l'intrieur d'une procdure n'est
accessible qu' partir de cette procdure.
27
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( m'*3o1e( 1Oa++e/ 1O-)e +ro.'1-re
Il existe deux mthode pour appeler une procdure :
Lappel par valeur (paramtres rcepteurs)
Une valeur est passe et utilise localement dans la procdure.
Les variables encadres de parenthses sont locales la procdure et
nommes paramtres formels. La dclaration de ces paramtres formels
se fait de faon similaire celle faite avec VAR.
La liste de paramtres associe l'ordre d'appelle d'une procdure
constitue les paramtres actuels. Les paramtres formels et ceux actuels
doivent se correspondre en type, en ordre, et en nombre.
Lappel par adresse (ou paramtres variables ou vrais)
Les paramtres variables permettent aux procdures d'utiliser et de
retourner une valeur dans le paramtres actuel.
Diffrences entre les deux mthodes
Trois grandes diffrences marquent les deux mthodes :
les paramtres variables permettent le retour d'information d'une
procdure par utilisation de la liste de paramtres, pas l'autre
mthode.
un paramtre actuel DOIT tre une variable lorsque vous utilisez
des paramtres variable. Une valeur littralle peut tre passe
une valeur de paramtre de type STRING, mais pas un
paramtre variable.
vous dfinissez une paramtre variable dans une liste de
paramtres en plaant un prfixe VAR.
Le( 0o).*io)(
Une diffrence entre une fonction et une procdure est le changement du
mot rserv utilis.
Aprs le nom d'une fonction, il faut spcifier le type de valeur que la
fonction retournera. Cette valeur doit tre de type simple (INTEGER,
BOOLEAN, REAL, ou CHAR).
A++e/er -)e 0o).*io)
Une autre diffrence rside dans l'appel d'une fonction.
En effet, il suffit d'utiliser son nom n'importe o Pascal de placer une
expression.
A00e.*er /a 9a/e-r 1O-)e 0o).*io)
Remarque : nous ne pouvons assigner une valeur la valeur de la fonction
qu' partir d'elle-mme.
28
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
La 1'0i)i*io) )Oi)*er9e)a)* 5-Oa+r=( a++e/
Dans des cas bien prcis, il peut tre utile de dclarer une fonction ou une
procdure aprs son appel dans le programme source. On utilise alors une
dfinition avec FORWARD.
Remar5-e(
La +ro,ramma*io) mo1-/aire
Les procdures permettent de raliser une chose trs intressante,
savoir la conception d'un programme et la possibilit d'en faire ainsi un
module utilisable par d'autres programmes.
Un nom sera constitu selon la structure : <VERBE><NOM>.
Ces instructions permettent ds lors une programmation modulaire,
autrement dit, vous pourrez dcouper votre programme en plusieurs petits
blocs appels procdures et fonctions. Si une procdure fait plus d'une
page affichable, essayez de la dcouper de faon logique.
Di00're).ier 9aria2/e ,/o2a/e e* 9aria2/e /o.a/e
Il pourra arriver qu' la lecture d'une procdure ou d'une fonction, vous
oubliez si une variable particulire est globale ou locale. Pour une variable
locale NOM, nommer la variable correspondante globale GNOM.
Le( +aram=*re( 1Oe)*r'e, 1e (or*ie, miD*e
Un paramtre constitue l'interface entre la procdure et son
environnement. On dfinit les paramtres d'entre comme tant les
donnes figurant dans la dfinition d'une procdure, et les paramtres de
sortie comme tant les donnes retourns par une procdure. On dfinit
galement un paramtre mixte comme tant une donne utilise par une
procdure et modifie aprs.
Le00e* 1e 2or1
On observe ce qu'on appelle effet de bord lorsque le programme transmet
des rsultats directement une variable externe, dont sans utiliser un
paramtre VAR.
29
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( *E+e( 1e (*r-.*-re(
Le( .o)(*a)*e(
Les constantes sont trs similaires aux variables. Une constante peut tre
assimile un emplacement de la mmoire de votre ordinateur o
l'information est stocke.
Ko1i0ier -)e .o)(*a)*e :I;
Contrairement une variable, vous ne pouvez pas modifier la valeur d'une
constante, exception faite pour les constantes modifiables par CONST nom :
type = valeur;
D'./arer -)e .o)(*a)*e :Co)(*;
La dclaration de constantes se fait comme suit :
CONS'
nom . 3aleur+
Comme tout identificateur, nom doit suivre les rgles de Pascal en ce qui
concerne les identificateurs.
U*i/i(er -)e eD+re((io) 1a)( /a 1'./ara*io)
Pascal ne permet pas l'tilisation d'expressions lors de la dclaration de
constantes, mais uniquement des valeurs directes.
Le( *E+e( (.a/aire(
Les types de donnes scalaires. Ces types de donnes permettent la
comparaison d'lments l'intrieur de ce type. Ainsi, chaque lment d'un
type de donne scalaire doit soit plus grand, soit plus petit, ou gal un
autre lment.
D'./arer -) *E+e (.a/aire
Vous spcifiez un nom identificateur, puis le =, et enfin les lments du
type :
'=4E
nom . (nom6; nom>; nom?*+
Le *E+e or1i)a/
Les types ordinaux sont simplement une petute partue du groupe de types
scalaires, ce qui veut dire que tout lment d'un type ordinal ppeut tre
trouv dans un type scalaire. Toutefois, le type REAL est un type scalaire
mais par un type ordinal.
30
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
Le( *a2/ea-D :ArraE;
En gros, un tableau est ene liste de valeurs accessibles chacunes par un
index (ou la position) dans le tableau.
La syntaxe est :
A&&A= @ limite inf)rieure..limite sup)rieure A
OF t#pe+
La porte des valeurs spcifies entre les crochets doit tre de type ordinal.
Les deux points (..) quivaut et toute valeur ordinale comprises entre ces
deux valeur .
A..'1er G -) '/'me)*
Chaque emplacement est accessible par spcification de l'indice (ou numro
de l'lment). Cela est fait par la simple adjonction du nom du tableau et de
l'indice entre crochets.
U*i/i(er 1e( *a2/ea-D m-/*i1ime)(io)e/
Les tableaux multi-dimentionels sont ceux possdant plus d'une colonne.
Pour dclarer le tableau NOM deux dimensions, vous devez crire :
BA&
NOM- A&&A= @ 6..C; 6..> A OF S'&$NG+
Le type dclarer dans un tableau peut tre tout type dclar.
Le *E+e (o-(6+or*'
Un type sous-port est un type dans lequel les lments sont d'une
porte d'un autre standard ou d'un type dfini par l'utilisateur. La syntaxe de
la dclaration d'un type sous-porte est :
'=4E
nomdut#pe . limite inf)rieure..limite sup)rieure+
Bar
nom - t#pe+
Le)(em2/e
Un jeu est un autre type structur qui permet de faire quelque chose avec
tout lment de celui-ci en mme temps.
La syntaxe de dclaration de jeux est :
'=4E
nomdeDeu . SE' OF t#pedebase+
o une fois encore nomdejeu doit suivre les rgles imposes par Pascal sur
les noms. Typedebase est un type dont nous choisissons des lments qui
doivent tre stoqus dans le jeu.
31
Bruno Delb
http://www.brunodelb.com
Date : 14/04/2001
Le langage Pascal
E00e.*-er 1e( o+'ra*io)( (-r -) e)(em2/e
Voici ci-dessous une liste d'oprations que l'on peut oprer :
O+'ra*io) SE)*aDe
Runion {ensemble1} + {ensemble2}
Ratrait {ensemble1} - {ensemble2}
Test inclus dans ? {lment} IN {ensemble}
Sous-ensemble TYPE sous_ensemble = debut..fin
ARRAY [sous_ensemble] OF TYPE
D'/imi*er 1e( 1omai)e( 1e 9a/i1i*'
Les constantes peuvent tre utilises en particulier pour fixer le domaine (de
validit, ...) d'un programme, ces limites n'tant videment pas variables.
U*i/i(er /e( .o)(*a)*e( +o-r /e 1'2o,a,e
Une autre utilisation trs pratique est celle faite pour trouver ce qui ne
tourne pas rond dans un programme :
CONS'
'ES' . '&EE+
puis
$F 'ES' 'EN
8EG$N
%&$'ELN( '$C$'*+
EN"+
Ainsi, suivant la valeur que vous assignerez TEST, certaines instructions
seront excutes ou non. Ceci est donc trs pratique.
32