Aller au contenu principal
algorithmiqueLire et écrire du pseudo-code

Lire et écrire du pseudo-code

Objectifs du Chapitre

Dire ce qu'est le pseudo-code et à quoi il sert par rapport au français et à un langage de programmation.

Connaître la convention d'écriture utilisée dans ce cours : squelette, affectation, entrées et sorties.

Lire l'indentation comme une information, et non comme une décoration.

Reconnaître les trois seules structures dont tout algorithme est fait.

Dérouler un algorithme à la main dans un tableau de trace, et prédire ce qu'il affiche.

Repérer les erreurs de lecture les plus fréquentes.

Où on va

Entre « je vois comment faire » et « le programme marche », il y a une étape que tout le monde saute et que tout le monde paie. Le pseudo-code est cette étape : une façon d'écrire un raisonnement assez précise pour qu'une autre personne l'exécute sans t'interroger, mais assez souple pour ne pas se battre avec des points-virgules. Ce chapitre fixe la convention utilisée dans tout le parcours, puis t'apprend à faire tourner un algorithme dans ta tête.

Pourquoi ne pas écrire directement en français ?

Écris une recette en français : « fais chauffer l'eau, ajoute les pâtes, égoutte quand c'est cuit ». Tout le monde comprend, et pourtant rien n'est exécutable. Combien de temps ? À quelle température ? « Quand c'est cuit » veut dire quoi, exactement ?

Le français est ambigu par nature, et c'est sa qualité entre humains. Une machine, elle, n'a aucun moyen de deviner ce que tu voulais dire.

Définition

Le pseudo-code est une écriture intermédiaire : la structure et la rigueur d'un programme, avec le vocabulaire du français. Il ne s'exécute sur aucune machine, et c'est volontaire. On y réfléchit au raisonnement sans se préoccuper de la syntaxe d'un langage particulier.

Trois façons d'écrire la même chose :

ÉcritureAmbigu ?Exécutable ?
Français« Affiche le plus grand des deux nombres »ouinon
Pseudo-codeSi a > b Alors Écrire a Sinon Écrire b FinSinonnon
Pythonprint(a if a > b else b)nonoui

La colonne du milieu est celle qui compte pour apprendre : elle est précise sans être technique. C'est aussi celle qu'on écrit sur une copie, au tableau, ou sur un coin de table avec un collègue.

À retenir

Le pseudo-code n'est pas un langage au rabais : c'est un langage pour les humains, qui impose la rigueur sans imposer la syntaxe. Un algorithme juste en pseudo-code se traduit ensuite dans n'importe quel langage. Un algorithme faux ne devient pas juste parce qu'on l'a écrit en Python.

La convention de ce cours

Il n'existe pas de pseudo-code officiel : chaque école a le sien. Voici celui utilisé dans tous les chapitres qui suivent. Apprends-le une fois, il ne changera plus.

Le squelette

Tout algorithme est encadré par Début et Fin. Ce qui est entre les deux est le corps de l'algorithme, décalé d'un cran vers la droite.

Algorithme
Début
// les instructions vont ici, dans l'ordre
Fin

Une ligne qui commence par // est un commentaire : elle explique, elle ne fait rien.

Ranger une valeur : la flèche

Algorithme
Début
age 20
nom "Lina"
total age + 5
Fin
La flèche n'est pas un égal

age ← 20 ne dit pas « age est égal à 20 », mais « mets 20 dans la boîte nommée age ». C'est une action, orientée de droite à gauche. On peut donc écrire total ← total + 1, qui serait absurde comme égalité mathématique et qui veut simplement dire « remplace le contenu de total par son contenu augmenté de 1 ».

Le signe = est réservé aux comparaisons, dans les conditions.

Faire entrer et sortir des données

Lire demande une valeur à l'utilisateur et la range dans une variable. Écrire affiche.

Algorithme
Début
Écrire "Quel est ton prénom ?"
Lire prenom
Écrire "Bonjour ", prenom, " !"
Fin

Ce qui est entre guillemets est du texte affiché tel quel. Ce qui n'y est pas est le contenu d'une variable. La différence est la source d'erreur numéro un des débutants :

Algorithme
Début
prenom "Lina"
Écrire "prenom" // affiche : prenom
Écrire prenom // affiche : Lina
Fin

L'indentation dit ce qui est à l'intérieur de quoi

Décaler une ligne vers la droite n'est pas de la mise en page : c'est une information. Le décalage dit à quel bloc appartient l'instruction.

Algorithme
Début
Lire note
Si note >= 10 Alors
Écrire "Reçu"
Écrire "Félicitations"
FinSi
Écrire "Fin du traitement"
Fin

Les deux Écrire décalés sont dans le Si : ils ne s'exécutent que si la note est suffisante. Le dernier Écrire, revenu au niveau du Si, s'exécute dans tous les cas. Déplace-le d'un cran et l'algorithme change de sens.

Un repère visuel

Dans ce cours, les algorithmes affichent des filets verticaux à chaque niveau d'imbrication, et les lignes sont numérotées. Suis un filet du regard : il te montre exactement où un bloc commence et où il finit. C'est le réflexe à prendre avant de lire le détail des instructions.

Les trois seules structures

C'est le résultat le plus surprenant de l'algorithmique : tout programme, quelle que soit sa taille, se construit avec trois structures et rien d'autre.

1. La séquence : les unes après les autres

Algorithme
Début
Lire a
Lire b
somme a + b
Écrire "Somme = ", somme
Fin

L'ordre compte. Inverser les deux premières lignes ne change rien ici, mais déplacer le calcul avant les lectures donnerait un résultat vide de sens.

2. Le choix : selon le cas

Algorithme
Début
Lire age
Si age >= 18 Alors
Écrire "Majeur"
Sinon
Écrire "Mineur"
FinSi
Fin

Une seule des deux branches s'exécute, jamais les deux. FinSi referme le bloc : sans lui, on ne saurait pas où s'arrête le choix.

3. La répétition : plusieurs fois

Quand on sait combien de fois :

Algorithme
Début
Pour i de 1 à 5
Écrire "Tour numéro ", i
FinPour
Fin

Quand on sait seulement jusqu'à quand :

Algorithme
Début
Lire n
TantQue n <= 0
Écrire "Entre un nombre positif"
Lire n
FinTantQue
Écrire "Merci, tu as saisi ", n
Fin
À retenir

Séquence, choix, répétition. Un algorithme de trois lignes et un logiciel de trois millions de lignes sont faits des mêmes trois briques, emboîtées. Quand un algorithme te paraît compliqué, cherche d'abord ces briques : tu verras une structure là où tu voyais un mur de texte.

Faire tourner un algorithme à la main

Lire un algorithme ne suffit pas : il faut savoir le dérouler, c'est-à-dire jouer le rôle de la machine, une ligne à la fois, en notant ce que devient chaque variable. C'est ce qu'on appelle une trace d'exécution, et c'est l'outil qui règle 90 % des « je ne comprends pas pourquoi ça ne marche pas ».

Algorithme
Début
somme 0
Pour i de 1 à 4
somme somme + i
FinPour
Écrire somme
Fin

On construit un tableau avec une colonne par variable, une ligne par passage :

ÉtapeisommeCommentaire
avant la boucle(vide)0initialisation
tour 1110 + 1
tour 2231 + 2
tour 3363 + 3
tour 44106 + 4
après la boucle(vide)10affiché : 10
La méthode

Une colonne par variable, une ligne par instruction exécutée. N'anticipe pas : ne saute pas de tour parce que « on voit bien ce que ça fait ». C'est justement dans le tour qu'on saute que se cache l'erreur.

Les erreurs de lecture les plus fréquentes

Confondre la valeur et le nom

Écrire "total" affiche le mot total. Écrire total affiche son contenu. Les guillemets changent tout.

Oublier que la boucle Pour incrémente toute seule

Dans Pour i de 1 à 5, la variable i avance d'elle-même à chaque tour. Ajouter un i ← i + 1 dans le corps de la boucle la fait avancer deux fois, et la moitié des valeurs sont sautées.

Écrire un TantQue dont la condition ne change jamais
Algorithme
Début
x 1
TantQue x <= 10
Écrire x
FinTantQue
Fin

x ne bouge pas : la condition reste vraie pour toujours et l'algorithme n'en sort jamais. Avant d'écrire un TantQue, pose-toi la question : qu'est-ce qui, dans le corps de la boucle, finira par rendre la condition fausse ?

Du pseudo-code au vrai langage

Une fois l'algorithme juste, la traduction est mécanique. Voici la correspondance avec Python, le langage du parcours suivant :

Pseudo-codePython
x ← 5x = 5
Lire xx = input()
Écrire xprint(x)
Si c Alors … FinSiif c: …
Sinonelse:
Pour i de 1 à nfor i in range(1, n+1):
TantQue c … FinTantQuewhile c: …
Fonction f(a) … FinFonctiondef f(a): …
indentationindentation (obligatoire en Python)

Note la dernière ligne : ce que le pseudo-code fait par convention, Python l'impose. Les habitudes prises ici se paieront directement là-bas.

Exercices type

1. Que produit cet algorithme ?
Algorithme
Début
a 3
b 4
a a + b
b a - b
Écrire a, " ", b
Fin

Trace d'exécution :

Étapeab
après ligne 23(vide)
après ligne 334
après ligne 474
après ligne 573

Affichage : 7 3. L'algorithme échange presque les deux valeurs : il faudrait une troisième affectation a ← a - b pour terminer l'échange.

2. Combien de fois « Bonjour » est-il affiché ?
Algorithme
Début
Pour i de 1 à 3
Pour j de 1 à 2
Écrire "Bonjour"
FinPour
FinPour
Fin

La boucle intérieure fait 2 tours, et elle est relancée à chaque tour de la boucle extérieure, qui en fait 3.

3 × 2 = 6 affichages. Les filets verticaux montrent que le second Pour est bien à l'intérieur du premier.

3. Corriger cet algorithme
Algorithme
Début
Lire n
somme 0
TantQue i <= n
somme somme + i
FinTantQue
Écrire somme
Fin

Deux défauts :

  1. i n'est jamais initialisée : la condition compare une variable qui n'a pas de valeur.
  2. i n'est jamais modifiée dans la boucle : même initialisée, la boucle ne s'arrêterait pas.

Version corrigée :

Algorithme
Début
Lire n
somme 0
i 1
TantQue i <= n
somme somme + i
i i + 1
FinTantQue
Écrire somme
Fin
4. Traduire en pseudo-code : afficher si un nombre est pair
Algorithme
Début
Lire n
Si n MOD 2 = 0 Alors
Écrire n, " est pair"
Sinon
Écrire n, " est impair"
FinSi
Fin

MOD donne le reste de la division entière. Un nombre est pair si son reste dans la division par 2 vaut 0.

En résumé

  • Le pseudo-code est précis comme un programme, lisible comme du français, et ne s'exécute nulle part. C'est fait exprès.
  • Il n'y a pas de norme universelle : c'est la convention de ce cours qu'il faut connaître.
  • range une valeur dans une variable, de droite à gauche. = compare.
  • Les guillemets distinguent le texte affiché tel quel du contenu d'une variable.
  • L'indentation dit ce qui est à l'intérieur de quoi. Ce n'est pas de la mise en page.
  • Tout algorithme se construit avec trois structures : séquence, choix, répétition.
  • La trace d'exécution (une colonne par variable, une ligne par passage) est l'outil qui répond à « pourquoi ça ne fait pas ce que je veux ».
  • Avant d'écrire un TantQue, demande-toi ce qui rendra la condition fausse.

Et ensuite ? Le chapitre Variables, types et affectation entre dans le détail de ces boîtes qu'on vient de remplir : ce qu'elles peuvent contenir, et ce que ça change.