par Patrick Raffinat
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
Ma suite logicielle Mathem@ALGO, détaillée dans le N°50, a pour but de faciliter l’enseignement de l’algorithmique, plus particulièrement dans un cadre mathématique où :
- elle permet d’écrire et d’exécuter des programmes (Blockly ou Javascript) manipulant le tableur de Xcas.
- elle simplifie l’écriture de programmes dans plusieurs langages mathématiques (Scilab, Xcas et R), grâce à son composant PluriAlgo.
Plusieurs logiciels de mathématiques sont donc utilisés dans une optique algorithmique, ce qui est très réducteur. C’est pourquoi j’ai cherché à mieux mettre en valeur les fonctionnalités mathématiques de ces logiciels dans Mathem@ALGO.
La première évolution présentée est une extension R de Blockly, qui permet de faire de la programmation visuelle dans un cadre statistique au lycée. Elle peut également être utilisée pour faciliter l’apprentissage du langage R dans l’enseignement supérieur.
La seconde évolution présentée est un perfectionnement de l’extension Xcas de Blockly, qui permet désormais faire du calcul formel. Par exemple, il devient possible d’exécuter ce programme visuel :
B) Statistiques avec R
Introduction
J’ai souvent pris plus de plaisir à enseigner des logiciels programmables (tableurs, R...) que des langages de programmation généralistes parce qu’on peut y faire preuve de plus de créativité dans les applications développées. Dans un module R enseigné en IUT, j’ai par exemple appris à mes étudiants comment automatiser la production de rapports (Html ou OpenOffice) dont les statistiques et les graphiques dépendaient de fichiers fournis en paramètres.
R peut aussi être un candidat très crédible pour des enseignements en lycée, comme l’a montré Hubert Raymondaud [1] : il permet non seulement de traiter le programme officiel en statistiques, mais c’est aussi un logiciel polyvalent sur le plan mathématique (même s’il n’y a pas de calcul formel) et un langage de programmation à part entière permettant de faire de l’algorithmique [2].
Mais je doute qu’il soit très utilisé, parce que le programme officiel n’encourage guère à utiliser les logiciels de mathématiques programmables, ce que je trouve regrettable pour (au minimum) les filières scientifiques.
En créant une extension R de Blockly, je cherche donc à inciter les enseignants de lycée à plus utiliser R, même si je crois que ça n’aura guère d’effet tant que les programmes officiels n’évolueront pas. Cette extension peut bien entendu aussi être utilisée dans l’enseignement supérieur, pour démarrer l’apprentissage du langage R.
Après avoir écrit un programme Blockly avec cette extension, l’utilisateur a deux possibilités :
- récupérer le code R correspondant (bouton Exporter Pluri) : le code obtenu devra ensuite être collé dans un environnement extérieur [3] où il pourra éventuellement être complété avant d’être exécuté.
- exécuter directement le programme Blockly (bouton Exécuter) : le code est alors envoyé à un serveur R [4] qui, en retour, affiche le résultat dans l’onglet Blockly.
La première possibilité m’intéresse plus, parce que je cherche avant tout à promouvoir l’enseignement de R. La seconde possibilité s’adresse aux enseignants souhaitant simplement faire de la programmation visuelle dans un cadre statistique.
Exemple 1
Pour centrer un tableau de nombres, c’est à dire ôter la moyenne à chacune de ses valeurs, deux approches seront illustrées :
- une approche algorithmique classique, consistant à calculer la moyenne à l’aide d’une première boucle, puis à la retrancher à chaque valeur du tableau à l’aide d’une seconde boucle.
- une approche spécifique à R, consistant à calculer la moyenne à l’aide d’une fonction prédéfinie, puis à la retrancher directement au tableau (sans boucle).
Exemple 2
Pour illustrer les fonctionnalités de PluriAlgo dans le N°41 de MathemaTICE, j’avais traité un exemple où il fallait estimer par simulation la probabilité de l’évènement « au moins 60 piles en 100 lancers ». La démarche avait été illustrée en Larp, mais j’aurais pu choisir R. Un code équivalent peut être obtenu à partir de ce programme Blockly (bouton Exporter Pluri) :
Il est également possible de traiter cet exemple avec une approche spécifique à R :
Cette approche illustre l’ingéniosité du langage R dans sa gestion des vecteurs :
- pieces=runif(100,0,1) crée un vecteur de 100 réels aléatoires compris entre 0 et 1.
- pieces<0.5 crée un vecteur de 100 booléens : T (TRUE) pour les réels aléatoires inférieurs à 0.5 et F (FALSE) sinon.
- sum(pieces<0.5) calcule la somme de ce vecteur de 100 booléens en le traitant comme un vecteur numérique : TRUE est converti en 1 et FALSE est converti en 0.
- tirages>=60 crée un vecteur de n booléens puisque tirages est un vecteur de n nombres.
- mean(tirages>=60) calcule la moyenne de ce vecteur de n booléens, qui est traité comme un vecteur numérique de 0 et de 1
Compléments
R propose non seulement de nombreuses fonctionnalités statistiques, mais permet aussi de faire du calcul matriciel, de créer des pages web...
C) Xcas : intégration du calcul formel dans Mathem@ALGO
Introduction
A la demande d’Alain Busser, j’ai fait évoluer l’extension Xcas de Blockly pour pouvoir faire du calcul formel avec des « programmes de calculs », un programme de calculs étant « une suite de modifications d’une (ou deux) variable numérique » :
Comme je le détaillerai dans la section « Variables spéciales », le calcul formel sera possible en utilisant des variables Blockly nommées _A, _B … _N, qui seront associées aux colonnes A, B, … N du tableur de Xcas.
Ensuite, dans la section « Boucles », je montrerai qu’on peut également combiner boucles et calcul formel dans un programme Blockly.
Variables spéciales
Si on dispose d’un programme Blockly faisant les calculs pour des valeurs numériques, il faut en renommer les variables (ici nombre en _A et copie en _B) :
En exécutant ensuite le programme obtenu [5], on constate que les affectations relatives aux variables _A et_B se traduisent par des formules dans les colonnes A et B du tableur :
Pour faire du calcul formel, on peut soit remplacer 4 par x dans le tableur, soit le faire dans le programme Blockly qu’il faut alors réexécuter :
D) Conclusion
Même si l’objectif principal de Mathem@ALGO est de faciliter l’enseignement de l’algorithmique, les logiciels de mathématiques qu’il utilise ne doivent pas servir uniquement de faire-valoir à l’algorithmique. C’est pourquoi j’ai cherché à mieux exploiter les fonctionnalités mathématiques de R et de Xcas :
- l’extension R de Blockly peut être utilisée dans l’enseignement supérieur (ou au lycée [6]) pour démarrer l’apprentissage du langage R.
- l’extension « calcul formel » de Blockly permet de relier programmation et calcul algébrique au collège avec des « programmes de calculs ».
A une époque où on transforme peu à peu les enseignants de mathématiques en enseignants d’informatique, je propose des outils visant à infléchir cette évolution trop radicale à mes yeux : dans des enseignements de mathématiques, l’informatique devrait avant tout servir à faire progresser les élèves ... en mathématiques !