Exemples de pseudocode
15 exemples détaillés en pseudocode Cambridge IGCSE et A-Level, du premier OUTPUT jusqu'au tri à bulles. Chacun montre sa sortie, et vous pouvez l'exécuter dans l'éditeur ci-dessous.
Comment lire ces exemples
Le pseudocode décrit les étapes d'un programme dans un anglais structuré, sans les règles strictes d'un vrai langage de programmation. Tous les exemples ci-dessous utilisent le style Cambridge des examens IGCSE et A-Level : DECLARE pour les variables, ← pour l'affectation, OUTPUT pour afficher, et des blocs fermés par ENDIF, NEXT ou ENDWHILE.
Chaque exemple pose un problème, donne le pseudocode, montre la sortie qu'il produit et explique son fonctionnement. Cliquez sur Exécutez-le dans l'éditeur pour charger un exemple dans l'éditeur en haut de la page : vous pourrez l'exécuter pas à pas, ligne par ligne, et voir les variables changer. Vous découvrez la syntaxe ? L'éditeur de pseudocode propose une bibliothèque cliquable de toutes les instructions.
1. Hello, World
Afficher un message à l'écran.
OUTPUT "Hello, World!"Hello, World!OUTPUT affiche ce qui le suit, et le texte se place entre guillemets doubles. Cette seule ligne est un programme complet : le pseudocode n'a besoin ni de fonction principale ni d'imports.
2. Additionner deux nombres
Stocker deux nombres entiers, les additionner et afficher le total.
DECLARE a : INTEGER
DECLARE b : INTEGER
DECLARE total : INTEGER
a ← 12
b ← 30
total ← a + b
OUTPUT "The total is ", totalThe total is 42Chaque variable est déclarée avec un nom et un type avant d'être utilisée. La flèche ← stocke une valeur : lisez total ← a + b comme « total prend la valeur a plus b ». Une virgule dans OUTPUT réunit le texte et la valeur sur une même ligne.
3. Pair ou impair
Déterminer si un nombre est pair ou impair.
DECLARE n : INTEGER
n ← 17
IF n MOD 2 = 0 THEN
OUTPUT n, " is even"
ELSE
OUTPUT n, " is odd"
ENDIF17 is oddMOD donne le reste d'une division. Un nombre pair divisé par 2 ne laisse aucun reste, donc le test est n MOD 2 = 0. IF choisit l'une des deux branches et ENDIF ferme le bloc. En pseudocode, un = seul compare deux valeurs ; il n'affecte jamais.
4. Attribuer une note à un score
Transformer un score sur 100 en note : A à partir de 80, B de 60 à 79, C en dessous de 60.
DECLARE score : INTEGER
DECLARE grade : CHAR
score ← 74
IF score >= 80 THEN
grade ← 'A'
ELSE
IF score >= 60 THEN
grade ← 'B'
ELSE
grade ← 'C'
ENDIF
ENDIF
OUTPUT "Score ", score, " gets grade ", gradeScore 74 gets grade BLes tests vont du seuil le plus haut vers le plus bas, donc un score de 74 échoue au premier test et réussit le second. Placer un IF dans le ELSE d'un autre, c'est ainsi que le pseudocode Cambridge écrit une chaîne de conditions else-if. Un CHAR contient un seul caractère entre guillemets simples.
5. Additionner les nombres de 1 à 10
Faire la somme de tous les nombres entiers de 1 à 10.
DECLARE total : INTEGER
DECLARE i : INTEGER
total ← 0
FOR i ← 1 TO 10
total ← total + i
NEXT i
OUTPUT "Sum of 1 to 10 is ", totalSum of 1 to 10 is 55Une boucle FOR s'exécute un nombre fixe de fois : i prend les valeurs 1, 2, 3 et ainsi de suite jusqu'à 10, et NEXT i marque la fin du corps de la boucle. Le total commence à 0 et augmente à chaque tour. Le résultat, 55, correspond à la formule n(n + 1) / 2.
6. Afficher une table de multiplication
Afficher les cinq premières lignes de la table de 7.
DECLARE i : INTEGER
FOR i ← 1 TO 5
OUTPUT "7 x ", i, " = ", 7 * i
NEXT i7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35Le compteur de boucle i sert dans le calcul, donc chaque tour affiche une ligne différente. OUTPUT peut réunir plusieurs morceaux de texte et plusieurs valeurs avec des virgules.
7. Compte à rebours avec une boucle WHILE
Compter à rebours de 5 à 1, puis afficher un message final.
DECLARE count : INTEGER
count ← 5
WHILE count > 0 DO
OUTPUT count
count ← count - 1
ENDWHILE
OUTPUT "Liftoff!"5
4
3
2
1
Liftoff!Une boucle WHILE vérifie sa condition avant chaque tour et s'arrête dès que la condition est fausse. Ici, la condition est count > 0, et le corps diminue count de un à chaque fois. Sans la ligne qui le diminue, la boucle ne s'arrête jamais. Utilisez WHILE quand vous ne savez pas à l'avance combien de tours il faudra.
8. Trouver le plus grand nombre d'un tableau
Trouver la plus grande valeur dans une liste de six nombres.
DECLARE nums : ARRAY[1:6] OF INTEGER
DECLARE i : INTEGER
DECLARE largest : INTEGER
nums[1] ← 14
nums[2] ← 3
nums[3] ← 27
nums[4] ← 9
nums[5] ← 21
nums[6] ← 6
largest ← nums[1]
FOR i ← 2 TO 6
IF nums[i] > largest THEN
largest ← nums[i]
ENDIF
NEXT i
OUTPUT "The largest number is ", largestThe largest number is 27ARRAY[1:6] déclare six cases numérotées de 1 à 6, car les tableaux Cambridge commencent en général à 1. Le programme suppose que le premier élément est le plus grand, puis le compare à chacun des autres et garde le plus grand. Après un seul parcours du tableau, largest contient la réponse.
9. Calculer une moyenne
Trouver la moyenne de quatre notes d'examen.
DECLARE marks : ARRAY[1:4] OF INTEGER
DECLARE i : INTEGER
DECLARE total : INTEGER
marks[1] ← 70
marks[2] ← 85
marks[3] ← 64
marks[4] ← 91
total ← 0
FOR i ← 1 TO 4
total ← total + marks[i]
NEXT i
OUTPUT "Average mark: ", total / 4Average mark: 77.5La boucle ajoute chaque élément du tableau à total, puis le programme divise par le nombre de notes. L'opérateur / donne un résultat décimal, c'est pourquoi la sortie vaut 77.5. Utilisez plutôt DIV si vous voulez une division entière.
10. Recherche linéaire
Trouver la position du prénom Dara dans une liste de prénoms.
DECLARE names : ARRAY[1:5] OF STRING
DECLARE i : INTEGER
DECLARE found : BOOLEAN
names[1] ← "Ana"
names[2] ← "Ben"
names[3] ← "Chen"
names[4] ← "Dara"
names[5] ← "Eli"
found ← FALSE
i ← 1
WHILE i <= 5 AND found = FALSE DO
IF names[i] = "Dara" THEN
found ← TRUE
ELSE
i ← i + 1
ENDIF
ENDWHILE
IF found = TRUE THEN
OUTPUT "Dara is at position ", i
ELSE
OUTPUT "Not found"
ENDIFDara is at position 4La recherche linéaire examine les éléments un par un depuis le début. La condition du WHILE arrête la boucle quand le prénom est trouvé ou quand tous les éléments ont été examinés, et l'indicateur found enregistre lequel des deux cas s'est produit. Elle fonctionne sur des données non triées, mais sur une longue liste elle peut demander une comparaison par élément.
11. Tri à bulles
Trier cinq nombres dans l'ordre croissant.
DECLARE nums : ARRAY[1:5] OF INTEGER
DECLARE i : INTEGER
DECLARE j : INTEGER
DECLARE temp : INTEGER
nums[1] ← 5
nums[2] ← 1
nums[3] ← 4
nums[4] ← 2
nums[5] ← 8
FOR i ← 1 TO 4
FOR j ← 1 TO 5 - i
IF nums[j] > nums[j + 1] THEN
temp ← nums[j]
nums[j] ← nums[j + 1]
nums[j + 1] ← temp
ENDIF
NEXT j
NEXT i
FOR i ← 1 TO 5
OUTPUT nums[i]
NEXT i1
2
4
5
8Le tri à bulles compare chaque paire de voisins et les échange quand ils sont dans le mauvais ordre. Après chaque tour de la boucle externe, la plus grande valeur restante est arrivée à la fin, donc la boucle interne peut s'arrêter un élément plus tôt à chaque fois. L'échange a besoin d'une troisième variable, temp, pour garder une valeur pendant que l'autre est copiée.
12. Factorielle avec une fonction
Écrire une fonction qui renvoie la factorielle de n (n!), puis l'utiliser pour calculer 5!.
FUNCTION Factorial(n : INTEGER) RETURNS INTEGER
DECLARE result : INTEGER
DECLARE i : INTEGER
result ← 1
FOR i ← 2 TO n
result ← result * i
NEXT i
RETURN result
ENDFUNCTION
OUTPUT "5! = ", Factorial(5)5! = 120Une FUNCTION reçoit des paramètres, fait son travail et renvoie une valeur avec RETURN ; son en-tête indique le type renvoyé. Les variables déclarées à l'intérieur n'existent que pendant son exécution. 5! vaut 5 × 4 × 3 × 2 × 1, soit 120.
13. Compter les voyelles d'un mot
Compter combien de voyelles contient le mot PSEUDOCODE.
DECLARE word : STRING
DECLARE letter : CHAR
DECLARE vowels : INTEGER
DECLARE i : INTEGER
word ← "PSEUDOCODE"
vowels ← 0
FOR i ← 1 TO LENGTH(word)
letter ← SUBSTRING(word, i, 1)
IF letter = 'A' OR letter = 'E' OR letter = 'I' OR letter = 'O' OR letter = 'U' THEN
vowels ← vowels + 1
ENDIF
NEXT i
OUTPUT word, " has ", vowels, " vowels"PSEUDOCODE has 5 vowelsLENGTH donne le nombre de caractères d'une chaîne, et SUBSTRING(word, i, 1) extrait un caractère à partir de la position i. La boucle parcourt chaque caractère et ajoute un au compteur chaque fois qu'il s'agit de A, E, I, O ou U.
14. FizzBuzz
Afficher les nombres de 1 à 15, mais afficher Fizz pour les multiples de 3, Buzz pour les multiples de 5 et FizzBuzz pour les multiples des deux.
DECLARE i : INTEGER
FOR i ← 1 TO 15
IF i MOD 15 = 0 THEN
OUTPUT "FizzBuzz"
ELSE
IF i MOD 3 = 0 THEN
OUTPUT "Fizz"
ELSE
IF i MOD 5 = 0 THEN
OUTPUT "Buzz"
ELSE
OUTPUT i
ENDIF
ENDIF
ENDIF
NEXT i1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzzL'ordre des tests compte. 15 est un multiple de 3 et de 5, donc le test pour 15 doit venir en premier ; sinon le programme afficherait Fizz et n'atteindrait jamais FizzBuzz. C'est un échauffement classique en entretien, justement parce qu'il teste ce type de raisonnement.
15. Tentatives de mot de passe avec REPEAT UNTIL
Essayer jusqu'à trois mots de passe à tour de rôle et accorder l'accès si l'un d'eux est correct.
DECLARE attempts : ARRAY[1:3] OF STRING
DECLARE tries : INTEGER
DECLARE guess : STRING
attempts[1] ← "hunter1"
attempts[2] ← "letmein"
attempts[3] ← "open sesame"
tries ← 0
REPEAT
tries ← tries + 1
guess ← attempts[tries]
OUTPUT "Try ", tries, ": ", guess
UNTIL guess = "open sesame" OR tries = 3
IF guess = "open sesame" THEN
OUTPUT "Access granted"
ELSE
OUTPUT "Locked out"
ENDIFTry 1: hunter1
Try 2: letmein
Try 3: open sesame
Access grantedUne boucle REPEAT ... UNTIL vérifie sa condition à la fin, donc le corps s'exécute toujours au moins une fois. Elle s'arrête quand le mot de passe correspond ou après le troisième essai. Les essais viennent d'un tableau pour que l'exemple s'exécute sans rien taper ; dans une copie d'examen, vous liriez en général chacun avec INPUT.
FAQ sur les exemples de pseudocode
Quel est un exemple de pseudocode ?
Un exemple court détermine si un examen est réussi : IF score >= 50 THEN OUTPUT "Pass" ELSE OUTPUT "Fail" ENDIF. Il se lit presque comme de l'anglais mais suit des règles fixes, ce qui permet de le traduire ligne par ligne en Python, en Java ou dans n'importe quel autre langage. Les 15 programmes de cette page vont d'une seule ligne jusqu'à la recherche et au tri.
Comment écrire du pseudocode ?
Définissez ce que le programme doit faire, puis écrivez les étapes dans l'ordre avec un petit ensemble de mots-clés : DECLARE pour les variables, ← pour affecter, IF pour les décisions, FOR ou WHILE pour la répétition et OUTPUT pour les résultats. Indentez le corps de chaque bloc, fermez-le avec son mot-clé de fin et gardez une seule action par ligne.
Le pseudocode est-il le même dans tous les examens ?
Non. Cambridge (IGCSE et A-Level) utilise DECLARE et la flèche ←, AQA utilise ← sans déclarations, l'Exam Reference Language d'OCR ressemble à Python, et Edexcel écrit SET ... TO. Les exemples de cette page suivent Cambridge ; l'éditeur de pseudocode passe d'un style à l'autre parmi les quatre.
Peut-on exécuter du pseudocode ?
Oui, sur cette page. Le pseudocode n'est pas un vrai langage de programmation, il n'a donc pas de compilateur officiel, mais l'éditeur de cette page exécute le pseudocode Cambridge dans votre navigateur, affiche la sortie et le parcourt ligne par ligne. Cliquez sur Exécutez-le dans l'éditeur sous n'importe quel exemple.
Quelle est la différence entre le pseudocode et un organigramme ?
Les deux décrivent un algorithme avant qu'il soit codé. Un organigramme dessine les étapes sous forme de cases et de flèches, ce qui convient aux processus courts avec peu de décisions. Le pseudocode les écrit sous forme de texte structuré, ce qui reste lisible pour des programmes plus longs et se traduit plus directement en vrai code.
Faut-il déclarer les variables en pseudocode ?
En pseudocode Cambridge, oui : les barèmes de correction attendent DECLARE name : TYPE avant qu'une variable soit utilisée. D'autres styles, comme celui d'AQA, se passent de déclarations. Déclarer une variable indique aussi au lecteur quel type de valeur elle contient.