Admin Admin

Age : 47 Inscrit le : 15 Mar 2008 Messages : 22
| Sujet: cours numéro 06 Sam 15 Mar - 23:12 | |
| 13 Fév 2008 Cours No 06 de PASCAL TROISIEME PAS DANS PASCAL :
1. Les Structures de Contrôle:
Introduction : Pratiquement dans tous les problèmes qu'on traite sur ordinateur on trouve une répétition d'un certain schéma de calcul, et bien sûr les langages de programmation offrent des structures de contrôle qui permettent d'exprimer cette répétition de façon claire et aisée. Pascal offre à cette effet les trois structures de contrôle suivantes.
REPEAT ……………….UNTIL …………… WHILE ………………..DO ……………….. FOR …………TO……..DO ……………….
Bien que dans plusieurs situations le programmeur peut utiliser l'une des trois structures à son choix, on verra plus loin que chacune des trois structures se spécialise dans une situation de traitement répétitif.
a) L'instruction REPEAT …… UNTII.. :
sa forme générale est la suivante: REPEA T Instruction ; ………….. Instruction UNTIL condition;
*Les instructions comprises entre REPLAT et UNTIL sont exécutées de façon répétitive jusqu'à ce que la condition située après UNTIL soit égale à TRUE. * Le mot réservé UNTIL ne doit jamais être précédé d'un point virgule. * Après chaque exécution des instructions comprises entre REPEA T et UNTIL la condition située après UNTIL est évaluée de nouveau. * L'une au moins des instructions comprise entre REPEAT et UNTIL doit avoir un effet sur la condition d'arrêt, sinon il s'agira d'une boucle infinie, et c’est l’une des erreurs de programmations les plus courantes avec les boucles. * Les instructions comprises entre REPEAT et UNTIL sont exécutées au moins une fois.
Exemple : Calcul du pgcd de deux entiers A et B
Program PGCD; Var A, B, D : INTEGER ; Begin Readln (A, B) ; Repeat D := A mod B ; A:=B; B :=0 Until D=0 ; Writeln ('Pgcd = ',B); END.
b) L'instruction WHILE…. DO :
Sa forme générale est:
WHIILE condition DO
BEGIN
instruction ;
……… ;
instruction
END.
Règles d'utilisation de la boucle WHILE:
* Le corps de la boucle WHILE est exécuté de façon répétitive tant que la condition située entre WHILE et DO est égale à TRUE.
* Quand la condition prend la valeur FALSE l’exécution se poursuit à l’instruction suivante,
* L'évaluation de la condition de répétition est faite avant l’exécution du corps de la boucle WHILE, donc si la condition est FALSE au début alors le nombre de répétitions est égal à 0.
* Dans le cas ou la boucle WHILE comporte un seule instruction (ce qui est très rare), l’utilisation de BEGIN et END est facultative.
* Comme dans le cas de la boucle REPEAT, l'une au moins des instructions du corps de la boucle WHILE doit avoir un effet sur la condition de répétition.
Exemple : Calcul du PGCD de deux entiers A et B.
Program PGCD2 ; Var A,B,D : INTEGER; Begin Readln (A,B) ; D := A mod B ; WHILE D<>0 DO Begin A:=B; B :=D; D :=A mod B End; Writeln('Pgcd = ", B); End. c) L'instruction FOR... TO …..DO:
Les deux premières instructions de contrôle (REPEA T et WHILE) sont des instructions générales qu'on peut utiliser dans toutes les situations de répétitions. L’instruction FOR, par contre, est utilisée uniquement dans le cas de boucle contrôlée avec un compteur. L’instruction FOR a la particularité d'utiliser automatiquement un compteur de boucle.
- Première forme de la boucle FOR:
FOR v := EXP1 TO EXPR2 DO
Begin
instruction ;
…………..
Instruction
END;
v est une variable entière et EXPR1 et EXPR2 sont deux expressions entières.
Règles d'utilisation de la boucle FOR :
. v est appelée variable de contrôle de la boucle (ou compteur de la boucle), elle reçoit au début de l' exécution de la boucle la valeur de EXPR1.
. Avant l'exécution du corps de la boucle FOR la valeur de v est comparée à celle de EXPR2, Si v<=EXPR2 alors le corps de la boucle est exécuté, sinon l'exécution se poursuit à l'instruction suivante.
. Après chaque exécution du corps de la boucle FOR,la valeur de la variable de contrôle est augmentée (incrémentée) de 1, et sa valeur est à nouveau comparée à celle de EXPR2 en vue d'une nouvelle exécution du corps de la boucle,
. Il est incorrect de modifier la valeur de la variable de contrôle à l 'intérieur du corps de la boucle.
. Si le corps de la boucle est réduit à une seule instruction, l'utilisation des mots BEGlN et END est facultative ,
. Si au départ EXPR1 > EXPR2 aucune exécution du corps de la boucle WHILE n 'est effectuée.
Exemple: Calcul de S == 1 + 2 + 3 +…………. + N
Program Somme; Var I,S,N : INTEGER : BEGIN Readln(N); FOR I := 1 TO N DO S := S + I; Writeln('Somme=', S);
END.
- Deuxième forme de la boucle FOR (La boucle FOR régressive):
FOR v= EXPRl DOWNTO EXPR2 DO
Begin
instruction; ………….. ; Instruction
END ;
Cette seconde forme ne diffère de la première que dans le fait que dans la première forme les valeurs de la variable de contrôle sont croissantes et que dans la seconde forme les valeurs de la variable de contrôle sont décroissantes. |
|
BOUMEDIE Invité
| Sujet: reponse de TD Mar 29 Avr - 11:51 | |
| PROGRAM EXTP ; VAR a, b ,c: real ; function puissance ( ee : real ; f : real ; g : real ); VAR S: real ; begin s := ee; repeat s : = s*ee ; i := i+1 ; until i = g ; puissance : = s ; begin read ( a, b ,u ) ; a**b : = e**( b*ln(a)) ; c ; = puissance (a ,b ) ; write (c) ; end. |
|
MEHAL AM Invité
| Sujet: CORRECTION DU TD03TP Mar 29 Avr - 12:49 | |
| PROGRAM TD3TP; var a,b,y:real; function puissance(pp:real;p:real;h:real); var som:real; begin som:=pp; repeat som:=som*pp; k=k+1; until k=h; puissance:=som; begin read(a,b,t); a**b=e**(b*ln(a)); y:=puissance(a,b); write(y); END. |
|