Vous êtes sur la page 1sur 11

Chapitre 4

Les Structures De Contrles Itratives

LYCEE DISCIPLINE : Informatique Chapitre 4 I. 1

PROFESSEUR :

Les Structures De Contrles Itratives STRUCTURE ITRATIVE COMPLTE : 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 1 5 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

O.U MC SOM i MOY

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-

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 contrle itratives

Les structures de

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 Au niveau de Turbo Pascal ...... ; {Init}; For compteur := Vi To Vf Do Begin Instruction 1 ; Instruction 2 ; ..... ; Instruction N ; End ;

lalgorithme [Init] Pour compteur de Vi Vf Faire Instruction 1 Instruction 2 .. Instruction N FinPour

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

a / Activit

Chapitre 6 contrle itratives

Les structures de

2) Calculer MC SOM/10. Analyse Grille danalyse NOM : MOY_CLASSE S 4 3 2 1 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 O.U MC SOM i MOY

Tableau de dclaration de nouveaux types TYPE TAB= tableau de nmax rels Tableau de dclaration des objets Objet MC SOM i MOY 0)
1)

Nmax est une constante = 10

Nature / Type Rel Rel Entier. TAB

Algorithme Dbut MOY_CLASSE 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-

Chapitre 6 contrle itratives

Les structures de

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. a / 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. b /Vocabulaire et syntaxe Au niveau de lanalyse et de lalgorithme [Init] Rpter Instruction 1 Instruction 2 .. Instruction N Jusqu Condition ...... ; {Init}; Repeat Instruction 1 ; Instruction 2 ; .. ; Instruction N ;
-5-

Au niveau de Turbo Pascal

Chapitre 6 contrle itratives

Les structures de

Until Condition ;

c / Application Ecrire un programme Pascal intitul Factorielle permettant de calculer et dafficher le factoriel dun entier N positif. Exemple : N= 4 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 2 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 Nature / Type Entier. Entier. Entier. O.U N Fact i N != 4*3*2*1=24.

Tableau de dclaration des objets Objet N Fact i

Algorithme 0) Dbut Factorielle 1) Rpter Ecrire ("Taper un entier ") Lire (N) Jusqu (N>=0) 2) Si N= 0 alors Fact1 Sinon Fact1
-6-

Chapitre 6 contrle itratives

Les structures de

Pour i de N 1 rpter FactFact*i FinPour Finsi 3) crire (N, " != ", Fact) 4) Fin Factorielle 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 2 1 L.D.E 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
-7-

O.U SOM N

Chapitre 6 contrle itratives

Les structures de

Tableau de dclaration des objets Objet Nature / Type SOM Entier N Entier 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 ; ;
-8-

Chapitre 6 contrle itratives

Les structures de

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 , 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 ; Repeat While I = 1 Do 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 O.U A B

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")
-9-

Chapitre 6 contrle itratives

Les structures de

B = Donne ("Taper un deuxime entier") Jusqu (A>=0) ET (B>=0) Fin PGCD

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 contrle itratives

Les structures de

III.

SELECTION D'UNE BOUCLE REPETITIVE Slection dune boucle

Nombre de rptitions connu lavance

NON

OUI OUI

Laction se fait au
moins une fois et laction devance la condition

NON

Boucle Pour

Boucle Rpter

Boucle Tant que

- 11 -