Aller au contenu principal

Module 02 · Leçon 3

Itérative complète : Pour…Faire

180 minanalyse · pascal
Affichage du code

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

Affiche : 1 2 3 4 5 6 7 8 9 10

Mécanique

  1. i reçoit la valeur initiale (1).
  2. Test : i <= 10 ?
  3. Si oui, exécuter le corps, puis i ← i + 1, retourner à 2.
  4. Sinon, sortir de la boucle.
Trace d'exécution
0 / 3
InstructioniSortie
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

  1. Ne pas modifier le compteur dans le corps. i := i + 5; dans une boucle FOR i := 1 TO 10 produit un comportement indéfini.
  2. La valeur finale est calculée une seule fois au début. Modifier N dans la boucle n'a aucun effet sur la condition de sortie.
  3. Le compteur doit être de type ordinal (entier, caractère…).
  4. 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

Exercice 1facile
Somme 1 à N

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.
Exercice 2moyen
Table de multiplication (type bac courant)

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.
Exercice 3difficile
Pyramide d'étoiles (hors bac, bonus)

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 i dans le corps de la boucle.
  • Confondre TO et DOWNTO.
  • Oublier BEGIN/END autour 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)

1

Combien de fois la boucle `Pour i de 5 à 5 Faire` s'exécute-t-elle ?

2

Que vaut `i` APRÈS l'exécution complète de `FOR i := 1 TO 5 DO ...` ?

3

Quand préférer Pour plutôt qu'une autre boucle ?

4

En Pascal, pour décompter de 10 à 1, on écrit :

5

Pour initialiser un accumulateur `s`, on doit le faire :

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.