Chapitre 4 Les structures de contrôle itératives Leçon 1 " La structure de contrôle itératives complètes " Activité : Ecrire un programme qui calcule et affiche la somme de 5 Analyse Grille d'analyse Nom : somme Résultat = Écrire (la somme est =, " S) S= [S 0] Pour i de 1 à 5 faire Lire (N) SS+N Fin pour Fin Somme T.D.O Objets Nature / type N Var / entier S Var / entier i Var / entier entiers Algorithme 0) Début somme 1) S 0 Pour i de 1 à 5 faire Lire (N) SS+N Fin pour 2) écrire (la somme est =, " S) 3) Fin Somme Rôle Saisi une valeur Pour contenir la somme Compteur 1) Définition : Une structure itérative est dite complète s’il y a une répétition d’une suite d’instructions de nombre fini et connu à l’avance 2) Vocabulaire et syntaxe: Notation Algorithmique [initialisation] Pour compteur de Vi à Vf faire Instruction 1 Instruction 2 … … Instruction n Fin Pour Notation Pascal [initialisation] For compteur := Vi Begin Instruction Instruction … ; Instruction End ; to Vf do 1; 2; n ; Remarque: Le compteur doit être de type scalaire (entier, caractère,....) Exemple : Si on a un tableau a affiché contenant 5 éléments de type entier Pour i de 1 à 5 Faire Écrire (T[i]) Fin Pour Pour i de ‘a’ à ‘e’ Faire Écrire (T[i]) Fin Pour Si on a un tableau a affiché contenant 5 éléments de type entier dans l'ordre inverse La valeur initiale du compteur vi est supérieur à la valeur finale vf: le compteur doit se décrémenter au lieu de s’incrémenter càd il diminue par pas de un. Pour i de 5 à 1 pas (-1) Faire Ecrire (t[i]) Fin Pour For i := 5 Down to 1 do Writeln (t[i]); A quoi égal le nombre d’itération ? Le nombre d’itérations est égale |Vf – Vi|+1 Pour le compteur de type caractère le nombre d’itérations =|ORD (Vf) – ORD (Vi)| +1 En Pascal, le module à répéter sera délimité par Begin et End; 3) Applications : Exercice1 Écrire un algorithme intitulé NEGA_POS, qui transfère les éléments positifs et les éléments négatifs d'un tableau T dans deux tableaux TP et TN. Analyse Algorithme Grille d'analyse 0) début nega_pos Nom : nega_pos 1) lire (N) Résultat = nega_pos 2) pour i de 1 à N faire J1 ; K 1 Lire(T[i]) pour i de 1 à N faire fin pour Si T[i]>=0 Alors 3) j←1 TP[j]←T[i] K←1 j←j+1 pour i de 1 à N faire Sinon Si T[i]>=0 TN[K]←T[i] Alors K←K+1 TP[j]←T[i] Fin si j←j+1 fin pour Sinon pour i de 1 à N faire TN[K]←T[i] T[i] = donnée ("Donner le contenu du K←K+1 case", i) Fin si fin pour fin pour n=donnée ("Donner la taille du tableau") 4) fin nega_pos Fin nega_pos T.D.N.T Type u de 30 entiers Tab=table T.D.O Objets J, k T i Nature / type Var / entier Tab Var / entier Rôle Compteurs des tableaux le tableau a saisi Compteur Exercice2 Écrire un algorithme et sa traduction en pascal nommé « maximum » qui permet de remplir un tableau T de N entier, qui détermine le maximum et sa position dans le tableau. Analyse Algorithme Grille d'analyse 0) début Maximum Nom : Maximum 1) écrire ("Donner la taille du tableau") Résultat = Ecrire("le maximum dans le tableau est:", lire (N) max , "sa position est:" , Pos) 2) pour i de 1 à N faire Max,pos=[Max←T[1],Pos←1] Écrire ("Donner le contenu du case", i) pour i de 2 à N faire Lire (T[i]) Si T[i]>Max Alors fin pour Max←T[i] 3) Max←T[1] Pos← i Pos←1 Finsi pour i de 2 à N faire fin pour Si T[i]>Max Alors pour i de 1 à N faire Max←T[i] T[i] = donnée ("Donner le contenu du case", i) Pos← i fin pour Finsi n=donnée ("Donner la taille du tableau") fin pour Fin Maximum 4) Ecrire("le maximum dans le tableau est:", max , "sa position est:" , Pos) 5) fin Maximum