Les nouvelles technologies pour l’enseignement des mathématiques
Intégration des TICE dans l’enseignement des mathématiques

MathémaTICE, première revue en ligne destinée à promouvoir les TICE à travers l’enseignement des mathématiques.

Les atouts du duo Blockly / tableur Xcas
Article mis en ligne le 11 février 2016
dernière modification le 30 mai 2022

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

La réforme du collège, tout comme celle du lycée en 2009, pose de nombreux problèmes aux enseignants de mathématiques : moins de temps à consacrer aux mathématiques, manque de formation, objectifs pédagogiques flous... Elle est même plus déstabilisante que celle du lycée puisqu’on ne leur demande plus de coder des algorithmes mathématiques, mais d’enseigner des jeux (Nim...), d’évoquer la programmation événementielle, la programmation parallèle...

De nombreux enseignants risquent donc de faire une impasse totale à la rentrée prochaine sur cette réforme trop précipitée, et il y aurait certaine sagesse à le faire s’ils s’estimaient incompétents. D’autres, plus audacieux, tenteront de mettre en place quelques activités sur les jeux qu’ils auront vues à la va-vite lors d’un stage ou « piochées » sur internet.

Dans cet article, je proposerai une autre voie, facile à mettre en œuvre et adaptée à l’enseignement des mathématiques : associer le tableur formel de Xcas et la programmation visuelle. Quelques exemples pédagogiques seront donnés, y compris pour les enseignants de lycée.

Plus marginalement, je montrerai que mon extension tableur de Blockly permet de créer assez facilement des activités sur le jeu de Nim. Cela me conduira à disserter sur les vertus pédagogiques de ce jeu, qui ne sont pas le « codage au collège » contrairement à ce que certains slogans sur la réforme laissent penser.

Les exemples traités peuvent être testés sur mes pages professionnelles consacrées à Blockly [1].

B) L’extension Xcas de Blockly

Introduction

Dans le N°48 de MathémaTICE, j’avais vanté les atouts du duo tableur / Visual Basic [2] en évoquant mes expérimentations en IUT, puis en faisant quelques propositions pour faciliter l’enseignement de l’algorithmique au lycée.

Au collège où je préconise la programmation visuelle, je me suis donc naturellement posé la question suivante : peut-on combiner un tableur, outil restant très pertinent au collège, avec Blockly ? A vrai dire, c’était plus un rêve qu’un défi que je croyais pouvoir relever. Et puis un jour, en essayant de comprendre le fonctionnement du logiciel J3P développé par Sésamath, j’ai consulté un document expliquant comment intégrer le tableur de Xcas dans une page web : la concrétisation du rêve n’était alors plus qu’affaire de persévérance...

Collège

Exemple 1 : calcul de pourcentages

Je reprends brièvement un exemple que j’ai introduit dans un autre article [3] :

Pour mémoire, j’y ai mentionné 3 approches du problème :

  • une approche tableur, en effectuant les calculs avec des formules.
  • une approche programmation visuelle, en lisant les données dans le tableur (cellules B0, B1) et en affichant les résultats dans le tableur (cellules B2, B3).
  • une variante tableur formel, en mettant « x » comme taux initial dans la cellule B1.

Bien sûr, l’approche programmation visuelle n’est nullement indispensable si vous souhaitez privilégier l’enseignement des mathématiques pour cette activité. Mais, si vous décidez de la suivre, elle n’aura rien d’incongru et d’artificiel : cela illustre parfaitement pourquoi j’encourage l’approche tableur / programmation visuelle au collège.

Exemple 2 : programmes de calcul

Pour faire la promotion de Sophus dans la revue EPI [4] , Alain Busser traite un exemple portant sur les « programmes de calcul » au collège, un programme de calcul étant « une suite de modifications d’une (ou deux) variable numérique ».

Deux programmes de calcul sont à comparer et Alain Busser en donne la traduction en programmation visuelle. L’extension tableur de Blockly permet de stocker les résultats intermédiaires, ce qui est facile à faire ici pour le programme B.

Pour le programme A, je suis plus circonspect et trouve plus pertinent de s’en tenir au code Blockly d’Alain Busser. Et avant d’aborder le codage, une approche tableur peut être profitable...

Exemple 3 : jeu de Nim

Pour le jeu de Nim (étudié dans la section C), le tableur sera utilisé pour garder la trace des choix successifs de l’élève et de l’ordinateur. Comme nous le verrons, cette trace pourra aider les élèves à trouver la stratégie optimale.

Lycée

Dans mon article sur les atouts du duo tableur / Visual Basic, j’avais évoqué deux exemples que je vais adapter.

Exemple 1 : moyenne d’un tableau

La trace affichée en colonne B permet de mieux comprendre l’algorithme, tout comme le bloc « augmenter » de Sophus :

Exemple 2 : suites récurrentes

Je vais prendre ici un autre exemple de suite récurrente que j’avais en stock, où il faut trouver la plus petite valeur de n pour laquelle la suite dépasse 25 :

La trace apparaît en colonne B, et on peut vérifier le résultat en colonne A grâce à une recopie de formule vers le bas :

Bien évidemment, il faudra ensuite donner une solution sans tableur pour le bac (voir). La version tableur préalable devrait en faciliter la compréhension à mon avis.

C) Le jeu de Nim

Introduction

Dans un de mes articles [5], j’avais fait part de ma stupéfaction devant le volet algorithmique du projet de réforme du collège, tellement il est ambitieux sur le papier et difficile à mettre en œuvre. Par défi intellectuel, je m’étais creusé la cervelle pour proposer des activités réalistes sur la bataille navale, un jeu qu’il est … peu réaliste de faire programmer au collège !

Pour le jeu de Nim, bien plus simple à programmer et plus en adéquation avec les mathématiques, c’est un lecteur de MathémaTICE qui m’a amené à approfondir le sujet : en effet, il m’a contacté parce qu’il souhaitait une aide technique pour rendre plus ergonomique son programme, ainsi qu’un avis pour savoir si les activités de codage [6] qu’il envisageait étaient pertinentes pour des collégiens.

La version du jeu de Nim que j’étudierai dans cet article est celle où les joueurs ajoutent des allumettes (entre 1 et un maximum fixé, 3 par exemple) et où le gagnant est le premier qui atteint un seuil.

La stratégie gagnante, que doivent découvrir les élèves en jouant contre l’ordinateur, est de chercher à ce que la différence entre le seuil à atteindre et le nombre total d’allumettes soit un multiple de 4 : l’intérêt mathématique du jeu est donc indéniable, d’autant qu’il oblige l’élève à faire du calcul mental. Mais le paradoxe est, qu’en terme de codage, l’intérêt pédagogique du jeu est hélas plus discutable (au collège) !

Version initiale

Il est facile (pour un enseignant, pas pour un élève) de programmer en Blockly une version du jeu de Nim, comme par exemple celle-ci :

Ce code initial est élégant, court (important visuellement) et intelligible par des collégiens, même sans une « compréhension fine » de la boucle « répéter ». Mais ce code, en dépit de sa simplicité, a malgré tout un grave défaut : les messages sont affichés dans des boîtes de dialogue, ce qui rend le jeu peu attrayant !

Version tableur

Pour résoudre cet inconvénient majeur, il existe une solution technique bien connue des développeurs Javascript. Elle permettrait ici de remplacer les exaspérantes boîtes de dialogue par des affichages se rajoutant à la fin de la page web.

Pour ma part, je proposerai dans cet article une solution utilisant le tableur, beaucoup plus simple à mettre en oeuvre :

Les différents choix du joueur seront affichés en colonne A, ceux de la machine apparaîtront en colonne B, et les totaux seront visualisés en colonne C :

Stratégie

Si après plusieurs parties vos élèves n’ont pas trouvé la stratégie optimale, vous pouvez leur proposer de jouer avec une autre version du jeu de Nim (bouton Demo2).

Dans un premier temps, mieux vaut ne pas leur dire qu’ils perdront à chaque fois ! En effet :

  • le bloc ordiJoue (qui apparaît sous forme réduite) a été programmé pour que l’ordinateur joue de façon optimale et non aléatoirement comme précédemment.
  • le nombre d’allumettes initial (20) est un multiple de 4, ce qui est une position gagnante pour l’ordinateur quels que soient les choix des élèves.

Grâce à la trace du jeu apparaissant dans le tableur, ils devraient je crois découvrir sans peine que l’ordinateur s’arrange pour que les totaux partiels soient des multiples de 4.

Vous pourrez alors les en féliciter, en précisant cependant que leur hypothèse n’est valide que parce que le nombre initial d’allumettes (ici 20) est un multiple de 4. Je vous invite alors à les faire rejouer avec un nombre d’allumettes non multiple de 4 en ajoutant, pour les motiver, que l’ordinateur perdra toujours s’ils trouvent la stratégie gagnante.

Et s’ils ne trouvent toujours pas, je vous suggère de les faire jouer avec une nouvelle version (bouton Demo3) faisant apparaître dans le tableur la différence entre le seuil à atteindre et le nombre total d’allumettes...

D) Conclusion

Ce que je propose dans cet article est simple à résumer :

  • utiliser un tableur (formel) pour faire des mathématiques.
  • utiliser Blockly pour faire de la programmation visuelle.
  • combiner (parfois) les deux grâce à l’extension Xcas de Blockly que j’ai réalisée.