ch5+structure+de+controle+itératives
TRANSCRIPT
-
7/25/2019 Ch5+structure+de+controle+itratives
1/11
I. STRUCTURE ITERATIVE COMPLETE : LA BOUCLE POUR 1
BUT : Afficher lcran la moyenne de la classe.
La tche de ce programme consiste :1) Rpter le traitement suivant :
saisir dans un tableau de 10 lments les moyennes de 10 lves, dajouter la moyenne de chaque lve la variable SOM.
2) Calculer MCSOM/10.
NOM: MOY_CLASSE
S L.D.E O.U432
1
5
Rsultat= crire ("La moyenne de la classe est : ", MC :5 :2)MCSOM/10SOM = [ SOM0] Pouri de1 10 rpter
SOMSOM+ MOY[i] FinPour
MOY= [ ] Pouri de1 10 rpterMOY[i] = Donne ("Saisir l'lment N ",i)
FinPourFinMOY_CLASSE
MCSOM
iMOY
Objet Nature / Type
MCSOM
iMOY
RelRelEntier.TAB
On se propose dcrire un programme pascal intitul MOY_CLASSE permettant de calculer et
dafficher la moyenne dune classe de 10 lves.
Pour rsoudre ce problme, on a dj propos de dclarer un tableau de 10 lments pour saisir les
moyennes au lieu d'utiliser 10 variables diffrentes. Mais nous avons vu aussi que la lecture d'un
tableau se fait lment par lment, ce qui demande de rpter 10 fois l'criture des instructions de
lecture. Quelle est donc la solution ?
On doit utiliser une structure rptitive pour rduire le nombre d'instructions de lecture.
:
:Mr Khmili Meher
-
7/25/2019 Ch5+structure+de+controle+itratives
2/11
0) Dbut MOY_CLASSE1) Pouri de1 10 rpter
FaireEcrire ("Saisir l'lment N ", i)
Lire (MOY[i])Fin Pour
2) SOM0Pouri de1 10 rpter
SOMSOM+MOY[i]FinPour
3) MCSOM/104) Ecrire ("La moyenne de la classe est : ", MC :5 :2)5) Fin MOY_CLASSE
PROGRAMMOY_CLASSE;USES WINCRT;CONST
Nmax=10;TYPE
TAB= ARRAY[1. .nmax] OFREAL;VAR
MC: REAL;I: INTEGER;MOY: TAB;
BEGINFOR i: =1 TO10 DOBEGIN
WRITELN ('Saisir l'lment N ',i);READLN (MOY[i]);
END;SOM:= 0;FOR i: = 1 TO10 DO
BEGIN SOM := SOM+ MOY [i];END;
MC := SOM/10;WRITELN ('La moyenne de la classe est : ', MC :5 :2);END.
-
7/25/2019 Ch5+structure+de+controle+itratives
3/11
2
3
[Init] Pourcompteur de Vi Vf Faire
Instruction 1
Instruction 2 ..
Instruction N
FinPour
...... ;
{Init};
Forcompteur := Vi To Vf Do
Begin
Instruction 1 ;
Instruction 2 ;
..... ;
Instruction N ;
End ;
Remarques :
Vi : Valeur initiale du compteur.
Vf: Valeur finale du compteur.
Le compteur doit tre de type scalaire(Entier, caractre).
Le traitement de la boucle Pour sarrte lorsque le compteur atteint la valeur finale (Vf).
Les instructions entre Pour et FinPour reprsentent le traitement rpter.
Dans la boucle Pour , le nombre de rptitions est fini.
Dans le cas o Vi > Vf, pour quil aura excution du traitement de cette boucle, on utilise en
Pascal DOWNTO au lieu de TO Exemple :
For i := 8 Downto2 Do OU For i := 2 to8 Do
A chaque rptition, le compteur de la boucle sera automatiquement- Incrment (augment) dune unit si Vi < Vf
- Dcrment (retranch) dune unit si Vi > Vf
II. STRUCTURE ITRATIVE A CONDITION DARRT
1
BUT : Afficher lcran la moyenne de la classe.
La tche de ce programme consiste :
1) Rpter le traitement suivant : Remplir le tableau Moy par des moyennes entre 0 et 20. Si la moyenne saisie ne vrifie
pas la condition (0
-
7/25/2019 Ch5+structure+de+controle+itratives
4/11
NOM: MOY_CLASSE
S L.D.E O.U
43
2
1
5
Rsultat= crire ("La moyenne de la classe est : ", MC :5 :2)MCSOM/10
SOM = [ SOM0] Pouri de1 10 rpterSOMSOM+MOY[i] FinPour
MOY= [ ] Pouri de1 10 rpter MOY= [ ] Rpter
MOY[i] = Donne ("Saisir l'lment N ",i) Jusqu (MOY[i]>=0) ET(MOY[i] =0) ET(MOY[i]
-
7/25/2019 Ch5+structure+de+controle+itratives
5/11
PROGRAMMOY_CLASSE;USES WINCRT;CONST
Nmax=10;TYPE
TAB= ARRAY[1. .nmax] OFREAL;
VARMC :REAL ;i : INTEGER;MOY :TAB;
BEGINFORi :=1 TO10 DO
BEGINRepeatWRITELN ('Saisir l'lment N ',i);READLN (MOY[i]) ;Until(MOY[i]>=0) AND(MOY[i]
-
7/25/2019 Ch5+structure+de+controle+itratives
6/11
BUT : Afficher lcran le factoriel de N.
La tche de ce programme consiste :1) Saisir un entier N en faisant un contrle. Si N nest pas positif alors le programme redemande
la saisie et ainsi de suite jusqu ce quune bonne valeur soit donne.
2) Tester N : Si N= 1, alors Fact1,
Si N>1 , alors FactN*(N-1)*(N-2)**1
NOM: FactorielleS L.D.E O.U
31
2
4
Rsultat= crire (N, " != ", Fact)N= [ ] Rpter
N = Donne ("Taper un entier") Jusqu (N>=0)Fact = [ ] Si N= 0 alors
Fact1Sinon[Fact1] Pouri de N 1 rpter
FactFact*i FinPourFinsi
FinFactorielle
NFact
i
Objet Nature / Type
NFact
i
Entier.Entier.Entier.
0) Dbut Factorielle1) Rpter
Ecrire ("Taper un entier ")Lire (N)
Jusqu (N>=0)2) Si N= 0 alors Fact1
SinonFact1Pouri de N 1 rpter
FactFact*iFinPour
Finsi3) crire (N, " != ", Fact)4) Fin Factorielle
Ecrire un programme Pascal intitul Factoriellepermettant de calculer et dafficher le factoriel
dun entier N positif.
Exemple : N= 4 N != 4*3*2*1=24.
-
7/25/2019 Ch5+structure+de+controle+itratives
7/11
PROGRAMFactorielle;USES WINCRT;VAR
N,Fact,i :INTEGER;BEGIN
Repeat
WRITELN ('Taper un entier ');READLN (N) ;Until(N>=0);IFN=0 THEN
Fact:= 1ELSE
BEGINFact:= 1;FORi :=1 TON DO
BEGIN Fact := Fact*i;
END;END;WRITELN (N, ' != ', Fact);END.
2
BUT : Afficher lcran la somme dune srie dentiers positifsLa tche de ce programme consiste rpter la saisie dune srie dentiers positifs, dajouter
lentier saisi la variable SOM tant que on na pas saisi un entier ngatif.
NOM: SERIE
S L.D.E O.U21
3
Rsultat= crire ("La somme est : ", SOM)SOM = [ SOM0, N= Donne ("Donner le premier entier") ]Tant que N >= 0 faire
SOMSOM+NN = donne ("Donner un autre entier")
Fin Tant queFinSERIE
SOMN
Objet Nature / Type
SOMN EntierEntier
On se propose dcrire un programme pascal intitul SERIE permettant de calculer et
dafficher la somme dune srie dentiers positifs termin par un entier ngatif.
-
7/25/2019 Ch5+structure+de+controle+itratives
8/11
0) Dbut SERIE1) Ecrire ("Donner le premier entier :")2) lire (N)3) SOM04) Tant que N 0 faire SOMSOM+N
Ecrire ("Donner un autre entier ")Lire (N) Fin Tant que5) Ecrire ("La somme est : ", SOM)6) Fin SERIE
PROGRAMSERIE;USES WINCRT;VAR
N, SOM : INTEGER;
BEGIN WRITELN ('Donner le premier entier ');READLN (N) ;SOM:= 0;WHILE N>= 0 DO
BEGIN SOM := SOM+ N ;
READLN (N) ;END;
WRITELN ('La somme est : ', SOM);END.
[Init] Tant que Condition faire
Instruction 1
Instruction 2 ..
Instruction N
Fin Tant que
...... ;
{Init};
While Condition Do
Begin
Instruction 1 ;
Instruction 2 ;
;
Instruction n ;
End ;
Pour les structures itratives condition darrt, le traitement de la boucle Rpter sexcute dans tous les cas au moinsune fois alors que pour la boucle Tant que ,
Un rsultat a une structure itrative condition darrt (Tant que)si le nombre de rptition
nest pas connu lavance et la condition devance laction.
Dans cette boucle, la condition sera tout dabord value. Si elle est VRAIE alors le
traitement de la boucle sera excut sinon ce traitement ne sexcute jamais.
-
7/25/2019 Ch5+structure+de+controle+itratives
9/11
on peut tomber dans un cas o le traitement correspondant ne sexcute aucune fois et ceci ds quela condition est fausse.Exemple :
S := 2 ;
I := 0 ;
Repeat
I := I + 1 ;S := S + I ;
Until I = 1 ;
S := 2 ;
I := 0 ;
While I = 1 Do
Begin
I := I + 1 ;
S := S + I ;End ;
La boucle est excute une seule fois. S =3 et I=1
La boucle nest pas excute.
S =2 et I= 0
BUT : Afficher lcran le PGCD de deux entiers positifs A et B.
La tche de ce programme consiste :
1)Saisir deux entiers positifs A et B en faisant un contrle. Si A et B ne sont pas positifs alors leprogramme redemande la saisie et ainsi de suite jusqu ce quune bonne valeur soit donne.
2)Calculer le PGCD en testant A et B.
NOM: PGCD
S L.D.E O.U
32
1
4
Rsultat= crire ("Le PGCD est ",A)A = [ ] Tantque AB faire
Si A>B alorsAA-B
FinsiSi A=0) ET(B>=0)FinPGCD
AB
Ecrire un programme Pascal intitul PGCDpermettant de calculer et dafficher le PGCD(PlusGrand Commun Diviseur) de deux entiers positifs A et B par la mthode de diffrence.
Exemple : PGCD(12,30) = ?
A B Si A>B alors AA-B
SI A
-
7/25/2019 Ch5+structure+de+controle+itratives
10/11
Objet Nature / Type
AB
Entier.Entier.
0) Dbut PGCD1) Rpter
Ecrire ("Taper un premier entier "), Lire (A)Ecrire ("Taper un deuxime entier "), Lire (B)
Jusqu (A>=0) ET (B>=0)2) [ ] Tantque AB rpter
Si A>B alorsAA-B
Finsi
Si A=0) AND (B>=0) ;While AB DOBEGIN
IF A> B THENA:= A-B;
IF A
-
7/25/2019 Ch5+structure+de+controle+itratives
11/11
III. SELECTION DUNE BOUCLE REPETITIVE
Boucle Rpter Boucle Tant que
OUI
OUI
NON
NON
Nombre derptitionsconnu lavance