Participant au cercle d’étude GRALC (groupe de réflexion collège, lycée, lycée professionnel) de l’Académie de Montpellier, j’ai été amené, lors de notre première réunion de l’année, à participer à un atelier créé pour réfléchir au Thème E du nouveau programme de mathématiques du cycle 4 (5ème, 4ème et 3ème), qui entre en vigueur à la rentrée 2016 :
Thème E – ALGORITHMIQUE ET PROGRAMMATION
Au cycle 4, les élèves s’initient à la programmation, en développant dans une démarche de projet quelques programmes simples, sans viser une connaissance experte et exhaustive d’un langage ou d’un logiciel particulier. En créant un programme, ils développent des méthodes de programmation, revisitent les notions de variables et de fonctions sous une forme différente, et s’entraînent au raisonnement.
Attendus de fin de cycle | |
Écrire, mettre au point et exécuter un programme simple | |
Connaissances et compétences associées | Exemples de situations, d’activités et de ressources pour l’élève |
Décomposer un problème en sous-problèmes afin de structurer un programme ; reconnaître des schémas.
Écrire, mettre au point (tester, corriger) et exécuter un programme en réponse à un problème donné.
Écrire un programme dans lequel des actions sont déclenchées par des événements extérieurs.
Programmer des scripts se déroulant en parallèle.
|
Jeux dans un labyrinthe, jeu de Pong, bataille navale, jeu de nim, tic tac toe.
Réalisation de figure à l’aide d’un logiciel de programmation pour consolider les notions de longueur et d’angle. Initiation au chiffrement (Morse, chiffre de César, code ASCII ...) Construction de tables de conjugaison, de pluriels, jeu du cadavre exquis ... Calculs simples de calendrier Calculs de répertoire (recherche, recherche inversée, etc.). Calculs de fréquences d’apparition de chaque lettre dans un texte pour distinguer sa langue d’origine : français, anglais, italien, etc. |
Repères de progressivité : En 5 ème , les élèves s’initient à la programmation événementielle. Progressivement, ils développent de nouvelles compétences, en programmant des actions en parallèle, en utilisant la notion de variable informatique, en découvrant les boucles et les instructions conditionnelles qui complètent les structures de contrôle liées aux événements. En 3 ème, ils abordent la gestion des objets, en leur faisant échanger des messages. |
Référence : Projet de programme pour le cycle 4, pages 103-104.
Parmi les "Exemples de situations, d’activités et de ressources pour l’élève", il y en a une qui retient plus particulièrement mon attention car je sais qu’un article récent est paru dans MathémaTICE à ce sujet : Raconte-moi une NIMstoire de Lisa Rougetet. À la lecture de cet article je m’arrête sur le paragraphe "Les ancêtres du jeu de Nim" et plus particulièrement sur ceci :
Je décide donc de programmer ce jeu dans Scratch, logiciel fortement conseillé pour la mise en œuvre de ce nouveau programme. Le jeu me semblant assez simple à programmer, je décide de ne pas me lancer dans une recherche parmi les 11 449 247 projets partagés sur le site de Scratch (chiffre en date du 11/11/2015) pour y trouver une éventuelle inspiration (voire le jeu en lui-même) mais je me lance directement dans sa programmation.
Pour respecter l’esprit du texte de Bachet j’opte pour un jeu :
à deux joueurs : l’ordinateur (le chat) et l’utilisateur du programme ;
l’utilisateur du programme décide si c’est lui qui commence à jouer ou si c’est le chat (l’ordinateur) ;
le nombre à atteindre, n, est tiré aléatoirement entre 21 et 100 (J’ai mis comme limite inférieure 21 car j’avais un souvenir de la course à 21 qui est une version de ce jeu, j’aurais pu choisir 20 en référence au Qui dira 20 ? de Brousseau) qui est une autre version de ce jeu ;
les nombres à ajouter seront compris entre 1 et un nombre, k, tiré aléatoirement entre l’arrondi de n/10 et 10 (Pour que le nombre de coups à jouer ne soit pas trop grand) ;
le jeu est programmé pour que le chat (l’ordinateur) gagne à tous les coups si l’utilisateur commet la moindre erreur ;
l’utilisateur peut gagner à tous les coups si il joue bien, c’est-à-dire si il choisit à bon escient de débuter ou pas le jeu, et ensuite si il joue de sorte qu’il occupe à chaque tour LA position préférentielle (je ne détaillerais pas ici la stratégie gagnante, elle est décrite abondamment dans la littérature sur ce sujet).
Je ne suis pas professeur de collège mais en lycée, je ne peux donc pas tester la mise en œuvre de cet algorithme moi-même en situation, cela ne m’a pas empêché de l’utiliser en classe de seconde, dans le cadre de l’Accompagnement Personnalisé.
Les élèves ont accès au code du jeu puisqu’ils avaient le fichier mis à disposition sous différentes formes, mais la complexité du code ne leur a pas permis d’en déduire la procédure à mettre en place pour gagner le jeu. Ceux qui ont réussi à expliquer cette procédure ont souvent utilisé la division euclidienne dont ils avaient souvenir de leur cours de mathématiques de 3ème (je l’ai vérifié lors d’un petit sondage en classe).
15 élèves ont utilisé la division euclidienne explicitement dans leur raisonnement, parfois incomplet (dans 7 copies), sinon prenant en compte tous les paramètres, comme par exemple cette rédaction d’élève :
Simple, efficace, concis.
Une autre rédaction d’élève :
Les copies d’élèves qui utilisent la division euclidienne sans aboutir à une réponse complète sont donc au nombre de 7, soit elles ne prennent pas en compte la différence entre un reste nul et un reste non nul, soit elles traitent uniquement d’un exemple, mais toutes montrent une stratégie partiellement gagnante.
Parmi les copies qui n’utilisent pas explicitement la division euclidienne, il y en a qui donnent une réponse complète, par exemple :
Une proposition partiellement gagnante mais originale :
Une autre, un peu confuse mais la stratégie est gagnante :
Le jeu en ligne sur le site de Scratch.
Le même en version un peu plus aboutie mais peut-être moins "lisible" par les élèves.
Les fichiers peuvent être téléchargés ci-dessous, il vous faudra les désarchiver et les ouvrir dans Scratch2 pour les faire fonctionner, sur votre ordinateur, si vous avez installé Scratch ou si vous utilisez l’éditeur en ligne :
Il est bien entendu hors de question d’attendre d’un élève de collège la programmation du jeu dans la version que je vous ai proposée. On peut commencer par la programmation de la course à 21, n n’est donc plus une variable et est fixé à 21, il en va de même de k qui est fixé à 3. On peut, dans un premier temps faire programmer le jeu sans intelligence artificielle pour faire gagner le chat à coup sûr si son adversaire commet une erreur, on peut tout de même en mettre un petit peu en faisant bien jouer le chat si il est en position de gagner près de 21.
Le jeu en ligne sur le site de Scratch
Dans Snap, un fork de Scratch en html5 (qui fonctionne donc sur toutes les tablettes et tous les smartphones, ce qui n’est pas le cas de Scratch), voici ce que cela donne :
Scripts
Blocks
Pour tester le fichier en ligne, télécharger le fichier suivant (faire un clic droit sur l’image et enregistrer sous sinon il va s’ouvrir dans votre navigateur) :
et ouvrez-le depuis cette page : http://snap.berkeley.edu/snapsource/snap.html# (en haut à gauche, cliquer sur le premier bouton et choisissez "importer", sélectionner alors dans votre disque dur le fichier ci-dessus téléchargé, les blocs jeu_du_chat, jeu_du_joueur et test_gain_joueur sont accessibles depuis le menu variables).
Il est à noter que vous pouvez convertir vos fichiers Scratch et les ouvrir dans la page ci-dessus depuis la page suivante : http://djdolphin.github.io/Snapin8r2/
Un manuel est disponible en ligne pour prendre en main Snap : https://snap.berkeley.edu/SnapManual.pdf
Enfin, il est possible de convertir votre fichier créé dans Snap en un fichier exécutable à partir de ce site : http://snapp.citilab.eu/
Snap est un logiciel libre, il peut être installé sur n’importe quel ordinateur ou tablette depuis ce site : https://github.com/jmoenig/Snap--Build-Your-Own-Blocks (en cliquant sur Download Zip à droite). Il est traduit dans de nombreuses langues dont le français.