Chapitre 1 · 20 min
Qu'est-ce qu'un algorithme ?
Reconnaître entrée, traitement et sortie, lire un pseudocode, suivre une trace d'exécution.
Un algorithme est une suite finie d'instructions précises qui transforme des données d'entrée en un résultat. Rien de plus. Pas besoin d'ordinateur : une recette de cuisine, un mode d'emploi de montage, la méthode de la division posée apprise en primaire — ce sont des algorithmes.
Ce qui distingue l'algorithmique d'un simple mode d'emploi, c'est l'exigence de rigueur. Un humain comble les trous d'une consigne floue ; une machine, non.
Les trois exigences
Pour mériter le nom d'algorithme, une méthode doit satisfaire trois conditions. Elles paraissent évidentes tant qu'on ne cherche pas de contre-exemple.
Fini. L'exécution doit s'arrêter, en un nombre d'étapes borné. « Ajouter 1 à un compteur et recommencer » n'est pas un algorithme : ça ne finit jamais.
Précis. Chaque instruction n'admet qu'une seule interprétation. « Assaisonner à votre goût » est une consigne humaine acceptable et une instruction algorithmique nulle : deux exécutants obtiendraient deux résultats différents.
Effectif. Chaque instruction doit être réellement exécutable avec les moyens disponibles. « Prendre le plus petit nombre réel strictement positif » est parfaitement précis, parfaitement fini à énoncer… et impossible à exécuter, car ce nombre n'existe pas.
Quiz · 1 question
« Tant que le résultat ne vous plaît pas, recommencez. » Quelle exigence cette instruction viole-t-elle en premier ?
- La finitude : rien ne garantit qu'on s'arrête un jour
- La précision : « vous plaît » n'a pas de sens unique et vérifiable
- L'effectivité : recommencer est impossible à exécuter
Réponse : Elle viole d'abord la précision : « le résultat vous plaît » n'est pas un test qu'une machine peut évaluer. Elle menace aussi la finitude, mais c'est une conséquence : un test qu'on ne sait pas évaluer ne peut évidemment pas garantir l'arrêt.
Entrée, traitement, sortie
Tout algorithme se lit sur trois temps, et c'est le premier réflexe à acquérir : avant d'écrire une ligne, savoir ce qui entre, ce qu'on en fait, ce qui sort.
| Temps | Question | Dans le pseudocode |
|---|---|---|
| Entrée | De quoi ai-je besoin ? | Lire(...) |
| Traitement | Qu'est-ce que je calcule ? | les affectations, avec ← |
| Sortie | Que dois-je produire ? | Écrire(...) |
Un algorithme n'invente rien : s'il a besoin de la longueur d'un rectangle, quelqu'un doit la lui fournir. Et s'il ne fait rien sortir, il ne sert à rien — un calcul dont personne ne voit le résultat est du travail perdu.
La structure d'un algorithme
Le pseudocode n'est pas un langage de programmation. C'est une convention d'écriture, à mi-chemin entre le français et le code, qui permet de raisonner sans se battre avec la syntaxe d'un langage particulier. Le même algorithme se traduira ensuite en Python, en C ou en JavaScript.
Algorithme RectangleVariables longueur, largeur : réels aire, perimetre : réelsDébut Lire(longueur) Lire(largeur) aire ← longueur × largeur perimetre ← 2 × (longueur + largeur) Écrire(aire) Écrire(perimetre)FinQuatre parties, toujours dans cet ordre : un nom, la déclaration des variables avec
leur type, puis le corps entre Début et Fin. Déclarer une variable, c'est réserver un
casier en mémoire et annoncer ce qu'on va y mettre.
L'affectation
La flèche ← est le symbole le plus important de tout le cours. aire ← longueur × largeur
se lit : calculer ce qui est à droite, puis ranger le résultat dans le casier de gauche.
Elle n'est pas symétrique. aire ← 21 a un sens ; 21 ← aire n'en a aucun. Et elle n'est
pas l'égalité mathématique : nous verrons à la leçon suivante que x ← x + 1, absurde en
mathématiques, est parfaitement ordinaire en algorithmique.
Suivre une trace d'exécution
Tracer un algorithme, c'est jouer le rôle de la machine : dérouler les lignes une par une en notant, après chaque ligne, le contenu de chaque variable. C'est l'exercice fondamental du semestre — et le seul moyen fiable de trouver pourquoi un algorithme ne fait pas ce qu'on croyait.
Faites défiler l'animation, ou cliquez directement une étape pour y sauter.
Animation · 8 étapes
Trace de l'algorithme Rectangle (longueur = 7, largeur = 3)
- Au départ, rien n'est connu — Les quatre variables sont déclarées, donc les casiers existent — mais ils ne contiennent aucune valeur utilisable. On note « ? ».
- Entrée : on lit la longueur — Lire fait entrer une valeur venue de l'extérieur (clavier, fichier, capteur). C'est l'entrée de l'algorithme : il ne l'invente pas.
- Entrée : on lit la largeur — Deuxième et dernière donnée d'entrée. Le reste sera calculé.
- Traitement : aire ← 7 × 3 — La flèche ← calcule d'abord tout ce qui est à sa droite (7 × 3 = 21), puis range le résultat dans le casier de gauche.
- Traitement : perimetre ← 2 × (7 + 3) — 2 × 10 = 20. Les parenthèses ne sont pas décoratives : sans elles, 2 × 7 + 3 donnerait 17.
- Sortie : on affiche l'aire — Écrire ne modifie rien en mémoire : aire vaut toujours 21 après. Afficher et calculer sont deux actions distinctes.
- Sortie : on affiche le périmètre — Deuxième et dernière sortie de l'algorithme.
- Fin — l'algorithme s'arrête — Huit lignes, huit étapes, aucune répétition : le nombre d'étapes était connu d'avance. L'exigence de finitude est évidemment respectée.
Trois choses à remarquer dans cette trace. Les variables commencent à ? : déclarée n'est
pas initialisée, et lire une variable jamais affectée est une erreur classique. Écrire ne
modifie rien en mémoire — afficher et calculer sont deux actions distinctes. Enfin, le
nombre d'étapes était connu d'avance : huit lignes, huit étapes, aucune répétition.
Voici la même trace telle que vous l'écririez sur une copie :
| Ligne | longueur | largeur | aire | perimetre | Sortie |
|---|---|---|---|---|---|
Lire(longueur) | 7 | ? | ? | ? | |
Lire(largeur) | 7 | 3 | ? | ? | |
aire ← ... | 7 | 3 | 21 | ? | |
perimetre ← ... | 7 | 3 | 21 | 20 | |
Écrire(aire) | 7 | 3 | 21 | 20 | 21 |
Écrire(perimetre) | 7 | 3 | 21 | 20 | 21, 20 |
Quiz · 1 question
Dans la trace, après la ligne Écrire(aire), que vaut la variable aire ?
- Elle vaut toujours 21 : Écrire lit la variable sans la vider
- Elle redevient ? : la valeur a été consommée par l'affichage
- Elle vaut 0 : afficher remet le casier à zéro
Réponse : Écrire est une opération de lecture. Elle copie la valeur vers l'écran et laisse la mémoire intacte — on peut afficher la même variable dix fois de suite.
Quiz · 1 question
Quel est l'ordre d'exécution de aire ← longueur × largeur ?
- On range d'abord dans aire, puis on calcule longueur × largeur
- On calcule d'abord longueur × largeur, puis on range le résultat dans aire
- Les deux se font en même temps
Réponse : Toujours la droite d'abord, puis le rangement à gauche. Cette règle paraît anodine ici ; c'est elle qui rendra lisible x ← x + 1 dans la prochaine leçon.
À vous
Exercice de code
Écrivez les deux traitements de l'algorithme, puis vérifiez la sortie dans la console.
Point de départ
// Traduisez l'algorithme Rectangle en JavaScript. // Les Lire() sont remplacés par des valeurs fixées : ce n'est pas la saisie // qu'on travaille ici, c'est le traitement. const longueur = 7; const largeur = 3; let aire = 0; // à corriger let perimetre = 0; // à corriger console.log(aire); // attendu : 21 console.log(perimetre); // attendu : 20
Solution
const longueur = 7; const largeur = 3; // La flèche ← du pseudocode devient = en JavaScript : même sens de lecture, // on calcule la droite et on range le résultat à gauche. const aire = longueur * largeur; const perimetre = 2 * (longueur + largeur); console.log(aire); // 21 console.log(perimetre); // 20
À retenir
Flashcards · 2 cartes
- Quelles sont les trois exigences d'un algorithme ?
- Fini (il s'arrête), précis (une seule interprétation possible), effectif (chaque instruction est réellement exécutable).
- Comment se lit l'affectation x ← expression ?
- On évalue d'abord l'expression à droite, puis on range le résultat dans le casier x. L'ancienne valeur de x est écrasée.