Problème, instruction, exécution à la main
Département de Mathématiques et Informatique, Faculté des Sciences et Techniques, Université Cheikh Anta Diop de Dakar
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.
D’où l’on vient, où l’on va
Amont. Aucun prérequis : chacun suit déjà des procédures écrites ou apprises, une recette, un itinéraire, un paiement par téléphone. La séance en dégage les exigences, puis les écrit dans un pseudo-code.
Aval. Les variables et l’affectation (Séance 1) donnent une mémoire à l’algorithme ; les conditions (Séance 2) lui font choisir, les boucles (Séance 3) répéter ; les tableaux (Séance 4) et les fonctions (Séance 5) organisent les données et les traitements.
| é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.
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
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é.
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.
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.
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.
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).
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.
L’attaya, recette d’un cahier
Données : le nombre \(n\) d’invités
Version réécrite
Correction
| é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 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.
Une annonce de la gare routière des Baux maraîchers, à Pikine (quai illustratif).
Trois parties
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é.
{É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.
Écrit par Écrire \(\rightarrow\)
Gare des Baux maraîchers
Car pour Thiès : quai 3
Bon voyage
Un guide pour un nouvel étudiant, qui vient en car rapide (itinéraire illustratif).
Lignes, pas, ordre
"Montrer sa carte d'étudiant" après la ligne 4. Quel est le numéro de la ligne Fin ? Combien de pas ?| 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 |
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.
Le paiement en pseudo-code : solde de départ de 10000 F (illustratif), montant tapé au clavier.
Ce que la Séance 1 reprendra
montant et solde ;montant la valeur tapée ;solde le résultat du calcul ;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.
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.
| é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.
Le message d’accueil d’une boutique de Kaolack.
Trace et arrêt
Correction
| pas | ligne | écrit | corrigé |
|---|---|---|---|
| 1 | 3 | Bienvenue |
Bienvenue |
| 2 | 4 | Chez Fatou |
Chez Fatou |
| 3 | 5 | arrêt | merci |
| 4 | 6 | À bientôt |
merci n’est pas une variable de l’algorithme : arrêt (case orange)."merci" : le texte, sans guillemets, au pas 3 (case verte, colonne « corrigé »).| 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
Nom, Variables, Début, Fin ; une instruction par ligne, lignes numérotées."texte" écrit le texte sans guillemets, puis passe à la ligne.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.
Algorithmique — Séance 0 Dr. El Hadji Bassirou TOURÉ • DMI/FST/UCAD
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.