par Alain Busser, Patrice Debrabant, Sophie Gonifei
Dans cet article, on va s’intéresser à la possibilité de développer la géométrie par la programmation et réciproquement.
Cette possibilité de symbiose s’appuie sur les liens qui existent entre les deux domaines [1]. Certains de ces liens ont été mis en évidence dans la tortue Logo. Ils apparaissent plus clairement dans les logiciels de géométrie dynamique, qui donnent accès à un environnement de géométrie euclidienne pourvu d’instruments alternatifs [2] et de la possibilité de créer des instruments personnalisés.
Il est ainsi possible de faire de la géométrie autrement et non pas de faire une autre géométrie, qui serait détachée des géométries euclidienne et non-euclidiennes (et donc un peu anecdotique).
En retour, la programmation se trouve ancrée en géométrie, et « concrétisée ».
Pour illustrer l’approche que l’on souhaite développer, on présentera des idées d’activités originales sur un thème classique : rectangle et spirale d’or.
Cet article est associé à un projet soumis à la CARDIE de l’académie de Bordeaux (cycle 3, 4 et lycée) pour l’année 2018/2019. Ce projet concerne la création d’un parcours d’apprentissage de la programmation dans un environnement de géométrie dynamique. Les lecteurs qui souhaiteraient nous accompagner dans ce projet sont invités à nous contacter.
Article placé sous licence CC-by-SA : http://creativecommons.org/licenses/by-sa/3.0/fr/legalcode
I) Introduction
Avec l’arrivée fracassante de Scratch aux cycles 3 et 4, on a désormais une trilogie bien établie des TICE : tableur, géométrie dynamique et programmation.
Pour la programmation, Scratch est remplacé par Python au lycée.
En ce qui concerne la mise en œuvre, selon les recommandations des programmes officiels en mathématiques, ces différents outils TICE ne doivent pas être étudiés pour eux-mêmes, mais plutôt mobilisés de façon naturelle dans le cadre d’une notion ou d’un besoin. L’objectif n’est pas de faire des « spécialistes » [3].
Pour les logiciels, on est tenté de dire que « c’est plié » : le choix est stable tout au long du cursus de l’élève, à l’exception, importante, de la transition de Scratch à Python lors du passage au lycée.
Cela étant, la transition ne va pas de soi. En effet :
- on ne retrouve pas en Python le « mode de programmation » de Scratch, qui est très particulier [4] ;
- on perd, avec Python, la dimension affirmée de « pédagogie créative » [5] de Scratch.
De plus, aux cycles 2 et 3, avec Scratch, les élèves pratiquent la programmation dans un cadre géométrique interactif. Au lycée, on passe soudain à une programmation qui n’a plus de lien (natif) avec un cadre géométrique interactif. En pratique, Python est souvent utilisé comme une super-calculatrice [6].
La divergence entre les deux logiciels est didactique et a aussi une dimension affective [7] : les élèves ne perçoivent pas bien les articulations entre les deux logiciels et sont souvent déçus de ne pas pouvoir exploiter certaines compétences qu’ils ont acquises avec Scratch [8].
On le répète régulièrement, Scratch n’est pas un logiciel de géométrie dynamique et ne peut pas remplacer un logiciel de géométrie dynamique. Cette réalité est bien comprise par les élèves.
Pour autant, Scratch est loin d’être un simple logiciel de programmation, et Scratch a beaucoup de caractéristiques communes avec un logiciel de géométrie dynamique. On peut même dire que la programmation avec Scratch s’apparente davantage à la programmation dans un espace de géométrie dynamique qu’à la programmation dans un langage classique comme Python [9].
Ainsi, on a par exemple la possibilité avec Scratch de construire un script très simple qui parcourt (trace) un carré :
Comment « comprendre », autrement dit quelle représentation peut-on se faire de ce script ?
C’est le script d’un algorithme pour construire un carré. Et cet algorithme a une existence propre, indépendamment de Scratch ou d’un logiciel particulier de pilotage d’un drone.
Cet algorithme est comparable à un algorithme de construction classique [10], avec des outils traditionnels ou des outils virtuels en géométrie dynamique. Et il a lieu d’être dans le même contexte.
Moyennant deux points libres A et B, le script suivant crée un carré dynamique en A et B.
Fixer la tortue en A
Viser B
répéter 4 fois {
Avancer de AB
Tourner à gauche de 90°
}
Ce script peut être programmé avec CaRMetal et DGPad [11].
![]() |
![]() |
C’est exactement le même carré [12] que celui que l’on pourrait construire avec les instruments virtuels.
On pourrait obtenir ce carré par l’algorithme (ou sa traduction par un script) traditionnel (qu’il est visiblement plus facile de mettre en œuvre que de programmer...) :
Construire le segment [AB]
Construire la perpendiculaire d1 à [AB] passant par B
Construire le cercle c1 de centre B et de rayon AB
Construire le (bon) point d'intersection C du cercle c1 et de la droite d1
Construire la perpendiculaire d2 à [AB] passant par A
Construire le cercle c2 de centre A et de rayon AB
Construire le (bon) point d'intersection D du cercle c2 et de la droite d2
Construire le segment [BC]
Construire le segment [CD]
Construire le segment [DA]
Quand on replace le script Scratch dans cette perspective, on s’en fait une représentation plus juste et on peut construire des compétences algorithmiques qui non seulement viennent enrichir la géométrie, mais également s’en nourrissent : il y a une correspondance qui se tisse entre les objets géométriques et les scripts.
II) La pensée informatique
La notion (et le terme) de « pensée informatique » a été introduite aux Etats-Unis en 2006 par Jeanette Wing, une chercheuse en informatique. Elle regroupe un ensemble d’attitudes, de connaissances et de savoir-faire généraux qui sont mobilisés de façon significative dans le domaine de la programmation par les développeurs. [13]
Cette pensée informatique comprend la description algorithmique des objets, la décomposition de problèmes en sous-problèmes, un certain type d’abstraction, etc. Elle est mobilisée lors des activités de type expérimental et se construit sur un dialogue (ou une synthèse) entre l’expérimental, l’intuitif et le théorique. [14]
On peut favoriser le déploiement naturel de cette pensée en utilisant des scripts en français, dans un langage de script bien structuré, et qui se rapproche de la langue naturelle. [15]
La pensée informatique peut ainsi éclairer la géométrie tout en se forgeant à l’aide de la géométrie.
Il est par ailleurs important de noter que cette façon différente de faire de la géométrie peut redonner confiance à certains élèves dont la motricité est imparfaite (certains de ces élèves sont les plus avancés sur le plan conceptuel).
III) Le projet
En nous appuyant sur ces observations, il nous a semblé utile de développer la pensée informatique en géométrie, d’en préciser les articulations, et de reconnaître officiellement un de ses vecteurs principaux, à savoir la programmation dans un espace de géométrie dynamique. Celle-ci serait initiée au collège et perdurerait au lycée, en particulier sous forme d’activités de pédagogie créative.
Les activités qui s’appuient sur la programmation en géométrie dynamique sont intéressantes et il serait (est) dommage de s’en priver en passant à Python, d’autant qu’elles permettraient de renforcer la transition de Scratch à Python.
Dans cette perspective, il sera essentiel de prévoir des dispositifs permettant aux enseignants de s’approprier les outils en vue d’une utilisation sereine en classe. Le projet n’est pas destiné exclusivement à des spécialistes de la programmation. Les enseignants qui souhaitent participer au projet ne sont pas sensés avoir des compétences spécifiques au départ, mais plutôt les construire au fur et à mesure.
IV) Les outils [16]
*POO : Programmation Orientée Objet.
L’initiation à la programmation fonctionnelle est seulement envisagée. Cet objectif est peut-être trop ambitieux. Très peu de documents pertinents semblent exister dans ce domaine (et ils seraient indispensables).
V) Présentation générale des activités
Dans le cadre de ce projet, on fera en sorte de traiter des thèmes intéressants en eux-mêmes d’un point de vue mathématique (ou informatique).
Le parti pris est de proposer des activités essentiellement centrées sur les mathématiques plutôt que des activités interdisciplinaires de type EPI, qui seront plutôt complémentaires du projet.
De plus, les thèmes pourront aussi être choisis pour leur richesse pédagogique potentielle : thèmes nécessitant la mise en œuvre de différents points de vue, pouvant amener à l’utilisation (justifiée) de différents logiciels, la règle d’or étant d’utiliser le logiciel le plus adapté à une approche donnée.
L’idée est de construire des activités « modulables », construites avec différents paliers de difficulté en permettant aux enseignants de mettre en œuvre de la différenciation.
Pour toutes les activités proposées, un dispositif doit être prévu pour que la syntaxe soit utilisée sans effort (l’objectif n’est pas d’apprendre une syntaxe particulière, mais de savoir la mobiliser [17]).
Ces activités ne sont pas finalisées et peuvent donner lieu, c’est notre souhait, à des séances effectives créées par le lecteur.
VI) Activité(s) autour du rectangle d’or
Cycle 3
VII) Activité(s) autour de la spirale d’or
Introduction : distinguer une spirale (d’or) dans une pomme de pin, un tournesol...
Cycle 3
Cycle 4
Lycée