aboCFF

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#

structures

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 nbrpersonnes puis pour chaque personne son type d’usage (E/M/G) profile

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 : consototalejour

Traitement

calcul de la consommation mensuelle : consomensuelle

Traitement

calcul de la consommation moyenne par personne et par jour : moyenneparpersonne

Algorithme#

  1. Entrées

    • Demander à l’utilisateur le nombre de personnes dans le ménage : nbrpersonnes.

  2. Initialisations

    • Mettre la consommation totale journalière à 0: consototalejour = 0

    • Préparer un itérateur i = 0 pour parcourir chaque personne.

  3. Boucle : traitement de chaque personne

    • Tant que i < nbrpersonnes faire :

      • Demander le profile de la personne numéro i (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.

  4. Calculs finaux

    • Calculer la consommation mensuelle (sur 30 jours) :consomensuelle = consototalejour * 30

    • Calculer la consommation moyenne par personne et par jour : moyenneparpersonne = consototalejour / nbrpersonnes

  5. Test final et sortie

    • Si moyenneparpersonne < 120 alors :

      • Afficher "Écoresponsable ! "

    • Sinon : -Afficher "Consommation élevée"

    • Afficher : "Consommation mensuelle totale :", consomensuelle," litres"

  6. Fin de l’algorithme

Algorigramme#

consommation

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.