Itération, algorithmique et géométrie repérée dynamique (Partie 1)

lundi 2 novembre 2009
par  Yves MARTIN

Dans un premier temps, nous examinons la relation que les enfants ont entretenue avec l’itération au travers de leurs apprentissages, comment celle-ci est abordée et utilisée à l’école primaire. Nous en tirons des enseignements pour une approche plus efficace de l’itération, avec une première mise en œuvre à la fin de cette première partie.

« J’ai aimé les livres où l’on voyait affleurer la personnalité de l’auteur : ils regorgeaient de mots, d’explications, d’idées, et pas seulement de formules et d’équations ! La meilleure façon d’appréhender une idée est de considérer son histoire, de percer les raisons pour lesquelles quelqu’un s’est un jour senti obligé de s’engager dans un processus douloureux et merveilleux qui lui a donné naissance. »

“La vérité mathématique n’est pas complètement objective. Certes on ne saurait démontrer une proposition si elle est fausse, mais si elle est vraie, il existe une infinie variété de preuves. Une démonstration n’a rien d’impersonnel. À travers elle s’exprime la personnalité de son créateur/inventeur, comme dans une œuvre littéraire. Une vérité importante est vraie pour toute sorte de raison, elle admet donc toute sorte de démonstration. Les mathématiques sont la musique de l’esprit : certaines démonstrations sont très “jazz” d’autres sonnent comme des fugues. Lesquelles prévalent ? Aucune.”


Note après la publication de la version 3.5

Cet article a été écrit en novembre 2009. Depuis avril 2010 et la version 3.5, les scripts peuvent être inclus dans la figure.

Tous les scripts de cet article - en particulier ceux de la partie 2 sont disponible dans le nouveau format de classeurs de CaRMetal sur cette page qui contient plus de 50 scripts dont ceux de cet article

Présentation du dossier

Ce dossier, rédigé en deux parties uniquement pour des raisons techniques liées à SPIP, propose tout d’abord une réflexion sur le passé itératif et algorithmique de nos élèves. Nous verrons comment l’itération, largement présente à l’école primaire, est facilement évacuée pour des raisons d’efficacité, et combien la démarche algorithmique est rapidement présente et formulée parfois avec précision par les enfants.

De cette réflexion, nous tirerons quelques lignes directrices simples pour la mise en place d’une progression sur l’itération au lycée qui fasse sens, progression que nous avons choisi de mettre en œuvre essentiellement dans le registre géométrique – en lien immédiat avec la géométrie repérée - en explorant différentes possibilités et différents niveaux de mise en œuvre selon que l’on s’adressera à des élèves de seconde, de première…

On sait depuis longtemps maintenant qu’une ingénierie lourde, précise, pensée assez systématiquement n’est souvent applicable quasiment que par son auteur, ou presque. Alors pourquoi faire ce dossier ? Parce que des ingénieries de cette sorte, charpentées sur des structures solides, proposent souvent des éclairages spécifiques des concepts généraux qui les sous-tendent.

C’est la raison pour laquelle ce dossier n’est pas rédigé comme une ingénierie en tant que telle avec sa progression et sa programmation, mais plutôt comme des lignes de force, réparties en onglets, et à l’intérieur en paragraphes. La progression y est évidente à la lecture, mais elle n’est pas affichée comme telle, chacun prenant ici ou là, au niveau de sa propre progression, une idée qui l’intéressera.

Un mot sur le choix de l’outil

À partir de l’onglet 4 et systématiquement aux suivants, nous utilisons Javascript et son implémentation dans le logiciel de géométrie dynamique CaRMetal. Javascript est un langage contemporain, moderne, « du web 2.0 ». C’est peut-être respecter un peu plus l’intelligence de nos élèves, futurs entrepreneurs, ingénieurs de ce pays que de leur proposer un langage qui est au cœur de leurs vies numériques plutôt que d’autres, assurément fort efficaces, mais centrés sur une autre tranche d’âge.

Javascript est adapté à nos habitudes mathématiques quotidiennes : comme les logiciels des calculatrices scientifiques ou de calcul formel (Maple, Mathematica), il ne nécessite pas une [lourde] déclaration préalable des variables, et son faible typage – qui pourrait lui être reproché – est au contraire une source de simplification ou de raccourcis particulièrement efficaces.

Enfin, son intégration exceptionnelle à la géométrie dynamique fait de CaRMetal un logiciel tout à fait innovant qui mérite largement d’être exploré. Dominique Tournès, membre de l’ADIREM, précise, sur le portail des IREM, que pour lui cette intégration signe « une ère nouvelle de la géométrie dynamique ». Venant d’une personnalité connue pour sa prudence et sa mesure, cela mérite réflexion…

Parcourir ce dossier

En pratique chacun de nous, construisant son propre cours, selon notre propre histoire (cf. Chaïtin), nous ne prenons qu’une partie des ingénieries proposées par les collègues. Il en sera de même avec ce dossier, chacun appréciant ou rejetant tel ou tel développement. Je vous invite pourtant à le parcourir en entier, car chaque onglet contient ses propres pépites, éventuellement transférables dans un contexte proche de votre pratique.

Techniquement, pour une lecture plus rapide, les 8 premiers onglets ne contiennent pas d’applet, uniquement des copies d’écran et la possibilité de copier–coller les scripts directement dans l’éditeur Javascript de CaRMetal : on peut faire tous les exercices en quelques minutes directement sur sa machine en lisant ce dossier. Seuls les cinq derniers onglets (de la partie 2) contiennent des applets, y compris de figures de la partie 1. Avec là encore quelques pépites ici ou là.

Une autre prise en main des carscripts de CaRMetal, rédigée pour les enseignants (avec utilisation en analyse cette fois) est disponible ici (avec un PDF de 10 pages à télécharger). Une utilisation, nécessairement plus technique pour la géométrie dans l’espace est rédigée ici. Un manuel de référence est aussi téléchargeable à la fin de cette rubrique qui contient les narrations de recherche d’Alain Busser sur ses TP d’algorithmique en 2de pour cette année scolaire.

Voir une description des onglets des deux parties de ce dossier

Partie 1

Passé d’itération : L’itération a accompagné la scolarité de nos élèves depuis leur plus tendre enfance. Quelques éléments de cette histoire pour éventuellement s’en servir en programmation
Passé d’algo : Même chose sur l’algorithmique, avec une analyse finale assez différente.
Itérations en acte : Exemples de productions d’élèves dans le registre géométrique (en CM2 et en 6e).
Console et tableur : Quelques exemples d’itérations dans la console texte en relation avec la pratique du tableur.
Géométrie : Premières itérations géométriques, et de géométrie repérée dynamique. Trois parties structurées autour d’une première synthèse.

Partie 2

Calculs dynamiques : Les règles de l’interaction entre configuration dynamique et javascript.
Applications : Application fonctionnelle de ce qui précède.
Itér dyn : Nouvelle syntaxe à propos du contenu des variables javascript à envoyer à CaRMetal.
Tableur (2) : Retour sur la relation entre l’itération et le tableur dans leur dimension dynamique.

Tous les onglets suivants contiennent des applets java, les pages peuvent être plus longues à charger.

Bool : Gestion logique à l’intérieur des coordonnées : compléments à l’attention des enseignants.
Tempo : Du temps dans les fils, en manipulation directe. Perspectives sur l’introduction du temps en géométrie dynamique.
Manips : Deux onglets avec les figures vues ci-dessus en applet.


Passé d’Iter

1. Itération et entrée dans la numération

Dans cet onglet, nous nous proposons d’observer comment se passe l’entrée des élèves dans la numération, depuis la maternelle jusqu’au CM2, en regard avec la problématique de l’itération.

Avec la catégorisation (trier puis classer), l’itération est en effet une des premières activités que l’on pratique en mathématique à l’école maternelle. Elle s’utilise certes, en acte, et pourtant de manière rapidement opérationnelle.

1.a. Comptine numérique et itération en maternelle

Les élèves apprennent la comptine numérique, d’abord comme chapelet de mots-nombres qui ne sont que des mots de référence sans aucun sens arithmétique, puis assez rapidement l’utilisent comme outil de comparaison (plus on va loin dans la comptine plus la quantité est grande). La comptine devient ensuite un outil de vérification : dans une activité de commande par exemple, quand un enfant reçoit une grande quantité d’objets (9 ou plus), n’ayant pas encore les structures additives, il ne peux que recompter les objets en récitant la comptine numérique dans une correspondance terme à terme pour confirmer la quantité. C’est en ce sens qu’elle devient opérationnelle même si elle ne reste longtemps qu’une comptine numérique.

Le hasard comme rupture révélatrice du contrat didactique

Exemple 1 : c’était un lundi matin, en Petite Section. Nous étions le dix sept du mois. Mais cette expression est un mot nombre complexe et qui n’a aucune référence numérique pour les enfants de cette classe. Et quand la maîtresse disait que nous étions le « lundi dix sept », les élèves reprenaient « le lundi sept madame » comme si la maîtresse avait une sorte de défaut de prononciation sur le « di » de « lundi ».

Exemple 2 : nous sommes en Moyenne Section. Il y a quelques absents ce matin. On compte les étiquettes jusqu’à 23. Il faut ensuite repérer 23 sur la frise numérique de la classe. La stagiaire utilise la frise de la classe, elle n’a pas osé la changer (elles ne sont pas toutes comme celle-ci). Or le 3 est proche du 2... un autre hasard du nombre d’absent (mais qui doit celui-là se produire plus régulièrement). Que va dire la stagiaire ? Bel exemple de « praticien réflexif » qui - selon l’expression de David Schön - interagit « sur l’action, en cours d’action ».



Réciter la comptine numérique ne devient réellement une itération que le jour où l’élève prend conscience que le mot nombre suivant qu’il récite depuis environ 2 ans est « un de plus » que le précédent. C’est souvent une révélation, comme avoir percé un des secrets des nombres. Et pour les enseignants, c’est le signe d’une installation stable dans la cardinalité. On entend souvent les enfants dire naïvement « maintenant je sais compter jusqu’à un million » pour traduire leur découverte de l’infini potentiel par itération de 1.

On notera que les enfants disent bien « compter » car, à ce moment de leur scolarité, généralement au milieu du CP - oui parce que le CP lui aussi a un milieu bien sûr - un cardinal de seulement quelques dizaines n’a pas encore véritablement de sens. Même si les élèves pratiquent assez systématiquement la décomposition additive des nombres dès la Moyenne Section comme cela se fait maintenant, dès que l’on quitte un domaine de cardinalité connu, concret, pratique, cette notion perd son sens, et l’itération du « un de plus » est alors associée au comptage, et pas à du calcul.

Mentionnons l’outil social très répandu dans les revues pour enfants, du dessin caché dans le lien entre les points numérotés dans l’ordre croissant. On y travaille à la fois la comptine numérique et le tracé de traits petits (motricité fine) et dans des orientations quelconques.

Dans le même registre, la fameuse comptine « un km à pied ça use, ça use » participe elle aussi (mais à une époque où, maintenant, c’est généralement acquis) à renforcer cette idée fondamentale que le suivant c’est « un de plus ». On voit que cette comptine des km a pu avoir un intérêt social à une époque où tout le monde n’allait pas à l’école aussi régulièrement que maintenant.

1.b Numération de position en CP-CE1

La prise de conscience du « un de plus » et cette idée d’anticipation, de pouvoir « compter jusqu’à un million » est aussi induite par une certaine régularité d’oralisation des nombres entre 17 et 69 (on dépasse 69 assez tard au CP pour des raisons évidentes de rupture de régularité dans l’oralisation).

La seconde itération que les élèves rencontrent est la dénomination des paquets de 10 pour préparer l’entrée dans la numération.

Les élèves apprennent à « compter de dix en dix » d’abord sur la comptine des dizaines (jusqu’à 60) puis à partir de n’importe quel nombre (21, 22) et même à « compter de 5 en 5 » pour entendre la régularité orale, ce qui participe à la structuration des unités par le champ de l’oralité. Bien sûr tout ceci est fait en lien avec l’ajout (itératif donc) de paquets de 5 ou de 10 qui sont représentés - physiquement puis graphiquement - par des paquets de toutes sortes.

Ces différentes itérations, récitées individuellement ou collectivement, sont d’abord effectuées « en acte » sans qu’elle soient conceptualisées. En particulier, là encore comme pour la comptine numérique, la comptine des dizaines est d’abord une succession de mot-nombres. Mais le passage par des départs sur des unités autres que 0, la connaissance des premiers rudiments arithmétiques, renforcent sur cette oralisation, les appuis à 5 et à 10 pour préparer la numération par la décomposition additive.

On arrive alors à ce transfert des objets vers leurs représentations et la numération de position (un même symbole a des sens différents selon sa place dans le nombre)

Ce premier niveau d’appropriation de la numération pour les nombres à deux chiffres (CP), aussi fondamental qu’il soit, cache la véritable difficulté de la numération : quand il n’y a que les unités et les dizaines, il ne s’agit que d’une catégorisation, certes conceptuellement délicate et de plus qui se fait en lien direct avec les opérations arithmétiques associées. Mais le passage à l’itération du procédé sur les centaines et les milliers (CE1) est autrement plus délicat. Il faut alors distinguer le chiffre des dizaines et le nombre de dizaines (qui étaient le même dans les nombres à deux chiffres du CP) dans des nombres à 3 puis 4 chiffres. Là encore, comme pour la maîtrise du cardinal 3 en Petite Section, cette appropriation demande un effort cognitif important.

Au cycle 3 (CE2 à CM2), une autre dimension de l’itération prend place, celle associée à la démarche récursive : une fois la première tranche de trois chiffres maîtrisée (les fameux « cdu ») on change oralement de base, en s’exprimant en base mille, et on transpose d’un coup de baguette magique (c’est-à-dire récursivement mais cela signifie aussi avec un saut conceptuel important pour les élèves) ce que l’on a fait à « la tranche des milles » puis à celle des millions et des milliards. Bien entendu, cela se fait progressivement, on reste longtemps sur « les milles » et « les dix milles » avant de sortir la baguette magique.

C’est le mélange de la numération sur trois chiffres en base dix et l’oralisation des nombres par tranches de trois chiffres, avec un vocabulaire adapté, qui permet de présenter le tout sous une forme totalement itérative. Mais la démarche est fondamentalement récursive : l’oralisation en base mille est l’utilisation retenue pour la mise en place, sur la numération, du procédé de transformation d’une démarche récursive en une forme itérative. On sait qu’elle n’est pas la même partout (les billions, trillons, mais aussi le core indien qui vaut dix de nos millions en sont d’autres).

Apprentissage long et difficile donc que celui de la numération, d’autant que la régularité dans les itérations effectuées, même si elle est explicitement présentée, reste complexe à appréhender pour les enfants, vu que chaque étape correspond, pour eux, à un changement d’échelle dans la quantité exprimée, loin des considérations numériques sur les manipulations usuelles d’objets.

1.c. La multiplication comme addition itérée

La première itération présentée en tant que telle aux élèves est celle de l’addition itérée et de son écriture multiplicative : 2+2+2+2+2 = 5x2

même si la multiplication n’est pas l’addition itérée

En effet l’itération d’un objet mathématique qui s’inscrit dans une structure additive n’est que l’action de Z sur cet ensemble (ici de N). L’écriture multiplicative de l’addition itérée est du même type que $3\sqrt{2}$ = $\sqrt{2}+\sqrt{2}+\sqrt{2}$ ou 3$\vec{u}$ = $\vec{u}+\vec{u}+\vec{u}$.
Bien sûr comme cette action de N sur lui-même coïncide avec la multiplication, cela permet de travailler rapidement la multiplication avec des enfants jeunes, ce qui est, fondamentalement, un apport de l’école : l’arithmétique de la rue connaît quelques itérations courantes de l’addition comme procédure personnelle de calcul réfléchi, mais pas la multiplication en tant que telle.


En particulier, la magie de la multiplication (dans l’onglet A5 de cette page on entend un élève parler « d’addition facile ») et ce qui, pour Brissiaud, en est le fondement cognitif, est sa commutativité, très vite enseignée à l’école, et dans certaines méthodes donnée comme définition préalable à l’addition itérée.

La commutativité induit aussi une démarche d’économie de calcul : pour calculer 2+2+2+2+2+2, soit 5x2, il est bien plus facile, vu tout le travail qui a été fait avant sur les appuis à 5 et 10, de calculer 5+5. Il n’y a qu’à l’école qu’on apprend que c’est la même quantité.

Disons un mot sur la difficulté conceptuelle de la situation. En CP, les élèves ont déjà une certaine relation à l’itération dans la décomposition additive des nombres. Ainsi 10+10+10+10+10+3 a d’abord été dit « dix, vingt, trente, quarante, cinquante et trois, cinquante trois », puis « un paquet de dix, ... , cinq paquets de dix, et trois, soit cinquante trois ». On notera que les enfants qui utilisent la méthode Tchou disent directement « un dix, deux dix ... cinq dix, cinq dix et trois, c’est-à-dire cinquante trois », les paquets sont - à cette époque de l’année - conceptualisés dans l’oralisation. Il y a donc bien, dans une démarche d’écriture des nombres, dans le contexte de la numération, un décomptage des paquets, et donc en germe l’écriture multiplicative (puisque 53 c’est 5x10+3).

Pour autant, l’écriture multiplicative de l’addition itérée, bien qu’elle soit une généralisation de cela, mais parce qu’elle n’est en rien liée à la numération de position, ne relève pas des mêmes repères cognitifs (et le 53=5x10+3 est une décomposition arithmétique qui prépare plus la numération des nombres à trois chiffres ou encore la division euclidienne, elle est systématisée seulement au CE2).

En effet chez les enfants qui découvrent l’addition itérée, dans 2+2+2+2+2, et quand cette addition a du sens, il n’y a pas cinq « deuxaines » mais des nombres qui, individuellement représentent une quantité (deux objets par regroupement) et collectivement, entourés des signes arithmétiques, un de ces regroupements (des stylos dans des gobelets, des fleurs dans des vases, etc.). Autrement dit chaque nombre est un signifiant qui a deux signifiés : individuellement, il représente une pluralité et collectivement il représente une singularité.

Au contraire, on repère facilement les élèves qui sont uniquement dans la procédure, sans véritable prise de sens sur l’addition, quand ils écrivent 2+2+2+2+2=52 car eux écrivent quelque chose qui veux dire « cinq deux », ou, plus rare car déjà plus dans la numération, 2+2+2+2+2=42 : le dernier chiffre étant pris comme unité et les précédent comme « dizaines de 2 ».

La difficulté du rapport à l’itération est que celle-ci est vite évacuée dans les problèmes où l’on a un nombre d’objets dont chacun contient un autre nombre d’objets précis. Elle ne revient que sous sa forme (complexe) de distributivité pour enseigner l’opération posée experte.

1.d. Numération des décimaux en CM1-CM2

L’analyse didactique des erreurs récurrentes des élèves a montré, à la fin du XXe s., que l’oralisation usuelle de l’époque (par exemple de 2,3 se disait « deux virgule trois ») construit régulièrement une représentation très ancrée des décimaux comme couple d’entiers. Les élèves appliquaient alors, trop facilement les règles des entiers avant puis après la virgule, ceci étant d’autant plus renforcé par le fait que la partie entière... se comporte comme un entier dans tous les algorithmes.

Pour éviter cela, depuis les programmes de 2002, dans l’apprentissage des décimaux en CM1 et CM2 on oralise autrement les nombres. Ainsi 2,1 se dit désormais en classe « deux et trois dixièmes », le nombre 2,34 se prononce « deux et trente quatre centièmes » ou « deux et trois dixièmes et quatre centièmes ». C’est bien plus lourd mais cette oralisation systématique de « la comptine des fractionnements successifs de l’unité » conceptualise bien les décimaux.

Il s’en suit donc que, même s’il y a une présentation explicite du procédé comme itératif : chaque fractionnement en 10 est à nouveau fractionné en 10 à chaque étape, comme pour la numération des entiers, cette itération explicite - et parfois construite par les élèves sur du papier - est elle aussi, de fait, rendu transparente par l’oralisation spécifique développée pour en rendre compte.

En conclusion

On retiendra de cette rapide présentation sur la numération que si les élèves ont rencontré de nombreuses itérations dans leur apprentissage de la numération des entiers et des décimaux, celles-ci ont toujours été accompagnées d’une oralisation spécifique qui rend transparent le processus itératif. Ce fut le cas avec les mots nombres, puis les mot-nombres des dizaines, puis des changements d’unité - centaines - milliers. Et même si le processus itératif se rencontre dans l’écriture chiffrée en ligne, même s’il est pratique, de fait, dans les décompositions additives, l’importance de la verbalisation à la fois dans l’apprentissage et sa validation gomme ou à tout le moins ne rend pas nécessaire un recours à un contexte itératif.

S’il faut retenir une information pratique de cela pour l’enseignement de la boucle d’itération, c’est qu’elle a été souvent invisible, présente, pratiquée, mais non dite en tant que telle. Et c’est peut-être de cette façon qu’il faut commencer à l’aborder en seconde car, que ce soit dans un tableur avec la poignée de recopie ou même dans une boucle for où l’itération intervient par un i++ ou un i=i+1, l’itération en définitive reste muette : elle n’est présente que pour ceux qui ont conceptualisé le processus.

Reste à proposer des activités itératives où l’itération va être « en acte », effective bien entendu, au cœur du processus, mais comme le fractionnement itératif est au cœur du processus de l’écriture décimale : il en est son moteur sans en être l’enjeu principal de l’apprentissage. La densité des décimaux par exemple est plus un objectif qui valide une compréhension déjà experte qu’un objectif premier en soi.

Passé d’algo

2. Quelques coups d’œil sur l’algorithmique de l’école primaire

Comme l’itération, l’algorithmique est présente à tous les niveaux de la scolarité. Les élèves ont appris non seulement des règles ou des théorèmes, mais surtout beaucoup d’algorithmes divers, et pas seulement ceux des écritures posées des opérations arithmétiques.


2.a. L’algorithmique en maternelle

Elle se pratique d’abord avec le corps (gestes) généralement en relation à la simultanéité (geste et son associés - comptines mimées) puis ensuite se travaille sur des objets : en petite section les élèves commencent par reproduire des algorithmes avec des objets :


en passant par la recherche de l’algorithme sous-jacent en Moyenne Section

comparable, en terme de complexité, à la recherche du fractionnement de l’unité sur une droite graduée dont on n’a pas tous les éléments en CM2 ou en 6e ou encore à l’écriture fractionnaire d’un nombre dont l’écriture décimale est périodique avec une période ne commençant pas à la première décimale en 3e.

Pour Guy Brousseau, devant une activité typiquement séquentielle comme celles-ci, les élèves sont temporellement dans un micro-temps : un temps dont ils voient globalement les séquences (comme vues de dessus), dont ils peuvent naturellement s’extirper en acte par le langage et la description : l’organisation séquentielle est décrite avec des notions comme d’abord, ou avant et ensuite ou après. Les élèves, avec l’enseignant, peuvent transposer cette description à l’échelle d’un méso temps, comme la journée scolaire, sur la notion de passé et de futur : tout comme les jeux divers (ferme, garage, etc.) transposent un méso espace dans un micro espace maitrisé par l’enfant, on travaille aussi la structuration du temps, sur de l’interaction langagière autour d’activités algorithmiques.

En Grande Section, de manière ludique , mais explicitement au programme pour préparer l’entrée dans la numération, l’élève doit rencontrer la récurrence, que ce soit en rythme, avec des comptines ou sur des algorithmes de ce type :

2.b. Algorithme de la numération au CP

La numération en CP peut être accompagnée (méthode Tchou) par une comptine numérique régulière : comme nous disons « trois mille deux cents » on apprend à dire aux élèves « comme Tchou » par exemple « trois dix et deux » pour trente deux.

Cette méthode présente l’avantage de préparer oralement les paquets de 10 avant même que l’on envisage de structurer l’écriture chiffrée des nombres. Voir par exemple le commentaire de cette élève

sur son calcul réfléchi à l’onglet CL1b de cette page.

L’algorithme de calcul est encore plus perceptible dans l’explication de cette élève (début de l’onglet CL2c de la même page).

2.c. Procédures personnelles comme amélioration de l’algorithme général

Dans cette méthode, on apprend la soustraction par des manipulations de cache (onglet CP1 de cette page).

L’algorithme de manipulation consiste à cacher, sur une constellation organisée un petit nombre (par rapport au nombre en jeu) par le haut de la constellation et un grand nombre par le bas. L’idée sous-jacente est de favoriser, dès le CP, par des gestes physiques, la construction de deux gestes mentaux différents pour la soustraction : reculer sur la frise numérique (puis sur la droite numérique) quand la soustraction correspond à un retrait, ou avancer sur la droite numérique quand la soustraction correspond à un complément (ou un écart en CE1).


Il est alors intéressant de voir que les procédures personnelles encouragées dès le CP, avant d’être numériques, peuvent être manipulatoires et surtout qu’elles consistent alors à des améliorations techniques de l’algorithme. Sur l’onglet CP3 de cette même page on voit la maîtresse expliquer que pour retirer 5, il est possible de faire autrement.


Toujours sur la soustraction comme écart entre deux nombres en CE1 - concept éminemment complexe puisque les nombres sont manipulés pour eux-mêmes sans référence à des quantités, ce qui implique un saut conceptuel important chez les enfants - on peut voir l’onglet S2g de la même page.

2.d. Trois exemples d’algorithmes du cycle 3

Hors opérations posées, voyons trois algorithmes numériques dont les interactions posent problème en CM1 et CM2.

Tout d’abord, quand la numération s’installe sur les grands nombres, un algorithme important à acquérir est la comparaison des entiers naturels.

Ensuite, dans une installation rigoureuse du fractionnement de l’unité (prélude aux fractions décimales puis aux nombres décimaux), un algorithme difficile est celui de la reconnaissance du fractionnement de l’unité sur une droite graduée. Il est mis en évidence à l’onglet S5b de cette page d’une séquence de CM1. Il est intéressant de voir - en terme de représentation - ce qu’un bon élève en fait à l’onglet suivant S5c.


A l’opposé dans l’onglet S6b (à la même page), à la sixième séance, toujours en CM1, alors que l’on n’a travaillé que les décompositions additives, une élève propose une écriture soustractive, et une autre explique sa démarche. D’une manière générale, au cycle 3, plus d’élèves passent plus rapidement d’une démarche opérationnelle à une attitude plus conceptuelle même si de nombreuses difficultés persistent car le fractionnement produit des quantités (un quart est d’abord un quart de quelque chose, donc une quantité de cette chose) que l’on veut faire évoluer vers des mesures donc des abscisses.


Enfin, l’algorithme de comparaison des entiers, tout juste acquis, ou à peine maitrisé, il est perturbé par celui sur la comparaison des décimaux qui est d’une autre nature (parce que les entiers sont discrets et les décimaux denses dans eux mêmes) mais pourtant, semblant porter sur les mêmes objets, il véhicule les mêmes représentations.

2.e. Un exemple en géométrie

La question de l’entrée dans les programmes de construction en CM1 est délicate, pour de nombreuses raisons en particulier celle de l’écriture des instructions géométriques : quoi écrire ? L’école primaire sait passer par des phases intermédiaires, comme la lecture de programmes écrits plus ou moins précis. Une des activités pertinentes est en particulier le débat scientifique où la parole spontanée permet l’argumentation là où l’écrit est trop lourd pour exprimer sa pensée géométrique.

Dans toute la richesse du ERMEL de géométrie cycle 3, voyons un exemple d’activité dans laquelle on peut choisir de découvrir la mise en place d’un algorithme sur une situation géométrique simple : l’alignement de points.

Plusieurs entrées sont possibles pour cette activité, nous ne reprenons pas toute l’analyse du ERMEL, nous centrant sur la présentation de cette activité comme entrée « non écrite » (tout est dans l’échange) dans le programme de construction.

Une première activité - d’appropriation de la situation - consiste à proposer à la vue des élèves (en grand format) un dessin de ce type

En leur demandant de le reproduire à partir de ces seuls points

La situation est simple, et en particulier de nombreuses entrées sont possibles pour aboutir à la reproduction de la figure, avec toutes les droites, et sans droite ni point en plus (il y a 7 points et 6 droites ... car le plan de Fano ne se représente pas seulement avec des segments).

Exemple d’une production d’élève (la figure proposée est plus haute que large pour éviter les problèmes d’orientation)

Cette introduction étant faite, et largement commentée - en terme de liberté d’action - on passe à la seconde phase où il s’agit cette fois de reproduire ce dessin :

à partir de ces seuls cinq points

Clairement intervient cette fois, sur une situation mathématiquement élémentaire, une question d’ordonnancement et donc d’organisation séquentielle de la production. Dans cette situation, on demande aux élèves de numéroter les droites ou segments construits pour se souvenir de l’ordre de construction. Une mise en commun permet de mettre en évidence, certes des degrés de liberté, mais surtout une séquence bien organisée.

On peut même rencontrer, dans le débat lors de la mise en commun, des argumentations qui s’apparentent à des raisonnements par contraposition ou par l’absurde.

Résumé

On a vu que, contrairement à l’itération, largement occultée par l’utilisation d’un vocabulaire mathématique spécifique, la démarche algorithmique s’acquiert et se pratique en toute conscience par les élèves de l’école primaire, et ceci dès le milieu du CP comme on le voit sur les vidéos mentionnées.

On notera aussi que quand l’algorithme est acquis, sa restitution verbale peut se faire parfois relativement facilement : les élèves commencent à rentrer dans une conceptualisation certaine. Dans le domaine géométrique, l’algorithmique en jeu, même si elle reste modeste, peut avoir une réelle pertinence en terme d’apprentissage.

On retiendra également de ces deux onglets que le travail algorithmique se fait généralement sur des objets avant d’entreprendre un travail de conceptualisation, que ce soit à la maternelle, où il n’y a pas d’autres options, au cycle 2 (avec les sachets ou les paquets d’allumettes) ou au cycle 3 avec le fractionnement des bandes.

Cela peut être une voie pour les premières approches de l’algorithmique, un travail sur des objets précis que des algorithmes vont produire. Si on veut y ajouter de l’itération, on voit venir un travail sur une production géométrique avec répétition d’une tâche.

C’est ce que nous allons observer rapidement à l’onglet suivant à la frontière de l’école et du collège.

Iter en acte

3. Itérations en géométrie au papier-crayon

Même si nous allons l’analyser en relation avec notre questionnement, cet onglet est l’occasion de présenter, avec ses illustrations, un travail de Jean-Daniel Nourby et Virginie Morel sur la pratique géométrique à la rencontre du CM2 et de la 6e, travail initial antérieur à leur article sur les coniques.

Dans cet onglet des extraits de leur recueil de constructions de figures comme proposé aux élèves sont placés dans des blocs dépliables : cliquer sur ces blocs pour voir la fiche d’activité.

Le travail initial est présenté par les deux enseignants de cette façon :

Lors des réunions de liaison CM2-6e, il est apparu qu’une des difficultés des élèves à l’entrée au collège était centrée sur l’utilisation des instruments de géométrie. Pour beaucoup d’élèves cette difficulté entraîne un blocage avec la matière et tout ce qui concerne la géométrie.
Pour enrayer ce problème, avec l’ensemble des enseignants présents, nous avons proposé de fabriquer un recueil de figures géométriques réalisables pour le cycle d’approfondissement. Et pour motiver les élèves participants, il est convenu de faire une exposition de leurs travaux au sein des établissements.

Les figures que nous proposons dans ce recueil sont réalisables à partir des instruments de géométrie utilisés en CM, c’est-à-dire la règle, l’équerre et le compas. Chacune des figures nécessite un usage répété des instruments de géométrie soit pour graduer, soit pour relier des points, soit pour tracer des droites, des perpendiculaires et des cercles. La maîtrise des instruments venant ainsi par la force des choses. L’usage répété des instruments leur permet de mieux se les approprier et de gagner en rapidité et en aisance. De plus l’objectif de faire des expositions et de montrer leur travail peut être un moyen de donner sens à l’importance de faire des figures propres et soignées. Cela peut aussi les encourager à mieux entretenir leur matériel (crayon bien taillé, compas, équerre et règles toujours prêts à être utilisés…).

Dans l’ensemble pour des élèves qui ne sont pas habitués à cette activité, les figures proposées peuvent sembler difficiles à réaliser. Mais le plaisir et la satisfaction une fois la figure réalisée sont d’autant plus grands. Pour appuyer ces faits nous avons mis dans chaque partie des réalisations d’élèves, montrant leur intérêt et leur imagination.

3.a. Avec une seule graduation

Les activités proposées sont très progressives. On commence naturellement par des segments avec une origine commune et une extrémité variable : il n’y a qu’un segment qui est subdivisé.


On remarquera dans cette présentation, à nouveau, la transparence de l’itération : s’adressant à des élèves de CM2, on utilise naturellement un vocabulaire opératoire qui renvoie à la droite numérique graduée en entiers (ici seulement marqués, non nommés car il n’y a aucune ambigüité).

3.b. Deux graduations, un algorithme représenté

Tout d’abord on commence par deux graduations sur les côtés consécutifs d’un carré. Cela donne des productions d’élèves - dans leur version de travail - révélatrices de la méthode utilisée et même du mouvement d’orientation de la feuille. L’élève cote tous les côtés avec des entiers et fait, en définitive, de la correspondance terme à terme.

Poursuivons la lecture du recueil de figures proposées avec deux graduations plus complexes : une sur un côté du carré et l’autre sur une diagonale. Dans ce cas, il faut donner aux élèves une des deux graduations. On voit donc tout l’intérêt géométrique de la préparation de la figure : on utilise explicitement le compas pour ce qu’il est au départ en CE2 : un outil de report de longueur, en particulier pour bien distinguer une longueur de sa mesure. Un premier segment ainsi partitionné, les autres peuvent l’être en ne travaillant qu’avec des cercles centrés au même point au « centre » de la figure.


On notera que l’algorithme, trop complexe à décrire - ou plus exactement dont une description précise serait trop difficile à interpréter par un enfant de cet âge, est proposé en terme de recopie d’un modèle. L’algorithme est en définitive, représenté, comme en acte. Ce qui n’est pas sans rappeler l’adage cher à Gérard Vergnaud : « la connaissance opérationnelle est supérieure à la connaissance prédicative ». Cette fois, à la manière de certaines preuves géométriques japonaises, l’élève doit interpréter le dessin et y lire un algorithme. L’itération est à nouveau symbolisée par la suite numérique des premiers entiers.

Un premier travail en classe

Reprise du travail parle même élève à la maison pour l’exposition

3.c. Deux exemples de fils sur le cercle

Plusieurs travaux dans le recueil utilisent des ensembles de cercles. Mais avant cela, toujours dans une logique de progression, on aborde d’abord les tableaux de fils sur les cercles.


Et devant la richesse des possibilités de l’hexagone ou de l’octogone, l’imagination des enfants commence à s’exprimer.

3.d. La rencontre d’une classe de CM2 et d’une classe de 6e

Cette partie reprend un moment d’une autre année de travail décrit dans cet article de Jean-Daniel Nourby et Virginie Morel.

Il s’agissait de faire construire une figure par des élèves de CM2 guidés par des élèves de 6e. Quelques élèves de 6e, choisis pour leur aisance dans l’expression orale, ont eu à encadrer, individuellement ou par binôme, un groupe de 4 élèves de CM2 pour les aider à exécuter une tâche qui avait été rédigée par l’enseignante de la classe de sixième, en conformité avec le savoir faire de ses élèves.

Les élèves des deux enseignants ont pratiqué la construction géométrique itérée - comme ci-dessus - durant le courant de l’année (il s’agit d’une autre année que celle des illustrations précédentes). Cette rencontre, en fin d’année, a été l’occasion de proposer un algorithme plus significatif en terme d’utilisation mathématique des instruments pour observer les pratiques des élèves de CM2, les propriétés sous-jacentes, utilisées explicitement ou non, ainsi que le type de discours mis en œuvre par les élèves de 6e pour présenter l’algorithme ou les phases techniques de construction.

Le texte est un peu complexe à comprendre pour des élèves de CM2. Mais ce sera l’occasion pour les élèves de 6e de préciser l’algorithme. La figure finale est une parabole par points, intersections de cercles concentriques de rayons croissants et de droites parallèles à une droite donnée.

L’algorithme est plus complexe que ceux du recueil car l’itération est explicitement plus présente. Même si avec le temps la numérotation est mentale, on a vu que généralement les élèves numérotent les points à relier, et l’itération consiste à relier les points de même numéro deux à deux, dans un ordre donné. Dans cet algorithme, le rayon du cercle est fonction de l’indice d’itération et la droite à tracer est à une distance variable de la droite de base, elle aussi fonction de l’itération. L’itération ne peut plus être masquée, on est en fait dans un tout autre registre.

Dans tous les groupes le démarrage a été long, essentiellement à cause de la notion indicée des cercles et des droites, naturelle pour ces élèves de sixième, rompus à une écriture plus mathématique des algorithmes utilisés.

La construction s’engage et, alors que ce n’est pas indiqué dans le texte, les élèves de sixième ont utilisé la première perpendiculaire à tracer comme droite de référence pour le tracé des parallèles successives, faisant implicitement utiliser la transitivité du parallélisme aux élèves de CM2.

On peut voir un résumé de 7 min de la pratique de l’un des groupes, celui où la prise en compte des propriétés mathématiques a été la plus précise. D’une manière générale le discours des élèves de sixième n’est pas du tout distancié. Il reste très opérationnel, centré vers la production finale. Il n’y a jamais de rapport aux propriétés mathématiques qui justifient les conseils donnés. Dans la vidéo en lien ci-dessus, on voit néanmoins une référence directe aux définitions.

En fin de séance une grande partie des élèves de CM2 sont arrivés à réaliser ce type de dessin

qui a ensuite été embelli à la maison, comme par exemple cette figure finale :

3.e. Analyse de cet onglet - Perspectives

Ces quelques exemples sont l’occasion de poursuivre notre réflexion sur le type de figure à proposer pour une démarche algorithmique : on voit bien ici les constructions à itération cachée et les constructions à itération visible. Transposées dans un registre de programmation, on conçoit mal que l’itération puisse être aussi transparente car il faudra bien traduire la partie de l’algorithme laissée par l’enseignant du côté de l’élève en appropriation cognitive implicite : il faudra bien « remplacer » la perception réflexive des élèves devant les modèles à reproduire.

Mais comme dans les exemples précédents, cette lisibilité pourra être plus ou moins élémentaire, la complexité pouvant venir non pas d’un algorithme plus difficile, mais plutôt d’une dimension dynamique supplémentaire que l’on pourra donner à ces figures simplement itératives en utilisant à la fois le fait que l’on travaille aussi dans un logiciel de géométrie dynamique et que les élèves doivent travailler sur la géométrie repérée.

On commence à voir s’organiser une possible séquence d’introduction à l’itération :
a) un premier travail textuel - dans la console - pour accompagner la découverte explicite de l’itération.
b) un travail de type « sur objet » d’itération géométrique sans calcul algébrique ou numérique.
c) une approche de l’itération qui commence - comme ici - à construire un cadre « gradué » pour y appliquer une tâche itérative. Dans un premier temps, en construction statique (itération numérique), puis dans un second temps, dynamique (avec une itération géométrique). Dans les deux cas, les activités sont des applications directes de la géométrie repérée des programmes de seconde.

C’est ce que nous allons explorer dans les deux derniers onglets de cette partie

d) Introduire différentes dimensions dynamiques de l’itération, que ce soit dans des pas de partage, dans la manipulation directe...
e) en complément, ce travail peut déboucher - éventuellement pour les classes de 1re - vers la mise en évidence d’une démarche élémentaire dans ces procédures et sa mise en procédure : cela pourrait être réalisé sous forme de macro construction ou sous forme de fonction javascript qui peuvent ici donner une dimension méta-cognitive à ce que l’on fait tout en renforçant les connaissances spécifiques dues au changement de cadre. Les fonctions en mathématiques n’ont aucun rapport avec les fonctions du javascript en programmation, et voir la différence peut faire mieux comprendre ce que sont chacune d’elles.

La partie 2 de ce dossier explore ces pistes là... et quelques autres...

Console et tableur

4. Programmation en sortie texte et tableur

Quand elle est utilisée de manière itérative, on critique régulièrement la poignée de recopie des tableurs, comme masquant l’itération, la rendant implicite. On a vu dans les onglets précédents combien cette attitude est souvent un objectif (d’efficacité), et comment, par un vocabulaire technique précis, par des mises en œuvre spécifiques, de nombreuses démarches itératives arrivent à masquer leur variable d’itération.

On peut partir de ce constat pour proposer à nos élèves une relecture de l’itération en reprenant, de manière métacognitive, les itérations masquées et aller vers des itérations lisibles.

Les exemples proposés ci-dessous sont triviaux, chacun trouvera, en fonction de sa classe, des raisons de les enrichir.

4.a. À propos du changement de registre

La première chose à faire remarquer, c’est le changement de registre fonctionnel quand on passe à la programmation à l’intérieur d’un logiciel qui a d’autres fonctionnalités principales. C’est la raison pour laquelle on ne peut pas comparer l’usage d’une feuille de calcul à une programmation dans n’importe quel logiciel.

Dans un tableur la feuille de calcul est la fenêtre courante et donc toute l’intelligence de l’interface est concentrée à cet endroit. Par exemple sur cette simple séquence de poignée de recopie (avant et après le lâcher de souris)

rend bien compte à la fois des capacités de manipulation directe (la poignée de recopie) et d’engagement direct (le retour jaune destiné à la validation par l’utilisateur) des tableurs modernes. Ces fonctionnalités sont à comparer avec celles équivalentes dans la fenêtre principale d’un logiciel de géométrie dynamique comme peut l’être par exemple l’anticipation de la construction d’une parallèle dans CaRMetal avant le clic de la souris :

Aborder la programmation de l’itération des entiers en javascript est d’un autre registre comme serait la programmation de scripts dans un tableur. Dans un script, on n’est plus - pour le moment - en manipulation directe, il faut effectivement préciser un départ, une arrivée pour une variable et rendre compte de l’itération. Pour l’équivalent en programmation de la poignée de recopie, on est amené à écrire (avec les boutons de l’éditeur) ce qui est à gauche pour produire ce qui est à droite.

C’est plus compliqué uniquement parce que l’on n’est pas dans la même fonctionnalité logicielle. Cela n’enlève rien à l’argumentaire initial de cet onglet. Mais si on devait passer de l’un à l’autre, il conviendrait de bien spécifier cette différence fondamentale de registre.

4.b. Des itérations cachées

Il est donc préférable de commencer l’entrée dans l’itération en javascript comme les élèves l’ont toujours pratiquée, en la rendant transparente, ce qui signifie ici deux choses, d’abord se centrer sur autre chose, et ensuite que cet autre chose n’implique pas la variable de la boucle d’itération.

Toujours dans la console de sortie texte, on peut jouer sur les mots spécifiques, pour provoquer une réflexion sur l’affichage : si on utilise des mots qui ont la même lettre initiale et finale (ELLE, SENS, RADAR ....) et qu’on veut faire s’afficher 5 fois le mot sans doublons de la lettre de début et de fin de mot, que faire ?

On voit déjà que produire cela avec un tableur est moins simple, car il faudrait formater les cellules et la première différemment des autres. À comparer éventuellement avec :

qui a un équivalent tableur immédiat aussi

En restant dans la console, on peut avoir une activité plus arithmétique et, dans le cadre d’un travail sur l’écriture de la sortie, reproduire l’écriture de l’addition itérée d’un nombre, éventuellement en incluant des variables :

On peut commencer sans la dernière ligne puisque celle-ci nécessite une présentation de la concaténation des chaines de caractère et de préciser, puisque nous sommes ici en javascript, que le faible typage de javascript permet ce genre de simplification d’écriture (comme par exemple en mathématique quand le mot rayon désigne selon le contexte : un segment, une longueur ou un nombre, chacun s’adaptant au contexte).

On notera que la désignation à l’avance du nombre d’itérations est l’équivalent du choix d’arrêt de la poignée de recopie du tableur. Le calcul final sur tableur demande déjà un petit travail d’écriture.

Ajouter le nombre itéré en variable demande une réécriture de Print, avec une connaissance plus précise de la concaténation, et en tableur nécessite l’utilisation d’une cellule qui fait office de la variable p dans le script suivant :

Par rapport aux algorithmes à itération cachée que l’on peut rencontrer dans le cursus scolaire, on voit ici que le critère d’arrêt est clairement apparent alors qu’il est plus souvent implicite dans les algorithmes scolaires usuels. Par exemple quand on dit que pour comparer deux nombres on compare d’abord leurs longueurs (en nombres de chiffres), en pratique cette comparaison est souvent - de fait - du subitizing, effectuée sans pensée, et donc plus implicite qu’un critère d’arrêt d’une boucle de programmation.

Pour terminer sur cette rubrique des itérations cachées, il est intéressant de s’affranchir de la console et de faire une sortie dans la fenêtre de travail naturelle du logiciel, la fenêtre de géométrie. Voici un exemple élémentaire qui consiste à afficher 20 segments au hasard (il faut taper le premier random, la fonction n’est pas implémentée dans les boutons de l’interface, on poursuit par des copier-coller) :

Un premier lancer de ce script donne (par exemple)

Pour distinguer les lancers, avant de cliquer à nouveau sur les feux tricolores, on peut changer la couleur (et l’apparence) des points et des segments, un second lancer du script, par dessus le premier donne (par exemple)

Ce qui est une autre façon d’illustrer la fluctuation des échantillonnages avant tout travail numérique (on pourrait faire des classes sur les longueurs. Alain Busser à observé qu’en tirant les points au hasard (avec un random bien équiréparti) dans un champ fixé comme ici entre -5 et 5 alors les aires des triangles obtenus par trois points ne sont pas du tout équiréparties.

4.c. Des itérations plus visibles

Une boucle d’itération jusqu’à maintenant est perçue comme un compteur de répétition, un peu comme le REPETE [4] du logo dans la construction du carré : la variable de la boucle n’est pas un indice en soi. C’est un peu comme l’étendue d’un ordre, sa portée.

Si on se réfère au passé itératif des élèves comme abordé dans les onglets précédents, on a vu qu’en général tout a été fait pour que la répétition dans un algorithme ne soit pas indicée comme telle, même si chacun perçoit concrètement l’indiciation, elle relève souvent d’un autre registre que le numérique (registre langagier par exemple avec les dixièmes, les centièmes sur les décimaux, etc).

Dans les premiers tableaux de fils des élèves de CM2, l’indice est marqué avant de lancer l’itération du procédé, et la tâche de répétition est de relier les points de même indice. Les élèves peuvent percevoir la tâche de répétition comme non indicée [TANT QUE (pas reliés) - Relier les points de même nom - FIN TANT QUE], plus du registre de la correspondance terme à terme, procédé fondamental car c’est en partie comme cela qu’ils ont appris à écrire. Chacun aura remarqué que cette phase initiale est vite abandonnée par les enfants car trop lourde à mettre en place (et en plus difficile à effacer par la suite). Mais ce qui reste de son éviction est surtout la correspondance terme à terme « des bons points » : la suite numérique est représentée mentalement par les élèves, et les figures se réussissent très bien du premier coup par perception topologique de bon voisinage : le suivant est celui d’à côté, et il n’est pas indicé, ce n’est pas le huitième point, c’est juste le suivant. L’évidence topologique remplace le besoin d’indicer. En fait le frise numérique mentalement dans la tête des élèves est, informatiquement, une liste. Implicitement les élèves travaillent sur des algorithmes de listes plus que sur des itérations.

On voit bien aussi la différence culturelle avec la classe de sixième où les élèves - de cette classe en tout cas - savaient indicer les cercles et les droites dans leurs noms. C’est un point à retenir pour les activités géométriques : l’indice sur le nom des objets est une entrée peut-être plus facile à appréhender pour l’itération. On s’en servira au prochain onglet.

On ne sera donc pas surpris de la difficulté pour aborder l’étape suivante, quand il va falloir décrire une tâche explicitement indicée. Le plus simple pour entrer dans cette conceptualisation est de l’aborder de manière simplement opérationnelle sur des scripts élémentaires qui expriment autrement un domaine bien connu des élèves, comme l’écriture de tables de multiplication, de tables de carrés par exemple.

Comme on a travaillé l’écriture en sortie dans les scripts précédents (en particulier l’utilisation du + comme concaténation des chaines de caractère), on peut demander aux élèves d’écrire un script qui donne en sortie les carrés des 9 premiers nombres entiers.

ce qui produit le résultat suivant

On a utilisé d’abord le thème de la table du carré pour deux raisons :

 il n’y a pas d’autres nombres comme avec la table de multiplication, on n’a pas à rentrer dans une distinction variable/constante

 la variable intervenant deux fois dans la ligne de sortie, on voit bien la relation de « table des carrés » - ceci serait vrai avec les tables de multiplication.

Il est intéressant de faire le lien avec la même activité sur tableur par exemple

On peut faire le parallèle entre les deux écritures : dans le script, la première utilisation de la variable i correspond à la manipulation directe de la feuille de calcul sur les nombres, et la deuxième utilisation de i correspond à l’écriture du produit.

En leur faisant observer le contenu des cellules, on peut faire alors amener les élèves à remarquer que le contenu des cellules est indicé par le numéro de ligne des cellules, et donc que le tableur fait, de manière plus transparente, parce que c’est sa fonctionnalité première, la même chose que notre script. Au passage, notons que, pour ces différentes raisons, ce serait une approche significativement différente sur calculatrice.


4.d. Les cellules du tableur comme nouveaux objets

Ce lien permanent avec le tableur n’est pas innocent. On sait bien que le tableur a été introduit dans les programmes du lycée comme intermédiaire entre l’arithmétique et l’algèbre. De nombreux travaux ont été réalisé sur ce thème, nous n’y reviendrons pas plus en détail.

Dans la logique des onglets précédents sur l’école primaire, la référence au tableur va d’abord être celle que l’on fait ici : le passage d’une itération implicite à une itération explicite, avec comparaison des écritures et des résultats. C’est une autre façon d’utiliser, à un premier niveau, cette interface vers l’algébrisation. Mais cela peut n’être aussi qu’un changement de cadre d’une même activité, pour enrichir les deux champs d’expression de cette activité.

Ensuite, dans un contexte de programmation dynamique de la géométrie repérée, nous allons l’utiliser à un second niveau, pour explorer la différence entre une variable et son contenu comme ici une cellule n’est pas son contenu (A4*A4 est le contenu algébrique de la cellule C4 par exemple). Le tableur permet de mettre en œuvre - au niveau d’abstraction où en sont les élèves de seconde - des situations de type « travail sur les objets » comme nous avons pu les observer dans certaines démarches algorithmiques de l’école primaire. Les cellules du tableur vont être nos nouveaux objets de manipulation, des objets parce qu’il ont un nom et « un intérieur », un contenu, on peut « regarder dans la cellule », ce qu’elle contient. Et l’interface est particulièrement limpide : il suffit de cliquer sur une cellule pour voir son contenu algébrique.

Là encore, comme à l’école primaire, le passage par ces objets va être transitoire, pour aider à rentrer plus rapidement dans le concept de variable informatique. Alors, tout comme au CM2, l’abandon des bandes pour le fractionnement peut être plus ou moins bien vécu selon ses représentations en relation à l’objet physique, il faut déjà s’attendre à ce que l’abandon de la référence physique à la cellule au fur et à mesure de l’abstraction des scripts puisse lui aussi poser problème. Mais, comme nous allons le voir dans les onglets suivants, une grande marge de manœuvre existe pour adapter notre discours à la compréhension du moment.

4.e. Tables de multiplication

Poursuivons sur la table de multiplication. On peut commencer par une table statique, où le nombre n’est pas une constante algébrique, mais simplement une constante numérique, un nombre, donné comme tel, partie gauche ci-dessous, puis proposer de passer à une constante algébrique (partie droite où il y a surtout un travail sur l’écriture dans la sortie) :

On notera que la table de 7 itère les 7 d’où le i x 7 et non pas 7 x i .

Pour la table de 9, - selon l’aisance des élèves dans leur compréhension de la concaténation des chaines en sortie avec le typage automatique des entiers en chaine - on peut jouer à illustrer cette propriété bien connue :

Là encore, voir sur tableur l’utilisation de A1-1 et de 10-A1 permet de mettre en relation l’itération (le numéro de ligne 1) et le calcul à effectuer.

Si on fait cette activité, on ne manquera pas de comparer le résultat de la table de multiplication usuelle (à gauche) avec cette écriture arithmétique (à droite), en justifiant le 0 dans le second cas (ce qui a pu aussi être fait avant avec le tableur)

Remarques sur la concaténation : Bien entendu l’écriture complexe comme ici dans une chaîne de caractère peut (fortement) poser problème pour certains élèves, puisque selon le contexte le même signe est une concaténation ou une addition. Cela peut-être une richesse, mais seulement quand ce n’est pas un handicap insurmontable. On peut choisir de ne pas aller jusque là.

En particulier, quand nous ferons de l’indiciation de points dans le prochain onglet, les choses seront plus simples car on distinguera bien la partie « nom du point » de la partie « coordonnées du point ».


4.f. Quitter la console

Fort de ces activités sur les tables diverses, on peut avoir envie de passer à des activités équivalentes en sortie graphique - la sortie naturelle de CarMetal. On peut commencer tout simplement à indicer l’abscisse et l’ordonnée des points - comme les élèves de CM2 et les relier, juste pour voir ce que cela produit. On a considéré cela comme une simple activité de « lien de points » décrits par la liste des « noms » des points (les nombres) dans l’onglet précédent. Ici c’est vite conceptuellement différent puisque l’on trace un segment - de fait indicé même s’il n’est pas nommé - au fur et à mesure que l’on égrène la variable de la boucle. D’où cette expression « juste pour voir ce que cela produit » car a priori les élèves ne perçoivent généralement pas ce que cela peut produire.

Selon le contexte de la classe, une production comme celle-ci peut appeler de nombreux commentaires (repère des abscisses et ordonnées, pente des droites, leurs équations, le parallélisme, ou même feu Thalès).

Notons que, comme on peut lire le contenu d’un cellule, ici un clic droit sur un point permet de lire ses coordonnées.

On peut avoir envie de poursuivre vers les tableaux de fils. Dans une logique « objet » des points, on voit qu’il faut les numéroter « dans l’autre sens » horizontalement, comme sur certains travaux d’élèves de CM2. La prégnance du 10 à l’écran, éventuellement le souvenir de l’exercice précédent où l’on a écrit 10-i, fait que le premier essai des élèves va être fort probablement de ce type là (à gauche) ... ce qui est un bon début.

La difficulté est que généralement personne ne voit l’erreur, les élèves étant trop contents « d’avoir réussi ». Une façon de faire prendre conscience de l’erreur pourrait être de mettre les segments en gras dans le script comme à droite de l’illustration. Là les élèves devraient voir le premier segment sur l’axe des ordonnées et éventuellement que le point d’abscisse 10 n’est pas atteint par le script (pas de point dessus)

Comme les élèves n’ont modifié d’un élément dans ce script, l’erreur ne peut provenir que de là, mais apercevoir puis corriger ce décalage peut prendre un peu de temps pour arriver à cela :

Reste que c’est un investissement à la fois de géométrie repérée et d’algorithmique fondamental qui sera réinvesti plusieurs fois, éventuellement même de manière assez décontextualisée. Cela n’est pas inutile d’y passer le temps nécessaire, surtout si on veut en faire une situation d’apprentissage qui servira de référence à plusieurs niveaux de conceptualisation.

Bilan de l’onglet

Dans cet onglet, nous avons distingué deux types d’itérations, avec des exercices dédiés, travaillés en relation avec le tableur. Nous avons abordé la question de l’indiciation des cellules dans les tableurs en relation avec des nombres de variables ou paramètres.

Nous avons pris soin de distinguer les constantes numériques des constantes algébriques (un type de variables que nous retrouverons dans un second onglet sur le tableur dans la partie 2).

Nous nous sommes essayés à l’itération de dessins géométriques.

Géométrie

5. Géométrie et itération - Une première approche

Pour aborder l’itération en lien avec la géométrie - et plus particulièrement celle repérée, nous pourrions poursuivre sur la piste du dernier exercice de l’onglet précédent, vers les tableaux de fils ; le thème s’y prête bien. Dans cet article, nous avons choisi de le conserver pour l’onglet suivant dans un registre plus dynamique, mais ce que l’on va faire avec géométrie repérée dans cette partie peut tout à fait se faire avec les tableaux de fils, il y aurait même une certaine continuité. Nous avons pris une autre option plus « éditoriale », pour enrichir le panel de propositions d’activités (et parce que j’ai beaucoup fait d’escargots en maternelle ces dernières années - voir la suite ;-).

Jusqu’ici, nous avons surtout mis en évidence un seul des aspects de l’itération, à savoir la séquence qui se répète, que ce soit dans la description des itérations en arithmétique au CP ou au CE1 ou dans celles des constructions de figures en CM2 ou en 6e. Mais comme nous l’avons mentionné à propos de la numération, les enfants sont confrontés dés la fin de l’école primaire à l’itération comme reproduction de structure à l’identique dans un autre contexte (la numération des nombres de trois chiffres dans un contexte de milliers ou de millions). Cet aspect là, d’un certain point de vue, fractal, ne peux pas être abordé en classe avec un papier et un crayon (tout le monde ne s’appelle pas Escher) mais il est très facile à mettre en œuvre sur des exemples élémentaires à travers l’utilisation d’une boucle.

Cet onglet va ainsi comporter trois parties :

 5.1. Un exemple élémentaire de construction uniquement géométrique qui relève de l’itération comme reproduction d’une transformation d’une figure initiale.
 5.2. Une construction itérative, de type séquentielle, avec utilisation intensive de la géométrie repérée, qui va produire un dessin.
 5.3. Une transformation de cette construction en une démarche du premier type, ce qui va transformer le dessin de la partie précédente, en une figure géométrique, manipulable comme telle.


Rappel
.
Dans une progression sur l’algorithmique, il est clair que les élèves ont déjà abordé d’autres notions, pratiqué d’autres activités avant d’aborder la boucle d’itération. En particulier si on utilise l’éditeur javascript de CaRMetal, ils ont déjà pratiqué quelques constructions géométriques élémentaires sur le triangle ou les quadrilatères. Typiquement, on aurait déjà fait faire un carré aux élèves, géométriquement.


5.1. Un emboitement de carrés

On se propose de faire, uniquement de manière géométrique (afin que la figure soit dynamique), avec une boucle d’itération, tout d’abord la figure de gauche que l’on transformera ensuite en la figure de droite.

Pour que la figure se fasse à partir d’une feuille blanche, on commence par construire un carré de centre O de sommet A. On note ABCD ce carré.

Cela peut être une figure qui a déjà été faite dans une activité précédente, dans ce cas, on ne fait que reprendre son script, comme par exemple celui ci-contre, dans une version spontanément mixte, mi procédurale, mi fonctionnelle (*) : pour les points on a renforcé l’aspect procédural en ajoutant le nom du point, ce que l’on n’a pas fait pour les autres objets qui sont désignés par une variable javascript. Dans un contexte scolaire cela ne pose aucun problème, les noms des points sont les noms effectifs sur la figure, et les variables, les variables du script. On rappelle que les données numériques de O et A ne sont que des initialisations de la figure, ces deux points sont manipulables à la souris. La seule difficulté est dans Intersection2 dont il faut connaître la syntaxe : les deux points B et D sont les noms des intersections produites à partir de la droite h1 et du cercle c1. Dans le script copiable plus bas, on a seulement ajouté un peu de cosmétique.


(*) une fonction Point de l’extension de javascript à CaRMetal se comporte comme une fonction dans le contexte a=Point(...) ou une procédure si on utilise seulement Point(...). Le polycopié de cette page aborde en détail ces questions.

Avant d’envisager une boucle pour l’algorithme des milieux on commencera par faire une première étape spontanément, éventuellement en insistant pour ne pas donner de noms aux objets et donc de ne travailler que sur des variables javascript. Le première difficulté sera dans l’attribution de variables pour les points B et D créés par la procédure d’intersection. Toujours valider le script par son application.

Selon le contexte de la classe, on peut envisager une étape suivante encore « à la main » et observer que l’on va vite épuiser les lettres. L’idée de la boucle émergeant, on laissera les élèves tester leurs procédures pour exprimer cette idée simple « on refait la même chose sur les nouveaux points », avant d’utiliser éventuellement un débat pour faire émerger une solution. En effet, l’attribution des anciennes valeurs par la précédente n’est pas du tout naturelle, c’est une démarche informatique. On pourra mentionner le lien avec l’écriture i=i+1 de la boucle (prise hors contexte, l’écriture est aussi bien itérative que récursive).

Copier le script du carré itéré par les milieux

o=Point("O",0,0);SetPointType("O","cross");SetColor("O","red");
a=Point("A",-5,5);
c=Symmetry("C","O","A");
l1=Line("A","C");SetHide(l1,true);
h1=Perpendicular(l1,"O");SetHide(h1,true);
c1=Circle("O","A");SetHide(c1,true);
Intersection2("B","D",c1,h1);
SetShowName("A",true);
Segment("A","B");Segment("B","C");
Segment("C","D");Segment("D","A");
SetHide("B,C,D",true);
d="D";b="B";
for (i=0; i<10; i=i+1){
	p=MidPoint(a,b);q=MidPoint(c,b);
	r=MidPoint(c,d);s=MidPoint(a,d);
	SetHide(p,true);SetHide(q,true);SetHide(r,true);SetHide(s,true);
	Segment(p,q);	Segment(r,q);	Segment(r,s);	Segment(p,s);
	a=p;b=q;c=r;d=s;
}

L’itération du carré est trop symétrique pour être esthétique. On peut donc sur chaque côté, itérer le milieu d’un côté pour prendre un quart. On laissera l’initiative aux élèves pour observer la logique de développement : est-ce que les quarts sont tous bien dans un même sens trigonométrique ? Pour beaucoup d’élèves probablement pas la première fois, ce qui est formateur.

Copier le script itéré sur des quarts

o=Point("O",0,0);SetPointType("O","cross");SetColor("O","red");
a=Point("A",-5,0);
c=Symmetry("C","O","A");
l1=Line("A","C");SetHide(l1,true);
h1=Perpendicular(l1,"O");SetHide(h1,true);
c1=Circle("O","A");SetHide(c1,true);
Intersection2("B","D",c1,h1);
SetShowName("A",true);
Segment("A","B");Segment("B","C");
Segment("C","D");Segment("D","A");
SetHide("B,C,D",true);
d="D";b="B";
for (i=0; i<15; i=i+1){
	p1=MidPoint(a,b);p=MidPoint(a,p1);
	q1=MidPoint(c,b);q=MidPoint(b,q1);
	r1=MidPoint(c,d);r=MidPoint(c,r1);
	s1=MidPoint(a,d);s=MidPoint(d,s1);
	SetHide(p1,true);SetHide(q1,true);SetHide(r1,true);SetHide(s1,true);
	SetHide(p,true);SetHide(q,true);SetHide(r,true);SetHide(s,true);
	Segment(p,q);	Segment(r,q);	Segment(r,s);	Segment(p,s);
	a=p;b=q;c=r;d=s;
}

Le résultat obtenu est nettement plus esthétique. On peut déplacer le point A en particulier l’attacher à un cercle quelconque de centre O et faire une animation sur A. Dans un prochain onglet, au lieu d’utiliser le quart du côté, on ajoutera un curseur pour choisir le coefficient...

Bilan de cette activité

On a vu dans cette première partie, un script totalement géométrique, avec une boucle d’itération de reproduction de figure proche de la récursivité. Si cela peut faire sens - et si on souhaite donner une dimension méta-cognitive à l’activité - on peut faire le lien avec le changement de base - les tranches de trois chiffres - de notre système de numération.

5.2. La spirale de l’escargot

Dans cette partie, nous abordons le cœur de notre proposition sur la rencontre entre l’itération, l’algorithmique et la géométrie repérée. Nous revenons à une activité a priori plus élémentaire de géométrie repérée. On se propose ici de réaliser un dessin comme ceux des élèves de CM2, dans un contexte un peu plus complexe, puis de voir en quoi nous avons réalisé un dessin, et comment le transformer en figure géométrique.

C’est dans cette articulation que nous allons mettre à profit les différentes réflexions des onglets précédents. Le support de cette réflexion va être l’activité suivante : nous nous proposons de dessiner une spirale dite de type « escargot », c’est à dire composée de demi-cercles supérieurs et inférieurs :


Au moins trois approches sont possibles : une construction pas à pas, entièrement géométrique comme en 5.1, mais assez complexe à traduire en terme d’algorithme pour rendre compte des arcs de cercles, deux approches centrées sur la géométrie repérée. Ce sont celles-ci que nous allons explorer. La construction géométrique sera proposée, en supplément, dans les onglets de manipulation directe en ligne, sur la spirale d’Archimède, un peu plus longue à réaliser.

En s’inspirant des premiers dessins des enfants, une démarche élémentaire consiste à marquer tous les points significatifs de la figure, comme les suites d’entiers des premiers dessins de fils. Dans ce cas, avec une première boucle on construit ces points, et dans une seconde les arcs de cercle associés.

Cette méthode a l’avantage de séparer l’analyse de la figure, de sa réalisation, ce qui est pertinent dans un contexte d’apprentissage. Elle présente l’inconvénient de devoir indicer les points, ce qui peut ne pas plaire à certains collègues (puisqu’il faut écrire « A »+i pour construire les points A4, A5) ... Toutefois, dans l’onglet précédent, nous avons vu que les cellules sont naturellement indicées et que cela ne pose aucun problème aux élèves. Si on est tout à fait honnête, on obervera que l’écriture additive pour une concaténation élémentaire comme ici est plus difficile à accepter pour un enseignant de mathématique que pour ses élèves : pour eux le signe + a ici un sens plus primitif, celui de « mettre ensemble » (expression qu’ils ont beaucoup entendu au début de leur scolarité avant d’apprendre à calculer) des objets qui ne partagent pas une même structures, ni algébriques, ni même numériques. En ce sens il est dénué d’ambiguïté, ce qui n’était pas le cas pour certaines écritures sur la table de 9 dans l’onglet précédent.

Toujours dans un contexte de géométrie repérée, une autre méthode consiste à construire dans une boucle, directement un arc supérieur et l’arc inférieur suivant. Cette méthode a pour elle le gros avantage de ne pas avoir à indicer les points mais la boucle est probablement un peu plus complexe à construire. Cette dernière méthode est cognitivement plus significative. Commencer par la première méthode nous débarrassera des contraintes calculatoires - déjà réglées - pour nous centrer sur l’aspect plus cognitif de cette autre démarche.

5.2.a. Placer les points significatifs de la figure

Selon l’objectif de la séance (plus centré sur la pratique d’algorithme, ou au contraire plus centré sur l’investigation mathématique), selon la classe, on peut laisser explorer la construction en précisant seulement que tous les arcs de cercles sont centrés alternativement sur deux points : un centre et le premier point de la spirale. On peut avoir demandé de construire la spirale au préalable, sur papier quadrillé, ce qui permet de s’approprier plus rapidement les régularités numériques en jeu puisqu’elles auront été mises en œuvre implicitement pendant la construction. On peut aussi choisir de présenter un autre dessin de la spirale qui donne beaucoup d’informations pour peu qu’on sache l’interpréter :

Interpréter ce dessin pour en tirer des informations utiles à la construction peut aussi être un premier objectif pour certaines classes : on y voit que sur l’axe des abscisses on va s’intéresser aux points de coordonnées impaires, de même sur l’axe des ordonnées. Par contre sur la droite verticale inférieure, la superposition des points et des cotes -10 et -20 montre que ce sont des points à ordonnée paire qui vont nous intéresser.

Dans un premier temps on s’intéresse aux points de la droite horizontale. Le fait que 2n+1 soit égal à 1 pour n=0 incite à indicer les points à partir de 0. Il y a une certaine cohérence, mais c’est pédagogiquement discutable, chacun fera son choix. Ce simple script :

produit cette première ligne de points

On pourra mentionner que dans la fonction Point, le premier terme est une chaine de caractère, et les deux autres des coordonnées, et donc que le premier + est un signe opérant sur les chaines et le second sur les entiers.

De même pour les points B (par Bas), on peut partir de B0 comme ci-dessous ou mettre B0 en G0 pour que le premier point utilisé dans la spirale soit B1.

5.2.b. Placer les arcs de cercles

Avant de poursuivre le script, on fera tracer à la main (avec l’outil arc de cercle) sur la figure, les premiers tours pour que chacun comprenne bien ce qu’il doit mettre dans la boucle des arcs. En fait ce geste objective non seulement les points (parce qu’on les pointe) mais surtout les arcs que l’on construit soi-même à la main. C’est important avant de devoir les décrire de manière plus conceptuelle car indicés.

On peut retenir de mettre deux arcs par boucles, pour faire un tour. Quels que soient les choix que l’on effectuera sur les indices, il y aura toujours une difficulté structurelle puisque l’on part et l’on arrive sur un point gauche.

Il faudra donc ajouter 1 à la variable de la boucle à un moment donné. Comment ? Où ? On peut répondre aux différentes solutions du comment, et laisser tester, ou mieux anticiper collectivement, une solution possible comme par exemple (mais ce n’est pas la seule) :

Copier le script

// graduations des droites
// hg hd pour horizontal gauche et droit
// vh et vg pour vertical haut et bas
for (i=0; i<10; i=i+1){
	hg=Point("G"+i,-2*i-1,0);
	hd=Point("D"+i,2*i+1,0);
	vh=Point("H"+i,0,2*i+1);
	vb=Point("B"+i,-1,-2*i-2);
	SetShowName(hg,true);SetShowName(hd,true);
	SetShowName(vh,true);SetShowName(vb,true);
}
for (i=0; i<10; i=i+1){
	arc_haut=Arc3pts("G"+i,"H"+i,"D"+i);
	j=i+1;
	arc_bas=Arc3pts("D"+i,"B"+i,"G"+j);
}

On ajoutera les codes cosmétiques en particulier pour cacher les points. On les a laissés apparents ici pour vérifier que l’on n’a fait qu’un dessin : tous les points sont des points dynamiques, mais ils ne sont pas liés entre eux comme dans la construction géométrique de la partie précédente : si on en déplace un, on casse la spirale, on ne l’entraîne pas. C’est pour cela qu’il y aura une partie 5.3.

5.2.c. Construire les arcs sans nommer les points

Cette première approche étant finalisée, elle permet ensuite - si on souhaite poursuivre dans cette voie - de réfléchir sur la possibilité de construire les arcs sans nommer les points. Bien entendu, on va utiliser les mêmes points, mais au lieu de les construire en préalable au tracé de la spirale, nous allons les construire au fur et à mesure de leur besoin pour tracer un arc. On construit un tour dans une boucle. Pour cela, une version élémentaire, largement suffisante pour une utilisation scolaire, consiste à utiliser deux variables pour les deux points à gauche : le premier hg1 de départ et le second hg2 d’arrivée au tour suivant. Le script est alors assez simple :

Mais qu’on ne s’y trompe pas, il est bien plus conceptuel. Et pour arriver à cela il n’est pas raisonnable d’envisager de brûler les étapes et de se passer de ce qui vient d’être fait au dessus (voir la partie analyse ci-dessous). Depuis l’étape précédente, alors on peut effectivement décider de mettre les points dans la boucle sans les nommer. Devant une difficulté pour le point hg2, on pourra signaler aux élèves qu’on ne peut faire l’économie du j de la boucle précédente, qu’il faudra bien qu’il apparaisse d’une façon ou d’une autre, d’où le -2i-3.

Même si ce n’est pas optimisé - mais ce n’est pas un objectif ici - le fait que l’on ait utilisé deux points hg1 et hg2 simplifie grandement l’écriture. Les élèves ne percoivent pas tout de suite ce qu’ils ont fait (sauf exception), mais on peut compter sur eux pour essayer de prendre les points (surtout si on les y a habitués), et s’ils veulent prendre un point gauche, surprise :

Et en plus si on poursuit et qu’on prend vraiment les points...

Parce qu’on peut ensuite agir sur la production obtenue, on peut commencer à mieux conceptualiser le lien entre ces deux variables hg1 et hg2 et la superposition des 2 points. Il est intéressant de faire verbaliser les élèves sur pourquoi, concrêtement on a deux points superposés. Cette activité est un exemple concret de ce que Michèle Artigue, dans ses conférences, nous invite à faire : prendre à notre charge une partie de la difficulté en créant une activité qui va produire la rencontre avec ce que l’on veut montrer . Ici bien entendu, nous avons en plus un outil puissant qui, utilisé à bon escient, en graduant la complexité consciemment, aide - par sa part de manipulation sur les objets obtenus - à ce formidable travail de conceptualisation.

On voit déjà toute la richesse de l’interaction graphique avec la production du script. C’est le moment de faire un premier bilan de ce que l’on vient de faire, et parler plus précisément des perspectives suivantes :

Analyse de la partie 5.2

En reprenant, dans un contexte informatique, la même démarche que celles des élèves de CM2 - sur les dessins mais aussi sur l’apprentissage des fractions - puis en s’en affranchissant ensuite, on parcourt une nouvelle fois, en accéléré, un chemin cognitif classique mais essentiel à l’apprentissage : ce chemin qui va d’un travail sur des objets construits (ici les points de référence G, D, H, B indexés dans la boucle d’itération) vers un travail sur les représentations de ces mêmes points.

Le nommage des points en 5.2.a correspond à la mise en place des objets de l’activité. La partie 5.2.b est alors la phase de manipulation de ces objets (comme constituants des arcs) : construction de la figure mais aussi du sens mathématique des calculs précédents (de géométrie repérée). La partie 5.2.c correspond à la conceptualisation des objets : désormais des points, explicitement nommés, sont conceptualisés en variables du programmes, et toute l’activité renforce la conceptualisation des variables. La conceptualisation est du même ordre que la passage du fractionnement des bandes de papier aux fractions comme abscisses de points sur une droite graduée en CM1, mais ici l’outil utilisé permet d’agir encore sur la production plus conceptuelle, comme consituée d’objets.

En définitive, nous voyons que programmer de cette façon avec une sortie graphique permet de travailler à la fois la géométrie repérée et la conceptualisation des objets de la programmtion, en passant par les phases essentielles de la démarche cognitive : commencer par des objets avant de travailler sur leur conceptualisation. Cette activité montre que nous pouvons respecter ce parcours même au lycée. Bien sûr les « objets du lycée » ne sont pas les mêmes qu’à l’école ou au collège - et heureusement !!! - ils ont déjà une part de virtualisation de par tout le travail mathématique fait au collège : les points (entre autres) d’un logiciel de géométrie sont les objets concrets d’une figure qui représentent dans le monde sensible de la géométrie dynamique - le monde de l’écran - le concept de variables d’un programme informatique.

Les Carscripts de CaRMetal sont alors un bon outil pour travailler la conceptualisation de la programmation. Nous allons poursuivre dans la partie suivante (5.3) cette exploration pour transformer le dessin que nous venons de faire en une véritable figure dynamique.

L’étape supérieure va être d’aborder l’essence même des Carscripts, le mélange des deux mondes : réaliser des figures qui imbriquent à la fois le concept de variable (du côté du javascript) et celui de leur expression sensible (les objets de la figure géométrique). D’une certaine façon, et c’est comme cela que je le présenterais aux élèves, il s’agit de mélanger du virtuel (les variables javascript) et du réel (les points des figures) pour produire un réel encore plus beau. Il faudra juste apprendre le langage de transfert. Il est très simple et tient en deux règles, ce sera l’objet de l’onglet suivant, le premier onglet de la deuxième partie.

Disant cela, on voit encore mieux le rôle du tableur comme intermédiaire entre l’arithmétique et l’algébre. Le tableur reste d’un seul côté, du côté de son monde sensible à lui, du côté de la feuille de calcul. Pour l’algébre, il apporte comme un calque supplémentaire, au dessus de l’arithmétique (les cellules ont un contenu), mais ne passe pas la frontière de l’algébrisation, et c’est tout son intérêt. Dans la programmation, les variables sont du côté de l’algèbre (même si l’écriture n’est pas la même, c’est entendu), il y a bien les deux mondes. Et la programmation des Carscripts est un environnement qui permet d’enrichir les deux et de les appréhender, chacun, plus rapidement.

Même si cette interaction entre deux mondes différents existe déjà depuis longtemps dans des logiciels professionnels de musique, de vidéo, et plus généralement de reconnaissance numérique en tous genres, les Carscripts permettent de rendre cette démarche disponible aux élèves dans deux domaines d’apprentissage fondamentaux au lycée.

Dans ce contexte d’appropriation de la programmation, le rôle des tableurs est un élément intermédiaire qui peut être intéressant pour les élèves qui ne franchissent pas facilement ce passage du réel au virtuel, de l’objet à la variable associée, justement parce que le tableur reste du côté de l’élève tout en élevant sa conceptualisation par sa propre action sur les cellules. Plus loin, nous y reviendrons, en montrant qu’on peut faire aussi une certaine forme de géométrie dynamique au tableur, et nous analyserons les différences.

Mais nous n’en sommes pas là continuons notre activité.


5.3. Transformation du dessin de la spirale en figure.

Nous avons vu au début de cette partie une construction totalement géométrique, en manipulation directe, construite par script. Il y a plusieurs façons de rendre la spirale dynamique c’est-à-dire manipulable par le point G0 pour tourner par exemple. Ce qui est annoncé dans la partie précédente en est une, mais nous allons rester dans une démarche plus élémentaire, sans calculs cette fois, en rendant ce que l’on a fait en 5.2 plus géométrique.

Là encore, comme en 5.2, nous allons opérer en trois étapes : une étape de construction des objets, nommés, une étape de construction de la spirale (la même qu’en 5.2.b). À ce stade la spirale sera dynamique et construite selon l’analyse précédente du côté du réel, du côté de la figure, i. e. avec des points plus qu’avec des variables.

À l’attention des enseignants, nous verrons la troisième étape de conceptualisation. Mais comme elle est plus complexe, cette dernière partie n’est pas rédigée pour être utilisée en classe. D’autres exemples, plus simples, seront proposés dans les prochains onglets.

5.3.a. Construction dynamique des points de la spirale.

On part d’un point O « centre » de la spirale et d’un point G0. On comprend bien qu’en donnant des coordonnées indépendantes aux points, on a construit des points indépendants, d’où cette dimenson « dessin » du résultat. Il faut donc lier tous les autres points à O et G0. Ce qui reste simple à réaliser. Nous allons le faire par étape et tester le script à chaque étape.

Commençons par les points « horizontaux ». Il nous faut transformer l’information « d’abscisse impaire » en une relation à O et G0. Il suffit donc de faire les bons symétriques. Pour y voir plus clair commençons modestement par les premiers points. Dans l’illustration ci-dessous on a le script, son application directe et la confirmation que tout est bien dynamique (c’est fait pour).

La construction de D0 ne pose pas de difficulté. Même si on n’a pas fait l’activité 5.1. les élèves ont déjà manipulé ce type d’instruction. La première difficulté est donc de penser à écrire G1 et D1 à partir de G0, D0 et O. Ensuite l’idée est de poursuivre dans une boucle à partir de G0 et G1 d’un côté, de D0 et D1 de l’autre.

Là encore il y a une difficulté et on voit bien pourquoi on n’ira pas en classe jusqu’à la troisième phase : pour construire le point G2 on va prendre le symétrique de G0 par rapport à G1. Pour faire prendre conscience rapidement de cela, on peut reprendre les techniques usuelles d’une construction « en acte », à savoir demander une verbalisation de type opérationnelle et collective : « qu’est-ce qu’il faut faire ? ». L’utilisation du langage dans un contexte opérationnel favorise les représentations. Par ailleurs il est source d’informations : par le vocabuaire qu’ils utilisent, on voit tout de suite comment les élèves se positionnent par rapport à l’indication par exemple. En programmation, la verbalisation est un outil important à utiliser : en mettant à jour leurs représentations les élèves s’ouvrent à la conceptualisation - éventuellement par d’autres élèves - de ce qu’ils disent. Ce n’est pas une méthode d’apprentissage individuelle, mais c’est la chance de l’école de pouvoir enseigner comme cela.

Comme enseignant, nous pouvons toujours prendre une partie des difficultés à notre charge, par exemple en commentant avec plus ou moins de précision ce qu’il faut réaliser, éventuellement, selon les classe en donnant des noms explicites aux variables intermédiaires. Par exemple écrire explicitement G2 et D2 (collectivement) à la suite du script précédent, et ne commencer la boucle qu’à partir de G3 et D3 (contrairement à ce qui est fait ci-dessous) peut être une aide efficace. Même si l’écriture formelle reste élémentaire, et assez limpide, les élèves n’y arrivent en général qu’après plusieurs tentatives :

La partie verticale supérieure ne posera pas plus de problème que cela. Il faut juste l’amorcer d’une façon ou d’une autre. Cela signifie obtenir un point à partir d’un cercle. Mais si on a déjà construit un carré dans une séance préalable, ce n’est pas un problème. Comme mentionné en 5.1 la seule instruction à détailler avec précision est l’instruction Intersection2.

Assurément il faut réfléchir un peu plus pour les points de la partie verticale inférieure, d’ordonnée paire dans le repère implicitement créé avec les points précédents. Ici la difficulté est plus dans l’amorce, la consruction de B0. Il y a plusieurs options. Les élèves peuvent tester leurs algorithmes en masquant (icone « Commentaire ») la partie de la boucle précédente pour se centrer sur la construction dynamique des points H0 et H1 d’une part (première étape) puis B0 et B1 ensuite.

En pratique, commencer par construire les deux points H0, H1, vérifier qu’ils sont bien dynamiques puis ensuite B0 et B1, et vérifier qu’ils sont, eux aussi, dynamiques. Une piste importante à donner en préalable pour éviter des pertes de temps inutiles sur des erreurs de syntaxe : banir d’avance tout recours à de la géométrie repérée et n’utiliser que des transformations géométriques élémentaires, milieux et symétriques.

On peut alors reprendre la boucle précédente et y ajouter par copier coller les itérations des points H et des points B.

Copier le script

Point("O",0,0);
Point("G0",-1,0);SetThickness("G0,O","thick");
Symmetry("D0","O","G0");
Line("dh","G0","D0");
Perpendicular("dv","dh","O");
Circle("co","O","G0");
Intersection2("K","H0","dv","co");
Symmetry("H1","H0","K");
SetShowName("O,G0,G1,H0,K,H1",true);

MidPoint("M","G0","K");
Symmetry("B0","M","H0");
Symmetry("B1","B0","G0");
SetShowName("M,B0,B1",true);
SetHide("M,K",true);
Symmetry("D1","D0","G0");
Symmetry("G1","G0","D0");
SetShowName("O,G0,G1,D0,D1",true);
for (i=1; i<6; i=i+1){
	suiv=i+1;prec=i-1;
	Symmetry("G"+suiv,"G"+i,"G"+prec);SetShowName("G"+suiv,true);
	Symmetry("D"+suiv,"D"+i,"D"+prec);SetShowName("D"+suiv,true);
	Symmetry("H"+suiv,"H"+i,"H"+prec);SetShowName("H"+suiv,true);
	Symmetry("B"+suiv,"B"+i,"B"+prec);SetShowName("B"+suiv,true);
}

5.3.b. Construction de la spirale dynamique. Animation automatique.

En fait il ne reste plus qu’a recopier la boucle déjà utilisée en 5.2.b qui construit les arcs, pour finaliser la spirale dynamique.

Copier le script final (avec points cachés)

Point("O",0,0);
Point("G0",-1,0);SetThickness("G0,O","thick");
Symmetry("D0","O","G0");
Line("dh","G0","D0");
Perpendicular("dv","dh","O");
Circle("co","O","G0");
Intersection2("K","H0","dv","co");
Symmetry("H1","H0","K");

MidPoint("M","G0","K");
Symmetry("B0","M","H0");
Symmetry("B1","B0","G0");
SetHide("M,K",true);
Symmetry("D1","D0","G0");
Symmetry("G1","G0","D0");
SetHide("dh,dv,co,G1,H0,D0,K,H1,D1,B0,B1",true);

for (i=1; i<10; i=i+1){
	suiv=i+1;prec=i-1;
	Symmetry("G"+suiv,"G"+i,"G"+prec);SetHide("G"+suiv,true);
	Symmetry("D"+suiv,"D"+i,"D"+prec);SetHide("D"+suiv,true);
	Symmetry("H"+suiv,"H"+i,"H"+prec);SetHide("H"+suiv,true);
	Symmetry("B"+suiv,"B"+i,"B"+prec);SetHide("B"+suiv,true);
}

for (i=0; i<10; i=i+1){
	arc_haut=Arc3pts("G"+i,"H"+i,"D"+i);
	j=i+1;
	arc_bas=Arc3pts("D"+i,"B"+i,"G"+j);
}

L’intérêt de cette spirale désormais dynamique est de pouvoir l’animer. Pour cela créer un cercle de centre O de rayon fixe quelconque (2e icône des cercles). Un clic droit sur le point G0 permet de choisir d’attacher le point G0 au cercle de centre O. (cliquer sur attacher et montrer le cercle).

Pour l’animation, il faut choisir l’icône de l’animation (ci-dessous), cliquer sur le point G0, puis sur le cercle bleu pour désigner son lieu d’animation et à nouveau sur G0 pour lancer l’animation, soit 3 clics de souris. Maj-flèche gauche ou droite pour faire varier la vitesse du point sur le cercle. Molette de la souris pour le zoom.

5.3.c. Complément : construction directe. Conceptualisation plus délicate

On a vu qu’un point de la spirale est défini à partir de ses deux précédents sur le même axe. Cette construction est abordable quand on nomme les points comme nous venons de le faire, mais c’est conceptuellement beaucoup plus délicat pour une construction directe, en javascript, sans nommer les points dans une approche qui n’est qu’une écriture itérative d’une démarche récursive faisant appel aux deux niveaux précédents.

Puisque nous sommes ici hors considération scolaire dans cette dernière partie, voici, pour les collègues intéressés, sans plus de commentaires, une version minimaliste de la construction dynamique de la même spirale :

Copier ce nouveau script

// on commence par construire les premiers points
// O, G0, D0, H0, B0 et G1 seulement
Point("O",0,0);
Point("G0",-1,0);SetThickness("G0,O","thick");
Symmetry("D0","O","G0");Symmetry("G1","G0","D0");
Line("dh","G0","D0");Perpendicular("dv","dh","O");
Circle("co","O","G0");
Intersection2("K","H0","dv","co");
MidPoint("M","G0","K");Symmetry("B0","M","H0");
SetHide("dh,dv,co,H0,D0,M,K,H1",true);
// puis on intialise l'algorithme
g1="G1";g0="G0";d1="D0";d0="G0";
b1="B0";b0="G0";h1="H0";h0="K";
Arc3pts(g0,h1,d1);Arc3pts(d1,b1,g1);
// hs,ds,ds, gs pour suivant (sachant que
// l'on part d'un g1 pour arriver à un gs)
for (i=0; i<6; i=i+1){
	hs=Symmetry(h1,h0);ds=Symmetry(d1,d0);
	Arc3pts(g1,hs,ds);
	bs=Symmetry(b1,b0);gs=Symmetry(g1,g0);
	Arc3pts(ds,bs,gs);
	g0=g1;g1=gs;h0=h1;h1=hs;
	d0=d1;d1=ds;b0=b1;b1=bs
}

Une version moins minimaliste et plus lisible est envisageable aussi, en commençant la boucle à partir des points d’indice 2, mais même dans ce cas, cela ne semble pas être un objectif raisonnable pour le lycée.

Bilan de l’onglet

Onglet central pour notre propos, l’essentiel a été dit dans l’analyse après l’activité 5.2. Nous sommes passé rapidement d’une phase de repérage d’objets statiques pour un dessin à une phase de constructions d’objets dynamiques en dehors des repères.

La phase géométrique était nécessaire car nous ne savons pas encore comment calculer en javascript sur des points des figures. C’est l’objet de la seconde partie de cette article.


Partie 2 de cet article | Prise en main des Carscripts | Utilisation dans l’espace | TP d’utilisation en seconde)
Forum sur les Carscripts | Télécharger CaRMetal


Version « CaRMetal » des tableaux de fils de CM2 pour un apprentissage du logiciel en cycle 3 (avec figures téléchargeables et fiches élèves)


Erreur d’exécution plugins/auto/sarkaspip/v4.1.0/noisettes/document/inc_images_jointes.html

Commentaires