Académique Documents
Professionnel Documents
Culture Documents
PROFESSEUR :
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
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-
Chapitre 4
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-
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 ;
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
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)
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-
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-
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.
Algorithme 0) Dbut Factorielle 1) Rpter Ecrire ("Taper un entier ") Lire (N) Jusqu (N>=0) 2) Si N= 0 alors Fact1 Sinon Fact1
-6-
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
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-
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-
Les structures de
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 -
Les structures de
III.
NON
OUI OUI
Laction se fait au
moins une fois et laction devance la condition
NON
Boucle Pour
Boucle Rpter
- 11 -