cursus.

Cours 1 · Notions de baseLeçon 1 sur 3

Qu'est-ce qu'un algorithme ?

20 min de lecture7 sections Version PDF

À la fin de cette leçon, vous saurez

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 · vérifiez votre compréhension Sans réponse

« Tant que le résultat ne vous plaît pas, recommencez. » Quelle exigence cette instruction viole-t-elle en premier ?

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 · étape 1 / 80:00 / 0:12

Les quatre variables sont déclarées, donc les casiers existent — mais ils ne contiennent aucune valeur utilisable. On note « ? ».

Prêt à lancer · 0:00 / 0:12
Étapes

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 · vérifiez votre compréhension Sans réponse

Dans la trace, après la ligne Écrire(aire), que vaut la variable aire ?

Quiz · vérifiez votre compréhension Sans réponse

Quel est l'ordre d'exécution de aire ← longueur × largeur ?

À vous

Exercice · JavaScript · à vous de jouer

Écrivez les deux traitements de l'algorithme, puis vérifiez la sortie dans la console.

En attente
// 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

Console de sortie
Le résultat s'affiche dans la console

À retenir

Flashcards · 1 / 2Toucher pour retourner
Fin de la leçon

Vous avez parcouru les 7 sections.

Marquez-la terminée pour faire avancer votre parcours, ou revenez sur un point avant de passer à la suite.