Informatique · Seconde · 6 min de lecture
Boucles : répéter des instructions sans les recopier
Boucle bornée for, en particulier for i in range(a, b) qui fait prendre à i les valeurs a, a + 1, …, b − 1 ; boucle non bornée while, répétée tant que sa condition est vraie ; dérouler une boucle à la main dans un tableau de suivi des variables (traçage) ; accumulateur (somme, compteur) ; choix entre les deux boucles.
Chapitre du programme : Sciences numériques et technologie
Bloc 1 sur 7 · Comprendre
Comprendre : une boucle répète un bloc
Un programme exécute ses instructions dans l'ordre, une par une. Quand il faut répéter un même calcul, on ne recopie pas les lignes : on écrit une boucle.
La boucle bornée for. On l'utilise quand on connaît à l'avance le nombre de tours. Voici un programme qui additionne les entiers de 1 à 5 :
s = 0
for i in range(1, 6):
s = s + i
print(s)Il affiche :
15Trois choses à lire dans ce programme :
range(1, 6)fait prendre à la variableiles valeurs 1, 2, 3, 4, 5 : la borne de fin, 6, est exclue.- La ligne
s = s + iest indentée (décalée de quatre espaces) : c'est le corps de la boucle, exécuté à chaque tour. En Python, c'est l'indentation, et rien d'autre, qui dit ce qui est répété. - La variable
sest un accumulateur : elle part de 0 avant la boucle, et chaque tour lui ajoute quelque chose.
L'instruction print(s) n'est pas indentée : elle est exécutée une seule fois, après la boucle.
Bloc 2 sur 7 · Approfondir
Approfondir : range, et la boucle while
Les trois formes de range.
range(n)donne 0, 1, …, n − 1 : exactement n valeurs pour un entier n ≥ 0 ; si n < 0, il est vide.range(a, b)donne a, a + 1, …, b − 1 lorsque a < b ; sinon, il est vide.range(a, b, pas)avance depasenpas, sans inclure b. Le pas doit être non nul ; si son signe ne permet pas de progresser vers b, le parcours est vide. Exemple de pas positif :
for i in range(2, 11, 3):
print(i)2
5
8La valeur suivante serait 11, qui n'est pas strictement inférieure à 11 : la boucle s'arrête.
La boucle non bornée while. On l'utilise quand on ne sait pas d'avance combien de tours il faudra : on répète tant qu'une condition est vraie. Combien de doublements faut-il pour qu'un nombre parti de 1 atteigne ou dépasse 100 ?
x = 1
n = 0
while x < 100:
x = x * 2
n = n + 1
print(n, x)7 128La condition x < 100 est testée avant chaque tour, y compris avant le premier. Après 6 tours, x vaut 64 : la condition est encore vraie, on fait un septième tour et x vaut 128. Le test suivant est faux, la boucle s'arrête.
Choisir sa boucle. Nombre de tours connu à l'avance : for. Arrêt décidé par une condition : while. Pour justifier l’arrêt d’une boucle while, on peut montrer que le corps fait évoluer une donnée vers une condition d’arrêt, ou prévoir une sortie explicite comme break. Une condition initialement vraie qui reste vraie, sans sortie, provoque une boucle infinie. Une condition fausse dès le départ ne fait exécuter aucun tour.
Bloc 3 sur 7 · Exemple
Exemple guidé : tracer une boucle while
Énoncé. Qu'affiche ce programme ?
x = 23
while x > 5:
x = x - 4
print(x)Méthode : le tableau de suivi. On note la valeur de chaque variable et le résultat du test, tour après tour.
| Étape | Test x > 5 | x après le tour |
|---|---|---|
| départ | — | 23 |
| tour 1 | 23 > 5 : vrai | 19 |
| tour 2 | 19 > 5 : vrai | 15 |
| tour 3 | 15 > 5 : vrai | 11 |
| tour 4 | 11 > 5 : vrai | 7 |
| tour 5 | 7 > 5 : vrai | 3 |
| fin | 3 > 5 : faux | — |
La boucle s'arrête quand le test devient faux, avec x = 3. Le programme affiche donc :
3Vérification. On retranche 4 cinq fois : 23 − 5 × 4 = 3. Un quatrième retrait laissait 7, encore supérieur à 5, d'où le cinquième.
Bloc 4 sur 7 · Visualiser
Voir : ce qui est répété, et ce qui ne l'est pas
Lire un programme avec boucle, c'est d'abord repérer trois zones :
| Zone | Où la trouver | Combien de fois elle s'exécute |
|---|---|---|
| avant la boucle | lignes non indentées, au-dessus | une fois |
| corps de la boucle | lignes indentées sous for ou while | une fois par tour |
| après la boucle | lignes revenues à gauche, en dessous | une fois, à la fin |
Dans les exercices de la plateforme, les programmes sont affichés dans un tableau numéroté, et chaque groupe de quatre points « ···· » remplace les quatre espaces d'un niveau d'indentation. La ligne « ····s = s + i » est donc la ligne Python s = s + i précédée de quatre espaces : elle appartient au corps de la boucle.
Continuez sur votre lancée
Vous avez découvert l’essentiel et un exemple. Retrouvez la suite du cours et les points à retenir, puis passez à l’entraînement guidé dans votre compte.
- Les formules et les repères à retenir
- Les erreurs fréquentes expliquées
- Un exercice avec des aides et sa correction
L’accès gratuit comprend les cours et exercices de votre niveau choisi.
Sources
- BO spécial n°1 du 22 janvier 2019 — programme de sciences numériques et technologie de seconde, « Notions transversales de programmation »
- BO spécial n°1 du 22 janvier 2019 — programme de mathématiques de seconde, « Algorithmique et programmation »
- Documentation officielle de Python 3 — The Python Tutorial, § 4.2 « for Statements », § 4.3 « The range() Function » (https://docs.python.org/3/tutorial/controlflow.html)
Vous pensez avoir trouvé une erreur dans cette leçon ? Signalez-la par e-mail.