• Aucun résultat trouvé

Les principales structures algorithmiques des langages itératifs sont l'alternative et l'itration. Nous en détaillerons ci-dessous les difficultés didactiques principales afin d'apprécier dans quelle mesure l'école maternelle peut favoriser, à terme, l'apprentissage de ces notions.

Les structures de contrles sont essentielles en informatique. Leur apprentissage constitue une difficulté réelle. Notre méthode n'a pas pour but de les acquérir expressément mais d'offrir la possibilité de s'imprégner de certaines.

L'alternative

• Une notion informatique

L'alternative est une structure de contrôle informatique courante. Elle est parfois nommée « choix simple » qui se traduit au plan linguistique par « Si… Alors… ». Elle consiste, lors du déroulement du programme, à examiner une condition. Si celle-ci est remplie, la machine exécutera certaines instructions du programme. Dans le cas contraire, elle les ignorera.

Le choix est donc gouverné par l'examen de la condition. Celle-ci est une expression boolenne extrêmement rigide pouvant exclusivement prendre les valeurs « vraie » ou « fausse ». Le fait que la condition soit ou non remplie aura une conséquence importante sur le déroulement du programme.

De plus, on rencontre couramment, en informatique, une structure plus complexe du type : « Si… Alors… Sinon ». On est donc confronté à la structure « Si Condition_réalisée Alors Action1 Sinon Action2 », dont le dernier membre explicite ce qui doit être fait au cas où la condition n'est pas remplie. Le « Si Condition_réalisée » est alors opposé au « Sinon ». Lorsque la condition est réalisée, on effectue l'action1 et, dans tous les autres cas, l'action2.

• Une notion courante ?

La structure alternative la plus répandue dans la vie courante est du type « Si Condition_réalisée Alors Action » dans laquelle le « Alors » est presque toujours éludé. Le jeune enfant est confronté à des phrases du type : « Si il fait soleil, nous irons au square », « Si tu es sage, tu auras une surprise », « Si tu oublies ton maillot, tu ne pourras pas aller à la piscine »… Il en comprend le sens même si les expressions ne sont pas explicitement décrites, de manière aussi formelle qu'en informatique, sous la forme « Si Condition_réalisée Alors Action ».

Dans ce type de phrase, la condition est le plus souvent constituée d'un sujet et d'un verbe et non pas d'une expression booléeene que nous ne sommes pas, dans le langage courant, habitués à manipuler de manière aussi formelle. De plus, l'enfant sait, par expérience, que les conditions annoncées dans le discours ne sont pas toujours respectées de manière draconienne. « Si tu continues… », « Si tu ne finis pas ta soupe… ».

En ce qui concerne le « Si… Alors… Sinon… », l'enfant est confronté à différentes structures, trop diverses pour être clairement formalisées et mémorisées. En effet, il entend et utilise, successivement, des phrases du type :

« Si le magasin est ouvert, on s'arrête, Sinon on rentre à la maison »,

« Si le magasin est ouvert, on s'arrête, Si il est fermé, on rentre à la maison », « Si le magasin est ouvert, on s'arrête, Si il est trop tard, on rentre à la maison »,

« Si le magasin est ouvert, on s'arrête, Sinon, Si il est trop tard, on rentre à la maison », « Si le magasin est ouvert, on s'arrête, Sinon… »…

Gageons qu'il n'entend pas souvent :

« Si heure_courante supérieure à heure_de_fermeture, Alors s'arrêter, Sinon rentrer à la maison ».

La définition du mot « Sinon » donnée par le dictionnaire35 nous conforte encore dans l'idée que le « Si… Sinon » n'est pas une notion courante. En effet, le « Sinon » n'y est jamais directement associé au « Si ». On lui attribue uniquement les définitions suivantes :

Autrement, sans quoi. « Ce document doit être certifié, sinon il n'est pas valable ».

Si ce n'est. « Il ne s'intéresse à rien sinon à la musique ».

Marque une concession. « Faites-le, sinon aujourd'hui, du moins demain ».

Pour surenchérir. « Cela m'est indifférent, sinon désagréable ».

« jeu de l'enfant-robot » --> bons programmeurs

• Une notion informatique difficile

Lorsqu'un robot se déplace, il est confronté à son environnement. Il risque de tomber, de serrer une pièce trop fort, de ne pas revenir au bon endroit… Il est alors nécessaire, pour éliminer ce genre de problème, de pratiquer des contrôles concernant l'entourage du robot. On a donc forcément recours à des « tests d'environnement ». Ceux-ci travaillent sur l'environnement de la machine et lui fournissent des renseignements sur le monde extérieur. Ils permettent de s'assurer que le programme fonctionne quel que soit l'environnement extérieur ou intérieur (la réponse de l'utilisateur, le contenu d'une variable, le contenu du sac, la place de l'enfant-robot dans la pièce… ). Il est impossible de lever de telles ambiguïtés sans le secours d'une structure de type « Si… Alors… ». (Exemple : Si l'enfant-robot n'est pas face au mur, Alors avance d'un pas).

L'alternative est cependant une notion informatique difficile qui pose quelques problèmes didactiques :

Pour les programmeurs adultes débutants, on est souvent tenu de réduire, dans un premier temps, la condition à une comparaison (Si A = B, Si nombre > 5, Si total =< 3670). Ceci pose tout d'abord un problème de formulation. Il n'est pas aisé de transformer une condition que l'on conçoit bien en français (Si j'ai assez d'argent sur le compte) en une comparaison faisant intervenir les variables du programme (Si solde_compte >= minimum). Cette restriction pdagogique confinant la condition à une comparaison créera des difficultés lors de l'introduction de booléens purs (Si Boole <> A=B).

Lors de l'utilisation du « Si… Alors… Sinon », il se peut que le programmeur débutant ne saisisse pas bien à quoi correspond exactement le contraire de « la condition est réalisée ». En effet, le contraire de « il pleut » n'est pas, comme on l'entend trop souvent, « il fait beau » mais simplement « il ne pleut pas » (il se peut qu'il neige).

Le programmeur doit, en outre, admettre que lorsque la condition est réalisée, on effectue l'action1 pour ensuite négliger totalement l'action2. Inversement, au cas où la condition n'est pas remplie, c'est l'action1 qui bien qu'écrite dans le programme sera totalement éludée au profit unique de l'action2. Le fait de prévoir l'alternative au moment de la confection du programme, tout en sachant qu'à l'exécution seule une des deux actions sera accomplie, peut troubler le programmeur débutant.

Le fait que l'action2 puisse être vide (et donc non formulée) et que seul le cas où la condition est réalisée prête à conséquence palpable est également un obstacle didactique. On s'en aperçoit notamment et paradoxalement lorsqu'il est indispensable, dans un autre exercice, d'expliciter ce qui se passe lorsque la condition n'est pas remplie. C'est curieusement la dualité des situations qui pose problème : Si la condition est réalisée, on sait quoi faire. Dans les autres cas, soit on ne fait rien de particulier et il n'y pas de « Sinon », soit on fait ce qui est explicité après le « Sinon ».

À la structure « Si Condition_réalisée Alors Action1 Sinon Action2 », nous préfèrerons, à l'invitation de Jacques Arsac, une structure du type « Si Condition_réalisée Alors Action1 », « Si Condition_non_réalisée Alors Action2 ». Cette dernière façon de procéder, si elle est un peu plus lourde en écriture, est cependant beaucoup plus facilement assimilable. En effet, il

s'agit de 2 structures simples, de type « Si… Alors… », juxtaposées. Cependant, ceci n'est valable que si Action1 ne modifie pas l'évaluation de Condition.

Cette dernière façon de procéder est également plus naturelle. On peut, en effet facilement comprendre et utiliser une structure du type :

Si solde >= 0 Alors Action1

Si solde < 0 Alors Action2 … sauf si Action 1 vide le compte !

Un problème intervient cependant lorsque l'on tente d'utiliser le « Sinon ». On obtient alors souvent, par analogie, des structures du type :

Si solde >= 0 Alors Action1 Sinon Si solde < 0 alors Action2 au lieu de, plus simplement :

Si solde >= 0 Alors Action1 Sinon Action2

• De la notion peu courante vers la notion informatique

Les difficultés évoquées et la distance existant entre la notion courante et la notion informatique nous conduisent à aborder avec les jeunes enfants, en vue de la programmation informatique, deux axes de travail :

Comment est exprimée, en informatique, la condition à réaliser et comment approcher cette notion en maternelle ?

Comment aborder les expressions, moins naturelles, du « Si Condition_réalisée Alors Action » et du « Si Condition_réalisée Alors Action1 Sinon Action2 » existant en informatique.

Le « jeu de l'enfant-robot » permettra de développer, par l'intermédiaire de ses cartes-questions, un travail sur des réponses de type « oui/non » à des questions précises. L'enfant devra alors « prendre parti » et décider, de manière nette, quel choix il fait. De plus, en l'amenant à formuler, lui-même, des questions dont la réponse ne pourra pas être ambiguè, il sera confronté à une réflexion sur le déterminisme des questions posées.

Dans le langage que nous envisageons pour les jeunes enfants, il nous est possible de présenter, dans un premier temps, des cartes-questions simples ayant comme réponse alternative oui ou non (« Es-tu un garçon ? », « Portes-tu un chapeau ? »…) qui introduiront ainsi, de manière lointaine, la notion d'expression boolenne vraie ou fausse.

Lors de jeux courants du type « Jacques a dit », « 1, 2, 3, Soleil ! », l'enfant est directement confronté à des situations d'alternatives qu'il sait dominer. Nous veillerons à ce qu'il les formalise et à ce que le mot « Alors » soit moins éludé. On reformulera les choix de telle sorte qu'apparaisse bien la structure « Si Condition_réalisée Alors Action ». Si la phrase commence par « Jacques a dit », Alors je fais… ce que Jacques a dit. Si la phrase ne commence par « Jacques a dit », Alors je ne bouge pas. Dans le jeu « Un, deux, trois, Soleil ! », Si j'entends le mot « Soleil », Alors je m'immobilise.

« jeu de l'enfant-robot » --> bons programmeurs

On pourra également, toujours dans le but de se familiariser avec les expressions booléennes, associer différentes questions par des « et » et des « ou ». On envisagera également des questions formulées de manière négative auxquelles l'enfant devra répondre.

Dans notre langage informatique destiné aux jeunes enfants, on aurait pu prévoir une carte-aiguillage, venant juste après une carte-question et indiquant que, si la réponse à la question est oui, il faut utiliser le paquet de cartes A et sinon, le paquet B. Ces deux blocs de cartes-instructions (étiquetés A et B et entourés d'un lastique) suivraient la carte-aiguillage. Selon la réponse donnée à la question, on ne garderait que le paquet nécessaire pour l'exécuter et on abandonnerait l'autre à terre. Il s'agirait là d'une version de l'introduction de l'alternative qui demeurerait cependant non triviale, au niveau de la manipulation et de la compréhension, pour de très jeunes élèves. Ceci n'est pas le fait du hasard et est bien révélateur de la plus grande complexité de cette structure « Si… Alors…Sinon » par rapport à celle que nous avons retenue.

Nous préfèrerons donc utiliser, pour les raisons déjà évoquées ci-dessus, la structure « Si Condition_réalisée Alors Action1 », « Si Condition_non_réalisée Alors Action2 ». C'est cette manière de traiter l'alternative que nous adopterons dans le langage lié au jeu de l'enfant-robot, en veillant à ce que l'Action ne modifie pas l'évaluation de la Condition afin d'éviter les problèmes évoqués au paragraphe précédent. Elle permet d'utiliser le « Si… Alors… », de traiter les problèmes séquentiellement, de se familiariser avec la notion difficile de « Condition_non_réalisée » et s'accommode de manipulations simples.

Toujours afin de préserver l'avenir, nous nous attacherons à confronter les enfants à des situa-tions pour lesquelles l'alternative n'est pas une structure terminale de l'algorithme. En effet, dans le langage courant, l'alternative constitue le plus souvent une structure n'ayant pas de suite. « Demain nous irons au marché, puis, s'il fait beau, nous irons au square ». Nous tenons à montrer que, dans un programme informatique, il est tout à fait possible d'introduire des instructions qui seront exécutées après la fin de l'alternative et quelle que soit l'issue de celle-ci.

L'itération

• Une notion informatique

La notion d'itération est essentielle en informatique. Elle consiste à recommencer une action ou un groupe d'actions. On crée alors des « boucles » dont il convient qu'elles ne soient pas infinies.

On distingue, en informatique, essentiellement trois types d'itérations :

Une itération pour laquelle le programmeur connaît, à l'avance, le nombre de répétitions à effectuer et que nous nommerons « itération indicée ». Il suffit alors d'indiquer quelles sont les instructions à itérer et le nombre de passages désiré.

Une itération de type « boucle » (par exemple : « Recommence ce bloc d'instructions »). Elle est telle que le bloc d'instructions en question possède un ordre permettant de sortir

de la boucle, éventuellement au cours de celle-ci. Le bloc d'instructions n'est alors pas forcément exécuté complètement lors de ce dernier passage.

Une « itération conditionnelle » utilisée lorsque le nombre de répétitions à effectuer n'est pas connu à l'avance mais dépend du changement de valeur d'une expression booléenne. Dans ce cas, le bloc d'instructions est toujours effectué en entier.

On distingue éventuellement deux types de répétitions conditionnelles suivant que la condition à remplir est examinée avant ou après l'action à effectuer. On a donc les structures :

Tant que Condition_remplie Répéter Action

Répéter Action Jusqu'à Condition_remplie

• Une notion courante

Les jeunes enfants entendent souvent des expressions proches des structures des répétitions conditionnelles : « Tant que tu n'auras pas rangé ta chambre… », « Colorie jusqu'à ce que tout soit rempli »… Celles-ci sont simples et compréhensibles dans la mesure où elle n'utilisent pas de variables informatiques.

Ils sont également souvent confrontés aux structures proches de rptition indice mais sous une forme un peu déguisée. En effet, on utilise plus souvent « Effectue 3 tours de stade » que « Répète 3 fois [Effectue 1 tour de stade] ». Les enfants sont cependant habitués à effectuer des actions un nombre de fois déterminé à l'avance (frapper 2 fois dans ses mains, chanter 3 fois la phrase du refrain…). La difficulté, pour eux, consiste à mémoriser convenablement combien de fois l'action a déjà été réalisée et combien de passages restent encore à effectuer. Il convient alors parfois de se créer également un « aide-mémoire ».

• Une notion informatique difficile

L'itération, dans toute sa généralité, est une notion informatique complexe car elle est liée à celle de variable informatique, elle-même très difficile.

Avec la répétition conditionnelle, se posent de nouveau les problèmes liés à la rédaction d'une expression booléenne que nous avons évoqués à propos de l'alternative. Suivant l'utilisation du « Tant que… Répéter » ou du « Répéter… jusqu'à », ce n'est pas la même expression de la condition qui sera écrite. De plus, l'action doit faire évoluer les variables de telle sorte que l'expression booléenne change de valeur sous peine d'obtenir une itération infinie (Tant que je suis sur la chaise Répéter je frappe dans mes mains).

En ce qui concerne l'itération indicée, on utilise une structure du type : « Répéter n fois Action ». De nombreux langages informatiques utilisent une variable particulière, nommée « compteur », dont le rôle consiste à comptabiliser le nombre de fois où l'action a été effectuée afin que la répétition s'arrête après le nième passage. Cependant, en utilisant un compteur extérieur à l'action (les doigts de la main, par exemple), on peut déjà aborder convenablement l'itération sans utiliser de variable informatique. L'utilisation du compteur n'est pas propre à l'informatique. Si l'on doit répéter une action simple 1, 2 ou 3 fois, l'utilisation d'un compteur n'est pas nécessaire car notre mémoire globale est suffisante. Si l'itération est de 10 fois ou si

« jeu de l'enfant-robot » --> bons programmeurs

c'est un groupe d'actions qu'on doit itérer, l'utilisation d'un moyen de comptage quelconque ( ) devient indispensable.

Pour les adultes programmeurs, les problèmes pédagogiques inhérents à cette structure, concernent la variable servant de compteur. L'action répétée ne doit pas modifier la valeur du compteur sous peine de le « fausser ». D'autre part, la valeur de la variable-compteur en sortie de boucle n'est pas forcément celle à laquelle le programmeur s'attend. On notera cependant que si l'on utilise un « compteur-main », l'action ne modifie (généralement) pas la position des doigts et la difficulté est alors aplanie. Certains langages (dont LOGO) n'utilisent pas explicitement de variables-compteurs, ce qui élimine également cette difficulté pdagogique.

• De la notion courante vers la notion informatique

La difficulté des structures de répétitions conditionnelles réside, nous l'avons évoqué, dans la notion de variables informatiques que nous ne souhaitons pas aborder. Les structures approchantes, employées couramment, n'ont pas, cependant, la rigueur formelle des structures utilisées dans les langages informatiques qui sont, elles, trop difficiles à mettre en œuvre pour nos élèves. C'est pourquoi nous nous contenterons de les initier à l'itération indicée. Dans le langage que nous développons pour les très jeunes élèves, c'est, bien entendu, cette itération sans variable-compteur qui sera retenue.

Nous veillerons donc, dans notre méthode, à familiariser les jeunes enfants avec cette structure itérative. Nous nous efforcerons également de faire apparaître, dans certains cas (bloc d'actions à répéter, par exemple), la nécessité d'un « compteur/aide-mémoire » permettant de suppléer à la mémorisation. On pourra facilement, par exemple, envisager un jeu de rôle collectif dans lequel un groupe effectuerait les actions et l'autre le comptage.

EN QUOI LE « JEU DE L'ENFANT-ROBOT » PEUT-IL

AIDER LES ENFANTS À DEVENIR, PLUS TARD, DE BONS

UTILISATEURS DE L'INFORMATIQUE ?

Légitimité

La question ne se pose plus. Les jeunes enfants que nous formons devront impérativement utiliser l'informatique. Sans faire de science-fiction, il semble impossible qu'ils puissent éviter l'utilisation de l'ordinateur dans leur travail ou leurs loisirs. L'informatique de demain sera probablement encore plus puissante, plus conviviale et plus répandue qu'aujourd'hui. L'École ne pourra pas échapper à ce phénomène de société.

En offrant, au plus tôt, à nos élèves, les moyens de se familiariser avec la logique et l'ergonomie des logiciels et notamment avec leur composante iconique, on ne peut que favoriser des apprentissages réutilisables avec un ordinateur.

Approche des notions d'espace, de temps et de