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
PluriAlgo [1] est un logiciel cherchant à s’adapter à la diversité des pratiques dans l’enseignement de l’algorithmique en lycée (ou en premier cycle universitaire) :
Dans une première partie, cet article montre comment le logiciel permet de simplifier la gestion de variables (déclaration et entrées-sorties), d’instructions conditionnelles et de boucles. Deux exemples voisins (achat d’un ou de plusieurs articles) y sont présentés pour illustrer le fonctionnement général du logiciel.
Dans une seconde partie, cet article approfondit l’aide que peut apporter le logiciel sur l’apprentissage des boucles. Trois techniques usuelles sont illustrées :
Pour ne pas alourdir l’exposé, seuls deux langages sont illustrés : Javascool pour la partie 1 et Larp pour la partie 2. Mais deux fichiers pdf complémentaires détaillent les exemples de la partie 1 pour des utilisateurs d’AlgoBox et de Python. De plus, un troisième fichier pdf montre comment obtenir des programmes Javascript en appliquant le traducteur de PluriAlgo aux solutions Javascool de la partie 1.
Les variables à introduire sont à spécifier dans l’onglet Principal, qui indique ici qu’il y a deux variables à saisir (le prix unitaire d’un article et la quantité achetée), une variable à afficher (le prix total de l’achat) et une variable intermédiaire (le taux de remise) :
Le résultat obtenu (en cliquant sur le bouton Nouveau) est le suivant en Javascool :
Le taux de remise à appliquer dépend de la quantité achetée : 1 article (0%), 2 ou 3 articles (10%), 4 ou 5 articles (20%), 6 articles ou plus (30%). Ces diverses possibilités peuvent être spécifiées dans l’onglet Si :
Le résultat obtenu (en cliquant sur le bouton Insérer) est le suivant en Javascool :
Il reste à compléter ce code en indiquant les divers taux de remise, puis en calculant le prix total (voir code final). Le traducteur de PluriAlgo permet ensuite d’obtenir un programme Javascript pouvant être testé avec le navigateur web.
L’onglet Boucles facilite l’introduction de boucles et de techniques usuelles liées (sommation, comptage, minimum...). Nous allons l’utiliser pour illustrer la technique de sommation, en calculant le montant total d’un achat :
La figure 6 indique qu’il y a une boucle (portant sur le nombre d’articles) à introduire, ainsi qu’une variable (total) calculant le montant total de l’achat, dont la valeur est obtenue en sommant l’expression quantite*prixUnitaire. Le résultat obtenu (en cliquant sur le bouton Créer) est le suivant en Javascool :
Il reste à compléter ce code en ajoutant, pour chaque article, les instructions permettant de saisir le prix unitaire et le nombre d’exemplaires achetés.
Dans les fichiers pdf complémentaires, une autre façon de parvenir à ce résultat est également examinée : elle consiste à partir d’un programme gérant un article (l’exemple 1 sans la remise), puis à lui appliquer un mécanisme de transformation.
Pour ce problème d’escalier (Fig 8) illustrant les techniques de sommation et de transformation d’un Pour en Tantque, deux questions sont à traiter :
La figure 9 montre comment résoudre la première question, en calculant dans la variable totalCubes la somme des n premiers entiers (voir résultat) :
La figure 10 montre comment résoudre la seconde question, en combinant deux techniques (sommation et transformation d’un Pour en Tantque) :
Le nombre de marches (k) varie de 1 en 1 tant qu’on peut ajouter la k-ième marche, c’est à dire tant que le nombre de cubes non utilisés (nbCubes – totalCubes) est supérieur ou égal à k. Les instructions engendrées par PluriAlgo sont entourées en rouge sur la figure 11 :
L’exemple est détaillé dans le fichier pdf joint, avec plusieurs approches pour traiter la question 2.
Pour illustrer la technique de comptage, nous allons estimer par simulation la probabilité de l’évènement « au moins 60 piles sur 100 lancers ». Nous allons procéder en deux étapes :
Grâce à l’option comptage de l’onglet Boucles, il est possible de compter le nombre de fois où la variable piece (valant 1 ou 2) prend la valeur 1 (pile) :
Le résultat obtenu est à compléter avec une fonction aléatoire renvoyant 1 ou 2 :
Pour répéter la simulation de 100 lancers et compter le nombre de fois où il y aura au moins 60 piles, l’on peut à nouveau utiliser l’option comptage. Ceci est détaillé dans le fichier pdf joint.
PluriAlgo est un logiciel pluri-langages qui peut être utilisé soit pour une initiation à l’algorithmique, soit pour un approfondissement en algorithmique (sous-programmes, structures de données). Seul le premier aspect a été examiné dans cet article.
PluriAlgo facilite la résolution de nombreux exemples pédagogiques, notamment grâce aux diverses options de l’onglet Boucles. Au pire, pour les algorithmes où il n’est pas très adapté, il reste la possibilité d’utiliser le logiciel pour gérer les entrées-sorties, introduire des sous-programmes...
L’apport de PluriAlgo dépend non seulement du problème traité, mais aussi du langage utilisé. Celui pour lequel il offre le plus de fonctionnalités est Javascool [4].
[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] Document d’accompagnement des stages de formation à l’algorithmique - Groupe Algorithmique - IREM Grenoble
[3] Initiation à l’algorithmique - Éric Sopena - IREM Bordeaux