Patrick Raffinat s’est fixé un défi : permettre l’exécution du code Python directement dans ScratchGGB. Et le défi est relevé !
A) Introduction
Par le passé, j’ai développé plusieurs logiciels pédagogiques, dont deux en rapport avec cet article :
- ScratchGGB (voir article), qui associe Scratch et Geogebra.voir
- SofusPyScratch (voir article), qui facilite la transition entre programmation Scratch (collège) et programmation Python (lycée).
Cela explique probablement pourquoi, après avoir lu un récent article de Jean-Yves Labouche présentant le logiciel PyGgb (voir article), j’ai eu l’idée suivante : intégrer Python dans ScratchGGB. L’objectif initial était simplement d’ajouter un traducteur de blocs, le code Python ainsi obtenu étant ensuite à copier-coller dans PyGgb pour y être exécuté.
Et puis, l’appétit venant en mangeant, je me suis fixé un nouvel objectif beaucoup plus ambitieux : permettre l’exécution du code Python directement dans ScratchGGB. Bien évidemment, je n’ai pas ensuite effectué tout ce travail de programmation simplement pour éviter aux élèves de peu chronophages copier-coller, mais pour des raisons pédagogiques plus fondamentales :
- ajouter des fonctionnalités absentes dans PyGgb : instructions géométriques telles que Midpoint ou PerpendicularLine, interaction avec le tableur de Geogebra…
- bénéficier, au moins partiellement, de la banque d’exercices prêts à l’emploi que j’avais créée pour le collège
Par « bénéficier partiellement » de la banque d’exercices, je veux dire deux choses :
- certains exercices, en particulier ceux ludiques que nous avons conçus avec Juliette Hernando pour les sixièmes/cinquièmes (voir article), ne sont guère transposables au contexte lycée.
- les énoncés des autres exercices seront à interpréter en fonction d’un contexte Python : là où il est écrit « compléter le programme (Scratch) initial », il faudra comprendre « traduire en Python le programme (Scratch) initial, puis compléter le code ainsi obtenu ».
Mais pour démarrer, mieux vaut commencer par un exercice dont les énoncés sont adaptés à Python : j’en ai donc ajouté un à la banque d’exercices. C’est cet exercice, comportant plusieurs activités, qui va servir de fil rouge à l’article. On y accède en choisissant l’item « python » dans la liste déroulante jaune ci-dessous :
L’éditeur Python n’apparaît que si on clique sur le bouton « Python » ou sur le curseur à sa droite : c’est un choix pédagogique permettant de ne pas complexifier inutilement l’ergonomie du logiciel pour un usage au collège.
B) Quelques activités
C) Conclusion
Le logiciel et la banque d’exercices prêts à l’emploi sont disponibles à cette nouvelle adresse, mon site professionnel étant supprimé à ma retraite. J’espère évidemment que ScratchGGB sera largement utilisé, que ce soit au collège (principal public ciblé) ou au lycée (surtout en Seconde)…
Annexe : nommage des objets géométriques
Dans son article sur PyGgb, Jean-Yves Labouche a commencé sa présentation du logiciel par cet exemple :
Ce code Python marche aussi avec ScratchGGB. Donc, si j’en parle, c’est pour une autre raison : le traducteur de blocs ne peut être utilisé correctement sans certaines précisions que je vais fournir.
Cela tient à la différence en matière de nommage des objets entre Geogebra (dont ScratchGGB s’est inspiré pour les blocs géométriques) et Python (version PyGgb ou version ScratchGGB). Pour l’expliquer le plus simplement possible, je vais comparer ces 3 versions censées dessiner les deux premiers cercles de l’exemple :
Comme on le constate, les résultats sont tous différents :
- contrairement à ce qu’on pourrait penser, les instructions « P=(0,0) » et « P= (1,0) » ne sont pas des affectations à une variable nommée « P », mais un moyen d’indiquer le nom qu’on veut donner aux points ; comme il est impossible que 2 points aient le même nom, Geogebra déplace le point P initial à la position (1,0).
- les blocs « Point » cherchent aussi à nommer les points « P », mais règlent d’une façon le conflit de nom pour le second point : un deuxième point est effectivement créé, mais il ne s’appelle pas « P » (c’est Geogebra qui fixe automatiquement le nom) et il n’y a donc pas de création du second cercle.
- avec Python, les instructions sont de véritables affectations, la variable « p » récupérant le nom attribué automatiquement par Geogebra aux points créés ; c’est très pratique pour cet exemple, mais il y en a d’autres où le nom des points a de l’importance et c’est pour ça que je n’avais pas procédé de façon équivalente pour les blocs dans la version initiale de ScratchGGB
Pour traiter l’exemple des 4 cercles avec des blocs, il faut changer le nom des points à chaque passage dans la boucle, par exemple ici en P0, P1, P2 et P3 :
Mais si cette solution convient pour le collège, elle ne permet hélas pas la transition vers Python car le traducteur de ScratchGGB ne fonctionne pas correctement ici. Donc, comme je suis perfectionniste, j’ai créé un bloc (pas forcément indispensable) permettant d’avoir une équivalence entre Scratch et Python :