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...
Lycée
Dans mon article sur les atouts du duo tableur / Visual Basic, j’avais évoqué deux exemples que je vais adapter.
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.