Cet article peut être librement diffusé à l’identique dans la limite d’une utilisation non commerciale suivant la license CC-by-nc-nd http://creativecommons.org/licenses/by-nc-nd/3.0/fr/legalcode
Cet article complète un premier article consacré à PluriAlgo [1], un logiciel pluri-langages d’initiation à l’algorithmique. Les thèmes abordés (sous-programmes, tableaux) sont illustrés avec des langages généralistes (Javascool, Python) ou mathématiques (Xcas, R).
La première partie de l’article présente deux outils facilitant l’écriture de sous-programmes.
La deuxième partie traite de la gestion de tableaux à une dimension : déclaration, saisie...
La troisième partie étudie un problème de synthèse présentant à la fois un intérêt informatique (fonctions et tableaux) et un intérêt mathématique (simulation d’une loi binomiale).
De nombreux étudiants peinent à concevoir et à réaliser un découpage en sous-programmes lorsqu’un nouveau problème est à résoudre. C’est pourquoi PluriAlgo propose un outil leur permettant de démarrer, même si l’heuristique utilisée n’est pas toujours optimale.
L’heuristique s’appuie sur les entrées et les sorties du problème à traiter, dont l’objectif est ici de calculer le volume d’un cylindre et le volume d’un cône. Grâce à l’option de calcul « fonctions », PluriAlgo crée deux fonctions (une par sortie) paramétrées par les entrées (rayon et hauteur), ce qui est illustré ici en Javascool :
Il reste à compléter les deux fonctions soit directement (voir résultat), soit en introduisant une nouvelle fonction calculant la surface d’un disque (voir indication et résultat).
Ce mécanisme permet de traiter avec de nouvelles techniques (sous-programmes, enregistrements...) des problèmes résolus auparavant de façon plus élémentaire lorsque ces notions n’ont pas encore été enseignées. Par exemple, la figure 3 montre comment reformuler un programme Python calculant le volume d’un cylindre en introduisant une fonction (voir résultat) :
Si tout le programme (sauf les entrées-sorties) est à reformuler, ce qui est le cas ici, il n’est pas nécessaire de sélectionner les instructions dans l’éditeur. Mais cela n’est pas une simple commodité : en effet, cela permet d’utiliser des options de reformulation (formulaire de saisie, enregistrement, classe...) non disponibles autrement.
Les deux mécanismes de reformulation (avec ou sans sélection de code) sont détaillés dans le pdf joint.
Comme pour les types simples, l’onglet Principal du logiciel permet de déclarer des tableaux, de les saisir et de les afficher... Pour l’illustrer, nous allons adapter un exemple (total d’un achat) traité sans tableaux dans le premier article consacré à PluriAlgo :
Deux tableaux (le prix unitaire et le nombre d’exemplaires achetés pour chaque article) permettent de stocker les informations saisies. Si on fixe Javascool comme langage de développement, le résultat obtenu est le suivant :
Il reste ensuite à calculer le montant total de l’achat, ce qui peut être réalisé en utilisant l’option « sommation » de l’onglet Boucles (voir indication et résultat).
Cette partie étudie un problème de synthèse présentant à la fois un intérêt informatique (fonctions et tableaux) et un intérêt mathématique (simulation d’une loi binomiale). Pour le résoudre, nous allons procéder en deux étapes :
Le problème est tout d’abord traité en Xcas, puis prolongé en R par une illustration graphique du théorème de Moivre-Laplace.
L’onglet Principal permet de créer une fonction comptant le nombre de piles (nbPiles) lors d’une simulation de n lancers d’une pièce ayant la probabilité p de tomber sur pile.
Le code obtenu (en cliquant sur le bouton Insérer) doit être ensuite complété (partie entourée en rouge) :
Le code ajouté calcule le nombre de fois où le réel aléatoire (compris entre 0 et 1) est inférieur ou égal à p (la probabilité d’une pièce de tomber sur pile). Il peut être obtenu en complétant l’onglet Boucles (voir indication).
La seconde étape consiste à répéter la simulation de n lancers, afin de construire le tableau estimant les diverses probabilités relatives à la loi binomiale. Ses entrées sont donc les paramètres de la loi (n et p) et le nombre de simulations (nbSimus), ce qui est précisé dans l’onglet Principal :
Le code obtenu (en cliquant sur le bouton Insérer) doit être ensuite complété (partie entourée en rouge) :
La première partie du code ajouté initialise le tableau des estimations à 0. La seconde partie répète nbSimus fois la simulation, et comptabilise le résultat de chaque simulation (un entier compris entre 0 et n) en modifiant le tableau des estimations. PluriAlgo n’est ici d’aucun secours, sauf pour insérer les deux boucles.
La simulation peut être lancée avec une simple commande, par exemple calculer_estimations(30, 0.7, 1000), ce qui n’est plus possible en Javascool : voir pdf joint.
Pour traiter le problème en R [2], trois solutions sont étudiées dans le pdf joint :
Le problème est ensuite prolongé par une illustration graphique du théorème de de Moivre-Laplace [3].
Lorsque j’ai commencé à développer PluriAlgo il y a plusieurs années, mon objectif était simplement de gagner du temps dans la phase initiale de programmation : déclaration des variables, gestion des entrées-sorties et découpage en sous-programmes. Le logiciel n’était donc qu’un outil d’appoint.
Après de nombreuses évolutions, PluriAlgo est devenu un véritable logiciel d’initiation à l’algorithmique, ce que je me suis efforcé de démontrer dans ces deux articles.
Cela me permet, pour la première fois cette année, d’utiliser le logiciel dans chacune de mes séances de travaux pratiques sur ordinateur. Une ressource publiée sur IUTEnLigne [4] montre précisément comment intégrer PluriAlgo dans un cours d’algorithmique.
[1] PluriAlgo peut être téléchargé sur mes pages professionnelles ou sur la plate-forme pédagogique Javascool développée par l’INRIA pour l’apprentissage des bases de la programmation en lycée.
[2] R a été ajouté depuis la parution du premier article : pensez à mettre à jour PluriAlgo si nécessaire.
[3] Du discret au continu : loi binomiale et loi normale - H. Lample et D. Bernard - Inter académiques Montpellier 2011.
[4] Dans cette ressource publiée sur IUTEnLigne, les chapitres 3 à 9 comportent des travaux pratiques à réaliser avec PluriAlgo, en liaison avec les thèmes abordés dans le chapitre correspondant.