Module 02 · Leçon 3
Itérative complète : Pour…Faire
Ce que vous saurez faire
- Écrire une boucle Pour avec un compteur
- Parcourir un tableau avec Pour
- Reconnaître quand utiliser Pour plutôt qu'une autre itérative
Avant de commencer
Pour calculer la somme 1 + 2 + … + 100, on n'écrit pas 100 instructions
à la main. Quelle structure répète une instruction un nombre fixe
de fois ?
1. La structure Pour…Faire
Pour i de 1 à 10 Faire
Ecrire(i, " ")
FinPour
Pour i de 1 à 10 Faire
Ecrire(i, " ")
FinPour
FOR i := 1 TO 10 DO
Write(i, ' ');
Affiche : 1 2 3 4 5 6 7 8 9 10
Mécanique
ireçoit la valeur initiale (1).- Test :
i <= 10? - Si oui, exécuter le corps, puis
i ← i + 1, retourner à 2. - Sinon, sortir de la boucle.
| N° | Instruction | i | Sortie |
|---|---|---|---|
| 01 | ··· | ? | ? |
| 02 | ··· | ? | ? |
| 03 | ··· | ? | ? |
2. Sens décroissant : Pour … de … à … (Pas -1)
Pour i de 10 à 1 (Pas -1) Faire
Ecrire(i)
FinPour
En Pascal, on utilise DOWNTO :
FOR i := 10 DOWNTO 1 DO
Write(i, ' ');
Affiche 10 9 8 7 6 5 4 3 2 1.
3. Bloc avec plusieurs instructions
Pour exécuter plusieurs instructions dans la boucle, on les groupe :
FOR i := 1 TO N DO
BEGIN
Read(T[i]);
somme := somme + T[i];
END;
4. Règles importantes
- Ne pas modifier le compteur dans le corps.
i := i + 5;dans une boucleFOR i := 1 TO 10produit un comportement indéfini. - La valeur finale est calculée une seule fois au début. Modifier
Ndans la boucle n'a aucun effet sur la condition de sortie. - Le compteur doit être de type ordinal (entier, caractère…).
- Si la valeur initiale dépasse la finale (et qu'on n'est pas en
DOWNTO), la boucle ne s'exécute pas du tout.
5. Exercices
Lire N, afficher la somme 1 + 2 + … + N.
Voir le corrigé
PROGRAM Somme;
VAR
n, i, s : integer;
BEGIN
Readln(n);
s := 0;
FOR i := 1 TO n DO
s := s + i;
Writeln('Somme = ', s);
END.
Lire un entier n entre 1 et 9, afficher sa table de multiplication
de 1 à 10. Format : n × i = résultat.
Voir le corrigé
PROGRAM Table;
VAR
n, i : integer;
BEGIN
Write('Table de : ');
Readln(n);
FOR i := 1 TO 10 DO
Writeln(n, ' x ', i, ' = ', n * i);
END.
Lire un entier n, afficher une pyramide d'étoiles. Exemple pour n=4 :
*
***
*****
*******
Voir le corrigé
PROGRAM Pyramide;
VAR
n, i, j : integer;
BEGIN
Readln(n);
FOR i := 1 TO n DO
BEGIN
{ Espaces }
FOR j := 1 TO n - i DO
Write(' ');
{ Étoiles }
FOR j := 1 TO 2 * i - 1 DO
Write('*');
Writeln;
END;
END.
6. Erreurs fréquentes au bac
- Modifier
idans le corps de la boucle. - Confondre
TOetDOWNTO. - Oublier
BEGIN/ENDautour d'un bloc de plusieurs instructions. - Initialiser un accumulateur à l'intérieur de la boucle (il faut le faire avant !).
7. Quiz
Quiz (5 questions)
Combien de fois la boucle `Pour i de 5 à 5 Faire` s'exécute-t-elle ?
Que vaut `i` APRÈS l'exécution complète de `FOR i := 1 TO 5 DO ...` ?
Quand préférer Pour plutôt qu'une autre boucle ?
En Pascal, pour décompter de 10 à 1, on écrit :
Pour initialiser un accumulateur `s`, on doit le faire :