Cet article montre comment le logiciel PluriAlgo peut faciliter l’écriture d’algorithmes dans plusieurs langages pédagogiques (Javascool, Algobox, Python...) utilisés en lycée.
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
A) Introduction
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) :
- en facilitant l’écriture d’algorithmes dans plusieurs langages pédagogiques (Javascool, Algobox, Python...).
- en facilitant le passage d’un langage à un autre grâce à un traducteur.
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.
- Figure 1 : les onglets 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 :
- les techniques de sommation et de transformation d’un Pour en Tantque sont combinées pour résoudre un problème d’escalier (IREM Grenoble [2]).
- la technique de comptage est utilisée (à deux reprises) pour estimer par simulation la probabilité de l’évènement « au moins 60 piles sur 100 lancers » (IREM Bordeaux [3]).
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.
B) Fonctionnement général du logiciel
Exemple 1 : achat d’un article
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) :
- Figure 2 : gestion des entrées-sorties avec l’onglet Principal
Le résultat obtenu (en cliquant sur le bouton Nouveau) est le suivant en Javascool :
- Figure 3 : le programme déduit de la figure 2
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 :
- Figure 4 : gestion des taux de remise avec l’onglet Si
Le résultat obtenu (en cliquant sur le bouton Insérer) est le suivant en Javascool :
- Figure 5 : le programme déduit de la figure 4
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.
Exemple 2 : achat de plusieurs articles
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 :
- Figure 6 : total d’un achat avec l’onglet Boucles
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 :
- Figure 7 : le programme déduit de la figure 6
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.
C) Techniques usuelles sur les boucles
Exemple 1 : un problème d’escalier
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 :
- calculer le nombre de cubes nécessaires pour fabriquer un escalier avec un nombre de marches fixé (n).
- trouver le plus grand escalier pouvant être construit avec un nombre de cubes fixé (nbCubes).
- Figure 8 : escaliers à 2, 3 et 4 marches
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) :
- Figure 9 : calcul de 1+2+...+n avec l’option somme
La figure 10 montre comment résoudre la seconde question, en combinant deux techniques (sommation et transformation d’un Pour en Tantque) :
- Figure 10 : 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 :
- Figure 11 : recherche du plus grand escalier
L’exemple est détaillé dans le fichier pdf joint, avec plusieurs approches pour traiter la question 2.
Exemple 2 : un problème de simulation
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 :
- en comptant le nombre de piles lors d’une simulation de 100 lancers d’une pièce.
- en répétant la simulation de 100 lancers, afin de compter le nombre de fois où il y aura au moins 60 piles.
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) :
- Figure 12 : nombre de piles avec l’option comptage
Le résultat obtenu est à compléter avec une fonction aléatoire renvoyant 1 ou 2 :
- Figure 13 : le programme déduit de la figure 12
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.
D) Conclusion
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...