L.P.M Chapitre N°3 Les structures de contrôle itératives Dégager le traitement itératif Problème Nombre d’itération ?? Inconnu à l’avance Connu à l’avance La structure de contrôle itérative complète La structure de contrôle à condition d’arrêt
La boucle Pour Pour i de Vi à Vf faire Traitement Fin Pour Nombre d’itération : Connu à l’avance For i:=Vi To Vf Do Begin Traitement ; End ; For i:=Vi DOWNTO Vf Do Begin Traitement ; End ; Type Du Compteur : Type Scalaire La valeur du compteur, valeur initiale et la valeur finale intouchable dans la boucle Nbre d’itérations (compteur Entier) = | vf – vi| +1 Nbre d’itérations (compteur caractère, booléen, TSE) = | ord(vf) – ord(vi)| +1
La boucle Répéter [init] Répéter Traitement Jusqu’ Condition(s) Nombre d’itération : Inconnu à l’avance Nombre d’itération Minimal : 1 La présence d’une instruction pour modifier l’état de condition est obligatoire La condition = Expression Booléenne init; Repeat Traitement ; Until Condition(s);
La boucle Répéter init; Repeat Traitement ; Until Condition(s); i:=0; Repeat i:=2*i+1 ; until i > 7 ; Nombre d’itérations ? Ahlem Assala Dhekra Fadi Hamdi Hassan Marwan Nader Naji Hanen Oumayma Oussama Samar Souheil Yasmine 3 f:=1 ;n:=4; Repeat f:=f*n; n:=n-1; Until n=1 ; Les Contenus Des Variables f = n = 24 1
i:= 1 ; // A Repeat // B Write(i); // C until i > 5 ; Où faut-il augmenter la variable i de 1 pour que cette boucle affiche Ahlem Assala Dhekra Fadi Hamdi Hassan Marwan Nader Naji Hanen Oumayma Oussama Samar Souheil Yasmine i:= i + 1 ; Rôle Du Programme i:= 0 ; Repeat i:=i+1 ; Ok:= t[i]=x ; until (ok) or (i=n); X = 5 T |2|3|1|2|15] X = 5 T |2|3|5|2|15] Ok = Faux Ok = Vrai Vérifier d’existence de X dans T
Activité 1 Ecrire un programme qui permet d’afficher le PGCD de deux entiers donnés a et b (avec a*b >0 et a > 0) Principe : Si a <> b alors PGCD(a,b) = Si b > a PGCD(a, b-a) Sinon PGCD (a-b,b) Répéter le même traitement jusqu’à a = b Sinon PCGD = a ( ou b ) Exemple 1 : A = 12, B= 4PGCD (12, 4 ) = PGCD(8,4) = PGCD (4,4) = 4 Exemple 2 : A = 13, B= 13A = B alors PGCD = 13 Le Traitement Itératif Si a > b alors a a-b Sinon b b-a Le nombre d’itérations 2 Le Traitement Itératif Si a > b alors a a-b Sinon b b-a Le nombre d’itérations 0
Constatations Le Traitement Itératif Si a > b alors a a-b Sinon b b-a Le nombre d’itérations Inconnu à l’avance Le nombre d’itérations Minimal 0
[Initialisation] Tant que Condition(s) Faire Instruction 1 Instruction 2 Instruction... Instruction n Fin Tant Que Traitement itératif Analyse & Algorithme
Initialisation; While Condition(s) DO Instruction 1; Instruction 2; Instruction...; Instruction n; End ; En Pascal BEGIN
Exécution de la boucle Tant que Tant que Si la condition est vraie Fin Tant que Ré-tester la condition Exécution du traitement Tester La condition Si la condition est fausse Sortie de la boucle Sortie de la boucle Faire
N.B : La délimitation de "Traitement" est faite naturellement par les 2 termes de la structure « Tant que » et « Fin tant que » La condition est évaluée avant de l’entrée dans la boucle. Condition d'arrêt est une expression booléenne Condition d’entrée Il doit y avoir une action dans le qui modifie la valeur de la condition. On exécute le corps de la boucle tant que la condition est vari. Si l'expression booléenne (condition ) est fausse dès le début, le traitement n'est jamais exécutée (nombre d’itération minimal =0)
Pour mieux Assimiler Tournage à la main d’une boucle Tant que Ch := 'BAC MATH‘; CH1:='‘; While (pos(' ',ch) <> 0) Do Begin p:= pos(' ',ch); ch1:= copy(ch,1,p-1)+ ' ' + ch1; delete(ch,1,p); End; ch1:= ch + ' ' + ch1; Writeln(ch1); chch1p Initialisation Condition = Varie BAC MATH Itération 1 4 MathBAC FAUSSE CH1Math BAC Rôle : Inverser une phrase
Analyse : Activité 1
Applications On se propose de déterminer le PGCD de deux entiers naturels m et n. Principe de Division : Si n MOD M = 0 alors pgcd = b Sinon on remplace a par b et b par a mod b On se propose de déterminer le PPCM de deux entiers naturels m et n. Ecrire un programme Pascal qui permet de calculer le PPCM Ecrire un programme Pascal qui permet d’afficher les nombres premiers < = N (n entier donné ) Ecrire un programme Pascal permettant de décomposer un entier N donné (2 ≤ N ≤ 100) en produit de facteurs premiers et d'afficher N et le produit de ses facteurs trouvés. Exemple : Si n = 60 alors on affiche 60 = 2*2*3*5.