SE CONNECTER
1,2,3... codez ! | Le site de la Fondation La main à la pâte
Module 123 Codez | Jouer | Informatics and Digital Creation

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 »

  • Les machines qui nous entourent ne font qu'exécuter des "ordres" (instructions)
  • En combinant plusieurs instructions simples on peut effectuer une tâche complexe


« Langages »

  • On peut donner des instructions à une machine en utilisant un langage spécial, appelé langage de programmation, compréhensible par l’homme et la machine.
  • Un programme est un algorithme exprimé  dans un langage de programmation.
  • Un bug est une erreur dans un programme.
  • Un tout petit bug peut parfois avoir des conséquences énormes.

Matériel

Par binôme

  • Fiche 15
  • Un pion (jouet, figurine) représentant le sous-marin


Pour la classe

  • La Fiche 15, projetée au tableau
  • Une silhouette aimantée (ou punaisée) représentant le sous-marin

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 »)
  • Rochers (signifie « avance d’une case vers les rochers »), Fond, Fond, Fond, Rochers, Rochers, Surface,  Rochers
  • Est, Bas, Bas, Bas, Est, Est, Haut, Est   
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