Cours Pascal
Cours Pascal
Le langage Pascal
2.1 Historique
Le langage de programmation Pascal a été conçu au début des années 70 par N. Wirth.
Depuis l’utilisation de ce langage s’est développé dans les universités et la communauté
scientifique. Son succès toujours croissant a montré qu’il s’agit du langage qui durant les
années 80, a détrôné les langages tels que FORTRAN, les dérivés de ALGOL. Le Pascal
est facile à enseigner et à apprendre. Il permet d’écrire des programmes très lisibles et
structurés. Il dispose entre autres de facilités de manipulation de données.
10
CHAPITRE 2. LE LANGAGE PASCAL
.pas ([Link]).
• Compilation et édition de liens
La version en langage machine d’un programme s’appelle aussi le code objet.
L’éditeur de liens est un programme qui intègre, après la compilation du fichier
source, le code machine de toutes les fonctions utilisées dans le programme et non
définies à l’intérieur. A partir du code objet du programme l’éditeur de liens génère
un fichier exécutable d’extension .exe( [Link]). Le fichier exécutable renferme
alors le programme qui peut être chargée dans la mémoire pour être exécuté.
11 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
– Les opérateurs :
– arithmétiques : + - * /
– relationnels : < ;< ; = ; < = ; >= ; <>
– Les séparateurs : ( ) ; { } ; [ ] ;(* *)
– Le signe« pointeur » : ^
– Les signes de ponctuation : . , ; : ’ ! ?
Remarque :
Le Pascal n’est pas sensible à la casse. Il ne fait pas de distinction entre majuscule et
minuscule. L’écriture begin est correcte ainsi que les écritures suivantes BEGIN ou Begin
12 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
13 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
– EN-TETE
– DECLARATIONS
1. UNITE
2. ETIQUETTE
3. CONSTANTES
4. TYPES
5. VARIABLES
6. FONCTIONS / PROCEDURES
– BLOC D’INSTRUCTIONS EXECUTABLES
[Link] En-tête
PROGRAM second_degre ;
PROGRAM second_degre (input, output);
14 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
15 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
begin
read(DONNEE);
SOMME := SOMME + DONNEE;
end;
MOYENNE := SOMME / N;
writeln(’moyenne =’,MOYENNE);
end
else
writeln(’pas de donnees’);
end. {Fin du bloc d’instructions}
identificateur = valeur_constante;
ou
Dans la première forme, le type est sous-entendu (si il y a un point, c’est un réel, sinon
un entier ; si il y a des quotes, c’est un caractère (un seul) ou une chaı̂ne de caractères
(plusieurs).
L’utilisation de constantes en programmation est vivement conseillée. Elles permettent :
– une notation plus simple
Exemple : PI à la place de 3,141592653 CONST pourcent : real = 33.3;
– La possibilité de modifier simplement la valeur spécifiée dans la déclaration au lieu
d’en rechercher les occurrences, puis de modifier dans tout le programme.
16 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
Un type standard est un type qui est normalement connu de tout langage Pascal et
qui n’a donc pas été déclaré par l’utilisateur. Les différents types standards :
17 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
18 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
x y not x x and y x or y
true true false true true
true false false false true
false true true false true
false false true false false
19 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
Exemple 11
phrase <--- ’ il fait beau’
phrase[5] <--- ’a’
Principe : on fabrique les types dont on a besoin par l’intermédiaire du mot réservé
TYPE. Les types scalaires standard sont les entiers et les caractères.
Le Type énuméré
Un type énuméré est une séquence ordonnée d’identificateurs.
Syntaxe : TYPE identificateur = (id1, id2,..., idn) ;
20 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
Le type intervalle
Un type intervalle est un sous-type d’un type scalaire déjà défini.
Syntaxe : TYPE identificateur = [borne inf].. [borne sup] ; Points impor-
tants :
• Valeurs autorisées : toutes celles de l’intervalle
• Deux sortes de type intervalle :
– les types issus d’un type énuméré standard
– les types issus d’un type énuméré déclaré.
Exemple 13 Nous présentons ci-dessous des exemples issus d’un type standard.
– Intervalle d’entiers :
Type DECIMAL = 0 .. 9 ;
OCTAL = 0 .. 7 ;
AGE = 0 .. 150 ;
– Intervalle de caractères :
Type ABC = ’A’ .. ’C’ ;
MAJ = ’A’ .. ’Z’ ;
– A présent, voici quelques exemples issus d’un type non-standard
Type OUVRABLE = lundi .. vendredi ;
WEEK-END = samedi .. dimanche ;
LETTRES = ’A’ .. ’Z’ ;
Ordre ascendant requis : borne-inf doit être placé avant borne-sup dans le type énuméré
source.
Type OCTAL = 7 .. 0 ;
OUVRABLE = vendredi .. lundi ;
21 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
const JOUR_MAX = 31 ;
AN_MIN = 1901 ;
AN_MAX = 2000 ;
type SIECLE = AN_MIN . . AN_MAX ;
22 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
<VARIABLE>:=<expression>
– Evaluation de l’expression (calcul)
– Puis affectation (rangement) dans la variable (identificateur)
Nécessité d’avoir des types compatibles (les mélanges de types sont interdits) Ne
pas confondre ” :=”, l’opérateur d’affectation et ”=”, l’opérateur de test.
Exemple 17 Soit X une variable de type integer et on lui donne comme valeur 10
X := 10 signifie que l’on affecte la valeur 10 à la variable X donc X vaut 10.
On peut tester si X est égal à une certaine valeur avant d’effectuer un calcul :
Si X = 3 alors X := X / 2
Ici X vaut toujours 10 car le test X = 3 n’est pas vérifié (puisque la valeur 10 a été
placée dans X)
A la déclaration, les variables ont une valeur indéterminée. On initialise les variables
juste après le BEGIN pricncipal (on ne peut pas le faire dans la déclaration). Utiliser la
23 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
Exemple 18
VAR
a, b, c : integer;
BEGIN
{ Partie initialisation }
b := 5;
{ Partie principale }
a := b + c; { ERREUR, c n’a pas été initialisée’ }
END.
Opérateur Description
+ somme
- soustraction
* multiplication
/ division
DIV division entière ( 5 div 3 = 1 )
MOD modulo ( 5 mod 3 = 2 )
24 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
[Link] Expressions
Une expression désigne une valeur, exprimée par composition d’opérateurs appli-
quées à des opérandes, qui sont : des valeurs, des constantes, des variables, des appels de
fonction ou des sous-expressions.
Exemple 20 Etant donnée une variable x, une constante max et une fonction cos(),
chaque ligne contient une expression :
5
x + 3.14
2 * cos(x)
(x < max) or (cos(x-1) > 2 * (x+1))
2.08E3 * x
(x>2) OR (x<8)
Remarque Le fait qu’une expression soit bien formée n’implique pas que son évaluation
est sans erreur, ce qui peut être le cas ici si e est nul.
25 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
Règles d’évaluation
L’expression a + b * c est évaluée a + (b * c) et non pas (a + b) * c : ceci parce
que le * est prioritaire par rapport à +. On classe les différents opérateurs par ordre
de priorité, les opérateurs de plus forte priorité étant réalisés avant ceux de plus faible
priorité. Lorsque deux opérateurs sont de priorité égale, on évalue de gauche é droite. Par
exemple a + b - c est évaluée (a + b) - c, et non pas a + (b - c). Voici la table
des priorités classées par ordre décroissant, les opérateurs sur une même ligne ayant une
priorité égale.
() fonction() primaire
+ - not unaire
* / div mod and multiplicatif
+ - or additif
= <> < <= >= > relation
Remarque Est-ce que l’expression a < b or c <= d est bien formée ? Quel est son
type ?
Réponse : non ! Ecrire une telle expression booléenne sans parenthèses est une erreur
classique. En effet dans la table de priorités, l’opérateur or a une priorité plus élevée que
les opérateurs < et <=, et donc l’expression sera évaluée a < (b or c) <= d , ce qui est
faux. L’expression bien formée est ici (a < b) or (c <= d) .
26 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
Fonction Description
ABS (X) valeur absolue de X
ARCTAN (X) arctangente de X
CHR (X) caractère dont le numéro d’ordre est X
COS (X) cosinus de X
EXP (X) exponentielle de X
LN (X) logarithme népérien de X
ORD (X) numéro d’ordre dans l’ensemble de X
PRED (X) prédécesseur de X dans son ensemble
ROUND (X) arrondi de X
SIN (X) sinus de X
SQR (X) carré de X
SQRT (X) racine carrée de X
SUCC (X) successeur de X dans son ensemble
TRUNC (X) partie entière de X
Fonction Description
EOF (X) vrai si la fin de fichier X est atteinte
EOLN (X) vrai si fin de ligne du fichier
ODD (X) vrai si X est impair, faux sinon
Exemple 21 write(’bonjour ’)
27 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
writeln(’monsieur’)
a :=2+3 ;
writeln(’la somme de 2 + 3 donne :’,a) ;
La fonction write écrit ici à l’écran les arguments (chaı̂ne de caractères, constante,
variable) La fonction writeln écrit la même chose. La seule différence est que à la fin
de l’écriture du dernier argument, il y a un passage à la ligne suivante
Exemple 22
VAR e : integer; c : char; b : boolean; r : real; s : string[32];
BEGIN
e := 12; c := ’A’; b := true; r := 23.0; s := ’toto’;
writeln (e, ’|’, c, ’|’, b, ’|’, r, ’|’, s);
END.
affiche : 12|A|TRUE|2.300000E+01|toto
28 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
affiche :
6.7E-01| 6.667E-01| 6.6666666667E-01
– Autre formattage de r réel. write(r:8:4); dit à write d’afficher r en notation
simple, sur au moins 8 caractères, dont 4 chffres après la virgule (le dernier étant
arrondi).
Ainsi writeln (r:8:4); affiche :
0.6667
Exemple 23
Write(’Entrez un nombre entier : ’) ;
Readln(a) ;
Writeln(’vous avez entré la nombre ’,a) ;
Write(’Entrez 3 nombre réels : ’) ;
Readln(b,c,d) ;
La fonction Readln lit des valeurs sur le périphérique d’entrée standard (clavier) les
interprète dans le format de la variable et les range dans les arguments spécifiés. A chaque
valeur saisie il faut valider par la touche entrée pour que la saisie soit prise en compte.
Remarque :
Readln(...);
=⇒ passage à la ligne suivante en ignorant ce qui reste sur la ligne
Readln ; peut être employé sans paramètre
La procédure read() permet de lire un ou plusieurs paramètres. readln() fait la
même chose puis fait un readln ;
−→Trois écritures équivalentes :
29 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 2. LE LANGAGE PASCAL
Remarques
– L’exécution d’une de ces lignes, on peut rentrer les données en les séparant par des
espaces, des tabulations ou des retours chariot ←-.
– Il faut que les données lues correspondent au type attendu de chaque variable, sinon
il y a une erreur à l’exécution.
Exemple 24
C:=readkey; {lit une touche au clavier}
C:=upcase(readkey); {lit une touche au clavier et la convertit en minuscule}
30 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3
Structures de contrôle
3.1 Introduction
Dans un langage impératif, on peut définir l’état d’un programme en cours d’exécution
par deux choses :
– L’ensemble des variables du programme ;
– L’instruction qui doit être exécutée
L’exécution d’un programme est alors une séquence d’affectations qui font passer d’un
état initial à un état final considéré comme résultat. Les structures de contrôle définissent
comment les affectations s’enchaı̂nent séquentiellement.
31
CHAPITRE 3. STRUCTURES DE CONTRÔLE
S1; S2;
respectivement :
S1;
S2;
X1 := 2;
X2 := X1+3;
Writeln( X2 );
d’abord la valeur 2 est affectée à la variable X1, puis, la valeur 5 est affectée à la variable X2
et le contenu de la variable X2 est écrit sur le fichier standard de sortie, c’est-à-dire l’écran.
Il n’est pas possible de revenir en arrière pour recommencer l’opération. L’exécution d’une
instruction déterminée n’est possible que lorsque toutes les instructions qui la précèdent
ont été exécutées.
Il est évident que la notion de séquence peut être généralisée pour un nombre quel-
conque N d’instructions : S1; S2; S3; ... ; SN;
La figurereprésente une traduction graphique de la structure séquentielle. Une telle
représentation est appelée Algorigramme , Ordinogramme ou encore Organigramme.
Algorithm Produit;
Variable
a,b : réel; (*opérandes*)
p : réel ; (* résultat du produit*)
Début
32 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Exemple 26 BEGIN
Readln( X, Y );
Writeln( X, Y );
Z := X;
X := Y;
33 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Y := Z;
Writeln( X, Y )
END;
Exemple 27 S1;
S2
BEGIN S31; S32; S33 END;
S4;
BEGIN
S51;
BEGIN S521; S522 END;
S53
END;
S6;
SI <condition> ALORS
<bloc_instructions1>
SINON
<bloc_instructions2>
en PASCAL
IF <condition> THEN
34 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
<bloc_instructions1>
ELSE
<bloc_instructions2>
Cette instruction exprime les instructions qui sont exécutées suivant que la condition
(l’expression booléenne) ¡condition¿ est remplie. Elle est interprétée de la manière sui-
vante :
SEMANTIQUE :
« Si la condition <condition> est vraie, alors exécuter l’instruction qui suit le mot réservé
THEN, sinon exécuter l’instruction qui suit le mot réservé ELSE.” »
Dans cette interprétation, l’exécution des instructions <bloc_instructions1>et
<bloc_instructions2> est mutuellement exclusive ce qui signifie que seule une des deux
instructions sera exécutée.
Points importants :
35 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Organigrammes :
– sans SINON
– avec SINON
Algorithm SI_ALORS;
Variable
x: réel ; (*opérande*)
r: réel ; (*résultat de la racine carrée*)
Début
Ecrire (’Saisir le nombre x’);
Lire (x);
Si x > 0 Alors
36 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Début
r := racine (x);
Ecrire (r);
Fin
Fin.
Algorithm SI_ALORS_SINON;
Variables :
x: réel; (*opérande*)
r: réel ;(*résultat de la racine carrée*)
Début
Ecrire(’Saisir le nombre x’);
Lire (x);
Si x < 0 Alors
Ecrire (’x est négatif’)
Sinon
Début
r := racine (x);
Ecrire (r);
Fin
Fin.
Ambiguı̈tés syntaxiques
Il faut bien percevoir que la formulation de l’instruction IF n’est pas toujours sans am-
biguı̈té. Ainsi par exemple, l’ambiguı̈té syntaxique de la construction :
IF < expr1 > THEN IF < expr2 > THEN < st1 > ELSE < st2 >;
peut être évitée par le réécriture suivante :
37 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
IF N>0 THEN
IF A>B THEN Max := A
ELSE Max := B;
Si ce n’est pas ce qu’on a voulu exprimer, il faut se servir des parenthèses symboliques
BEGIN et END pour forcer des appartenances respectives comme par exemple :
IF N>0 THEN
BEGIN
IF A>B THEN Max := A
END
ELSE Max := B;
38 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Program Premier_Degre;
Var
A, B : real;
Begin
write(’entrez les coefficients A et B : ’);
readln(A,B);
if A=0 then {évaluation de la condition}
if B=0 then
writeln(’Indéterminé !’)
else
writeln(’Impossible !’)
else
writeln(’La solution est : ’,-B/[Link]);
End.
Program MAXIMUM_DEUX ;
var X,Y : real ;
MAX : real ;
Begin
writeln(’Tapez les deux nombres:’)
read (X, Y) ;
if X > Y then {évaluation de la condition}
MAX := X
else
MAX := Y ;
writeln(’Le plus grand nombre est ’,MAX);
End.
39 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
IF reponse=1 THEN
Instructions de lecture...
ELSE
IF reponse=2 THEN
Instructions d’écriture...
ELSE
IF reponse=3 THEN
instructions de calcul...
40 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
CASE reponse OF
1 : Instructions de lecture...
2 : Instructions d’écriture...
3 : instructions de calcul...
End;
L’instruction de sélection multiple ou instruction CASE encore appelée analyse par cas
est une généralisation supplémentaire de l’instruction IF. Elle est fréquemment utilisée
en programmation s’il faut faire le choix entre plus de deux alternatives. Sa formulation
est simplifiée par l’instruction CASE.
Syntaxe
en pseudo-code
en Pascal
CASE variable OF
constante1 : suite d’instructions1
constante2 : suite d’instructions2
intervalle1 : suite d’instructions3
...
ELSE suite d’instructions par defaut
END;
41 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
– Comme dans l’instruction IF, l’exécution de chaque branche est mutuellement ex-
clusive.
– La variable variable est appelée sélecteur et doit être d’un type scalaire.
– Les constantes CASE doivent être toutes différentes et du même type que le sélecteur.
Elles sont interprétées comme des étiquettes.
– Seules les égalités sont possibles au niveau du test (Pas de comparaisons de type
<,>,<=,>= ou <>) On peut néanmoins utiliser des intervalles .
– On peut donner une liste de constantes, ou des intervalles de constantes. Attention,
chaque valeur possible ne doit être représentée qu’une fois au plus (sinon il y a erreur
à la compilation). Par exemple, on ne peut pas faire des intervalles se chevauchant,
comme 3..6 et 5..10, les cas 5 et 6 étant représentés 2 fois.
Program calculette ;
var A, B : real ;
RESULTAT : real;
TOUCHE : char;
Begin
write(’entrez une opération ’);
write(’(taper un nombre, un opérateur puis un nombre) : ’);
readln(A,TOUCHE,B);
case TOUCHE of
’+’ : RESULTAT:= A+B;
’-’ : RESULTAT:= A-B;
’*’ : RESULTAT:= A*B;
’/’ : RESULTAT:= A/B;
end;
writeln(A, TOUCHE, B,’ = ’, RESULTAT);
end.
Exemple 33 Ecrire un programme qui lit un caractère, puis classe ce caractère comme
espace, lettre, digit ou autre.
PROGRAM caractere;
TYPE nat_t = (Espace, Lettre, Digit, Autre);
42 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
43 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
sous la forme :
44 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
45 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Une boucle consiste à parcourir ’une partie d’un programme un certain nombre de
fois. Une Itération est la répétition d’un même traitement plusieurs fois.
La même séquence d’instructions est réitérée plusieurs fois au cours d’une même
exécution
On distingue les boucles à bornes définies (POUR...FAIRE) et les boucles à bornes
non définies (TANTQUE...FAIRE et REPETE...JUSQU’A. Toute structure répétitive - est
composée de trois éléments :
– d’une initialisation d’un compteur ;
– d’une condition ;
– d’un bloc d’instructions.
Toute modification d’un quelconque de ces trois éléments nécessite un contrôle de
cohérence des deux autres.
En PASCAL
Remarques
– la variable doit être de type scalaire (entier, énuméré, intervalle ou caractère) elle
ne peut pas être réelle
46 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
For X1 := C1 to C2 do
Begin
...
For X2 := D1 to D2 do
Begin
...
End;
...
End;
PROGRAM table_multiplication;
VAR
i, j : integer;
BEGIN
for i := 1 to 10 do
begin
for j := 1 to 10 do write (i*j : 3);
writeln;
end;
END.
47 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
En PASCAL
WHILE expression DO
Bloc d’instructions;
Remarques
– arrêt si expression est fausse
=⇒pas de boucle si faux au départ
– incrémentation gérée par le programmeur lui-même
=⇒pas d’augmentation automatique d’une variable (contrairement à la boucle
FOR)
– Les variables de l’expression expression doivent être initialisées avant le while,
pour que au premier passage expression puisse être évaluée.
Organigramme
48 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
writeln(’FIN. A la prochaine...’);
end.
REPETER
<séquence d’instructions>
JUSQU’A <condition>
En Pascal
REPEAT
Bloc d’instructions
UNTIL expression;
Remarques
La boucle s’effectue tant que l’expression est fausse, arrêt quand l’expression est
vraie. C’est le contraire de la boucle WHILE. Contrairement au WHILE, il y a au moins un
passage (1 boucle), même si l’expression est vraie ; De même que pour le WHILE, c’est
le programmeur qui gère l’incrémentation.
Organigramme
49 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Exemple 38
program boucle_repeat;
var
i:integer;
begin
repeat
writeln(’le carré de ’, i, ’ est :’, sqr(i));
i:=i+1; { incrémentation gérée par le programmeur }
until i>5;
writeln;
writeln(’FIN. A la prochaine...’);
end.
Variables :
a,b : réel; (*opérandes *)
p : réel; (*résultat du produit *)
c : caractère; (*réponse de l’utilisateur *)
Début
Répéter
Ecrire (’Saisir le nombre a’);
Lire (a);
50 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
⇐⇒
REPETER
<Bloc d’instructions>
JUSQU’A non (condition1)
Exemple 40
TANTQUE (i<>10) FAIRE
i:= i+1 {on fait varier i jusqu’à 10}
est équivalent à :
REPETER
i:=i+1
JUSQU’A (i=10)
51 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Il est toujours équivalent d’utiliser une boucle TANTQUE ou une boucle REPETER. Ce-
pendant, il existe une petite différence entre les deux boucles : Dans le cas d’une boucle
REPETER... JUSQU’A, le bloc d’instructions est effectué au moins une fois, ce qui n’est
pas forcément vrai pour une boucle TANTQUE. En effet, pour ce dernier type de boucle, si
la condition est fausse dès le départ, le bloc d’instructions ne sera pas du tout exécuté.
En revanche, avec une boucle REPETER ... JUSQU’A, si la condition est fausse dès le
départ, le bloc d’instructions sera quand même exécuté une fois.
Remarque :
Les boucles REPETER et TANTQUE peuvent être utilisées même si les bornes sont définies.
Dans ce cas, il est bien entendu préférable d’utiliser une boucle POUR (vue précédemment).
Algorithme Avec_Pour;
var a,b,i,P:entier;
Debut
Ecrire(’Donner a et b’);
Lire(a,b);
P:=0;
Pour i:=1 à b Faire
P:=P+a;
Ecrire(’Le produit est’,P);
Fin.
Algorithme Avec_TANTQUE;
var a,b,i,P:entier;
52 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Debut
Ecrire(’Donner a et b’);
Lire(a,b);
P:=0;i:=1;
TantQue (i<=b) Faire
Debut
P:=P+a;
i:=1+1;
Fin;
Ecrire(’Le produit est’,P);
Fin.
Algorithme Avec_REPETER;
var a,b,i,P:entier;
Debut
Ecrire(’Donner a et b’);
Lire(a,b);
P:=0;i:=1;
Repeter
P:=P+a;
i:=1+1;
Jusque (i>b);
Ecrire(’Le produit est’,P);
Fin.
Exemple 44
Algorithme Avec_REPETER_Controle_REPETER;
var a,b,i,P:entier;
Debut
53 Dr O. THIARE/UGB-UFR SAT
CHAPITRE 3. STRUCTURES DE CONTRÔLE
Repeter
Ecrire(’Donner a et b’);
Lire(a,b);
Jusque (a>0) ET (b>0);
P:=0;i:=1;
Repeter
P:=P+a;
i:=1+1;
Jusque (i>b);
Ecrire(’Le produit est’,P);
Fin.
Exemple 45
Algorithme Avec_REPETER_Controle_TANTQUE;
var a,b,i,P:entier;
Debut
Ecrire(’Donner a et b’);
Lire(a,b);
TantQue (a<=0) OU (b<=0) Faire
Debut
Ecrire(’Donner a et b’);
Lire(a,b);
Fin
P:=0;i:=1;
Repeter
P:=P+a;
i:=1+1;
Jusque (i>b);
Ecrire(’Le produit est’,P);
Fin.
54 Dr O. THIARE/UGB-UFR SAT