Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 121 minDébutant

C'est quoi un algorithme ? Pseudo-code et Python

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • définir un algorithme et le distinguer d'un programme ;
  • lire et écrire un pseudo-code avec les conventions des sujets ;
  • reconnaître les trois structures de base : séquence, condition, boucle ;
  • installer Python et lancer ton premier programme ;
  • passer d'un énoncé à un algorithme avec une méthode en étapes.

5 exercices corrigés1 schéma

Un algorithme est une suite finie d'instructions précises qui, à partir de données d'entrée, produit un résultat en un nombre fini d'étapes. Ce chapitre explique ce qui distingue un algorithme d'un programme, comment l'écrire en pseudo-code avec les conventions de ce cours, et comment le traduire en Python pour l'exécuter sur ta machine.

La définition, mot par mot

Tu suis des algorithmes tous les jours sans les appeler ainsi : une recette de cuisine, l'itinéraire donné par ton GPS, la procédure pour réinitialiser un mot de passe. Un algorithme informatique a les mêmes ingrédients, avec une exigence de plus : il doit pouvoir être exécuté par quelqu'un (ou quelque chose) qui ne réfléchit pas. Une machine ne devine rien.

PropriétéCe qu'elle veut direContre-exemple
FinitudeL'algorithme s'arrête après un nombre fini d'étapes« Tant que le café est chaud, attendre » : rien ne garantit la fin si personne ne mesure la température
PrécisionChaque instruction a un seul sens possible« Ajouter un peu de sel » : combien ?
EntréesLes données dont il a besoin, fournies au départCalculer une moyenne sans dire de quelles notes
SortiesAu moins un résultat, en lien avec les entréesUn calcul dont le résultat n'est ni affiché ni renvoyé
EffectivitéChaque étape est faisable avec les moyens disponibles« Choisir le meilleur mot de passe possible »

Le mot vient du nom d'Al-Khwârizmî, mathématicien persan du IXe siècle dont les traités ont fait connaître en Europe le calcul avec les chiffres indo-arabes. L'algorithme le plus célèbre est plus ancien encore : celui d'Euclide, qui calcule le PGCD de deux entiers (chapitre 11).

Algorithme ou programme ?

Les deux mots ne sont pas synonymes. L'algorithme est la méthode, indépendante de tout langage. Le programme est cette méthode traduite dans un langage que la machine sait exécuter.

AlgorithmeProgramme
C'est quoiLa méthode de résolutionLa méthode traduite dans un langage
Écrit enPseudo-code, organigramme, phrases numérotéesPython, C#, JavaScript, PHP…
Exécuté parToi, à la main, sur papierLa machine
Erreurs possiblesErreurs de logiqueErreurs de logique et erreurs de syntaxe
Exemple« Parcourir les notes et garder la plus grande »if note > maxi: maxi = note

Un même algorithme se programme dans n'importe quel langage : la syntaxe change, la logique reste. C'est pour cela que l'algorithmique est la base commune de toutes les options du BTS SIO : la boucle que tu écris en Python en première année est la même que celle que tu écriras en C# ou en PHP en SLAM, ou dans un script Bash ou PowerShell en SISR.

énoncé en français1. Problème« afficher lamoyenne dedeux notes »pseudo-code2. Algorithmemoyenne ←(note1 + note2) / 2Python3. Programmemoyenne =(note1 + note2) / 2jeu d'essai4. Exécution12 et 15donnent 13.5un test échoue : on corrige l'algorithme
Du problème au programme : analyser, écrire l'algorithme, le traduire, le tester, et revenir en arrière si un test échoue

Pourquoi ne pas coder directement ?

Sur un exercice de trois lignes, tu peux écrire directement le Python. Dès que le problème grossit, écrire l'algorithme d'abord t'évite trois pièges.

  • Mélanger deux difficultés. Trouver la bonne logique et respecter une syntaxe sont deux problèmes différents. Les traiter l'un après l'autre est plus simple que les deux à la fois.
  • Coder à l'aveugle. Sans plan, tu modifies le code au hasard jusqu'à ce que « ça marche » sur l'exemple, puis ça casse sur le suivant.
  • Ne pas pouvoir expliquer. À l'épreuve d'algorithmique de l'E3, une partie de la préparation se fait sur table, sans machine, et la commission peut examiner cette trace écrite (chapitre 13). Il faut savoir écrire un algorithme sur papier.

Le pseudo-code et ses conventions

Le pseudo-code est une façon d'écrire un algorithme en français structuré, assez rigoureux pour être traduit sans ambiguïté, sans les contraintes de syntaxe d'un vrai langage. Il n'existe pas de norme officielle : chaque manuel, chaque professeur a ses habitudes, et le référentiel du BTS SIO précise qu'aucun langage ni formalisme n'est imposé pour écrire les algorithmes. Ce qui compte, c'est d'être cohérent du début à la fin de ta copie.

Le programme de mathématiques du BTS donne tout de même des recommandations, que ce cours applique :

  • une représentation textuelle indentée, avec des indicateurs de début et de fin explicites (Début/Fin, FinSi, FinPour) ;
  • un en-tête avec le nom de l'algorithme, son rôle, ses données d'entrée et de sortie ;
  • des commentaires qui précisent le rôle des variables ou la démarche.

Voici la structure d'un algorithme complet dans les conventions du cours :

text
Algorithme MoyenneDeuxNotes
// Rôle : calculer et afficher la moyenne de deux notes
// Entrées : note1, note2 (réels, saisis au clavier)
// Sortie : la moyenne, affichée à l'écran
Variables
    note1, note2, moyenne : réel
Début
    Afficher("Première note ?")
    Saisir(note1)
    Afficher("Deuxième note ?")
    Saisir(note2)
    moyenne ← (note1 + note2) / 2
    Afficher("Moyenne : ", moyenne)
Fin

Un algorithme se lit de haut en bas. L'en-tête dit quoi ; la partie Variables déclare les cases mémoire et leur type ; le bloc Début … Fin dit comment. La flèche ← est l'affectation : « ranger dans moyenne le résultat du calcul » (chapitre 2).

Le tableau ci-dessous résume le vocabulaire utilisé dans tout le cours, avec sa traduction en Python. Tu le retrouveras complété dans l'aide-mémoire du chapitre 13.

Pseudo-codeSensPython
x ← 5Affectation : ranger 5 dans xx = 5
0,20Nombre décimal, avec une virgule0.20, avec un point
Saisir(x)Lire une valeur au clavierx = int(input()) (ou float, ou rien pour une chaîne)
Afficher("Total : ", x)Écrire à l'écranprint("Total :", x)
=, ≠, <, ≤, >, ≥Comparaisons==, !=, <, <=, >, >=
ET, OU, NONOpérateurs logiquesand, or, not
a DIV b, a MOD bQuotient et reste de la division entièrea // b, a % b
Si … Alors … Sinon … FinSiAlternativeif …: / else:
Pour i de 0 à n - 1 Faire … FinPourBoucle à nombre de tours connufor i in range(n):
TantQue … Faire … FinTantQueBoucle conditionnellewhile …:
Fonction f(x : entier) : réel … Retourner r … FinFonctionFonctiondef f(x): … return r
t[i]Case d'indice i d'un tableaut[i]
// commentaireCommentaire# commentaire

Les trois structures de base

En 1966, Corrado Böhm et Giuseppe Jacopini ont montré que tout algorithme peut s'écrire avec seulement trois façons d'enchaîner les instructions. Quand un algorithme te paraît énorme, cherche ces trois briques : il se démonte tout seul.

StructureRôlePseudo-codeChapitre
SéquenceExécuter des instructions l'une après l'autreune instruction par ligne2
AlternativeChoisir un chemin selon une conditionSi … Alors … Sinon … FinSi3
ItérationRépéter un blocPour, TantQue, Répéter4

Les fonctions (chapitre 6) n'ajoutent pas de puissance : elles servent à découper un gros algorithme en morceaux qu'on nomme, qu'on teste et qu'on réutilise.

On représente parfois un algorithme par un organigramme (ou logigramme) : des rectangles pour les actions, des losanges pour les conditions, des parallélogrammes pour les entrées et sorties, des flèches pour l'ordre. Il aide à visualiser une boucle ou un enchaînement de conditions (chapitre 4), mais devient illisible dès que l'algorithme dépasse une quinzaine d'étapes. À l'examen, préfère le pseudo-code.

Pourquoi Python ?

Le référentiel du BTS SIO demande qu'un langage de haut niveau soit utilisé régulièrement en mathématiques pour l'informatique, et précise que Python est recommandé sans être imposé : il est simple, libre et largement enseigné. Si ton établissement en choisit un autre, il doit être accepté par le centre d'examen. Ce cours donne chaque algorithme en pseudo-code puis en Python.

Python a deux particularités à connaître dès maintenant.

  • L'indentation fait partie de la syntaxe. Il n'y a ni FinSi ni accolades : un bloc est l'ensemble des lignes décalées de la même quantité (4 espaces par convention) sous une ligne terminée par :. Une indentation fausse provoque une IndentationError, ou pire, un programme qui fait autre chose que prévu.
  • Les variables ne se déclarent pas. Une variable naît à sa première affectation et prend le type de la valeur qu'on y range. En pseudo-code, tu déclares quand même tes variables : c'est là que tu réfléchis à leur type.

Installer Python et ton éditeur

Installe la dernière version de Python 3 proposée sur python.org. Sous Linux, Python 3 est en général déjà présent (tape python3 --version dans un terminal). Ensuite, choisis un éditeur.

OutilPour quiPoint fort
IDLETout le monde, installé avec PythonUne console pour tester une ligne, un éditeur pour les programmes (F5 pour exécuter)
ThonnyDébutantsLivré avec son propre Python ; son débogueur montre les variables pas à pas, idéal pour vérifier une trace
VS Code + extension PythonCeux qui codent déjàLe même éditeur que pour le web ou le C# ; débogueur complet
Python Tutor (en ligne)Pour comprendreDessine la mémoire à chaque instruction : variables, listes, appels de fonctions

Le jour de l'épreuve, tu travailles sur le poste fourni par le centre d'examen. Tu peux y consulter l'aide syntaxique du langage et les ressources documentaires électroniques installées dans le centre, mais aucun service accessible sur internet : ni recherche web, ni assistant en ligne, et tes connexions peuvent être contrôlées. Entraîne-toi donc avec un outil simple, et apprends à te servir de help() dans la console Python : help(str.find) affiche la documentation de la méthode find.

Ton premier programme

Voici la traduction en Python de l'algorithme MoyenneDeuxNotes. Chaque ligne du bloc Début … Fin devient une ligne de Python.

python
# Rôle : calculer et afficher la moyenne de deux notes
# Entrées : note1, note2 (réels, saisis au clavier)
# Sortie : la moyenne, affichée à l'écran
note1 = float(input("Première note ? "))
note2 = float(input("Deuxième note ? "))
moyenne = (note1 + note2) / 2
print("Moyenne :", moyenne)

Avec les notes 12 et 15, l'exécution donne :

text
Première note ? 12
Deuxième note ? 15
Moyenne : 13.5

Trois remarques sur cette traduction :

  • input renvoie toujours une chaîne de caractères. Sans float(...), note1 + note2 collerait les deux textes : "12" + "15" donne "1215". La conversion est détaillée au chapitre 2.
  • print sépare ses arguments par une espace ; Python affiche les réels avec un point décimal (13.5).
  • Les commentaires de l'en-tête deviennent des lignes #. Sur une fonction, on les met dans une docstring (chapitre 6).

De l'énoncé à l'algorithme : la méthode

Face à un énoncé, ne te jette pas sur le code. Quatre questions, dans l'ordre :

  1. Quelles sont les entrées ? Les données fournies, saisies ou passées en paramètre, avec leur type.
  2. Quelle est la sortie attendue ? Ce qu'on affiche ou renvoie, sous quelle forme.
  3. Quel traitement relie les deux ? Les étapes, puis les structures (alternative, boucle) dont tu as besoin.
  4. Avec quels exemples vas-tu tester ? Un cas ordinaire, un cas limite, un cas d'erreur, avec le résultat attendu calculé à la main avant d'exécuter (chapitre 5).

Appliquons la méthode à un énoncé simple : « Un technicien saisit le prix hors taxe d'un matériel. Le programme affiche le prix TTC, avec une TVA de 20 %. »

  1. Entrée : le prix HT, un réel positif.
  2. Sortie : le prix TTC, affiché.
  3. Traitement : ttc ← ht × 1,2. Une séquence suffit.
  4. Tests : 100 € HT donnent 120 € TTC ; 0 donne 0 ; 19,99 donne 23,988, qu'on arrondit à 23,99 pour l'affichage.
text
Algorithme PrixTTC
// Rôle : calculer le prix TTC d'un matériel (TVA 20 %)
// Entrée : ht (réel), le prix hors taxe
// Sortie : le prix TTC, affiché
Constante
    TAUX_TVA ← 0,20
Variables
    ht, ttc : réel
Début
    Afficher("Prix HT ?")
    Saisir(ht)
    ttc ← ht × (1 + TAUX_TVA)
    Afficher("Prix TTC : ", ttc)
Fin
python
TAUX_TVA = 0.20

ht = float(input("Prix HT ? "))
ttc = ht * (1 + TAUX_TVA)
print("Prix TTC :", round(ttc, 2))

Le taux est une constante : une valeur nommée qui ne change pas pendant l'exécution. Si le taux change, tu modifies une seule ligne. Python n'a pas de vraies constantes ; par convention, un nom en MAJUSCULES signale qu'il ne faut pas modifier la variable.

Où l'algorithmique te sert au BTS SIO

OùCe qu'on te demande
E3, situation A du CCF (algorithmique appliquée)Écrire sur table puis mettre en œuvre sur machine un ou plusieurs algorithmes, puis les présenter et répondre à un entretien (chapitre 13)
E3 en forme ponctuelle (candidats hors CCF)Un écrit de 2 heures dont un exercice évalue la capacité « programmer »
Option SLAM (E6, E7)Écrire, lire, corriger et tester du code en C#, PHP ou JavaScript : les boucles, les fonctions et les tableaux sont partout
Option SISRÉcrire des scripts d'administration en Bash ou en PowerShell : variables, conditions, boucles sur des fichiers ou des comptes
Toutes les épreuves oralesExpliquer clairement ce que fait un traitement, ce qui suppose de le comprendre ligne à ligne

Le programme d'algorithmique appliquée cite cinq compétences, que ce cours travaille toutes : comprendre un algorithme et expliquer ce qu'il fait, le modifier pour obtenir un résultat différent, en concevoir un, le transcrire dans un langage, et s'interroger sur son efficacité.

Exercices

Exercice 1 sur 5 Algorithme ou pas ? Réussi À revoir

Pour chaque consigne, dis si c'est un algorithme. Sinon, quelle propriété manque-t-il ?

  1. « Additionner 7 et 5. »
  2. « Lire un entier n, puis afficher n × 2. »
  3. « Tant que le serveur ne répond pas, attendre. »
  4. « Choisir un bon nom de variable. »
  5. « Lire un prix et afficher le prix avec une petite remise. »
Voir la réponseMasquer la réponse de l'exercice 1
  1. Ce n'est pas un algorithme au sens du cours : il n'y a pas d'entrée, c'est un calcul isolé (son résultat est toujours 12).
  2. Oui : une entrée (n), un traitement précis, une sortie, et une fin.
  3. Pas de finitude garantie : si le serveur ne répond jamais, l'algorithme ne s'arrête pas. Il faut une limite, par exemple « au plus 5 essais ».
  4. Pas de précision ni d'effectivité : « bon » n'a pas de définition qu'une machine puisse appliquer.
  5. Pas de précision : « petite remise » ne dit pas combien. Il faut un taux, par exemple 5 %.

Tu avais trouvé ?

Exercice 2 sur 5 Entrées et sorties Réussi À revoir

Pour chaque énoncé, donne les entrées (avec leur type) et la sortie.

  1. Convertir une durée en minutes en heures et minutes (135 minutes donnent 2 h 15).
  2. Dire si une adresse e-mail saisie contient le caractère @.
  3. Calculer le montant total d'une commande à partir de la quantité et du prix unitaire.
Voir la réponseMasquer la réponse de l'exercice 2
  1. Entrée : une durée en minutes (entier positif). Sorties : les heures (entier) et les minutes restantes (entier), qu'on obtient avec DIV 60 et MOD 60.
  2. Entrée : l'adresse (chaîne). Sortie : un booléen, vrai si @ est présent (ou un message « valide » / « invalide »).
  3. Entrées : la quantité (entier) et le prix unitaire (réel). Sortie : le montant (réel), quantité × prix.

Tu avais trouvé ?

Exercice 3 sur 5 Traduire en Python Réussi À revoir

Traduis cet algorithme en Python, puis donne ce qu'il affiche si l'on saisit 135.

text
Algorithme Duree
// Rôle : convertir une durée en heures et minutes
Variables
    total, h, m : entier
Début
    Afficher("Durée en minutes ?")
    Saisir(total)
    h ← total DIV 60
    m ← total MOD 60
    Afficher(h, " h ", m, " min")
Fin
Voir la réponseMasquer la réponse de l'exercice 3
python
total = int(input("Durée en minutes ? "))
h = total // 60
m = total % 60
print(h, "h", m, "min")

Avec 135, 135 // 60 vaut 2 et 135 % 60 vaut 15 : le programme affiche 2 h 15 min. La saisie est convertie avec int et non float, car DIV et MOD portent sur des entiers.

Tu avais trouvé ?

Exercice 4 sur 5 Trouver l'erreur Réussi À revoir

Un étudiant a traduit PrixTTC ainsi. Il saisit 100 et obtient une erreur. Pourquoi, et comment corriger ?

python
ht = input("Prix HT ? ")
ttc = ht * 1.2
print("Prix TTC :", ttc)
Voir la réponseMasquer la réponse de l'exercice 4

input renvoie la chaîne "100". Multiplier une chaîne par un réel est interdit : Python lève TypeError: can't multiply sequence by non-int of type 'float'. Il faut convertir la saisie : ht = float(input("Prix HT ? ")). Le programme affiche alors Prix TTC : 120.0.

Curiosité : "100" * 2 ne provoque pas d'erreur, il donne "100100" (la chaîne répétée deux fois). C'est encore plus trompeur, car le programme tourne et affiche n'importe quoi.

Tu avais trouvé ?

Exercice 5 sur 5 Écrire un premier algorithme Réussi À revoir

Une imprimante réseau facture 0,05 € la page en noir et 0,15 € la page en couleur. Écris l'algorithme (avec son en-tête) qui lit les deux nombres de pages et affiche le coût total, puis traduis-le en Python. Quel coût pour 120 pages noires et 30 couleurs ?

Voir la réponseMasquer la réponse de l'exercice 5
text
Algorithme CoutImpression
// Rôle : calculer le coût d'une impression
// Entrées : noir, couleur (entiers), les nombres de pages
// Sortie : le coût total en euros, affiché
Constantes
    PRIX_NOIR ← 0,05
    PRIX_COULEUR ← 0,15
Variables
    noir, couleur : entier
    cout : réel
Début
    Saisir(noir)
    Saisir(couleur)
    cout ← noir × PRIX_NOIR + couleur × PRIX_COULEUR
    Afficher("Coût : ", cout, " €")
Fin
python
PRIX_NOIR = 0.05
PRIX_COULEUR = 0.15

noir = int(input("Pages en noir ? "))
couleur = int(input("Pages en couleur ? "))
cout = noir * PRIX_NOIR + couleur * PRIX_COULEUR
print("Coût :", round(cout, 2), "€")

120 × 0,05 + 30 × 0,15 = 6 + 4,5 = 10,50 €. Python affiche Coût : 10.5 € : round garde au plus deux décimales et n'écrit pas le zéro final. Pour forcer deux décimales, on formate la valeur (chapitre 9).

Tu avais trouvé ?

Chapitre terminé !

Fais les 5 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Variables, types et affectationRevoir le sommaire du cours