Algorithmique et programmation (Python)
Variables, boucles, conditions en Python
Explique à quelqu'un comment préparer des pâtes. Tu diras sans doute : « fais bouillir de l'eau, jette les pâtes, attends dix minutes, égoutte ».
Parfait pour un humain. Catastrophique pour une machine.
Combien d'eau ? Dans quoi ? Bouillir, c'est quoi — quelle température, et comment le sait-on ? « Jette les pâtes » : toutes, d'un coup, depuis quelle hauteur ? Et « attends dix minutes » : à partir de quand exactement ?
Chacune de ces questions, ton interlocuteur y répond tout seul, sans même remarquer qu'elle se posait. Une machine, elle, ne comble aucun sous-entendu. Elle fait exactement ce qui est écrit — ni plus, ni moins, ni autrement.
C'est toute la difficulté d'un algorithme : une suite d'instructions si précises qu'aucune interprétation n'est possible. Et c'est aussi sa force, car une instruction non ambiguë peut être répétée un million de fois sans fatigue et sans erreur.
Tu as déjà programmé au collège. Ce que la seconde ajoute, c'est l'écriture en Python, où la moindre imprécision se paie comptant : une indentation de travers, et le programme change de sens ou refuse de démarrer.
Tu verras d'ailleurs très vite un cas où la machine fait scrupuleusement ce que tu as écrit, alors que tu voulais dire autre chose — c'est l'erreur la plus fréquente de tout ce chapitre.
📖 Vocabulaire clé
Exemple : vaut , vaut (et non ), vaut .
📋 Écrire un algorithme en Python
- 1 Déclarer les variables et leurs valeurs initiales. Exemple : (accumulateur initialisé à zéro pour une somme).
- 2 Utiliser pour répéter fois. Exemple : fait varier de à inclus.
- 3 Utiliser pour répéter tant qu'une condition est vraie. Exemple : remplace par le quotient entier de par (division entière ) jusqu'à ce que atteigne : pour , on obtient .
- 4 Tester avec des exemples pour vérifier la correction de l'algorithme. Exemple : Pour un programme de somme , vérifier que le résultat est bien .
✅ Exemple résolu
- Initialiser le résultat : .
- Boucle : puis .
- Afficher le résultat à la fin, hors de la boucle (sans indentation) : .
- Exécution pour : → , → , → , → , → .
📐 Formules clés
🎨 Illustrations
Traduction en organigramme normalisé de l'exemple du cours ( puis ), déroulé pour .
- 1 En Python, l'incrémentation est gérée automatiquement par ; l'organigramme la rend explicite pour montrer l'équivalence avec une boucle .
- 2 Pour , vaut et fournit (le est exclu, comme rappelé dans le piège du cours).
- 3 Trace de l'exécution : , , , , , puis fait sortir de la boucle ( devient faux) : le programme affiche .
En Python, ne donne pas . Il donne .
Le compte y est — cinq valeurs dans les deux cas — mais ce ne sont pas les mêmes. C'est ce décalage d'un cran qui fausse silencieusement un programme sur deux.
- 1 produit : il commence à et s'arrête avant . La borne supérieure est toujours exclue.
- 2 Pour obtenir , il faut écrire : on donne le début, et une fin qui dépasse d'un cran la dernière valeur voulue.
- 3 Le nombre de tours, lui, est le même dans les deux cas. Une boucle tourne bien fois — c'est la valeur de la variable qui change, pas le compte.
Pose-toi alors deux questions séparées : « combien de tours ? » et « quelles valeurs prend la variable ? ». Ce sont deux choses différentes, et répond honnêtement aux deux — à condition de les avoir distinguées.
Voici un programme de trois lignes : , puis , et dans la boucle .
Beaucoup répondent , en additionnant . Le tableau ci-dessous déroule chaque tour et donne . Il ne discute pas : il exécute.
- 1 La variable de boucle prend les valeurs — celles de — et non . Le premier tour ajoute donc , qui ne change rien.
- 2 La somme vaut . La réponse correspondrait à , c'est-à-dire à : un programme différent.
- 3 Deux colonnes valent mieux qu'une. Séparer la valeur avant et après l'affectation évite de se perdre : n'est pas une égalité, c'est un remplacement.
C'est lent, et c'est exactement pour cela que ça marche : l'erreur vient presque toujours d'un tour qu'on a sauté en croyant le connaître.
Devant un suivi d'un , beaucoup lisent les deux blocs et additionnent leurs effets.
Or un test est un aiguillage : selon la réponse, une seule voie est empruntée. L'autre reste éteinte, comme si elle n'existait pas.
- 1 Pour une note de , la condition est vraie : la machine exécute le premier bloc, puis saute le second sans le lire.
- 2 Pour une note de , c'est l'inverse exact. Le programme n'affiche jamais les deux messages : il en affiche toujours un, et un seul.
- 3 C'est ce qui distingue de deux écrits à la suite. Deux indépendants sont évalués chacun de leur côté, et peuvent très bien s'exécuter tous les deux.
Et pour vérifier, choisis une valeur précise — ici — puis suis une seule route du doigt. Tu verras immédiatement quelle case est atteinte, et laquelle ne l'est pas.
❌ Une erreur, une suggestion
En Python, produit (pas ).
La borne supérieure est exclue !
💡 À retenir
- produit les entiers de à : la borne supérieure est toujours exclue.
- La boucle est utilisée quand le nombre de répétitions est connu à l'avance ; sinon.
- L'indentation est obligatoire en Python : elle délimite les blocs de code (pas d'accolades).
- Pour déboguer, exécuter le code à la main pas à pas avec des valeurs test.