Rendre la monnaie à la boulangerie
Décomposer un problème en étapes, c’est le couper en petites actions simples qu’on peut faire une à une. C’est la première compétence d’un programmeur, avant même de connaître un langage.
À la boulangerie, la caissière rend la monnaie sans y penser. Elle suit pourtant plusieurs petites opérations dans un ordre précis. Un ordinateur ne devine rien : il faut tout lui dire.
À la fin de cette leçon
Remarque
Je peux décomposer un problème en étapes et suivre ce que fait un programme.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Algorithme | une liste d’étapes précises qui résout un problème | |
| Décomposition | couper un gros problème en petits problèmes | |
| Pseudo-code | des étapes écrites en français, sans règles strictes | |
| Variable | une case nommée qui garde une valeur | total |
| Table de trace | un tableau qui note la valeur des variables à chaque étape |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un algorithme est une liste d’étapes précises
Un algorithme est une liste d’étapes précises qui mène d’un problème à sa solution. Chaque étape est simple et ne laisse aucun choix flou. L’ordre compte : changer deux étapes change souvent le résultat.
On écrit d’abord l’algorithme en pseudo-code, c’est-à-dire en français ordinaire. On le traduit en Python ensuite.
Exemple travaillé : rendre la monnaie en pseudo-code
| Étape | Instruction | Avec un pain à 1,20 € payé avec 5 € |
|---|---|---|
| 1 | Lire le prix du pain | prix = 1,20 |
| 2 | Lire la somme donnée | donne = 5,00 |
| 3 | Calculer la monnaie | monnaie = 5,00 − 1,20 = 3,80 |
| 4 | Annoncer la monnaie | « Je vous rends 3,80 € » |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Erreur fréquente
Attention
Beaucoup de gens pensent que l’ordinateur comprend l’intention. Il ne fait que ce qui est écrit, dans l’ordre. Une étape comme « calculer le bon prix » est trop floue : écrivez quel calcul, avec quelles valeurs.
Décomposer, c’est couper en petits problèmes
Un problème réel est souvent trop gros pour être écrit d’un coup. La décomposition le coupe en sous-problèmes plus petits. Chacun se résout seul.
Prenons un relevé de notes. Calculer la moyenne de trois notes demande trois sous-problèmes : lire les notes, les additionner, puis diviser par leur nombre.
Une table de trace suit les variables
Une variable est une case nommée qui garde une valeur. Pour comprendre un programme, on joue l’ordinateur à la main. On note dans une table de trace la valeur de chaque variable après chaque ligne.
Si la table donne le résultat attendu, l’algorithme est bon. Sinon, on voit quelle ligne se trompe.
La trace pour 12, 15 et 9
| Ligne exécutée | note_1 | note_2 | note_3 | total | Affiché |
|---|---|---|---|---|---|
| note_1 = 12 | 12 | · | · | · | · |
| note_2 = 15 | 12 | 15 | · | · | · |
| note_3 = 9 | 12 | 15 | 9 | · | · |
| total = note_1 + note_2 + note_3 | 12 | 15 | 9 | 36 | · |
| print(total / 3) | 12 | 15 | 9 | 36 | 12.0 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Le programme de la table de trace
# Une moyenne de trois notes, comme dans la table de trace.
note_1 = 12
note_2 = 15
note_3 = 9
total = note_1 + note_2 + note_3
print(total / 3)
# Changez note_3 en 18, prévoyez le résultat, puis relancez.
Écrire puis lancer le programme dans le labo
Le labo est une machine Linux qui a Python. La première commande écrit le programme dans un fichier nommé moyenne.py. La seconde le lance.
Le terminal affiche 12.0, car 36 divisé par 3 donne 12. Python écrit un nombre à virgule avec un point.
Écrire le fichier moyenne.py
printf 'note_1 = 12\nnote_2 = 15\nnote_3 = 9\ntotal = note_1 + note_2 + note_3\nprint(total / 3)\n' > moyenne.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lancer le programme
python3 moyenne.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Pour aller plus loin
Faites la table de trace de ce programme sur papier, sans le lancer :
prix = 2 puis quantite = 4 puis total = prix * quantite puis total = total - 1 puis print(total).
Écrivez la valeur de chaque variable après chaque ligne. Dites ce que le programme affichera, puis vérifiez dans le labo avec python3 -c.