
C2-STRAT-03 : Du langage naturel à l’algorithme#
Objectifs pédagogiques#
passer d’un problème énoncé dans un langage naturel (le français) à un algorithme complet formalisé par un algorigramme
identifier clairement les entreés/sorties, les traitements (instructions, opérations et affectations), les boucles, les tests
Mise en contexte#
Imaginez-vous la scène suivante : Vous êtes à la gare de Lausanne au guichet international. Devant vous, se trouve un groupe composé d’adultes et d’enfants, certains majeurs d’autres mineurs, certains des voyageurs ont un abonnement demi-tarif, d’autres n’en ont pas. Vous entendez qu’ils veulent acheter des billets de train pour toute la famille à destination de Venise en Italie.
Le guichetier demande l’âge de chaque personne. Pourquoi ?
Imaginez-vous maintenant la même scène mais devant le site web des CFF (l’application ne permet pas encore d’acheter des billets internationaux)
Quelle information(s) le site web doit-il connaître ?
Quelle décision(s) le site doit-il prendre ?
Question subsidiaire : quelle information le site connaît-il et qui est indépendant du nombre de voyageurs ?
Comment programmer ce site web ? Quel est son algorithme ?
Prix du billet (en 2025)#
Destination |
Voyageur |
Prix en 2ème classe |
Prix en 1ère classe |
|---|---|---|---|
Venezia Santa Lucia |
demi-tarif |
CHF 112 .– |
CHF 153 .– |
Venezia Santa Lucia |
- |
CHF 130 .– |
CHF 186 .– |
Venezia Santa Lucia |
moins de 16 ans |
CHF 38 .– |
CHF 81 .– |
Roma Termini |
demi-tarif |
CHF 151.30 .– |
CHF 217 .– |
Roma Termini |
- |
CHF 174.50 .– |
CHF 257.90 .– |
Roma Termini |
moins de 16 ans |
CHF 60 .– |
CHF 86 .– |
Résumé#
Concept algorithmique |
Dans cette situation |
|---|---|
Entrée |
le site a besoin de connaître la destination des voyageurs |
Entrée |
le site a besoin de connaître l’âge de chacun des voyageurs (majeurs ou mineurs) |
Entrée |
le site a besoin de savoir si les voyageurs ont des réductions (demi-tarif) |
Test/condition |
le prix du billet change en fonction de l’âge ET/OU des réductions ET de la destination |
Boucle |
le site traite chaque voyageur indépendemment |
Instruction |
la machine additionne le prix de chaque billet et l’accumule dans une variable prix TOTAL |
Sortie |
le site affiche le prix TOTAL à payer |
Rappel : les symboles d’un algorigramme#

Méthodologie#
Lire un énoncé en français,
Identifier les données d’entrée, les résultats attendus (sorties),
Repérer
les initialisations (quelles grandeurs on aura besoin dans l’algorithme)
les opérations de traitement (ce que l’algorithme va calculer, modifier, etc..)
les conditions et tests (les “aiguillages” dans la suite d’opérations)
les répétitions (lorsqu’on aura des opérations à mettre dans une boucle),
Traduire ces éléments dans le formalisme des algorigrammes
Exemple complet#
Suivons cette méthodologie sur un exemple complet
Problème#
En Suisse, la consommation moyenne d’eau par personne et par jour est d’environ 140 litres. On estime qu’une personne a une consommation : économe (notée E) si celle-ci est réduite au minimum de 20% par rapport aux 140 litres, standard (notée S) si comprise entre plus ou moins 20% des 140 litres et grande consommatrice (notée G) si elle dépasse de 20% les 140 litres par jour.
Une famille veut estimer sa consommation mensuelle, la consommation moyenne par personne et déterminer si elle est écoresponsable ou pas.
Identification des entrées et sorties#
concept algorithmique |
dans le contexte |
|---|---|
Entrées |
nombre de personnes |
Sortie |
total mensuel |
Sortie |
message personnalisé (si écoresponsable ou pas) |
Repérage des opérations, des boucles, des tests#
concept algorithmique |
dans le contexte |
|---|---|
Boucle |
pour chaque personne du ménage |
Test |
selon le type, appliquer un coefficient (0.8, 1.0 et 1.2) |
Traitement |
calcul de la consommation par personne |
Traitement |
calcul de la consommation totale par jour : |
Traitement |
calcul de la consommation mensuelle : |
Traitement |
calcul de la consommation moyenne par personne et par jour : |
Algorithme#
Entrées
Demander à l’utilisateur le nombre de personnes dans le ménage :
nbrpersonnes.
Initialisations
Mettre la consommation totale journalière à 0:
consototalejour = 0Préparer un itérateur
i = 0pour parcourir chaque personne.
Boucle : traitement de chaque personne
Tant que
i < nbrpersonnesfaire :Demander le
profilede la personne numéroi(saisir « E », « M » ou « G »).Si le profil est « E » (économe) alors :
Ajouter 112 à
consototalejour. (car 140 × 0.8 = 112 litres/jour)
Sinon, si le profil est « S » (standard) alors :
Ajouter 140 à
consototalejour
Sinon, si le profil est « G » (grand consommateur) alors :
Ajouter 168 à
consototalejour. (car 140 × 1.2 = 182 litres/jour)
Incrémenter l’itérateur :
i = i + 1.
Calculs finaux
Calculer la consommation mensuelle (sur 30 jours) :
consomensuelle = consototalejour * 30Calculer la consommation moyenne par personne et par jour :
moyenneparpersonne = consototalejour / nbrpersonnes
Test final et sortie
Si
moyenneparpersonne < 120alors :Afficher
"Écoresponsable ! "
Sinon : -Afficher
"Consommation élevée"Afficher :
"Consommation mensuelle totale :", consomensuelle," litres"
Fin de l’algorithme
Algorigramme#

Exercice 1 : Problème de l’alpiniste (simple)#
Problème : En montagne, la température diminue d’environ 0,65°C tous les 100 mètres de dénivelé.
Une randonneuse connaît la température du départ et la température mesurée au sommet.
Elle veut estimer l’altitude du sommet.
Exercice 2 : La saison de ski#
Une famille prévoit de skier plusieurs jours cet hiver.
Le prix d’un forfait journalier dépend de l’âge :
Enfant (moins de 16 ans) : 35 CHF
Jeune (16 à 24 ans) : 55 CHF
Adulte (25 ans et plus) : 75 CHF
De plus, la station offre une réduction de 10 % si on achète 5 forfaits ou plus (pour l’ensemble de la famille, cumulés).
Exercice 3 : La boulangerie numérique (plus compliqué)#
Une boulangerie online propose :
Pain : 3,50 CHF (3,00 CHF à partir de 5 unités, 2,50 CHF à partir de 10)
Croissant : 2,00 CHF
Pain au chocolat : 2,20 CHF
Le client compose son panier en saisissant un article à la fois :
Tape 1 pour ajouter un pain,
Tape 2 pour un croissant,
Tape 3 pour un pain au chocolat,
Tape 0 pour terminer.
À la fin, le programme affiche :
le nombre de pains, croissants, pains au chocolat,
le prix total, avec la remise sur les pains appliquée correctement. »*
Attention : la remise sur les pains ne s’applique qu’au moment du calcul final, pas à chaque achat.