▸ Ce savant perse écrit un traité de méthodes de calcul. Traduit en latin, son nom devient « Algoritmi » : c'est de là que vient le mot algorithme.
▸ Son livre al-jabr a aussi donné le mot algèbre. Un algorithme = une suite finie d'étapes pour résoudre un problème.
▸ Elle INVENTE la programmation en adaptant le premier algorithme pour une machine. Visionnaire, elle a IMAGINÉ ce qu'une machine pourrait faire un jour :
🎵 « La machine pourrait composer des morceaux de musique de n'importe quel degré de complexité. »
Un algorithme, c'est comme une recette : une suite d'étapes claires et ordonnées qui mènent au résultat. Avant de coder, on suit toujours le même chemin :
La machine est obéissante mais bête : elle fait exactement ce qu'on écrit, dans l'ordre où on l'écrit. Tout l'art de l'algorithme est de lui donner les bonnes étapes, dans le bon ordre.
Presque tout programme suit le même plan en trois temps : il reçoit des données, les transforme, puis rend un résultat. C'est le squelette de l'énoncé du Projet 1 (les mesures du volcan de Maya).
les données de départ
moyenne, étendue,
détecter l'aberrante
le rapport affiché
+ le fichier .csv
Avant de coder, repère toujours ces trois blocs dans l'énoncé : « qu'est-ce qui entre ? », « que faut-il calculer ? », « qu'est-ce qui sort ? ». Le reste du programme remplit le bloc du milieu.
Tu as déjà appelé des fonctions Python (print, len, round, input…). Chacune est un petit Entrée → Traitement → Sortie : on lui donne quelque chose, elle le transforme, elle rend un résultat.
Ton programme entier est un grand Entrée-Traitement-Sortie ; chaque fonction qu'il appelle est un petit Entrée-Traitement-Sortie à l'intérieur. Des plans dans des plans - presque une fractale. 🌀
Par défaut, un programme s'exécute ligne par ligne, de haut en bas. Chaque ligne se termine avant que la suivante commence. somme = a + b n'a de sens que parce que a et b existent déjà au-dessus.
x = y puis y = xOn voulait peut-être échanger x et y ? Raté : les deux valent 7. Dès la ligne 3, x = y écrase le 4 ; à la ligne 4, y = x ne fait que recopier 7. La valeur 4 est perdue.
Exactement le même 4 instructions, juste 2 lignes inversées - et le résultat est tout autre : les deux valent 4. En séquence, l'ordre n'est pas un détail. (Pour vraiment échanger x et y, il faudra une astuce : on la verra dans les patrons. 😉)
Pour comprendre (et réussir un examen !), joue à l'ordinateur : prends une feuille, fais une colonne par variable, et exécute chaque ligne une à une en mettant à jour les valeurs.
C'est exactement ce que font les tableaux ci-dessus. Tracer à la main ne ment jamais : si tu hésites sur ce que fait un code, trace-le plutôt que de deviner.
if, certaines lignes sautentDès qu'un test est vrai, on exécute son bloc et on saute tout le reste de l'alternative. Certaines lignes ne s'exécutent jamais - c'est le principe même de la condition.
Un organigramme (ou diagramme de flux) dessine le chemin que suit la machine. Trois formes suffisent :
On suit les flèches : à chaque losange, on prend la sortie vrai ou faux. C'est la même logique que le code - en image.
si et si / sinonÀ gauche, le bloc ne s'exécute que si c'est vrai. À droite, on prend toujours un des deux chemins - jamais les deux, jamais aucun.
si / sinon si / sinonChaque elif = un nouveau losange testé seulement si tous les précédents étaient faux. Le else est le chemin « faux partout » : il n'a pas de losange.
while et forLa flèche violette de retour, c'est ça « boucler » : on revient tester la condition. while teste une condition ; for teste s'il reste un élément. Dès que c'est faux, on sort.
matchMême résultat. match brille quand on compare toujours la même variable à des valeurs : plus lisible qu'une longue chaîne de elif jour == .... case _ est le « sinon ». Sous le capot, c'est la même sélection.
Un patron est un squelette de code qu'on réutilise tout le temps. L'accumulateur cumule un résultat tour après tour : initialiser (effet nul) → parcourir → accumuler.
01La variable accumulateur vit en dehors de la boucle (sinon elle se remettrait à zéro à chaque tour). On la lit après la boucle. Même squelette pour une moyenne, un compte, un maximum…
trouve démarre à False. Dès qu'on rencontre la cible, on le lève (True).Patron parcours + condition. Le break est un bonus d'efficacité : trouvé une fois, pas besoin de finir le tableau. Variante utile : garder à quelle position on l'a trouvé.
Un accumulateur déguisé : maximum cumule « le meilleur jusqu'ici ». Pour le minimum, on change juste > en <. Idéal en sciences : la température la plus haute, la mesure la plus forte…
19 et 22 dépassent 15 : le compteur monte deux fois.Encore un accumulateur : il part de 0 et grimpe de 1 seulement si la condition est vraie. Combien de mesures hors-norme ? Combien d'élèves ont la note de passage ? Même squelette.
x = y ne suffit pasComme tout s'exécute séquentiellement (vu au tout début), x = y remplace le contenu du verre x avant qu'on ait pu sauver le 4. Il faut donc un verre vide de côté pour le garder : c'est le rôle de temp dans le patron qui suit. →
temp.Cette fois c'est vraiment échangé : x = 7, y = 4. Sans temp, x = y écraserait le 4 (vu en séquentialité !). Raccourci Python une fois compris : x, y = y, x.
Le pseudocode décrit les étapes en langage presque naturel, sans la syntaxe exacte d'un langage. On réfléchit à l'algorithme, puis on le traduit en Python.
Le pseudocode est indépendant du langage : la flèche ← dit « reçoit », les mots POUR / SI / ALORS sont en français. C'est le plan ; le code n'est que la traduction. Concevoir d'abord, coder ensuite.
Une instruction après l'autre, dans l'ordre.
Jour 1
Choisir un chemin selon une condition.
Jour 2
Répéter tant qu'il le faut.
Jour 3
Avec seulement ces trois briques - et les variables (Jour 1) et les listes (Jour 4) pour ranger les données - on peut écrire n'importe quel programme. C'est un résultat prouvé (théorème de Böhm-Jacopini). La semaine 1, c'est exactement ça. 🎉
Trace à la main (colonne par variable) avant d'exécuter :