Corrigé de l’algorithme du sujet bac STMG Pondichéry 2015

lundi 18 mai 2015
par  Alain BUSSER

Deux coureurs cyclistes, Ugo et Vivien, ont programmé un entraînement hebdomadaire afin de se préparer à une course qui aura lieu dans quelques mois. Leur objectif est de parcourir chacun une distance totale de 1500 km pendant leur période d’entraînement de 20 semaines.

Ugo commence son entraînement en parcourant 40 km la première semaine et prévoit d’augmenter cette distance de 5 km par semaine.

Vivien commence son entraînement en parcourant 30 km la première semaine et prévoit d’augmenter cette distance de 10% par semaine.

Le sujet porte donc sur l’étude comparative de deux suites, l’une arithmétique, l’autre géométrique, et la somme de leurs termes. Ces suites modélisent évidemment les distances parcourues par les cyclistes.

Partie A : l’entraînement d’Ugo

Comme la suite décrit les valeurs successives de la distance parcourue, il paraît naturel

  • de créer une variable (puisque la distance varie de semaine en semaine) ;
  • de lui donner le nom « distance » ;
  • de l’initialiser à 40.

Ce qui se fait avec cette instruction :

distance = nouvelle Variable 40

Voici la suite de l’énoncé :

Calculer les distances parcourues par Ugo au cours des deuxième et troisième semaines d’entraînement.

Alors on va boucler deux fois, ce qui se fait comme ceci :

distance = nouvelle Variable 40
2 fois faire

L’énoncé dit ce qu’il faut faire dans la boucle : « augmenter cette distance de 5 km par semaine » :

distance = nouvelle Variable 40
2 fois faire
    augmenter distance de 5
    montrer distance

Pour connaître les valeurs obtenues, il faut aller sur l’interpréteur (ou ci-dessous) et y écrire le script puis cliquer sur le bouton de test...

Pour savoir si les 1500 km désirés seront parcourus en 20 semaines, il faut créer une nouvelle variable appelée « total » et l’augmenter chaque semaine de la distance parcourue :

Voici le calcul de la somme des 20 premiers termes de u :

distance = nouvelle Variable 40
total = nouvelle Variable 0
20 fois faire
    augmenter distance de 5
    augmenter total de distance
montrer total

Pour savoir si la distance totale est supérieure à 1500, on peut le demander à Sophus. Mais il faut savoir que total n’est pas un nombre, mais une variable Sophus (qui contient le nombre voulu), alors si on veut un nombre il faut écrire non total mais total.valeur :

distance = nouvelle Variable 40
total = nouvelle Variable 0
20 fois faire
    augmenter distance de 5
    augmenter total de distance
montrer total.valeur >= 1500

Remarque : Après l’export de ce script il est bon de rajouter le mot « si » pour obtenir cet export :

distance = nouvelle variable initialisée à 40
total = nouvelle variable initialisée à 0
20 fois faire
augmenter distance de 5
augmenter total de distance
montrer si la valeur de total est supérieure ou égale à 1500

Partie B : l’entraînement de Vivien

Deux différences avec ce qui précède :

  1. la distance initiale est 30 ;
  2. l’augmentation n’est plus de 5 km mais de 10 pourcents :

Voici le script Sophus calculant la distance totale parcourue par Vivien :

distance = nouvelle Variable 30
total = nouvelle Variable 0
20 fois faire
        augmenter distance de 10 pourcents
        augmenter total de distance
montrer total

Partie C : comparaison des deux entraînements

1. Vivien est persuadé qu’il y aura une semaine où il parcourra une distance supérieure à celle parcourue par Ugo. Vivien a-t-il raison ?

Pour comparer les deux suites, on a besoin de deux variables différentes, l’une contenant la distance parcourue par Ugo et l’autre, la distance parcourue par Vivien. Bien entendu, on nomme respectivement u et v ces deux variables. On n’a plus qu’à afficher si la valeur de v est supérieure à celle de u :

u = nouvelle Variable 40
v = nouvelle Variable 30
10 fois faire
        augmenter u de 5 # km
        augmenter v de 10 pourcents
        montrer u.valeur > v.valeur

Seulement il faut de la patience. Alors pourquoi pas n’afficher la valeur de v que si celle-ci est supérieure à celle de u ? Ainsi

  • l’absence d’affichage signifie que v n’est jamais supérieur à u pendant les 20 semaines ;
  • la présence d’un affichage n’aura pas lieu trop souvent et l’algorithme sera vite testé :
u = nouvelle Variable 40
v = nouvelle Variable 30
10 fois faire
        augmenter u de 5 # km
        augmenter v de 10 pourcents
        Si u.valeur > v.valeur
            montrer v
2. À la fin de la 17e semaine, les deux cyclistes se blessent. Ils décident alors de réduire leur entraînement. Ils ne feront plus que 80 km chacun par semaine à partir de la 18e semaine.

Leur objectif sera-t-il atteint ?

Là, on boucle 17 fois « normalement » puis on fixe les deux variables à 80 pour les 3 derniers tours de boucle.

Apparemment Ugo a atteint son objectif :

distance = nouvelle Variable 40
total = nouvelle Variable 0
17 fois faire
    augmenter distance de 5
    augmenter total de distance
3 fois faire
    augmenter total de 80
montrer total

Quant à Vivien, pour savoir s’il a atteint le sien, il faut tester l’algorithme suivant :

distance = nouvelle Variable 30
total = nouvelle Variable 0
17 fois faire
    augmenter distance de 10 pourcents
    augmenter total de distance
3 fois faire
    augmenter total de 80
montrer total

Interpréteur en ligne

Pour essayer les scripts ci-dessus :

Interpréteur Sophus

Sortie en français

© IREM de La Réunion: Alain Busser, Florian Tobé 2014

Erreur d’exécution plugins/auto/sarkaspip/v4.1.0/noisettes/document/inc_images_jointes.html

Commentaires