Aller au contenu principal

Ch. 01 · Leçon 3

Structures itératives complètes : Pour…Faire

180 minanalyse · python
Affichage du code

Ce que vous saurez faire

  • Reconnaître le rôle du compteur dans une boucle complète
  • Écrire une boucle Pour en Analyse et en Python 3
  • Décomposer un traitement répétitif en compteur, accumulateur et condition d'arrêt
  • Concevoir une boucle imbriquée pour traiter des structures à deux dimensions

Plan de cours

Faire la même chose 100 fois — sans réécrire 100 lignes

La boucle est l'invention qui transforme un calcul long et répétitif en une instruction concise. Cette leçon vous donne le réflexe : dès que vous voyez "répéter pour chaque…", c'est une boucle Pour.

Concepts clés

  1. Itération complète — le nombre de répétitions est connu à l'avance.
  2. Compteur — variable qui prend successivement les valeurs de l'intervalle.
  3. Accumulateur — variable qui stocke le résultat partiel à chaque tour.
  4. Boucle imbriquée — une boucle à l'intérieur d'une autre, pour les structures 2D.

Avant de commencer — qu'est-ce que vous savez déjà ?

  • Q1. Combien d'itérations effectue Pour i de 1 à 10 Faire ?
  • Q2. Quelle est la valeur de S après S ← 0 puis S ← S + 1 répété 5 fois ?
  • Q3. En Python, que produit range(1, 6) ?

Q3 est l'angle mort des élèves de 4ème : range(1, 6) donne [1, 2, 3, 4, 5]la borne supérieure est exclue. Retenez-le maintenant, vous économiserez des heures de débogage.


1. Le contenu du cours

1.1 Analogie : la file de courriers

Imaginez un secrétaire qui doit tamponner 50 enveloppes. Au lieu d'écrire 50 instructions identiques, il automatise :

Pour chaque enveloppe de la pile, tamponner et passer à la suivante.

Une boucle Pour, c'est exactement ce mécanisme : un compteur (numéro de l'enveloppe) qui avance pas à pas, et un corps (l'action de tamponner) qui s'exécute à chaque pas.

1.2 La structure Pour…Faire

Forme algorithmique

Pour compteur de valeur_debut à valeur_fin [Pas n] Faire
    instructions
FinPour
  • compteur : variable de type entier qui prend successivement chaque valeur.
  • valeur_debut, valeur_fin : bornes incluses.
  • Pas n (optionnel) : incrément. Par défaut, le pas est de 1.

Forme Python

for compteur in range(valeur_debut, valeur_fin + 1):
    instructions

1.3 Premier exemple — Afficher les 10 premiers entiers

Pour i de 1 à 10 Faire
    Écrire(i)
FinPour

Trace mentale. i vaut 1, on affiche 1. i devient 2, on affiche 2. … i devient 10, on affiche 10. À 11, on sort.

1.4 Le motif « accumulateur »

L'usage le plus fréquent : calculer une somme, un produit, un compte, un maximum… en parcourant une plage.

Recette en 3 étapes :

  1. Initialiser l'accumulateur avant la boucle.
  2. Dans la boucle, mettre à jour l'accumulateur à partir du compteur.
  3. Utiliser l'accumulateur après la boucle.

Exemple — Somme des 100 premiers entiers

0) Début somme_100
1) S ← 0                  { initialisation de l'accumulateur }
2) Pour i de 1 à 100 Faire
       S ← S + i           { mise à jour }
   FinPour
3) Écrire("Somme = ", S)   { utilisation après la boucle }
4) Fin somme_100

Valeurs initiales selon l'opération :

OpérationValeur initialeMise à jour
SommeS ← 0S ← S + i
ProduitP ← 1P ← P * i
CompteC ← 0C ← C + 1 (sous condition)
MaximumMax ← -∞ (ou première valeur)Si i > Max Alors Max ← i
MinimumMin ← +∞ (ou première valeur)Si i < Min Alors Min ← i

1.5 Boucle avec pas négatif

Pour parcourir de la fin vers le début :

Pour i de 10 à 1 Pas -1 Faire
    Écrire(i)
FinPour

1.6 Boucles imbriquées

Une boucle peut en contenir une autre. Le compteur extérieur change lentement, l'intérieur rapidement.

Exemple — Table de multiplication 5×5

for i in range(1, 6):
    for j in range(1, 6):
        print(i * j, end="\t")   # \t = tabulation
    print()                       # retour à la ligne en fin de ligne

Sortie :

1	2	3	4	5
2	4	6	8	10
3	6	9	12	15
4	8	12	16	20
5	10	15	20	25

Pour chaque valeur de i (extérieur), j parcourt entièrement [1..5] (intérieur). Total : 25 multiplications.

1.7 Trace d'exécution — Factorielle de 5

Trace d'exécution
0 / 7
InstructioniF
01···??
02···??
03···??
04···??
05···??
06···??
07···??

2. Exercices pratiques

Niveau Débutant — Type bac courant

Exercice 1facile
Somme des pairs

Écrire un programme qui calcule et affiche la somme des entiers pairs de 1 à 20 inclus.

Voir le corrigé

Version 1 — boucle avec test

S = 0
for i in range(1, 21):
    if i % 2 == 0:
        S = S + i
print("Somme des pairs =", S)

Version 2 — boucle avec pas (plus efficace)

S = 0
for i in range(2, 21, 2):   # 2, 4, 6, ..., 20
    S = S + i
print("Somme des pairs =", S)

Résultat : 2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 = 110.

La version 2 fait 10 itérations au lieu de 20 ; à grande échelle, c'est deux fois plus rapide.

Niveau Intermédiaire — Type bac difficile

Exercice 2moyen
Compter les multiples de 7

Lire deux entiers a et b (avec a ≤ b) au clavier, puis afficher le nombre de multiples de 7 dans l'intervalle [a, b] ainsi que leur somme.

Voir le corrigé
a = int(input("a = "))
b = int(input("b = "))

nb = 0      # compteur
somme = 0   # accumulateur

for i in range(a, b + 1):
    if i % 7 == 0:
        nb = nb + 1
        somme = somme + i

print("Nombre de multiples de 7 :", nb)
print("Somme :", somme)

Test mental avec a = 1, b = 30 :

Multiples de 7 dans [1, 30] : 7, 14, 21, 28 → 4 multiples, somme = 70.

Niveau Avancé — Hors bac (bonus)

Exercice 3difficile
Triangle d'étoiles

Écrire un programme qui lit un entier n (avec n ≥ 1) et affiche un triangle d'étoiles centré de hauteur n. Par exemple, pour n = 4 :

   *
  ***
 *****
*******

Chaque ligne k (de 1 à n) contient n - k espaces puis 2*k - 1 étoiles.

Voir le corrigé
n = int(input("n = "))

for k in range(1, n + 1):
    espaces = " " * (n - k)
    etoiles = "*" * (2 * k - 1)
    print(espaces + etoiles)

Trace pour n = 4 :

kn - k espaces2k - 1 étoilesLigne affichée
131" *"
223" ***"
315" *****"
407"*******"

Astuce. En Python, "x" * 5 répète la chaîne 5 fois → "xxxxx". C'est plus court qu'une boucle imbriquée pour générer les caractères.

Variante intéressante. Affichez un sapin de Noël : un triangle d'étoiles + un tronc de 1 ou 2 caractères. La logique reste la même, ajoutez juste 2-3 lignes après la boucle.


⚠️ Erreurs fréquentes au bac

Avant le quiz, mémorisez ces pièges classiques qui font perdre des points :

  • Erreur 1. range(1, N) au lieu de range(1, N+1) : on oublie le dernier élément. Python exclut la borne supérieure.
  • Erreur 2. Oublier d'initialiser l'accumulateur avant la boucle (somme ← 0). Sans cette ligne, erreur à la première itération.
  • Erreur 3. Modifier la variable de boucle dans le corps (Pour i ... i ← i + 5). Comportement imprévisible.
  • Erreur 4. Confondre Pour i De 1 À N Faire (1 à N inclus) et for i in range(N) (0 à N-1).

3. Quiz de vérification

Boucle Pour et accumulateurs (5 questions)

1

Combien d'itérations effectue Pour i de 5 à 10 Faire ?

2

Quelle est la valeur de range(1, 11) en Python ?

3

Quelle valeur initialiser pour calculer un PRODUIT cumulé ?

4

Que produit for i in range(10, 0, -1) ?

5

Dans une boucle imbriquée for i: for j:, combien de fois s'exécute le corps intérieur si i parcourt [1..3] et j parcourt [1..4] ?


En résumé

Avant la leçon 1.4 (Fonctions prédéfinies), assurez-vous de pouvoir :

  • ✅ Compter exactement le nombre d'itérations d'une boucle Pour,
  • ✅ Choisir la bonne valeur initiale d'un accumulateur (0 pour somme, 1 pour produit, etc.),
  • ✅ Traduire de l'algorithmique au Python sans oublier le +1 sur la borne supérieure,
  • ✅ Lire une trace d'exécution sans erreur de pas.

Sinon, refaites l'exercice 2 avec différentes valeurs de a et b, et vérifiez à la main.

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