Programmer un parcours
1, 2, 3, codez ! - Activités cycle 2 - Séance 1.3: Programmer un parcours
Résumé |
Le héros ne peut accéder au trésor qui se trouve au fond de l’eau, mais il trouve un petit sous-marin de poche. Les élèves doivent inventer un langage pour le piloter à distance. |
Notions |
« Machines »
|
Matériel |
Par binôme
|
Lexique |
Programme, langage de programmation, instruction, bug |
Durée : |
1 heure |
Situation déclenchante
Après avoir suivi la rivière, le héros arrive à la mer. Sur la plage, il repère un ponton, et s’en approche. En regardant au fond de l’eau, il voit le trésor ! Mais celui-ci est hors de portée. En revanche, il voit un petit sous-marin qu’on peut commander à la voix. Il va falloir lui expliquer comment aller chercher le trésor.
Expérimentation : inventer un langage pour guider le sous-marin (par binômes)
L’enseignant projette au tableau la Fiche 15
: on y voit le fond de l’eau avec un dédale de coraux que le sous-marin
doit parcourir afin de parvenir jusqu’au trésor. Par binômes, les
élèves doivent proposer une série d’instructions qui pourront décrire le
parcours à suivre. L’enseignant introduit alors le terme « programme »
pour décrire l’ensemble d’instructions simples qui peuvent être
exécutées par une machine.
Les contraintes sont : le sous-marin ne peut se déplacer que d’une case
à la fois ; il ne bouge pas en diagonale. Les binômes peuvent essayer
de reproduire leur parcours en bougeant le pion qui leur est fourni, en
le faisant respecter scrupuleusement les instructions.
Mise en commun
L’enseignant demande à un des groupes de présenter son programme à la
classe. Pour vérifier ce que donne l’exécution du programme, les élèves
déplacent au tableau la silhouette représentant le sous-marin, en
suivant rigoureusement les instructions. Si la méthode est concluante,
l’enseignant la reprend au tableau, et demande si d’autres binômes ont
eu d’autres idées.
On remarque qu’il existe (au moins) deux langages pour diriger le
sous-marin. On peut lui donner des directions « absolues » (va vers la
surface, va à l’Ouest/vers le ponton…) ou, au contraire, des directions
relatives, c’est-à-dire qui dépendent de l’orientation du sous-marin
(tourne vers la droite, avance, tourne vers la gauche,
recule…). Note : il est préférable de découper l’instruction « avance
d’une case vers la droite » en 2 instructions bien distinctes : 1/
tourne vers la droite (sous-entendu : en restant sur place), puis 2/ avance d’une case.
Notes pédagogiques
- La première méthode (Nord, Ouest…) est dite « allocentrée » tandis que la seconde (droite, gauche…) est dite « autocentrée ».
- Les élèves n’ont pas besoin de connaître ces termes, qui ne seront plus utilisés par la suite. Le fait même de distinguer ces deux méthodes n’est pas l’objectif de cette séance : par ailleurs, les enfants mélangeront souvent des termes issus des deux méthodes.
- Une troisième méthode peut (plus rarement) être proposée : il s’agit de donner des coordonnées aux cases (A1, A2, B1…) et, comme dans un jeu de bataille navale, coder les déplacements en donnant le nom de la case de départ et d’arrivée. Exemple, « va de A1 vers A2 ». À noter : le chemin « A1 vers A2 » n’est pas ambigu car les cases sont adjacentes. En revanche, le chemin « A1 vers B7 » est ambigu (et, donc, non satisfaisant) : il y a plusieurs façons d’aller de la première case à la seconde. Nous ne détaillons pas cette méthode dans ce qui suit.
Il est probable que les 2 méthodes aient été trouvées par les uns ou les autres. Si cela n’est pas le cas, l’enseignant introduit l’autre méthode lors de cette mise en commun.
Langages allocentrés (ou « absolus ») | Langage autocentré (ou « relatif ») |
|
Avance (signifie « avance d’une case droit devant soi »), Plonge, Plonge, Plonge, Avance, Avance, Remonte, Avance |
Note pédagogique
Si cette tâche a été exécutée sans difficulté par les élèves, on peut
leur demander de programmer le trajet retour du sous-marin, sans oublier
l’instruction « attraper » qui signifie « attraper le trésor » afin
qu’il ne rentre pas bredouille.
La classe remarque que le sous-marin n’a besoin que d’un langage très
simple pour être commandé (en particulier, très peu de mots différents
sont nécessaires). L’enseignant explique que les machines comme les
ordinateurs, les robots, etc., peuvent être programmés à l’aide de
langages particuliers, appelés « langages de programmation », qui sont
beaucoup plus simples que les langues naturelles comme le français,
l’anglais, etc.
Un second apport de cette mise en commun permet d’appréhender la notion
de « bug ». Au cours des présentations des différents programmes, il
viendra certainement une occasion où une instruction manquera, ou sera
erronée. À ce moment, même si la classe sait que le résultat ne sera pas
bon, l’enseignant peut décider d’amener tout de même le programme
jusqu’à sa fin, pour voir où le sous-marin finira par arriver.
Une seule erreur peut avoir des conséquences très importantes. On
remarquera qu'une erreur dans un langage autocentré peut conduire plus
loin du trésor qu'une erreur dans un langage allocentré. Cependant, dans
les deux cas, il s'agit d'un bug et on notera deux choses.
Premièrement, l'objectif n'est pas atteint, donc c'est un échec aussi
important dans un cas que dans l'autre. Deuxièmement, si le pirate qui a
laissé le trésor au fond de l'eau a également placé des pièges autour,
alors on ne veut pas se tromper... même pas un tout petit peu.
Conclusion et traces écrites
La classe synthétise collectivement ce qui a été appris au cours de cette séance :
- Un programme est une suite d’instructions exprimées dans un langage particulier compréhensible par l’homme et la machine.
- Un bug est une erreur dans un programme. Un tout petit bug peut parfois avoir des conséquences énormes.
Les élèves notent ces conclusions dans leur cahier de sciences.
Prolongement
- Afin d’illustrer la décomposition de tâches complexes en instructions simples, l’enseignant peut proposer l’activité suivante. Il veut effectuer une tâche d’apparente facilité (ex: boire un verre d’eau, manger un biscuit) mais il n’obéira qu’à des tâches élémentaires et parfaitement explicites. Les enfants vont devoir expliciter sans sous-entendu ce que le maître doit faire (c’est-à-dire « programmer » le maître comme s’il était une machine) : « soulève ta main », « soulève ton coude », « approche ta main du verre », « serre le verre pas trop fort », « dirige-le vers ta bouche », « ouvre tes lèvres", etc… Le professeur mime en temps réel les commandes qu’il reçoit. Le degré de détail des instructions « simples » est évidemment laissé à la discrétion de l’enseignant, tant que les élèves perçoivent la difficulté qu’il y a à devoir tout détailler sans ambiguïté à une machine, pour qu’elle effectue une tâche que les humains jugent pourtant simpliste.
Prolongement branché
À venir : activité en ligne développée par France IOI
Extrait de "1, 2, 3... codez !", Editions Le Pommier, 2016-2017. Publié sous licence CC by-nc-nd 3.0.