Corrigé du sujet de bac ES Pondichery 2015 (algorithme)

lundi 20 avril 2015
par  Alain BUSSER

Le sujet est ici. L’exercice 2 « obli/L » portait sur une suite arithmético-géométrique :

Un apiculteur souhaite étendre son activité de production de miel à une nouvelle région. En juillet 2014, il achète 300 colonies d’abeilles qu’il installe dans cette région.
Après renseignements pris auprès des services spécialisés, il s’attend à perdre 8% des colonies durant l’hiver. Pour maintenir son activité et la développer, il a prévu d’installer 50 nouvelles colonies chaque printemps.

Une nouveauté de ce sujet est qu’il n’est plus nécessaire, pour comprendre l’algorithme, de savoir que la perte de 8% correspond à une multiplication par 0,92 puisque le calcul, tel que décrit dans l’algorithme, est

C prend la valeur C − C×0,08 + 50

Mais Sophus sait soustraire un pourcentage donc le problème ne se pose pas avec Sophus. L’algorithme de l’énoncé demande de boucler avec cette condition :

Tant que C < 400

Puisque C désigne visiblement le nombre de colonies, on en déduit que le but de cet algorithme est de savoir au bout de combien d’années l’apiculteur aura dépassé les 400 colonies. Alors, autant faire cette traduction sophusienne :

Nom dans le sujet Nom dans Sophus
n années
C colonies

L’algorithme se traduit alors ainsi en Sophus [1] :

  1. colonies devient nouvelle Variable 300
  2. années devient nouvelle Variable 0
  3. Tant que colonies.valeur < 400
  4.     diminuer colonies de 8 pourcents
  5.     augmenter colonies de 50
  6.     incrémenter années
  7. montrer années

Télécharger

Mais l’exercice était plus d’algorithmique « papier-crayon » que de programmation, alors il y avait un tableau à remplir, dans lequel on devait donner successivement les valeurs des deux variables ainsi que le test de comparaison avec 400. Pour constituer un tel tableau dans Sophus, on va effectuer les opérations suivantes :

  • créer des listes, sous la forme de crochets vides (ce ne sont pas des variables Sophus, juste des tableaux de JavaScript) [2] ;
  • à chaque passage dans la boucle, empiler dans ces tableaux les valeurs courantes des variables Sophus [3]. Par exemple le nombre actuel de colonies est colonies.valeur et non colonies [4] ;
  • Tout à la fin, on affiche (« montrer ») toute la pile d’un coup, ce qui évite de multiplier les affichages.

Voici les noms des tableaux :

Nom du tableau Signification
test valeurs de vérité de la proposition "C<400"
valeurDeC nombre actuel de colonies
valeurDeN temps écoulé, en années

Le script qui donne les trois lignes du tableau :

  1. test devient [ ]
  2. valeurDeC devient [ ]
  3. valeurDeN devient [ ]
  4. colonies devient nouvelle Variable 300
  5. années devient nouvelle Variable 0
  6. Tant que colonies.valeur < 400
  7.     diminuer colonies de 8 pourcents
  8.     augmenter colonies de 50
  9.     incrémenter années
  10.     test.empiler colonies.valeur<400
  11.     valeurDeC.empiler colonies.valeur
  12.     valeurDeN.empiler années.valeur
  13. montrer test
  14. montrer valeurDeC
  15. montrer valeurDeN

Télécharger

Et le tableau obtenu [5] :

Il y a moins de 400 colonies c’est vrai c’est vrai c’est vrai c’est vrai c’est faux
nombre de colonies 326 349,92 371,926 392,172 410,799
années passées 1 2 3 4 5

Représentation graphique de la suite

Sophus n’a pas de capacité graphique mais alcoffeethmique, si ; voici la représentation graphique de la suite en question :

Le script CoffeeScript pour avoir ce graphique

  1. c=300
  2. suite=[c]
  3. for n in [1..50]
  4.     c*=.92
  5.     c+=50
  6.     suite.push c
  7. dessineSuite suite, 50, 300, 700, 2, "red"

Télécharger

01020304050300400500600700


Question 3

L’apiculteur espère doubler son nombre initial de colonies. Il voudrait savoir combien d’années il lui faudra pour atteindre cet objectif.

Pour répondre à cette question, il suffit de changer la valeur du seuil dans l’algorithme du début. Au cas où on aurait du mal à savoir quel est le double de 300, on peut tenter cet algorithme :

  1. seuil = nouvelle Variable 300
  2. doubler seuil
  3. montrer seuil

Télécharger

On sait maintenant comment modifier l’algorithme du début :

  1. colonies devient nouvelle Variable 300
  2. années devient nouvelle Variable 0
  3. Tant que colonies.valeur < 600
  4.     diminuer colonies de 8 pourcents
  5.     augmenter colonies de 50
  6.     incrémenter années
  7. montrer années

Télécharger


interpréteur en ligne

Pour tester les scripts, les copier-coller ci-dessous puis expérimenter avec :

sophus

Interpréteur Sophus

Sortie en français


[1colonies n’est pas un nombre mais une variable Sophus. Alors le test échoue si on cherche à comparer colonies avec 400. On doit donc comparer colonies.valeur avec 400.

[2on peut comparer ces tableaux à des piles de serviettes à la cantine, sauf qu’ici ce ne sont pas des serviettes mais des nombres ou des propositions logiques

[3comme on pose une serviette sur le tas de serviettes

[4qui n’est pas un nombre mais une variable dont la valeur est un nombre : Penser à l’image des tiroirs qui ne sont pas égaux à leur contenu...

[5On remarque que la proposition « il y a moins de 400 colonies » n’a pas la même valeur de vérité au cours du temps : Il s’agit donc de logique temporelle.


Documents joints

PDF - 114.7 ko

Commentaires