Séance 0 — Qu’est-ce qu’un algorithme

Problème, instruction, exécution à la main

Dr. El Hadji Bassirou TOURÉ

Département de Mathématiques et Informatique, Faculté des Sciences et Techniques, Université Cheikh Anta Diop de Dakar

Objectifs de la séance

Ce que la séance construit

L’algorithme, suite finie d’instructions non ambiguës qui résout un problème et se termine : ce qu’il reçoit (les données), ce qu’il produit (le résultat), et la façon de l’exécuter à la main, étape par étape. Puis sa forme écrite dans le pseudo-code du cours : l’en-tête Algorithme, les parties Variables et Début … Fin, une première instruction, Écrire, et la trace qui suit l’exécution pas à pas.

  • Énoncer un problème par ses données et son résultat ; nommer un cas ordinaire et un cas limite.
  • Dire si une suite d’étapes est un algorithme : finie, non ambiguë, qui se termine.
  • Réécrire une consigne ambiguë (« ajouter du sel ») en instruction précise.
  • Distinguer algorithme, programme et langage de programmation.
  • Lire la structure d’un algorithme : en-tête, Variables, Début, Fin, lignes numérotées.
  • Exécuter un algorithme à la main et en écrire la trace : pas, ligne, ce qu’écrit Écrire.

Les conventions du pseudo-code

écriture sens
Algorithme Nom en-tête : le nom, à initiale majuscule, sans accent ni espace (Itineraire)
Variables déclarations des variables (Séance 1) ; partie absente s’il n’y a pas de variable
Début … Fin les instructions, une par ligne, exécutées dans l’ordre ; rien après Fin
Écrire "texte" écrit le texte, sans les guillemets, puis passe à la ligne
numéros de ligne de 1 à la ligne Fin, en-tête compris
retrait de 2 espaces sous Variables et entre Début et Fin
Lire n ; \(x\leftarrow e\) aperçu de la Séance 1 : ranger une valeur tapée au clavier ; ranger le résultat d’un calcul
trace une ligne par pas : numéro de la ligne exécutée, ce qu’écrit Écrire (et, dès la Séance 1, les valeurs des variables) ; en-tête, Variables, Début, Fin : aucun pas

Ces conventions valent pour toutes les séances ; chacune les complète sans les changer.

Un problème : des données, un résultat

Avant d’écrire une méthode, on dit ce qu’elle reçoit et ce qu’elle doit produire.

Problème, cas

Un problème est décrit par ses données, ce que l’on connaît au départ, et par le résultat attendu. Un cas est un choix de valeurs des données : un solde de 10000 F et un montant de 2500 F (valeurs illustratives).

Lecture. Payer par mobile money : d’un solde et d’un montant à un nouveau solde. Un itinéraire : d’un départ et d’une arrivée à une suite de trajets. Une recette : d’un nombre de personnes et d’ingrédients à un plat.

Quoi, pourquoi, quand ça échoue : l’algorithme

Quoi

Un algorithme est une suite finie d’instructions, chacune non ambiguë, qui, exécutées dans l’ordre, donnent le résultat du problème pour chacun de ses cas, et se terminent. Une instruction est un ordre que l’exécutant accomplit sans rien deviner : une action, avec ce qu’elle concerne, combien, quand.

Pourquoi

L’exécutant, personne ou machine, suit les instructions sans les interpréter : deux exécutants obtiennent le même résultat sur le même cas. Le mot vient du nom d’al-Khwârizmî, mathématicien du IXe siècle.

Quand ça échoue

Une consigne ambiguë (deux exécutants font deux choses), une étape qui peut ne jamais finir, deux étapes dans le mauvais ordre, un cas oublié.

L’ambiguïté d’une consigne

Une recette de thiéboudienne dit « ajoute du sel ». Une cuisinière expérimentée sait combien et quand ; un autre exécutant met une pincée, un troisième une poignée, au début ou à la fin.

consigne ce qui manque instruction précise (quantités illustratives)
ajouter du sel combien, quand ajouter 1 cuillère à soupe de sel dans la sauce, après les légumes
laisser cuire un moment combien de temps laisser cuire 20 minutes à feu doux
mettre assez d’eau quelle quantité verser 2 litres d’eau dans la marmite
ajouter les légumes lesquels, dans quel ordre ajouter le manioc et le chou, puis, 10 minutes plus tard, l’aubergine

Ambiguïté

Une consigne est ambiguë quand deux exécutants peuvent la suivre de deux façons différentes. « Assez », « un peu », « un moment », « à son goût » supposent un jugement que l’exécutant n’a pas.

La terminaison

Un itinéraire en car rapide, de Colobane à l’université (itinéraire illustratif) : chaque étape doit finir, et la suite des étapes aussi.

étape ce qui peut arriver étape qui se termine
attendre un car rapide vide aux heures de pointe, aucun n’arrive vide : l’attente ne finit pas monter dans le premier car rapide qui va à l’université
descendre quand on est près de l’université « près » ne dit pas quand s’arrêter descendre à l’arrêt Université
chercher la pièce exacte jusqu’à la trouver si elle manque, la recherche ne finit pas donner la plus petite pièce ou le plus petit billet qui couvre le prix

Terminaison

Un algorithme se termine sur un cas quand son exécution atteint sa dernière étape après un nombre fini d’étapes. Une étape « jusqu’à ce que … » ne finit que si l’événement attendu finit par arriver, et que l’exécutant sait le constater.

L’ordre des étapes : payer par mobile money

Payer un marchand par Wave ou Orange Money suit une suite d’étapes (étapes simplifiées, frais non comptés) :

étape instruction
1 Ouvrir l’application de mobile money.
2 Choisir « Payer », puis le marchand (code QR scanné ou numéro saisi).
3 Saisir le montant à payer.
4 Vérifier le nom du marchand et le montant affichés.
5 Valider avec le code secret.
6 Lire le message de confirmation, qui donne le nouveau solde.

L’ordre fait partie de l’algorithme

Les étapes 4 et 5 échangées, la vérification vient après la validation : une erreur de montant n’est vue qu’une fois le compte débité. Les mêmes étapes, dans un autre ordre, forment un autre algorithme.

Lecture. L’étape 3 apporte une donnée, le montant ; l’étape 5 change le solde. Une étape fait une seule chose, et l’exécutant passe à la suivante quand elle est faite.

L’exécution à la main : un paiement, deux cas

Exécuter un algorithme à la main, c’est suivre ses étapes dans l’ordre, sur un cas, en notant après chaque étape ce qui a changé. Montant : 2500 F ; solde de départ : 10000 F (cas 1), 2500 F (cas 2).

étape ce qui est fait solde, cas 1 solde, cas 2
1 application ouverte 10000 F 2500 F
2 marchand choisi 10000 F 2500 F
3 montant saisi : 2500 F 10000 F 2500 F
4 affiché : marchand, 2500 F 10000 F 2500 F
5 compte débité de 2500 F 7500 F 0 F
6 message lu 7500 F 0 F

Cas limite

Un cas limite est un cas à la frontière des données permises : ici, un montant égal au solde, qui laisse un solde nul. Un algorithme se vérifie sur un cas ordinaire et sur un cas limite.

Lecture. Seule l’étape 5 change le solde (case verte). Un montant supérieur au solde est refusé par l’application : ce cas demande un choix, que le pseudo-code écrit avec Si (Séance 2).

Algorithme, programme, langage

  • Algorithme : la méthode, indépendante de toute machine, écrite en pseudo-code.
  • Langage de programmation : des règles d’écriture strictes, que la machine sait traduire en actions.
  • Programme : l’algorithme écrit dans un langage de programmation ; la machine l’exécute.

Lecture. Une recette s’écrit en français ou en wolof : une méthode, deux textes. Un algorithme se traduit de même en un programme par langage ; l’exécuter à la main, c’est jouer le rôle de la machine.

Exercice : une recette ambiguë

L’attaya, recette d’un cahier

  1. Mettre de l’eau dans la théière.
  2. Ajouter du thé vert.
  3. Faire chauffer un moment.
  4. Ajouter du sucre.
  5. Verser d’un verre à l’autre jusqu’à ce que la mousse soit belle.
  6. Servir les invités.

Données : le nombre \(n\) d’invités

  1. Quelles étapes sont ambiguës ? Que manque-t-il à chacune ?
  2. Quelle étape peut ne pas se terminer ? Pourquoi ?
  3. Réécrire les six étapes, sans ambiguïté, pour \(n\) invités.
  4. Exécuter la version réécrite à la main pour 4 invités, puis pour le cas limite d’un seul invité : quantités et verres.

Exercice : une recette ambiguë, correction

Version réécrite

  1. Verser dans la théière \(n\) petits verres d’eau.
  2. Ajouter 2 cuillères à café de thé vert.
  3. Poser la théière sur le feu ; l’en retirer quand l’eau bout.
  4. Ajouter 2 morceaux de sucre par invité.
  5. Verser le thé d’un verre dans un autre, de haut, 6 fois.
  6. Remplir un verre par invité et servir.

Correction

  1. Étapes 1, 2, 4 : combien ; 3 : combien de temps ; 6 : combien de verres.
  2. L’étape 5 : « belle » est un jugement ; l’arrêt varie, ou ne vient pas.
  3. Quantités fixées (illustratives) ou calculées à partir de \(n\) ; versements comptés.
  4. Pour 1 invité, l’étape 5 demande quand même deux verres (case orange).
étape : grandeur 4 invités 1 invité
1 : eau (petits verres) 4 1
4 : sucre (morceaux) 8 2
6 : verres servis 4 1
5, 6 : verres utilisés 4 2

Le pseudo-code du cours

Le français courant laisse place à l’interprétation ; un langage de programmation impose les détails d’une machine. Le cours écrit ses algorithmes entre les deux, dans un pseudo-code.

Pseudo-code

Un pseudo-code est une écriture d’algorithme en français réduit et réglé : un vocabulaire fixe de mots-clés (Algorithme, Début, Fin, Écrire…), une instruction par ligne, des lignes numérotées. Il se lit sans machine et se traduit dans tout langage de programmation.

Pourquoi des mots-clés fixes

Chaque mot-clé a un seul sens, écrit dans les conventions : l’exécutant n’a rien à deviner. Il s’écrit toujours de la même façon : Écrire, avec sa majuscule et son accent.

Lecture. Les mots-clés sont en gras dans les algorithmes du cours ; tout le reste (noms, textes entre guillemets) est choisi par l’auteur.

La structure d’un algorithme

Algorithme Annonce
Début
  Écrire "Gare des Baux maraîchers"
  Écrire "Car pour Thiès : quai 3"
  Écrire "Bon voyage"
Fin

Une annonce de la gare routière des Baux maraîchers, à Pikine (quai illustratif).

Trois parties

  • ligne 1 : l’en-tête, Algorithme et le nom ;
  • la partie Variables, absente ici : l’algorithme n’a pas de variable ;
  • lignes 2 et 6 : Début et Fin, qui encadrent les instructions, lignes 3 à 5, une par ligne, en retrait de deux espaces.

Lecture. Seules les lignes 3 à 5 s’exécutent ; l’en-tête, Début et Fin décrivent l’algorithme. Après Fin, rien : l’algorithme est terminé.

L’instruction Écrire

{Écrire "texte"}

Écrit le texte placé entre guillemets, sans les guillemets, puis passe à la ligne : chaque Écrire exécuté écrit une ligne, à la suite des précédentes. Le texte est écrit tel quel, espaces et ponctuation compris.

instruction ligne écrite
Écrire “Gare des Baux maraîchers” Gare des Baux maraîchers
Écrire “Car pour Thiès : quai 3” Car pour Thiès : quai 3
Écrire “Bon voyage” Bon voyage

Les guillemets

Sans guillemets, un mot n’est plus un texte : Écrire merci demande la valeur d’une variable nommée merci (Séance 1). merci n’est pas une variable de l’algorithme : l’exécution s’arrête.

Premier algorithme, pas à pas : l’annonce

Écrit par Écrire \(\rightarrow\)

Gare des Baux maraîchers
Car pour Thiès : quai 3
Bon voyage

Lecture. Ligne 3 : Écrire écrit « Gare des Baux maraîchers ». Les lignes 1 et 2, l’en-tête et Début, ne produisent aucun pas : la trace commence à la ligne 3.

Lecture. Ligne 4 : Écrire écrit « Car pour Thiès : quai 3 ».

Lecture. Ligne 5 : Écrire écrit « Bon voyage » ; l’algorithme est terminé. Trois instructions, trois pas : chaque ligne entre Début et Fin s’exécute une fois, dans l’ordre.

Exercice : un itinéraire écrit

Algorithme Itineraire
Début
  Écrire "Prendre un car à Colobane"
  Écrire "Descendre à l'arrêt UCAD"
  Écrire "Marcher jusqu'à la FST"
Fin

Un guide pour un nouvel étudiant, qui vient en car rapide (itinéraire illustratif).

Lignes, pas, ordre

  1. Quelles lignes produisent un pas ? Combien de pas compte la trace ?
  2. Qu’écrit l’algorithme ?
  3. On échange les lignes 3 et 5. Qu’écrit l’algorithme ? Résout-il encore le problème ?
  4. On insère Écrire "Montrer sa carte d'étudiant" après la ligne 4. Quel est le numéro de la ligne Fin ? Combien de pas ?

Exercice : un itinéraire écrit, correction

Algorithme Itineraire
Début
  Écrire "Prendre un car à Colobane"
  Écrire "Descendre à l'arrêt UCAD"
  Écrire "Marcher jusqu'à la FST"
Fin
pas écrit, lignes 3 et 5 échangées
1 Marcher jusqu'à la FST
2 Descendre à l'arrêt UCAD
3 Prendre un car à Colobane

Correction

pas ligne écrit
1 3 Prendre un car à Colobane
2 4 Descendre à l'arrêt UCAD
3 5 Marcher jusqu'à la FST
  1. Les lignes 3, 4 et 5, entre Début et Fin : 3 pas.
  2. Trois lignes, dans l’ordre des lignes 3, 4, 5.
  3. L’ordre inverse (tableau de gauche, cases orange) : l’exécution ne juge pas le sens ; l’itinéraire est faux.
  4. L’insertion décale la suite : Fin passe à la ligne 7 ; 4 instructions, donc 4 pas.

La trace d’exécution

Exécuter un algorithme écrit en pseudo-code, c’est faire ce que ferait la machine : suivre ses lignes, dans l’ordre, et noter chaque étape.

Trace, pas

Une trace d’exécution est un tableau qui suit l’exécution sur un cas : une ligne par pas, c’est-à-dire par instruction exécutée, avec le numéro du pas, le numéro de la ligne exécutée et ce qu’écrit Écrire. L’en-tête, Variables, Début et Fin ne produisent aucun pas.

Un nombre de pas connu d’avance

Sans condition ni répétition ni appel (Séances 2, 3 et 5), et sans arrêt, chaque instruction s’exécute une fois : autant de pas que d’instructions. L’exécution, de haut en bas, se termine toujours.

Un arrêt

Une instruction impossible à exécuter arrête l’exécution à sa ligne : la trace s’arrête à ce pas, les lignes suivantes ne s’exécutent pas, et ce qui a été écrit avant reste écrit.

Aperçu : une donnée lue, un résultat calculé

Algorithme Paiement
Variables
  montant, solde : entier
Début
  Lire montant
  solde ← 10000 - montant
  Écrire "nouveau solde :", solde
Fin

Le paiement en pseudo-code : solde de départ de 10000 F (illustratif), montant tapé au clavier.

Ce que la Séance 1 reprendra

  • lignes 2–3 : la partie Variables déclare deux cases nommées, montant et solde ;
  • ligne 5 : Lire range dans montant la valeur tapée ;
  • ligne 6 : la flèche \(\leftarrow\) range dans solde le résultat du calcul ;
  • ligne 7 : Écrire écrit le texte, une espace, puis la valeur de solde.

Lecture. Trois instructions, comme l’annonce. Dans le tableau d’état, les colonnes des variables, qui montrent la valeur rangée, remplacent la colonne « écrit » ; ce qu’écrit Écrire reste en bas.

Aperçu, pas à pas : le paiement en pseudo-code

Entrée au clavier : 2500

Écrit par Écrire \(\rightarrow\)

nouveau solde : 7500

Lecture. Ligne 5 : Lire montant ; l’entrée au clavier donne montant \(=\) 2500. Lire range la valeur tapée dans la variable montant (Séance 1).

Lecture. Ligne 6 : solde reçoit 10000 - montant, soit 10000 - 2500 \(=\) 7500. La flèche \(\leftarrow\) range le résultat du calcul dans solde : une affectation (Séance 1).

Lecture. Ligne 7 : Écrire écrit « nouveau solde : 7500 » ; l’algorithme est terminé. Trois instructions, trois pas ; les lignes 1 à 4 et la ligne 8 n’en produisent aucun.

Les erreurs d’écriture

écriture fautive ce qui ne va pas
Écrire merci sans guillemets, merci est lu comme le nom d’une variable ; merci n’est pas une variable de l’algorithme : arrêt à cette ligne
Ecrire "merci" ; debut un mot-clé mal écrit n’est pas une instruction du pseudo-code
Algorithme Itinéraire ; Algorithme Mon guide un nom sans accent ni espace : Itineraire, MonGuide
une instruction après Fin hors de l’algorithme : toutes les instructions sont entre Début et Fin
deux instructions sur une ligne une instruction par ligne, pour que chaque pas désigne une ligne

Lecture. La première erreur arrête l’exécution ; les autres empêchent de lire l’algorithme selon les conventions. Une trace écrite à la main révèle la première : elle s’arrête au pas fautif.

Exercice : une instruction mal écrite

Algorithme Accueil
Début
  Écrire "Bienvenue"
  Écrire "Chez Fatou"
  Écrire merci
  Écrire "À bientôt"
Fin

Le message d’accueil d’une boutique de Kaolack.

Trace et arrêt

  1. Dérouler l’algorithme dans une trace : pas, ligne, écrit.
  2. Qu’est-il écrit au moment de l’arrêt ? La ligne 6 est-elle exécutée ?
  3. Corriger la ligne 5 pour que l’algorithme écrive le mot merci. Qu’écrit alors l’algorithme ?
  4. Combien de pas compte la trace de la version corrigée ?

Exercice : une instruction mal écrite, correction

Algorithme Accueil
Début
  Écrire "Bienvenue"
  Écrire "Chez Fatou"
  Écrire merci
  Écrire "À bientôt"
Fin

Correction

pas ligne écrit corrigé
1 3 Bienvenue Bienvenue
2 4 Chez Fatou Chez Fatou
3 5 arrêt merci
4 6 À bientôt
  1. Pas 1 et 2 : lignes 3 et 4 ; au pas 3, merci n’est pas une variable de l’algorithme : arrêt (case orange).
  2. Les deux premières lignes restent écrites ; la ligne 6 n’est pas exécutée.
  3. Écrire "merci" : le texte, sans guillemets, au pas 3 (case verte, colonne « corrigé »).
  4. 4 pas, un par instruction : les lignes 3 à 6.

À retenir

notion ce que c’est ce qui la met en défaut
problème des données, un résultat attendu un cas oublié, souvent un cas limite
instruction un ordre exécuté sans rien deviner « un peu », « assez », « un moment »
algorithme suite finie d’instructions non ambiguës, dans l’ordre, qui se termine une étape sans fin, deux étapes inversées
trace une ligne par pas : pas, ligne, écrit un pas pour l’en-tête, Début ou Fin

À retenir

  • Un algorithme se vérifie à la main, sur un cas ordinaire et sur un cas limite.
  • Algorithme : la méthode ; programme : sa traduction dans un langage ; la machine exécute le programme.
  • Algorithme Nom, Variables, Début, Fin ; une instruction par ligne, lignes numérotées.
  • Écrire "texte" écrit le texte sans guillemets, puis passe à la ligne.
  • Sans condition ni répétition ni appel (Séances 2, 3 et 5), et sans arrêt, chaque instruction s’exécute une fois : autant de pas que d’instructions.

Prochaine séance

Séance 1 — Variables et affectation

L’algorithme reçoit une mémoire : la variable, case nommée qui garde une valeur d’un type donné (entier, réel, booléen, caractère, chaîne). L’affectation \(\leftarrow\) y range le résultat d’un calcul, Lire une valeur tapée au clavier, et Écrire en écrit la valeur ; la trace montre, à chaque pas, la valeur de chaque variable.

À préparer : dans le paiement par mobile money, relever les valeurs que l’application doit retenir d’une étape à l’autre, et l’étape où chacune change.

Références

  • Cormen — Algorithms Unlocked, MIT Press, 2013 (ch. 1, « What Are Algorithms and Why Should You Care? » : algorithme, correction, terminaison).
  • Cormen, Leiserson, Rivest, Stein — Introduction to Algorithms, 4e éd., MIT Press, 2022 (ch. 1, « The Role of Algorithms in Computing », § 1.1 : problème, instance, algorithme).
  • Bhargava — Grokking Algorithms, 2e éd., Manning, 2024 (ch. 1, « Introduction to Algorithms »).
  • Notes de cours en ligne : CS50 (Harvard), 6.100A (MIT), CS106A (Stanford), premières séances sur l’algorithme et le pseudo-code.