
Présentation rapide de DGPad (en vidéo)
Dans cet article, on va programmer l'exercice d'algorithmique donné dans divers sujets du baccalauréat.
Jusqu'à peu, cet exercice était un serpent de mer qui tournait toujours autour du même type de suite définie par récurrence. Qu'en est-il du nouveau crû?
Par ailleurs, une nouvelle syntaxe était imposée pour l'écriture des algorithmes. La mission confiée aux rédacteurs de sujet de bac 2018 était la suivante:
Cette mission a-t-elle été remplie conformément aux desiderata de l'inspection générale? On se propose de le regarder ici, tout en montrant l'intérêt qu'offre l'exécution du pseudo-code (hérésie: exécuter du pseudo-code !) de CaRMetal.
Le chat par Philippe Geluck
On va programmer l'algorithme en exécutant directement son pseudo-code, ce qui est possible avec le langage de script de CaRMetal.
On peut ainsi se concentrer sur l'algorithme sans être distrait par les difficultés de son implémentation dans un langage moins naturel que le pseudo-code. Cette approche permet de réifier l'algorithme et de développer la pensée informatique.
Quelques remarques sur cette fonctionnalité de CaRMetal :
Lors de l'exécution :
Le script doit commencer par le mot «pseudo-code» pour que le script soit interprété comme du pseudo-code.
Les structures logiques et de boucle peuvent commencer par une majuscule (comme dans la plupart des sujets de BAC) ou pas (comme on le fait généralement dans CaRMetal pour les distinguer des instructions). La coloration syntaxique le confirme. On utilisera ici l'une ou l'autre de ces alternatives de syntaxe.
Le "fin de" boucle ou "fin de" structure logique est facultatif (c'est l'indexation qui indique la fin de bloc). On l'écrira ici systématiquement pour être au plus proche de la syntaxe utilisée dans les sujets du BAC.
Lors de la rédaction :
* Si le script commence par pseudo-code, on est en mode pseudo-code et l'assistant de script génère du pseudo-code (transformation automatique du texte "<-" en la fameuse flèche vers la gauche, et bien d'autres comportements du même genre).
* Si la case bleu-blanc-rouge est cochée, on est en mode en français et l'assistant de script génère du code en français.
Remarque : tous les scripts sont donnés en pièces-jointes, regroupés par série.
En série ST2S les concepteurs ont trouvé un moyen simple de respecter scrupuleusement les consignes de l'inspection générale: zéro algo = zéro défaut !
Achrome par Piero Manzoni
Au bac STMG on a vu un peu de tout.
Tout d'abord, à Pondichéry, il n'y avait pas d'algorithme à compléter ou à corriger mais un algorithme complet, à simuler. Mais avec un choix un peu étrange des noms de variables:
Certes, cela fait le lien avec la question sur la suite un, mais est-ce vraiment une bonne idée de mâcher ainsi le travail, au détriment d'un nommage plus éloquent? Il devient plus difficile de percevoir le lien entre l'algorithme et le problème initial, et l'effort de modélisation est escamoté.
On propose ici les deux versions, celle du bac et celle avec noms de variables explicites. Tout d'abord, celle avec noms de variables explicites:
Et si on préfère coller à la notation du bac, il suffit de remplacer toutes les occurences de trimestres par des n et toutes les occurences de millions_d_abonnements par des u:
On voit que le script montre peu de différences par rapport au sujet: La première ligne indiquant qu'il s'agit de pseudocode, les lignes 8 et 9 affichant un résultat (ce qui indique que ce pseudo-code est un programme) :
Le sujet Métropole - la Réunion donnait lui aussi un algorithme complet à interpréter (ou ici, exécuter), étrangement similaire au précédent, à ceci près que les variables étaient nommées en majuscules et que U désignait la valeur des encours des investissements socialement responsables (en plus, en millions d'euros) et N désignait le nombre d'années écoulées depuis 2014, ce qui constitue un défi pour la création d'une variable "parlante" et un argument imparable pour N et U.
Le sujet Antilles-Guyane donnait un algorithme très similaire à analyser, sauf que N et U n'avaient là aucune signification: N représente N et U représente U. Le nommage est donc parfait, c'est du grand art.
La trahison des images par René Magritte (1929)
Et en Polynésie, le sujet de STMG «s’intéresse à la consommation d’un véhicule roulant aux biocarburants en fonction de la vitesse de ce véhicule». Ladite consommation s'appelle f(x) puis y sans que soit précisé que x est la vitesse et f (ou y) la consommation (le concepteur du sujet aurait-il abusé d'un autre biocarburant ?). Le seul indice est donné par le mot «modélisation» et la donnée des unités. Voici le script obtenu (entrer ">" puis "=" pour la comparaison):
Le sujet demandait non seulement la valeur finale de la variable x, mais l'interprétation de cette valeur dans le contexte de l'énoncé. Peut-être l'attendu était-il celui ci: L'automobiliste doit rouler à plus de 50 km/h s'il souhaite consommer moins de 4 litres de biocarburant aux 100 kilomètres.
A moins que ce soit celui-ci : L'écologie et la sécurité routière sont incompatibles.
Aux USA, il est question de renards, et les rédacteurs du sujet sont rusés : pas d'algo puisque le tableur lui a été préféré (autre manière de faire un 10 relativement aux préconisations de l'IG).
En Polynésie, il s'agit de calculer le volume d'une ampoule. Les concepteurs du sujet ont eu une idée brillante.
Le script est le suivant :
On a ajouté une instruction Afficher pour y voir quelque chose.
En Métropole - la Réunion, le sujet sur la dichotomie divise. Les opinions sont partagées.
L'algorithme est déjà complété et les candidats écrivent une pétition pour se plaindre de ce scandale. Il y a un record de signatures, ce qui prouve que c'était justifié.
En Asie, on fait appel à un ami serpent de mer : les équations de Pell-Fermat.
La phrase «compléter l’algorithme ci-après pour qu’il affiche tous les couples» est incohérente avec la recommandation de l'IG. Alors puisqu'il y a un affichage hors programme (ou plutôt hors algorithme), pourquoi pas modifier juste cet affichage pour améliorer le rendu de l'algorithme ? Au lieu d'afficher x et y dans la console, on peut créer le point correspondant et afficher ses coordonnées (avec plus de points sur l'hyperbole):
Le script est plus court et on voit mieux que l'équation de Pell-Fermat cherche des points à coordonnées entières sur une hyperbole (celle-ci a été dessinée comme courbe implicite)
Tout avait bien commencé pour le bac ES «obli»: Pas d'affichage dans l'algorithme, on décrit le rôle de cet algorithme dans la question 3a, on demande dans la 3b la valeur finale d'une variable, puis on demande de retrouver le résultat de la 3b en résolvant une inéquation:
Ça ne se voit pas comme ça avec ces «u» et ces «n» communs à presque tous les sujets, mais il est question de paniers de légumes bio. Il n'y a plus beaucoup de terre dans l'algorithme.
On notera que dans le sujet, les lignes de l'algorithme étaient numérotées, comme dans CaRMetal.
A Beyrout c'est la bi-déroute: Il y a un affichage dans l'algorithme. Dans le sujet "obli" et dans le sujet "spé".
Obli :
Ce pseudo-code, très similaire à celui de l'énoncé (y compris l'affichage) nous apprend que Maya devra attendre 7 mois pour avoir plus de 70 € dans sa tirelire. Mais elle aura exactement 71,990966796875 €, ce qui est plus impressionnant. Finalement, on est assez proche de la fortune de Bernard Arnault, c'est juste un décalage de la virgule. Les gens se plaignent sans raison, surtout quand ils sont pauvres.
On remarque que la formule de récurrence est admise. L'ambition du sujet, aussi, est pauvre.
Spé :
On atteint là des sommets de flou sémantique: La lettre E est utilisée
L'inspection générale recommande de décrire les variables, leur type et leur signification, dans l'énoncé (et non dans l'algorithme). Ici les variables ne sont pas décrites, hormis N qui est décrit comme «égal à 3» dans la question 4b (et du coup, totalement inutile, on aurait très bien pu faire aller i de 1 à 3 directement).
On apprend qu'au bout de 3 ans, environ 3 habitants sur 5 de ce pays sont abonnés chez EfficaceRéseau. C'est toujours bon à savoir.
On ne sait pas si c'est la hotline qui a fait le sujet.
Au pays de Trump, on aime s'afficher; mais aussi afficher, dans les algorithmes:
Obli
«On cherche donc à savoir en quelle année l’entreprise devra embaucher». Embauchera-t-elle le concepteur du sujet? Pas certain: Au lieu d'une variable n (dont l'auteur du sujet a d'ailleurs oublié de préciser qu'elle est entière) et qui ne sert pas vraiment à quelque chose dans le contexte, on aurait avantageusement pu utiliser une variable entière nommée année et afficher celle-ci au lieu de n+2017. Les élèves de terminale trouvent tous seuls ce genre d'astuce, pas les auteurs de sujets apparemment. De même, u est un nombre de contrats, et néanmoins une variable réelle, à en juger par les valeurs successives qu'elle prend: L'entreprise devra embaucher lorsqu'elle aura 203,6480836755199 contrats à gérer.
Gaston Lagaffe par Franquin
Spé
Le calcul matriciel est au programme, les algorithmes aussi. Mais on évite soigneusement de faire les deux en même temps, on ne sait jamais, y a facebouche pour défendre les opprimés. Ceci dit, la variable n désigne le nombre d'années écoulées depuis 2017 (il fallait le deviner) et la variable a désigne la probabilité que le client soit chez Alphacopy. Concision n'est pas clarté !
Obli
On a frôlé la noyade dans un étang, mystérieusement muni d'un système de filtration qui enlève 100 kg d'algues par heure. N désigne le nombre de jours écoulés depuis la mise en route de ce système de filtration (jours n'eût-il pas été plus explicite?) et A désigne la masse d'algues... On a affaire à un alguorithme. C'est très original.
Spé
Comme au Liban, la même lettre est utilisée pour désigner un état, et une variable où est stockée la probabilité d'être dans cet état. Voilà ce qui arrive quand on ne donne pas de noms explicites aux variables ! En plus, la question «Compléter l’algorithme ci-dessous de sorte qu’il affiche le nombre de jours» est incompatible avec les recommandations de l'IG puisqu'un algorithme, fût-il complété, n'a pas à afficher...
Obli
En Polynésie, c'est le marasme... L'entreprise ne fait plus de bénéfices.
Ceci dit, pendant les 26 mois qui ont précédé la faillite, Pierre s'est constitué un parachute doré de 144936,41423448166 €, il n'est donc pas spécialement à plaindre.
"Il y a beaucoup de chiffres, Monsieur le Président, mais la plupart sont après la virgule!"
Exercice 4
L'entreprise lance alors un nouveau produit. Quand rapportera-t-il plus que l'ancien ? Rien de tel qu'un algorithme (de balayage) pour y répondre.
(Balayer est un algorithme. On dit qu'il n'y a pas assez de femmes dans l'informatique. "Au boulot, les filles!")
Spé
On demandait une mise en œuvre de l'algorithme de Dijkstra, ce qui est un exercice d'algorithmique «débranchée». Les objets à affecter étant des pondérations d'arêtes du graphe, on est loin des programmes classiques du bac. Mais même là, CaRMetal, qui permet de colorier des arêtes sans être ralenti par des fenêtres modales, présente une utilité pour ce genre de questions.
Obli
En obli, la population de loups augmente, mais pas celle de sujets originaux.
C'est donc au bout de 10 ans (puisque N c'est des années) que les chasseurs commencent à voir double. Puisque, charmante Elvire, ce sont les U qui sont entrés dans la ville.
Spé
En Spé, Lisa prend son vélo pour donner un sujet d'exercice. Trop sympa, la fille!
C'est donc au bout de 5 jours (puisqu'on vous dit que N signifie "jours" en algorithmique) que Lisa aura moins de 62,6% de chances de prendre le vélo (A est une probabilité, aussi improbable que puisse être ce nom de variable).
Aux Antilles, on organise une course entre une suite arithmétique et une suite géométrique. Le suspens est limité.
L'interprétation malthusienne fait flipper : y aura bientôt plus rien à manger!!
Au final, la famine sévit surtout dans dans la partie algorithmique du sujet lui-même.
La rédaction de l'énoncé est pourtant exemplaire: Les variables sont décrites y compris leur type, et on demande d'interpréter le résultat: «En sortie de cet algorithme, n a pour valeur 46» ce qui est correct du point de vue du vocabulaire: L'algorithme a une sortie et n'affiche rien.
Les concepteurs du sujet «obli» de Métropole-Réunion bac ES nous ont fait une bonne vanne, en appelant N le nombre de jours et U la hauteur du lac. Peut-être la modélisation aurait-elle été mieux appréhendée si les variables avaient été nommées jours et hauteur ? Certes, il n'y a pas le feu au lac, mais ce genre d'abstraction peut faire barrage. Et au fait, puisque U est une hauteur, pourquoi ne pas dessiner les points successifs de coordonnées (N,U)?
En STHR, les rédacteurs ont eu de la suite géométrique*** dans les idées.
Il faut donc 7 ans pour que les recettes dépassent 550 millions d'euros; en effet «u» signifie «recettes du tourisme en Europe» comme son nom ne l'indique absolument pas. Certes il est vrai qu'un algorithme est souvent assimilé à une recette mais le résultat est-il digeste ?
On constate un flou sur ce qu'est une variable: L'extrait «la variable U soit égale à la dépense touristique intérieure dans les restaurants et cafés» aurait du sens si U était un nombre, et non quelque chose qui contient un nombre (rappelons que selon le document d'accompagnement, une variable est une étiquette, pas un nombre.)
Nada. Circulez, y a rien à voir!
Aux Antilles-Guyanne, on s'intéresse au remboursement de la dette. Il y a toujours des rabat-joie et des abat-jours.
Que représentent ces mystérieuses variables aux noms d'une lettre?
Le moins qu'on puisse dire, c'est que les noms des variables ne sont guère explicites...
En Polynésie, on fait des expériences avec des cobayes humains, dont la vitesse augmente selon une suite géométrique.
Ces athlètes sont autorisés à participer au Tour de France, et Jean-Marie Leblanc a l'air encore plus triste que l'année précédente.
Au bout de 8 minutes, ils ont dépassé la vitesse autorisée. On remarque que pour répondre à la question 3a, il suffisait d'indenter (reculer) l'affichage de n, en y ajoutant l'affichage de v.
En métropole, on donne du glucose à des bactéries. Auront-elles une indigestion de sucre avant que nous n'ayons une indigestion de suites géométriques ?
C'est au bout d'une heure et demie que les bactéries absorbent plus de 100 femtogrammes de glucose; ça fait toujours son effet lors d'un dîner en société.
En Polynésie, on fait des plans sur le véhicule 100% électrique.
Cet algorithme répond au problème suivant: «on souhaite estimer l’année au cours de laquelle le nombre de véhicules « 100 % électrique » immatriculés en France dépassera 1 000 000 avec ce modèle». Déjà, il fallait deviner que ce souhait est un problème, et comprendre à quelle modélisation on faisait allusion. Mais l'affichage de n ne répond pas vraiment au problème, c'est 2016+n qu'il aurait fallu afficher.
Aux Antilles-Guyanne, les rédacteurs se battent contre des pales d'éoliennes en proposant un sujet original. Aura-t-il le vent en poupe ?
Ce script a été bien plus facile à rédiger que sa complexité le laisse penser: La ligne 3 a été créé en cliquant sur "faire 20 fois" dans le menu en bas à droite, et chacune des fonctions (en beige) a été obtenue en cliquant sur son nom dans la palette à droite. Même l'affichage final (hors programme) a été obtenu en cliquant sur "afficher" dans le menu en bas à droite. Mais tout ça, c'est du vent, allez-vous dire, les affichages ne servent à rien puisqu'ils sont hors programme. Ce à quoi Galilée eût répondu «et pourtant, éolienne tourne»
En métropole, on fait de la pisciculture en aquarium. On a ferré le bon poisson, mais attention à la noyade !
On demandait de recopier et compléter l'algorithme pour qu'à la fin de son exécution, la variable U contienne un terme de la suite. Le rédacteur de ce sujet considère donc une variable comme ayant un contenu,. On ne peut que lui donner raison : Tout comme l'aquarium contient des poissons, U contient un nombre réel (proverbe shaolin).