3. Alfichage du résultat obten.
3.4 Exercices d'application
Exercice 1
Ecrre un programme Pascal qui permet de tester si un nombre entiee donne par uilisateur
st pair ou non
Exercice 2
Ecrire un programme Pascal qui permet dafficher le minimum de trois valeurs réelles
slistnctes données par Iuilisater.
Exercice 3
Ferire un programme pascal qui calcule ctaffiche Atel que at b sont deux entirs donnés
ar Putilisatur
Exercice 4
Ecrire un programme paseal qui calcu ct affiche la somme suivante: 12+ Ist 16+
5+ 1100, en utilisant la boucle For-do pus la boucle While-do,
Exerciee 5
Eerie un programme pascal qui permet de demander un mot de passe &utilisateue, puis
\ériferetalficher si le mot de passe est correct ou non
Solutions
Solution 1
1 PROGRAM pait_impair,
2 USES wincrt
3 VAR
4 nsinteger;
5 Begin
6 Read(n}s
7 If(amod2 <0) then write(n, "est impair);
8 If(mod2=0) then write(a, est pai),
9 End,
oubien
PROGRAM pai impair,
USES winert;
VAR
integer;
Begin
DNIPF BOUAKE/LANGAGE PASCAL ANNE ACADEMIQUE 2022-2023,‘SHAPITRES STRUCTURES DECONTROUE
Ecrre un programme Pascal qu perme de calculer et afficher la somme suivante:
S=14249+° + 10?
Program Exemple boucles_imbriquees;
Uses winert;
ij puis imeger,
Begin
$0;
For 1 to 10 do {boucle 1}
Begin
puis=1;
for j=1 to 5 do {boucle 2}
3.3.6 Passer d'une boucle _a une autre
1. while-do | > repeat-untit
condition do ifcondition then
begin repeat
Instructions Instructions
end; until Notcondition),
For-do| > while-do
Instructions
3. For-do| > Repeatuntil
DNIPF BOUAKETLANGAGE PASCAL ANE ACADEMIQUE 222‘CHAPTTRED, stRUCTURESDE CONTROL
— Pas besoin d'eneadter les instructions par un "begin end”, le “repeat un
cerdle,
Begi
2100;
REPEAT
neath;
IF (a mod 9 =0) THEN Writeln(a) ;
UNTIL 1200 ;
End,
Ce programme afliche & Mécran tous les multiples de 9 compris entre 100 et 200.
Pour chaque nombre n compris entre 100 et 200, on caleule le reste de sa division par 9,
sice reste est égale & 0, alorsn est un multiple de 9,
3.3.4 Diflérence entre les deux boucles conditionnelles
While-do Repeat-uniil
_ Le testesteffectue avant dentrer dans la _— Le test est effectud apres les instruc
oucl tions de la bouele
_ On sort deta bouele sia condition est __ On sort de la boucle si la condition
fausse cst viaie
Les instructions dela boucle peuvent ne __ Tes instructions de la boucle sont
jamais étre exécutées, si des la premiere exéoutdes au moins une fo
fois la condition est fausse
ATTENTION
Pas de point-virgule";"aprés le do dans une boucle, et avant le else dans une instruction
nelle
3.35 Les boucles imbriquées
Les trois types de boucles peuvent tre imbriquées ;e-i-d. le bloc dinstructions dune
‘boucle contient une autre bouele. Les boucles imbriquées sont surtout utilisées pour la
manipulation des matrices
Exemple:
DNIPP BOUAKE/LANGAGE PASCAL‘Voici ta trace dexécution si nbee~ 5
Condition Instructions: som | num
i=0 them x:=x+20;
swrite(x=' x);
Le résultat nest pas le méme, dans le premier cas x= 0, mais dans le deuxiéme cas x=
3.3 _ Instructions répétitive
3.3.1 Instruction For - do (boucle For - do)
Cette instruction permet de répéter une séquence dinstructions un nombre x de fois.
DN/IPE HOUAKE/LANGAGE PASCAL ANNE ACADEMIQUE 2021-2022 35eres: candon = file> 12) oF 2) ile)
aur avant exdeution | valeurs exon
}
s
0
3
ieme eas: condition=true| > 8) or | > 4)-true]
‘Valeur avant exécution | valeur aprés exécution
Remarques.
_ Ne jamais mettre un point-virgule ":* avant le else;
__e "Begin end es inutile, sil n'y « quune seule instruction apis le Then ou apres le
Else,
Onna le droit qu’ deux options selon le résultat du est: un seul then et un seul
else. Pour traiter d'autres cas, on doit combiner (imbriquer ) plusieurs instructions
conditionnelles.
then wrteln('Valeur de a=")
else if(a=2 then writeln('Valeur de a= 2 )
else iff a= 3)then writeln( valeur de a= 3°)
else
esi
writeln(a est différente de 1,2,¢t 31);
DNIPF BOUAKE/LANGAGE PASCAL -ANNEE ACADEMIQUE 2022-2023 34SHAPTIRES, STRUCTURES DECONTROU!
3.2.2 Liinstruction conditionnelle alternative
Syntaxe
Algorithmigue Langage PASCAL
1 Steondition ALORS 1 IF condition THEN
2 Action(st 2 N
3 SINON 3 Instructions 1;
4 Action(s); 4 END
5 FINSI 5 Else
6 Begin
7 Instruetions2;
8
Exdoution Test
Condition?
La condition est tout dabord évaluée,
— Sie résultat du calcul égate& true, le instructions 2 Instructions |
bloc diinstructions | est exéeuté,
_ Sille résultat du calcul égate false, le
bloc dlinstructions 2 est exéoute
Exemple
1 Program exemple;
2 Uses winert;
3 Var
4 Abed :integer;
3S Begin
6 Readin(a,b,¢);
7
8
9
15 Crd div 2-2;
16 End;
7 End.
DNIPF BOUAK/LANGAGE PASCAL “ANNE ACADEMIQUE 2022-2023, 3CHAPITRE2, STRUCTURES DE CONTROL
Exemple
Program exemple;
1
2 Uses winert,
3 Const
4 Peto;
5 Var
6 Ade :imeger;
7 Begin
5 Readinga,b)
9 Af (@>b) and (a4) and >8)-true]
DN/PE BOUAKE/LANGAGE PASCAL ANNEE ACADEMIQUE 2022-2023 32‘CHAPITRE 3. STRUCTURES DECONTROL)
3.1 Introduction
les programmes écits conticanent des suites instructions sépardes par des
Points virgules, et qui sont exccutses séquentiellement, c.~i-d. Tune aprés Yautre, depuis
le "Begin’ jusqu' le "end final
‘On peut ne vouloir exécutercertaines instructions que dans des eas bien précis, ou bien
‘ouloirrepéter un méme bloc dinstructions sur des objets différents, pour se faire, on a
‘ecours a des test ainsi qu des instructions conditionnelles, ou des boucles
Un test est une expression booléenne dont le résultat 'évaluation est vrai, ou faux. On
‘peut combiner plusieurs tests en un seul test en utilisant les opérateurs logiques vus aur
‘chapitre préeédent,
Un bloc dinstructions est un enchainement dinstructions regroupées et délimitées par un
début et une fin (Begin et end).
3.2 _ Instructions conditionnelles
(On distingue deux types dinstructions conditionnelles :
— L'instruction conditionnelle simple : SIalors... [Ne vouloir exécuter certaines in-
structions que dans des cas bien précis ]
— Liinstruction conditionnelles alternative: SI... alors..sinon...._[ vouloir exécuter
différentes instructions selon le résultat du test ]
3.2.1 L'instruction conditionnelle simple
Symtaxe
Algorithmique. Langage PASCAL
1 SI condition ALORS 1 IF condition THEN
2 Action(s) 2 BEGIN
3 FINS! 3 Instructions ;
4 END;
se sine
cut
_ Lacondition est tout dabord évaluée, coe
__ les instruetions(ou les actions) ne sont
cexécutées que sila valeur de la condi
tion est égale & True.
DN/IPF BOUAKE/LANGAGE PASCAL ANNEE ACADEMIQUE 2022-2023 31Chapitre 3
Structures de controle
Inureduction
Instructions conitionneles
32.1 Linsiuetion conditionnel simple.
322 Linstuction condiionneli al
Instructions réptitves
33.1 Instruction For - do (boucle For de)
33.2 Instat While do (bouele While - do)
333 Instruction Repent (Goucle Repti)
3.34 Diflérence entre les deux boucesconditionelles
335° Les boucles imbriguées
33.6 Passer dune bouele dune aute
33.7 Choisirlabouce foro, while-do ou epet-unti
33.8 Démarche i suivre pour érre un programme
34 Faeries éappicationEnd,
ANNEE ACADEMIQUE
2023‘QHAPITRE2. LES ELEMENTS DE BASE DULANGAGE PASCAL
False or True
True (bool_een) q_ > Expression correcte
Solution 2
Program perimetre_cercle;
Uses Winert;
Const
PI-3.14159;
Var
rayon, perimetre: real;
Begin
Read(rayon};
Perimetre = 2 * PI * rayon;
write('Le périmetre est: périmétre);
End
Solution 3
Premiére solution: en u
1 Program permut;
2 Uses Winert
3 Var
4 abs integer;
5 Begin
6 Read(a):
7 Read(b); {ou bien on écrit directement Read, b):
8 areath;
9
10
1M Writeln(a~a);
12 Write(b="b );
13 End.
Deuxiéme solution: en utilisant 3 variables
Program permut;
Uses Winert;
Var
2b, tmp : integer;
Begin
Read{ay:
Read(b):
tmp =a;
ar=b
DNIPP BOUAKE/LANGAGE PASCAL “ANNE ACADEMIQUE 2022-2023 28‘CHAPITRE 2, LES ELEMENTS Df BASE DULANGAGE PASCAL
Exercice 3
Ecrire un programme Pascal qui permet de permuter les valeurs de deux variables entiéres
Solutions
Solution 1
1 (2641) > (4/3)
(Feel + entice) > (entier/entier)
3.6(reel) > 1.333 (reel)
‘True(booleen) 4 > Expression correste
(12> 3)>4
‘True(booleen) > 4(entier) q > Expression ineorreste
3. Not( 12 <> C#16.8/4))and True
‘Not(true) and true = false and true
False (Boolean) > Expression correcte
4. 59< 183)
95 <24
False(Boolean) 4 > Expression correcte
5. >24)1Br4-6)
False + true
‘erreur q > Expression incorrect
6. M1 mod3 +5.2/2
2+ 2.6=4.6(recl) 4 > Expression correct
7. False or not false and true
False or True and True
DNIPF BOUAKE/LANGAGE PASCAL ANNEE ACADEMIQUE 2022-2023 21SHAPITRE 2. LS ELEMENTS DE BASE DU LANGAGE PASCAL
Ne pas confondre:= avec le ~ réservé a la comparason des variables dans un est.
Une affectation ne peut se faire qu‘entre une variable et une expression de méme
"ype (si A est réel, impossible de faire A~"bonjour’
ASB est différente de B:=A, dans la premigre instruction c'est la valeur de A qui
est modifige, par contre dans la deuxiéme, cest la valeur de B qui est modifice.
~ On ne peut pas éerire variable1:= variable2:= Expression, ni Expression = Expres-
sion2s
~ Six est un réel et y est un entie: on peut écrire x:=y; mais on ne peut pas éerire
Aprés exécution = prend la valeur: 10 et X prend la valeur: 8
2.11 Exercices d'application
Exercive 1
Ces expressions sont-elles comectes ? si oui, donner le type t le résultat d'évalus
1. (2641) > (4/3)
2. (12> 3)>4
3. Now 12 > C¥16.8/4)jand True
4. 59-< 93)
5. >24)'BH=6)
6, 1 mod3 +5.2/2
7. False or not false and true
Exercice 2
Ecrire un programme Pascal qui permet de calculer le périmétre d'un cercle a partir de
son rayon.
DNIPE BOUAKE/LANGAGE PASCAL AWNEE ACADEMIQUE 2022-2023 %69 write (la somme de’) { Parametre est une constante de type string.)
10 write (x) { Parametre est une variable.)
1 write (++) { Paramétre est une constante de type string}
2 write (y) { Paramétre est une variable}
13 write =") { Paramétre est une constante de type string}
14 write (x+y) { Parametre est une expression.)
15 end
2.10 L'instruction d'affectation
On appellc AFFECTATION Ia mise dune valeur dans une variable. Celle-ci peut etre
sous firme directe (A >= 2, ou A:=B) ou sous forme d'une expression (A:=B*C). Elle est
représentée parle signe dans le langage algorithmique et (:=) dans le langage PASCAL.
2.10.1 Affectation par une variable ou une valeur constante
~ affectation (variable = valeur) permet de changer la valeur dune variable,
affectation modifie le contenu de la variable. La valeur de la variable _a gauche du
signe := est remplacée par la valeur _a droite de =.
— Liaffectation (variablel := variable2) permet de changer la valeur de variable! par
celle de variable2.
2.10.2 Affectation par une expression
affectation (variable :~ expression) est effectuge par
1. Evaluation de expression
2. placement du résultat dans la variable & gauche.
Remarques:
_ Apres une affectation, Mancienne valeur de la variable est éerasée par la nouvelle
valeur.
Dans une instruction affectation, on extrait les valeurs des variables qui se situent
8 droite du (=). La parte gauche de (=) toujours est un nom d'une variable (un
identificateur) qui va recevoir le résultat,
Exemple:
x= x +N apour effet de mettre le résultat de la somme de la valeur de x avec la
valeur de N dans la variable x.
Lesigne :
8 gauche" (mettre le ruta du calul (contenu de B) fis (contenu de C) dans A).
DN/IPE BOUAKE/LANGAGE PASCAL ANNEE ACADEMIQUE 2023.2024 25‘SCHAPTTRE2, LES ELEMENTS DE BASE DULANGAGE PASCAL
‘Contenus des variables aprés Read
APIO BPS C22
2.Readin(a.b,c}; Readin(d.e); A10b-20 c=15 D-22 21
3.Readin(a.b); Readin(e,d); Readin(e); A=10 B20 CH1S de16 E=22
4 Readin(a); Readin(b); Reading); A=10 B15 C=22, de21, vous deves entrer
une valeur pour la variable ¢
'5.Readin(a.b); Readin; Readin(c); A=10 b-20 C=22, Readin sans paramétres
provoque un saut de ligne entrée.
~a,b.¢,d,e sont des variables de type integer.
2.9.2. Instruction WRITE/ WRITELN (€crire)
Write : permet dafficher tous les paramétres varl, var2,
la fin du contenu affiche.
vam spéeifiés et laisse le curseur
Syntaxe
Algorithmique Langage PASCAL,
1 Berire(varl,var2,....varn) 1 Write (varl, var2,.., varn)
__ La liste des paramétres d'une instruction write (writeln) peut contenir des con-
stantes, des variables et des expressions,
_. Liinstruction writeln(x) permet d'afficher la valeur de x avec un retour a la ligne
ala fin de Faffichage.
__ Liinstruction Writeln sans parameétre permet de sauter une ligne.
Exemple
Program affichage;
Uses winert;
var
x,y + integer;
Begin
‘writeln(Enirer deux enters);
{Paramétre est une constante de type string.)
read(x, y);
DN/IPE BOUAKELANGAGE PASCAL ANNEB ACADEMIQUE 2023-2024 on‘CHAPITRE2, LS ELEMENTS DE BASE DULANGAGE PASCAL
Exemple.
Instructions Données | Conems es variable apes Read
1 Read); 5 xs |
2.Read(a,b,c); 678 | 26, b=7, c=8 |
3. Read( 28 |
| a7 | 28, e-47
4 Ready.) 463658 | yd6, 7365 |
“a,b,c, x.y sont de type intéger, et z de type rea.
Si le nombre de valeurs entrées est supérieur celui des paramétres dans instruction
read, le systéme conserve le reste des valeurs pour un prochain read sil exist, si
non le systéme les néglige(voir 4 dans Pexemple précédent).
Sil n'existe pas suffisamment de valeurs entrées sur une ligne pour remplir les
paramétres de read, le systéme lit automatiquement a partir de ligne dentrée suiv-
ante voir 3 dans Pexemple prévédent)
_— Les deux éeritures sont identiques:
1 Read(vall, val2,.. valn);
1 READ(vall);
2 READ(val2);
3
4
READ(valn);
‘deux procédures, cest que READIN permet un retour a la ligne aprés la lecture de la
liste des variables spécifiges comme paramétres. Ce changement de ligne ne prend effet
‘qui la prochaine lecture par un autre READ ou READIN.
Exemple
Supposons qui existe deux valeurs entiéres sur chaque ligne d’entrée :
1020
15 16
2221
DNIPF BOUAKE/LANGAGE PASCAL ANNE ACADEMIQUE 2003-2024Programe 2
Données
ampere
ea} cutput} quelle
deanée 2
émalcate
Bevaiar 2 |] [ Résuteat 2
ce programme dot étre UL ___t
‘changé pour pouvoir utiliser
dlautres données ce programme peut utiliser
importe quele donnée, sans tre
changé
Read
Cate proce pemet de ie nyleus crs pare cavirt es affextent aux warnles
all, val2.,valn, specifies comme paramétes.
symtaxe
Algoritmigue Langage PASCAL
Readvall, va, val);
intéprer, real, char
Lalit des prametes ue instton raed) ne peut conte eds
variables.
ypu variables dans une ite de parame, es valeursrespetins
bes, lrsueles sont entrées parle clave, doivent tre sépurées une de
autre par au moins un espace.
DWHPP BOUAKE/LANGAGE PASCAL ANNE ACADEMIQUE 223-2024SHAPITRE 2, LES ELEMENTS DE BASE DULANGAGE PASCAL
Fonctions de conversion
Fonetion Signification | type de Fargument ‘Type du résultat
‘Trune(X) Panic emtitre deX | Réel Entier
Round(x) Amondi de X _a| Réel Entier
Tenticr te plus |
proche |
ORDEX Rang de X Entier, Caractére, ou
Booléen
CHRO) Caractére ayant le | Enter Caraetére
rang X
Fonetions ordre -
T, — ]
| Fonetion ‘Type de argument Type du résultat
PRED(X) | Valeurqui préctde X | Enlier,Caractre, ou De méme type
Booléen
SUCCOX) | ValeurquisuitX | Enlier,Caractre, on De méme type
Boolean
opps) Vea si Xestimpaire, | Entier Booléen |
Faux siX est pair |
2.9 Les entrées/sorties
2.9.1 Instruction READ/READLN (lire)
‘Un programme a besoin de données sur lesquelles il opére Si nous éerivons toutes les
valeurs des données dans le programme Iuieméme, sous forme de constantes ou daffectation,
nous devons rééerire le programme chaque fois que nous voulions Vappliquer & un autre
ensemble de valeurs different. Pour éviter cela, les données doivent re séparées du pro=
gramme jus ce quil soit exéoute, ensuite les instructions du programme copient les
valeurs des données dans les variable du programme. Aprés la mémorisation de ces valeurs,
le programme peut effectuer des calculs avec eux (voir la figure qui suit)
Le processus de placement des valeurs d'un ensemble de données extemes dans des
variables d'un programme est appelé : les entrée (input).
Pour entrer des données dans un programme en cours d'exécution, le langage pascal nous
ofire les procédures READ et READIN,
DNIPF BOUAKE/LANGAGE PASCAL -ANNEB ACADEMIQUE 2023.2024 21‘CHAPITRE2.__LES ELEMENTS DE BASE DU LANGAGE PASCAL,
3. 14 mod 3-+4.2/
2421941
4. Not( 12 <> C*15/5))and True
Not( 12 <> 9) and True =
Not( True) and True =
False and True =
False
Autres exemples expressions numérique (Sot les variables : A~6,B2,
3)
_ AtBIC = AH(BIC)= 6+B/3)= 610.66-6.66
_ A/B mod C = (A/B) mod C= F/2)mod 3=3 mod 30,
_ BIA + 24°C
B*A) BC) = B*6)¢B*3)-1246-18
Exemples dexpressions incorrectes
Leexpression boolgenne: a < bande -0 | Reel
| siwo) __ Bntier ou Rest Réel
| cose Entier ou Réel | Reel |
| ARTANGS) Arcte(X) Entier ou Réel | Réel |
| LNOO) | Loge) Entier ou Réel | Reet
| p09 e Enlierou Réel >-0 |e
DNIPF BOUAKE/LANGAGE PASCAL ANNEE ACADEMIQUE 2023-2024 20Les BASE sc
283° Opérateurs relationnels
> Supérieur
Supérieur ou égal
< —Inférieur
= Inféricurou_égat
= gal
> Different
1. Le=et <> Opérent sur tous les types de variables précédemment définis, par contre
les autres opérateurs ne peuvent pas s'appliquer sur des opérandes de type booléen.
2. Le résultat d'une comparaison est un booléen.
2.8.4 — Niveaux de priorités
(Cees Forde dans lequel sont appliquées les différentes opérations d'une expression, par
exemple Fexpression :x+/¥z est évaluée en calculant(y*2) puis Ie (résultat +x), parce
que la multiplication est prortare par rapport & addition.
‘Voici la table des provtéselassées par ordre dSeroissant, les opérateurs sur une meme
ligne ayant une priortés égale,
0 les parentheses, fonction()
2 + not (unaire)
3 */ div mod and |
4 + -or
5
Remarque les opérations du méme niveau sont appliquées de gauche & droite
Exemples
1, 10#D*4) div2= 10+ 16 div
2. 17 mod E div 2= 17 mod2
=10+8=18
DNIPE BOUAKE/LANOAGE PASCAL ANNEE ACADEMIQUE 2023-2004 19