Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Ch5 Structure de Controle Itératives

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 11

Chapitre 4

Les Structures De Contrles Itratives

PROFESSEUR :
Mr Khmili Meher

DISCIPLINE : Informatique
2eme Technologie

Les Structures De Contrles Itratives

C
Ch
ha
ap
piittrree 55

I.

STRUCTURE ITERATIVE COMPLETE : LA BOUCLE POUR

Activit
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.

Pr-analyse
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 MC SOM/10.
Analyse
S
4
3
2

Grille danalyse
NOM : MOY_CLASSE
L.D.E
Rsultat = crire ("La moyenne de la classe est : ", MC :5 :2)
MC SOM/10
SOM = [ SOM0] Pour i de 1 10 rpter
SOMSOM+ MOY[i]
FinPour
MOY= [ ] Pour i de 1 10 rpter
MOY[i] = Donne ("Saisir l'lment N ",i)
FinPour
Fin MOY_CLASSE

Tableau de dclaration de nouveaux types


TYPE
TAB= tableau de nmax rels
Tableau de dclaration des objets
Objet
MC
SOM
i
MOY

Nature / Type
Rel
Rel
Entier.
TAB
-1-

O.U
MC
SOM
i
MOY

Nmax est une constante = 10

Chapitre 4

Les Structures De Contrles Itratives

Algorithme
0) Dbut MOY_CLASSE
1) Pour i de 1 10 rpter
Faire
Ecrire ("Saisir l'lment N ", i)
Lire (MOY[i])
Fin Pour
2) SOM0
Pour i de 1 10 rpter
SOMSOM+MOY[i]
FinPour
3) MC SOM/10
4) Ecrire ("La moyenne de la classe est : ", MC :5 :2)
5) Fin MOY_CLASSE
Traduction en Pascal
PROGRAM MOY_CLASSE;
USES WINCRT;
CONST
Nmax=10;
TYPE
TAB= ARRAY [1. .nmax] OF REAL;
VAR
MC: REAL;
I: INTEGER;
MOY: TAB;
BEGIN
FOR i: =1 TO 10 DO
BEGIN
WRITELN ('Saisir l'lment N ',i);
READLN (MOY[i]);
END;
SOM:= 0;
FOR i: = 1 TO 10 DO
BEGIN
SOM := SOM+ MOY [i];
END;
MC := SOM/10;
WRITELN ('La moyenne de la classe est : ', MC :5 :2);
END.

-2-

Chapitre 6

Les structures de contrle itratives

Dfinition
Un rsultat a une structure itrative complte si le nombre de rptition est connu lavance.

Vocabulaire et syntaxe
Au niveau de lanalyse et de lalgorithme

[Init] Pour compteur de Vi Vf Faire


Instruction 1
Instruction 2
..
Instruction N
FinPour

Au niveau de Turbo Pascal


...... ;
{Init};
For compteur := 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 Downto 2 Do
OU
For i := 2 to 8 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

La boucle Rpter

a / Activit
On se propose dcrire un programme Pascal intitul MOY_CLASSE permettant de calculer et
dafficher la moyenne dune classe de 10 lves. La moyenne des lves varie entre 0 et 20.
Pr-analyse
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<=moy<=20), alors le programme redemande la saisie et ainsi de suite
jusqu ce quune bonne valeur soit donne.
Parcourir le tableau MOY lment par lment, ajouter la moyenne de chaque lve la
variable SOM.
2) Calculer MC SOM/10.
-3-

Chapitre 6

Les structures de contrle itratives

Analyse
Grille danalyse
NOM : MOY_CLASSE
S
4
3
2

L.D.E
Rsultat = crire ("La moyenne de la classe est : ", MC :5 :2)
MC SOM/10
SOM = [ SOM0] Pour i de 1 10 rpter
SOMSOM+MOY[i]
FinPour
MOY= [ ] Pour i de 1 10 rpter
MOY= [ ] Rpter
MOY[i] = Donne ("Saisir l'lment N ",i)
Jusqu (MOY[i]>=0) ET (MOY[i] <=20)
FinPour
Fin MOY_CLASSE

Tableau de dclaration de nouveaux types


TYPE
TAB= tableau de nmax rels
Tableau de dclaration des objets
Objet
MC
SOM
i
MOY

Nature / Type
Rel
Rel
Entier.
TAB

Algorithme
0) Dbut MOY_CLASSE
1) Pour i de 1 10 rpter
Rpter
Ecrire ("Saisir l'lment N ",i)
Lire (MOY[i])
Jusqu (MOY[i]>=0) ET (MOY[i] <=20)
FinPour
2) SOM0
Pour i de 1 10 rpter
SOMSOM+MOY[i]
FinPour
3) MC SOM/10
4) Ecrire ("La moyenne de la classe est : ", MC :5 :2)
5) Fin MOY_CLASSE

-4-

Nmax est une constante = 10

O.U
MC
SOM
i
MOY

Chapitre 6

Les structures de contrle itratives

Traduction en Pascal
PROGRAM MOY_CLASSE;
USES WINCRT;
CONST
Nmax=10;
TYPE
TAB= ARRAY[1. .nmax] OF REAL;
VAR
MC : REAL ;
i : INTEGER;
MOY : TAB;
BEGIN
FOR i :=1 TO 10 DO
BEGIN
Repeat
WRITELN ('Saisir l'lment N ',i);
READLN (MOY[i]) ;
Until (MOY[i]>=0) AND (MOY[i] <=20);
END;
SOM:= 0;
FOR i := 1 TO 10 DO
BEGIN
SOM := SOM+ MOY [i]
END;
MC := SOM/10;
WRITELN ('La moyenne de la classe est : ', MC :5 :2);
END.
b / Dfinition
Un rsultat a une structure itrative condition darrt (Rpter) si le nombre de rptition
nest pas connu lavance et laction devance la condition.
Dans cette boucle, les instructions du traitement seront tout dabord excutes puis la
condition sera value. Si la condition est VRAI alors le traitement de la boucle ne se rpte
plus (la boucle sarrte) sinon ce traitement sera de nouveau excut et ainsi de suite.
c / Vocabulaire et syntaxe
Au niveau de lanalyse et de lalgorithme
[Init] Rpter
Instruction 1
Instruction 2
..
Instruction N
Jusqu Condition

Au niveau de Turbo Pascal


...... ;
{Init};
Repeat
Instruction 1 ;
Instruction 2 ;
..
;
Instruction N ;
Until Condition ;

-5-

Chapitre 6

Les structures de contrle itratives

d / Application
Ecrire un programme Pascal intitul Factorielle permettant de calculer et dafficher le factoriel
dun entier N positif.
Exemple : N= 4

N != 4*3*2*1=24.

Pr-analyse
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 Fact N*(N-1)*(N-2)**1
Analyse
Grille danalyse
NOM : Factorielle
S
3
1

L.D.E
Rsultat = crire (N, " != ", Fact)
N= [ ] Rpter
N = Donne ("Taper un entier")
Jusqu (N>=0)
Fact = [ ] Si N= 0 alors
Fact1
Sinon
[Fact1] Pour i de N 1 rpter
FactFact*i
FinPour
Finsi
Fin Factorielle

Tableau de dclaration des objets


Objet
N
Fact
i

Nature / Type
Entier.
Entier.
Entier.

Algorithme
0) Dbut Factorielle
1) Rpter
Ecrire ("Taper un entier ")
Lire (N)
Jusqu (N>=0)
2) Si N= 0 alors Fact1
Sinon
Fact1
Pour i de N 1 rpter
FactFact*i
FinPour
Finsi
3) crire (N, " != ", Fact)
4) Fin Factorielle
-6-

O.U
N
Fact
i

Chapitre 6

Les structures de contrle itratives

Traduction en Pascal
PROGRAM Factorielle;
USES WINCRT;
VAR
N,Fact,i : INTEGER;
BEGIN
Repeat
WRITELN ('Taper un entier ');
READLN (N) ;
Until (N>=0);
IF N=0 THEN
Fact:= 1
ELSE
BEGIN
Fact:= 1;
FOR i := 1 TO N DO
BEGIN
Fact := Fact*i;
END;
END;
WRITELN (N, ' != ', Fact);
END.
2
La boucle Tant que
a / Activit
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.
Pr-analyse
BUT : Afficher lcran la somme dune srie dentiers positifs
La 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.
Analyse
Grille danalyse
NOM : SERIE
S

L.D.E

2
1

Rsultat = crire ("La somme est : ", SOM)


SOM = [ SOM0, N= Donne ("Donner le premier entier") ]
Tant que N >= 0 faire
SOMSOM+N
N = donne ("Donner un autre entier")
Fin Tant que
Fin SERIE

O.U

Tableau de dclaration des objets


Objet Nature / Type
SOM
Entier
N
Entier

-7-

SOM
N

Chapitre 6

Les structures de contrle itratives

Algorithme
0) Dbut SERIE
1) Ecrire ("Donner le premier entier :")
2) lire (N)
3) SOM0
4) Tant que N 0 faire
SOMSOM+N
Ecrire ("Donner un autre entier ")
Lire (N)
Fin Tant que
5) Ecrire ("La somme est : ", SOM)
6) Fin SERIE
Traduction en Pascal
PROGRAM SERIE;
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.

b / Dfinition
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.
c / Vocabulaire et syntaxe
Au niveau de lanalyse et de lalgorithme
[Init]

Tant que Condition faire


Instruction 1
Instruction 2
..
Instruction N
Fin Tant que

Au niveau de Turbo Pascal


...... ;
{Init};
While Condition Do
Begin
Instruction 1 ;
Instruction 2 ;

;
Instruction n ;
End ;

Remarque : Pour les structures itratives condition darrt, le traitement de la boucle


Rpter sexcute dans tous les cas au moins une fois alors que pour la boucle Tant que ,

-8-

Chapitre 6

Les structures de contrle itratives

on peut tomber dans un cas o le traitement correspondant ne sexcute aucune fois et ceci ds que
la condition est fausse.
Exemple :
S := 2 ;
S := 2 ;
I := 0 ;
I := 0 ;
While I = 1 Do
Repeat
I := I + 1 ;
Begin
S := S + I ;
I := I + 1 ;
Until I = 1 ;
S := S + I ;
End ;
La boucle est excute une seule fois.
La boucle nest pas excute.
S =3 et I=1
S =2 et I= 0
d / Application
Ecrire un programme Pascal intitul PGCD permettant de calculer et dafficher le PGCD(Plus
Grand Commun Diviseur) de deux entiers positifs A et B par la mthode de diffrence.
Exemple : PGCD(12,30) = ?
A<> B

Si A>B alors A A-B


SI A <B alors B B-A

PGCD(12,30) = 6
Pr-analyse
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 le
programme redemande la saisie et ainsi de suite jusqu ce quune bonne valeur soit donne.
2)Calculer le PGCD en testant A et B.
Analyse
NOM : PGCD
S
3
2

Grille danalyse

L.D.E
Rsultat = crire ("Le PGCD est ",A)
A = [ ] Tantque A<>B faire
Si A>B alors
A A-B
Finsi
Si A<B alors
B B-A
Finsi
FinTantque
A,B= [ ] Rpter
A = Donne ("Taper un premier entier")
B = Donne ("Taper un deuxime entier")
Jusqu (A>=0) ET (B>=0)
Fin PGCD
-9-

O.U
A
B

Chapitre 6

Les structures de contrle itratives

Tableau de dclaration des objets


Objet
A
B

Nature / Type
Entier.
Entier.

Algorithme
0) Dbut PGCD
1) Rpter
Ecrire ("Taper un premier entier "), Lire (A)
Ecrire ("Taper un deuxime entier "), Lire (B)
Jusqu (A>=0) ET (B>=0)
2) [ ] Tantque A<>B rpter
Si A>B alors
A A-B
Finsi
Si A<B alors
B B-A
Finsi
FinTantque
3) crire ("Le PGCD est ",A)
4) Fin PGCD
Traduction en Pascal
PROGRAM PGCD;
USES WINCRT;
VAR
A,B: INTEGER;
BEGIN
Repeat
WRITELN ('Taper un premier entier '); READLN(A) ;
WRITELN ('Taper un deuxime entier '); READLN(B) ;
Until (A>=0) AND (B>=0) ;
While A<>B DO
BEGIN
IF A> B THEN
A:= A-B;
IF A <B THEN
B:= B-A;
END;
WRITELN (' Le PGCD est ', A);
END.

- 10 -

Chapitre 6

III.

Les structures de contrle itratives

SELECTION D'UNE BOUCLE REPETITIVE


Slection dune boucle

Nombre de
rptitions
connu
lavance

NON

Laction se fait

OUI

au moins une fois


et laction
devance la
condition

OUI

Boucle Pour

Boucle Rpter

- 11 -

NON

Boucle Tant que

Vous aimerez peut-être aussi