Mathématice, intégration des Tice dans l'enseignement des mathématiques  
Sommaire > N°50 - mai 2016 > Mathém@ALGO, une suite logicielle très (...)

Mathém@ALGO, une suite logicielle très polyvalente
Moteur de recherche

A) Introduction

Dans le N°49 de MathémaTICE [1], j’ai présenté le prototype d’une suite logicielle combinant quatre outils en ligne (Blockly, Proglab, Xcas et PluriAlgo), en mettant en relief diverses façons de faire cohabiter ces outils.

Dans le N°50, le prototype devient une suite logicielle à part entière nommée Mathém@ALGO (prononcez MathémaALGO), que je mets à disposition sur mes pages professionnelles [2]. Pour ce nouvel article, j’adopterai un point de vue complémentaire, en organisant mon exposé en fonction des langages de programmation : AlgoBox, puis Javascript, puis Python...

L’exposé ne sera pas pour autant répétitif, puisque les fonctionnalités du logiciel sont dépendantes du langage de programmation : par exemple, Javascript est le seul langage avec lequel l’on peut exécuter des programmes manipulant le tableur de Xcas.

D’autres nouvelles fonctionnalités seront également présentées, en particulier :

  • la possibilité d’exécuter un programme Javascript faisant des graphiques avec une ou plusieurs tortues.
  • la possibilité d’exécuter un programme Javascool, grâce à une adaptation d’un interpréteur de programmes Processing (langage conçu pour faire des animations graphiques).
  • la possibilité d’exporter un programme Blockly en Python, puis de le compléter et de l’exécuter.

B) Mathém@ALGO et AlgoBox

Introduction

Comme je l’ai montré dans le N°49, il est facile de passer automatiquement d’un programme Blockly (exemple) à un programme AlgoBox via Javascript (exemple).

Il y a donc une continuité pédagogique naturelle entre la programmation visuelle (au collège) et la programmation textuelle avec AlgoBox (au lycée). Mais comment s’en servir concrètement ? C’est la question à laquelle je vais m’intéresser dans la section B.

Le passage automatique de Blockly à AlgoBox peut être un moyen pédagogique d’aborder la programmation textuelle avec AlgoBox : en effet, on peut envisager d’illustrer chaque notion algorithmique de base avec un programme visuel pour ensuite en obtenir la traduction en AlgoBox.

Mais après cette phase initiale d’apprentissage du langage, y-a-t-il encore un intérêt pratique à passer par la programmation visuelle quand on veut traiter un exercice en AlgoBox ? Ma réponse est « oui dans certaines situations », et j’en donne deux exemples.

Exemple 1

Je reprends l’exemple de l’introduction, qui porte sur les calculs de pourcentages. Il n’y a a priori aucune raison de demander aux élèves de passer par Blockly pour obtenir un code AlgoBox tel que celui-ci :

Mais si après plusieurs tentatives vous voyez certains élèves échouer parce qu’ils ne savent pas calculer un pourcentage (situation hélas loin d’être rarissime), il me semble opportun de les orienter vers Blockly qui, grâce à son extension Sophus, propose deux blocs permettant de calculer des pourcentages.

Plus généralement, une étape intermédiaire avec Blockly peut être profitable quand il y a des instructions transformant des variables numériques : augmenter une variable, diminuer une variable… En effet, leur équivalent en AlgoBox (ou en pseudo-code) est beaucoup moins intuitif.

Exemple 2

La résolution d’une équation du second degré est un grand classique. Or, il y a 3 cas à examiner et AlgoBox est hélas peu pratique pour gérer les instructions conditionnelles dans cette situation.

Il me semble donc opportun de passer d’abord par la programmation visuelle. Mais Blockly est hélas peu convivial lorsqu’il s’agit d’écrire les expressions calculant le discriminant et les solutions de l’équation. Je suggère donc de n’écrire qu’une partie du programme, par exemple ceci :

Même incomplet, ce programme visuel peut être exporté en Javascript (voir résultat), puis converti en AlgoBox par Proglab (voir résultat). Il ne reste plus qu’à le compléter.

C) Mathém@ALGO et Javascript

Introduction

Proglab gérant aussi le langage Javascript, les exemples traités en AlgoBox dans la section B peuvent être repris. Je m’intéresserai donc à d’autres fonctionnalités de Mathém@ALGO, notamment la possibilité d’exécuter des programmes Javascript manipulant le tableur de Xcas.

Depuis la publication du premier article dans le N°49, l’onglet PluriAlgo a été enrichi d’un sous-onglet Execution.

Dans sa configuration de base, le sous-onglet Exécution n’apporte rien par rapport à l’environnement d’exécution de Proglab, qui lui est même largement supérieur. Mais, comme vous pouvez le constater sur la copie d’écran ci-dessus, il propose plusieurs liens permettant d’étendre ses fonctionnalités de base : option tableur, option multi-tortues et option ProcessingJS.

Option tableur

Grâce à l’option « tableur » du sous-onglet Execution, vous pouvez par exemple exécuter ce programme Javascript calculant la moyenne des notes en colonne A :

La récupération des notes se fait à l’aide de la fonction grille_get. Les totaux partiels, affichés en colonne B avec la procédure grille_set, permettent d’obtenir une trace d’exécution dont l’objectif est de vérifier la pertinence de l’algorithme.

Pour faciliter la programmation de cet exemple, il est possible de passer d’abord par un programme visuel avec l’extension Xcas de Blockly, puis d’en obtenir la traduction (voir illustration).

Vous pouvez aussi faciliter une écriture directe du code, grâce au sous-onglet Boucles de l’onglet PluriAlgo (voir illustration).

Option ProcessingJS

Logiciel de création multimédia, Processing [3] permet de dessiner, réaliser des animations graphiques…

Il est opérationnel sur toute plateforme pouvant faire fonctionner des logiciels conçus en Java. Il en existe une version Javascript, nommée ProcessingJS, qui permet d’exécuter des programmes Processing en ligne avec un navigateur web : je l’ai intégrée dans Mathem@ALGO.

Le sous-onglet Exécution permet donc non seulement d’exécuter des programmes Javascript « classiques », mais aussi de les enrichir avec des primitives spécifiques à Processing :

Pour faciliter la programmation de cet exemple, il est possible de passer d’abord par un programme visuel avec l’extension ProcessingJS de Blockly, puis d’en obtenir la traduction (voir illustration). Je vous invite également à tester le deuxième exemple disponible, qui fait rebondir une boule de billard [4] .

Option tortues

Cette option multi-tortues peut apparaître comme un gadget et c’est peut-être le cas d’ailleurs : je ne sais pas quelles applications pédagogiques elle peut avoir au lycée actuellement, mais de nouveaux enseignements peuvent y être créés dans un futur proche afin d’illustrer l’intérêt de la programmation objet.

Je ne vais donc pas m’intéresser à une hypothétique formation des élèves, mais vais chercher à donner une culture générale dans ce domaine aux enseignants. A l’origine, je n’en n’avais nulle intention, mais ce sont des débats internes au comité de rédaction de MathémaTICE (que je viens d’intégrer) qui m’ont incité à le faire.

PDF - 134.1 ko
Programmation objet et tortues

Pour ceux qui souhaitent simplement proposer des activités mono ou multi-tortue(s) à leur élèves, je signale que j’ai intégré dans l’onglet Blockly l’extension tortues de Sofus [5].

D) Les autres langages gérés par Mathém@ALGO

Introduction

Quand j’ai publié mon premier article sur Mathém@ALGO dans le N°49, seuls deux langages pouvaient y être exécutés, grâce à l’onglet Proglab : AlgoBox et Javascript. Avec la création du sous-onglet Exécution, deux nouveaux langages sont exécutables en ligne : Python et Javascool. Je consacrerai donc une sous-section à chacun de ces deux langages.

Même si un programme Xcas ne peut être exécuté depuis le sous-onglet Exécution, il existe néanmoins une alternative dont j’ai parlé dans le N° 49 : créer des fonctions (avec l’onglet PluriAlgo), puis les utiliser dans des formules avec le tableur de Xcas. Je n’y reviendrai donc pas.

Par contre, je m’intéresserai à la création de fonctions Basic (avec l’onglet PluriAlgo), en montrant qu’elles peuvent aussi être utilisées par le tableur d’OpenOffice. Et comme je tiens à promouvoir la programmation de cet outil fondamental qu’est le tableur, j’aborderai également la traduction de programmes Javascript / Xcas en Basic / OpenOffice.

Python

Dans la version en ligne du logiciel PluriAlgo, j’avais intégré un outil (Skulpt) permettant d’exécuter des programmes Python [6] . J’en ai fait de même avec Mathém@ALGO : donc, en cliquant sur le lien « Python » de la page principale du sous-onglet Exécution, vous pourrez exécuter des programmes Python.

Les concepteurs de Blockly ayant eu la bonne idée de prévoir non seulement un traducteur en Javascript, mais aussi en Python, il est possible de passer dans un premier temps par la programmation visuelle (voir exemple et résultat).

Javascool

Dans la section C, j’ai montré que le sous-onglet Execution peut être configuré pour exécuter des programmes Javascript enrichis par des primitives Processing (dessin d’une ellipse par exemple). Dans le programme correspondant, j’ai employé une syntaxe Javascript. Mais il est également possible d’utiliser la syntaxe originelle de Processing, dont ProcessingJS est une adaptation fonctionnant en ligne avec un navigateur web (voir exemple).

La syntaxe est étant proche de celle de Javascool, j’ai procédé à quelques aménagements pour pouvoir exécuter des programmes Javascool, par exemple celui-ci (créé en grande partie avec l’onglet PluriAlgo, voir indication) :

Basic

Fonctions et formules

Dans le N°49, j’ai montré comment utiliser Mathém@ALGO pour créer une fonction Xcas calculant le volume d’un cylindre, avant de l’utiliser dans une formule du tableur de Xcas.

La même démarche peut être reprise en utilisant Mathém@ALGO pour créer la fonction en Basic (indications), pour ensuite l’utiliser dans une feuille de calcul d’OpenOffice (indications).

Continuité avec l’extension tableur de Blockly

L’utilisation de l’extension Xcas de Blockly peut faciliter l’écriture de programmes Basic manipulant des feuilles de calcul : en effet, il suffit de récupérer le code Javascript (celui de la section C, par exemple), puis d’utiliser le traducteur de Javascript (indications).

Pour que le code obtenu soit opérationnel sous OpenOffice/LibreOffice ou Excel, il suffit d’inclure dans les classeurs un module implémentant en Basic les sous-programmes grille_get et grille_set.

Zip - 22.9 ko
grille_get et grille_set en Basic

E) Conclusion

La suite logicielle Mathem@ALGO 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 permet de programmer [7] des exemples géométriques (avec JSXGraph, DGPad ou ProcessingJS) et de les animer (ProcessingJS).
  • elle simplifie l’écriture de programmes dans plusieurs langages mathématiques (Scilab, Xcas et R), grâce à PluriAlgo.

Ma proposition (SésaAlgo) faite à l’association Sésamath dans le N° 49 n’ayant pas abouti, Mathem@ALGO sera hébergée uniquement sur mes pages professionnelles à l’université de Pau.


notes

[1Voir http://revue.sesamath.net/spip.php?article817 : « SésaAlgo, un projet alternatif pour le collège et le lycée ? »

[2Mathem@ALGO est disponible sur mes pages professionnelles à l’adresse suivante : http://raffinat.perso.univ-pau.fr/mathemaALGO/index.html

[3Voir http://flossmanuals.developpez.com/tutoriels/processing/ pour une documentation en français.

[4Même si les techniques utilisées ne sont pas les mêmes, j’ai repris un exemple proposé par Denis Beaubiat (voir brève http://revue.sesamath.net/spip.php?breve1235).

[5Voir http://revue.sesamath.net/spip.php?article851 : « La géométrie de la (des) tortue(s) ».

[6Voir http://revue.sesamath.net/spip.php?article703 : « Version en ligne du logiciel d’algorithmique PluriAlgo ».

[7La programmation peut être textuelle ou visuelle. Les extensions géométriques de Blockly, embryonnaires, seront progressivement complétées.

Réagir à cet article
Vous souhaitez compléter cet article pour un numéro futur, réagir à son contenu, demander des précisions à l'auteur ou au comité de rédaction...
À lire aussi ici
MathémaTICE est un projet
en collaboration avec
Suivre la vie du site Flux RSS 2.0  |  Espace de rédaction  |  Nous contacter  |  Site réalisé avec: SPIP  |  N° ISSN 2109-9197