Un cap pour ce chapitre
Ce que vous saurez faire
- Déterminer les valeurs parcourues par une boucle for
- Construire et suivre un accumulateur
- Raisonner sur des boucles imbriquées
Les bases utiles pour commencer
Le corps est exécuté pour chaque valeur
Dans for i in range(4), i prend successivement les valeurs 0, 1, 2 et 3. Le bloc indenté est exécuté une fois pour chacune. Le nom i n’a aucun pouvoir particulier : nombre ou position fonctionneraient aussi. Quand on parcourt directement un tableau avec for valeur in mesures, valeur reçoit les éléments du tableau, pas leurs indices. Avant de chercher le résultat final, écrivez la liste des valeurs effectivement parcourues. Cette étape évite de confondre le nombre de passages, la dernière valeur et une borne qui n’est jamais atteinte.
Une boucle bornée peut ne rien afficher tout en effectuant un calcul utile. L’instruction print ne déclenche pas la répétition : elle constitue une action parmi d’autres dans le corps. Pour lire un programme, séparez les valeurs parcourues, les valeurs mémorisées et ce qui est effectivement affiché.
Les bornes de range
range(debut, fin, pas) inclut debut mais exclut fin. Le pas vaut 1 quand il est omis. Ainsi range(2, 9, 3) fournit 2, 5 et 8 ; range(5, 0, -2) fournit 5, 3 et 1. Un pas négatif sert à descendre, tandis qu’un pas nul est interdit. Si les bornes ne permettent aucun départ dans le sens choisi, la séquence est vide et le corps n’est jamais exécuté. Cette possibilité doit être prise en compte lorsqu’une variable n’est créée qu’à l’intérieur du corps.
Le nombre d’éléments ne correspond pas toujours à la différence des bornes. Avec range(2, 10, 3), on obtient trois valeurs : deux, cinq et huit. Le corps ne visite ni dix ni onze. Un pas cohérent peut aussi produire un parcours vide, par exemple range(5, 2).
Accumuler sans recommencer à zéro
Un accumulateur conserve un résultat partiel d’une itération à l’autre. Pour additionner les entiers de 1 à n, on initialise total à zéro avant la boucle, puis on ajoute chaque entier. Le zéro est adapté à l’addition parce qu’il ne modifie pas la somme. Un produit commencerait généralement à un. Si total = 0 est placé dans le corps, chaque passage efface les additions précédentes : le programme ne conserve que la dernière contribution. Le tableau de trace doit donc montrer le résultat avant et après chaque mise à jour.
total = 0
for nombre in range(1, 5):
total = total + nombre
print(total)Pour compter seulement certains éléments, on ajoute un test dans la boucle : le compteur augmente uniquement quand le critère est satisfait. L’accumulateur et le compteur peuvent coexister, mais ils n’ont pas la même signification : l’un additionne les valeurs, l’autre compte les éléments retenus.
Répéter une répétition
Une boucle peut contenir une autre boucle. Pour chaque valeur de la boucle extérieure, la boucle intérieure recommence entièrement. Si l’extérieur parcourt trois lignes et l’intérieur quatre colonnes, le bloc le plus profond est exécuté douze fois. La position de l’initialisation devient essentielle : un total général s’initialise avant les deux boucles, tandis qu’un total par ligne se réinitialise au début de chaque ligne. Dessiner un petit tableau de coordonnées aide à visualiser cette différence avant de passer à des matrices ou à une image.
Le produit des nombres d’itérations ne convient que lorsque ces nombres sont fixes. Si la boucle intérieure parcourt range(ligne), elle ne fait aucun passage pour la ligne zéro, un pour la ligne un, puis deux pour la suivante. Il faut alors additionner les nombres de passages.
Décrire ce que représente un résultat partiel
Pour additionner les entiers de un à quatre, on obtient successivement les totaux un, trois, six et dix. Avant le passage associé à nombre, le total représente la somme des entiers déjà parcourus. Cette phrase est vraie avant le premier passage, car la somme d’aucun élément vaut zéro. Ajouter la valeur courante la maintient vraie pour le passage suivant. À la sortie, tous les éléments ont été parcourus : le total est donc la somme attendue.
Cette propriété conservée est un invariant simple. Elle aide surtout à choisir l’initialisation et à expliquer la mise à jour. Pour un compteur de nombres positifs, la phrase devient « nombre de valeurs strictement positives parmi celles déjà visitées ».
Construire une grille et choisir le niveau du cumul
Imaginons trois jours comportant chacun deux séances. La boucle extérieure parcourt les jours et l’intérieur les séances. L’ordre est jour zéro séance zéro, jour zéro séance un, puis le même parcours pour les jours un et deux. Un compteur placé avant les deux boucles mesure six séances au total. Un compteur remis à zéro au début de chaque jour termine chaque journée à deux.
Le même programme peut calculer les deux résultats avec deux noms différents. Avant de coder, dessinez les six cases et indiquez ce qui doit être conservé quand on change de jour. Cette représentation révèle immédiatement pourquoi une remise à zéro au mauvais niveau transforme un total général en total de la dernière journée.
À vous de faire varier les choses
Construire une somme et repérer la remise à zéro
Faites varier le nombre de termes et le placement de l’initialisation. Comparez contribution et cumul après chaque passage.
Lire le résultat de l’expérience initiale
Résultat final : 20
Les termes pairs s’ajoutent aux résultats déjà calculés.
| i | Avant | Ajout | Après |
|---|---|---|---|
| 1 | 0 | 2 | 2 |
| 2 | 2 | 4 | 6 |
| 3 | 6 | 6 | 12 |
| 4 | 12 | 8 | 20 |
La boucle répète exactement le bloc indenté. L’initialisation fait partie du raisonnement, au même titre que l’addition.
De la compréhension à l’autonomie
À vous de résoudre
Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.
Compter les passages
Quelles valeurs produit range(3, 12, 4) ? Combien de fois un corps de boucle utilisant cette séquence est-il exécuté ?
Indice 1
Partez de 3 et ajoutez 4 tant que la valeur reste strictement inférieure à 12.
Indice 2
La borne 12 n’est jamais incluse.
Comprendre la correction
Les valeurs sont 3, 7 et 11. Le corps s’exécute donc trois fois. La valeur suivante serait 15 et dépasserait la borne. Compter 12 - 3 passages ignorerait le pas ; inclure 12 ignorerait à la fois le pas et le caractère exclusif de la borne.
Un cumul à reconstruire
Pour total = 0 suivi de for i in range(1, 5): total = total + 2 * i, donnez total après chaque passage.
Indice 1
Calculez d’abord les contributions 2 × i.
Indice 2
Ne remplacez pas le total : ajoutez à sa valeur précédente.
Comprendre la correction
Les valeurs de i sont 1, 2, 3 et 4 ; les contributions sont 2, 4, 6 et 8. Le total devient successivement 2, 6, 12 puis 20. La réponse doit distinguer contribution et cumul : à la troisième itération, on ajoute 6 mais le total obtenu vaut 12.
La somme qui oublie
Une boucle parcourt 1, 2, 3 et 4. Son corps contient total = 0 puis total = total + i. Pourquoi le résultat final vaut-il 4 ? Corrigez.
Indice 1
La remise à zéro appartient ici à la répétition.
Indice 2
Déplacez l’initialisation avant le for.
Comprendre la correction
Chaque passage initialise total à zéro puis lui ajoute seulement i. Les résultats successifs sont donc 1, 2, 3 et 4. En plaçant total = 0 avant la boucle, les contributions s’ajoutent durablement et le résultat final devient 10. L’indentation détermine ici directement le sens du calcul.
Des coordonnées sans doublon
Une boucle parcourt ligne dans range(2), puis colonne dans range(3), et affiche le couple. Listez les couples dans l’ordre.
Indice 1
La boucle intérieure finit avant que la ligne change.
Indice 2
Il y a deux lignes, chacune contenant trois colonnes.
Comprendre la correction
L’ordre est (0,0), (0,1), (0,2), (1,0), (1,1), (1,2). Six couples sont affichés. Le changement de ligne fait recommencer le parcours des colonnes à zéro. Cette organisation correspond à une lecture ligne par ligne et prépare les parcours de tableaux à deux dimensions.
Additionner et compter séparément
Une boucle parcourt les mesures [-2, 5, 0, 7, -1, 3]. Elle doit calculer la somme des valeurs strictement positives et leur nombre. Décrivez les initialisations, la condition et les mises à jour. Donnez la moyenne des seules valeurs retenues.
Indice 1
Le total et le nombre commencent tous deux à zéro.
Indice 2
Zéro ne satisfait pas un test strictement positif.
Comprendre la correction
On initialise total = 0 et effectif = 0. Pour chaque mesure, si elle est supérieure à zéro, on l’ajoute au total et on augmente l’effectif de un. Les valeurs retenues sont 5, 7 et 3 : total 15, effectif 3, moyenne 5. Sans valeur retenue, il faudrait éviter la division par zéro.
Une descente et une somme
On initialise total = 0, puis on ajoute i pour chaque i de range(10, 1, -3). Listez les valeurs, les totaux successifs et le résultat final. Que changerait une borne de fin égale à zéro ?
Indice 1
La borne finale est exclue même quand on descend.
Indice 2
Après quatre, la valeur suivante est un.
Comprendre la correction
Avec la borne un, les valeurs sont 10, 7 et 4 ; les totaux sont 10, 17 et 21. La valeur un est exclue. Avec la borne zéro, un est inclus et le résultat final devient 22. Un parcours descendant ne renverse donc pas la convention d’exclusion de la borne.
Compter les paires sans les répéter
On veut afficher chaque paire d’indices distincts de zéro à quatre une seule fois, avec le plus petit d’abord. On parcourt i dans range(5) puis j dans range(i + 1, 5). Comptez les passages intérieurs pour chaque valeur de i, puis le total. Expliquez pourquoi aucune paire inverse n’apparaît.
Indice 1
Pour zéro, les partenaires vont de un à quatre.
Indice 2
La dernière boucle intérieure est vide.
Comprendre la correction
Les nombres de passages sont 4, 3, 2, 1 et 0, soit dix au total. Chaque partenaire vérifie j > i, ce qui exclut les couples égaux et les couples inversés. Une multiplication de cinq par cinq compterait des paires interdites. L’ordre imposé permet de produire chaque paire une seule fois.
Les erreurs qui méritent un détour
- Inclure la borne de fin
- Avec
range, la borne de fin est exclue. Écrivez les premières valeurs pour vérifier le sens du parcours. - Initialiser dans la boucle par habitude
- Demandez-vous ce qui doit être conservé entre deux passages et placez l’initialisation en conséquence.
La fiche à garder
L’essentiel à retenir
forparcourt des valeurs, pas une intention de répétition.rangeexclut sa borne de fin.- Un accumulateur conserve un résultat partiel entre les itérations.
Cette notion au bac
Retrouvez ces idées dans un sujet complet, avec des indices, une correction expliquée et des ateliers.
Le prochain pas
Retrouver le catalogue de Première
Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.
