Qu'est-ce qu'un algorithme ?Dans le dialogue d’impression, choisissez « Enregistrer au format PDF » comme destination.
Retour

Algorithmique 1 · C1 Notions de base · 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.

TempsQuestionDans le pseudocode
EntréeDe quoi ai-je besoin ?Lire(...)
TraitementQu'est-ce que je calcule ?les affectations, avec
SortieQue 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)Fin

Quatre 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)

  1. Au départ, rien n'est connuLes quatre variables sont déclarées, donc les casiers existent — mais ils ne contiennent aucune valeur utilisable. On note « ? ».
  2. Entrée : on lit la longueurLire 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.
  3. Entrée : on lit la largeurDeuxième et dernière donnée d'entrée. Le reste sera calculé.
  4. Traitement : aire ← 7 × 3La flèche ← calcule d'abord tout ce qui est à sa droite (7 × 3 = 21), puis range le résultat dans le casier de gauche.
  5. Traitement : perimetre ← 2 × (7 + 3)2 × 10 = 20. Les parenthèses ne sont pas décoratives : sans elles, 2 × 7 + 3 donnerait 17.
  6. 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.
  7. Sortie : on affiche le périmètreDeuxième et dernière sortie de l'algorithme.
  8. Fin — l'algorithme s'arrêteHuit 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 :

LignelongueurlargeuraireperimetreSortie
Lire(longueur)7???
Lire(largeur)73??
aire ← ...7321?
perimetre ← ...732120
Écrire(aire)73212021
Écrire(perimetre)73212021, 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.