Sigma

Mathématiques · 6e · Algorithmique et programmation

Se repérer, se déplacer et programmer

Apprendre à décrire une position avec deux nombres, puis à donner des ordres précis — dans l'ordre — pour faire bouger un robot d'un point à un autre.

40 min Cycle 3 — Classe de 6e · domaine « Espace et géométrie » : se repérer et se déplacer en utilisant des repères · domaine « Algorithmique et programmation » : écrire, mettre au point et exécuter un programme simple

À la fin, tu sauras

  • Tu sauras repérer un point sur un quadrillage à l'aide de deux nombres (abscisse et ordonnée)
  • Tu sauras placer un point dont on te donne les coordonnées
  • Tu sauras écrire une suite d'instructions précises pour décrire un déplacement
  • Tu sauras utiliser une boucle pour éviter de répéter la même instruction plusieurs fois
  • Tu sauras corriger un programme qui ne fait pas ce qu'on attendait

Prérequis : Compter et se repérer sur une file ou une droite graduée · Lire un quadrillage simple (lignes, colonnes)

Imagine que tu dois expliquer à un ami, au téléphone, où se trouve un trésor caché sur une carte quadrillée — sans jamais dire « ici » ou « là-bas », puisqu'il ne voit pas ce que tu vois. Tu vas avoir besoin de deux choses : un langage pour dire où (des nombres), et un langage pour dire comment y aller (des instructions, dans l'ordre). C'est exactement ce que fait un jeu vidéo, un GPS, ou le robot d'une usine. Aujourd'hui, tu vas apprendre les deux.

Une ville en damier

Pense à une ville dont les rues forment un quadrillage bien net, comme un jeu de bataille navale. Pour donner une adresse, il suffit de dire : « avance de tant de rues vers la droite, puis de tant de rues vers le haut ». Deux nombres, et n'importe qui retrouve l'endroit exact, du premier coup. C'est cette idée — deux nombres pour repérer un point — qu'on va rendre précise.

Sur un quadrillage, tu veux dire à un camarade où se trouve une case, sans pointer du doigt. Il te faut un point de départ commun et une façon de compter. Que choisirais-tu comme point de départ, et que compterais-tu ?

Indice : Pense à ce qu'on fait toujours en premier avant de donner des indications : on fixe un point « zéro », un endroit d'où on part.

Réfléchis… puis déplie la réponse

Il faut un point de départ fixe, le même pour tout le monde — on l'appellera l'origine. Puis on compte deux choses séparément : combien de cases vers la droite, et combien de cases vers le haut. C'est exactement le principe d'un repère.

Repère

Un repère, c'est ce point de départ fixe — appelé origine et noté OO — accompagné de deux directions de comptage : une horizontale (vers la droite) et une verticale (vers le haut). Dès qu'on a fixé un repère, chaque case, chaque point du quadrillage peut être décrit par exactement deux nombres, toujours dans le même ordre.

Un point repéré sur un quadrillage
01234560123A(3 ; 2)Oabscisse : vers la droiteordonnée : vers le haut
Le premier nombre (l'abscisse) compte les cases vers la droite depuis OO ; le second (l'ordonnée) compte les cases vers le haut. Ici, 33 cases à droite puis 22 cases en haut donnent le point A(3 ; 2)A(3\,;\,2).

Coordonnées d'un point

Les deux nombres qui repèrent un point s'appellent ses coordonnées, et on les écrit toujours dans le même ordre, entre parenthèses, séparées par un point-virgule : (abscisse ; ordonneˊe)(\text{abscisse}\,;\,\text{ordonnée}). L'abscisse est le nombre de cases vers la droite ; l'ordonnée est le nombre de cases vers le haut. Le point A(3 ; 2)A(3\,;\,2) se lit : « 33 cases à droite, puis 22 cases en haut, à partir de OO ».

Exemple résolu — Lire les coordonnées d'un point

  1. 1On part toujours de l'origine OO, jamais d'un autre point.
  2. 2On compte d'abord le déplacement horizontal : c'est l'abscisse (premier nombre).
  3. 3On compte ensuite le déplacement vertical : c'est l'ordonnée (second nombre).
  4. 4Pour le point AA du schéma : 33 cases à droite, 22 cases en haut, donc A(3 ; 2)A(3\,;\,2).
  5. 5Un point BB situé 55 cases à droite et 00 case en haut aurait pour coordonnées B(5 ; 0)B(5\,;\,0) : il resterait sur l'axe horizontal.

Le piège classique : écrire (2 ; 3)(2\,;\,3) au lieu de (3 ; 2)(3\,;\,2), en inversant l'ordre. L'ordre change tout : le point (3 ; 2)(3\,;\,2) et le point (2 ; 3)(2\,;\,3) ne sont pas au même endroit du quadrillage — sauf coup de chance. Retiens l'ordre alphabétique de la phrase : « à droite d'abord, en haut ensuite » — abscisse avant ordonnée.

Donner des ordres à un robot

Maintenant que tu sais repérer une position, il reste à savoir s'y rendre. Un robot posé sur le quadrillage ne comprend que des ordres très simples : avancer d'une case, tourner à droite, tourner à gauche. Rien de plus. Pour l'envoyer où tu veux, il va falloir enchaîner ces ordres tout petits, dans le bon ordre — exactement comme une recette de cuisine, étape par étape.

Instruction, algorithme et programme

Un ordre unique et précis (« avance de 11 case », « tourne à droite ») s'appelle une instruction. Une suite d'instructions, écrites dans un certain ordre pour résoudre un problème, s'appelle un algorithme. Quand cet algorithme est écrit dans un langage que la machine ou le robot comprend, on l'appelle un programme.

Une recette dit : « Verse la pâte dans le moule » puis « Mets le moule au four ». Que se passerait-il si on échangeait l'ordre de ces deux instructions ?

Indice : Essaie d'imaginer concrètement la scène si le four vient en premier.

Réfléchis… puis déplie la réponse

Le résultat serait absurde (ou raté) : on ne peut pas verser une pâte dans un moule resté dehors alors que le four chauffe tout seul. L'ordre des instructions change le résultat. C'est vrai pour une recette — et tout aussi vrai pour un robot.

L'ordre des instructions change le résultat

Prenons un robot posé en O(0 ; 0)O(0\,;\,0), orienté vers la droite (l'est). Comparons deux programmes qui utilisent exactement les mêmes deux instructions, mais dans un ordre différent : « avance de 22 cases » et « tourne à gauche ». Programme 1 : avance puis tourne. Le robot avance de 22 cases vers la droite (il est toujours orienté vers la droite) : il arrive en (2 ; 0)(2\,;\,0), puis tourne à gauche sur place (il finit orienté vers le haut, mais n'a plus bougé). Programme 2 : tourne puis avance. Le robot tourne d'abord à gauche sur place (il est maintenant orienté vers le haut), puis avance de 22 cases dans cette nouvelle direction : il arrive en (0 ; 2)(0\,;\,2). Les deux programmes contiennent les deux mêmes instructions, et pourtant (2 ; 0)≠(0 ; 2)(2\,;\,0) \neq (0\,;\,2) : deux points différents. La preuve est faite par le calcul, pas par supposition : l'ordre d'exécution fait partie du programme, au même titre que les instructions elles-mêmes.

Un programme de déplacement, étape par étape
DépartArrivée1. avance de 32. tourne à gauche3. avance de 2
Chaque flèche correspond à une instruction. Le robot les exécute dans l'ordre — jamais toutes à la fois — en changeant d'orientation à chaque virage.

Boucle

Écrire dix fois de suite « avance de 11 case » est fastidieux et source d'erreurs. Une boucle permet de dire, en une seule fois : « répète nn fois [ instruction(s) ] ». Le robot exécute alors le contenu des crochets, nn fois de suite, sans qu'on ait besoin de le réécrire.

Exemple résolu — Tracer un carré de 4 cases de côté

  1. 1Sans boucle, il faudrait écrire : avance ×4, tourne à droite, avance ×4, tourne à droite, avance ×4, tourne à droite, avance ×4, tourne à droite — soit 1616 instructions d'avancée en tout.
  2. 2Avec une boucle, on repère ce qui se répète : « avancer de 44 cases puis tourner à droite », quatre fois de suite.
  3. 3Le programme devient : « répète 44 fois [ avance de 44 cases ; tourne à droite ] ».
  4. 4Une seule ligne, et pourtant le robot exécute bien les 1616 avancées et les 44 virages : rien n'est perdu, tout est juste écrit plus court.

Écrire un programme de déplacement

  1. 1Repérer les coordonnées du point de départ et celles du point d'arrivée.
  2. 2Décomposer le trajet en deux mouvements simples : d'abord tout le déplacement horizontal, puis tout le déplacement vertical (ou l'inverse).
  3. 3Traduire chaque mouvement en instructions élémentaires (« avance de 11 case »), en ajoutant les virages nécessaires entre les deux.
  4. 4Repérer les répétitions et les regrouper avec « répète nn fois [ … ] » pour raccourcir le programme.
  5. 5Tester le programme mentalement, case par case, et corriger si le point d'arrivée obtenu n'est pas le bon : c'est la mise au point.

Exemple résolu — Programmer le trajet de O(0 ; 0)O(0\,;\,0) jusqu'à (6 ; 2)(6\,;\,2), robot orienté au départ vers la droite

  1. 1Étape 1 — coordonnées : départ (0 ; 0)(0\,;\,0), arrivée (6 ; 2)(6\,;\,2).
  2. 2Étape 2 — décomposition : il faut 66 cases vers la droite (l'abscisse passe de 00 à 66), puis 22 cases vers le haut (l'ordonnée passe de 00 à 22).
  3. 3Étape 3 — instructions : le robot fait déjà face à droite, donc pas besoin de tourner avant d'avancer horizontalement. Après les 66 cases, il doit tourner à gauche pour faire face au haut, puis avancer de 22 cases.
  4. 4Étape 4 — regrouper avec des boucles : « répète 66 fois [ avance de 11 case ] ; tourne à gauche ; répète 22 fois [ avance de 11 case ] ».
  5. 5Étape 5 — test mental : après la première boucle, le robot est en (6 ; 0)(6\,;\,0) ; après le virage, il fait face au haut ; après la seconde boucle, il est en (6 ; 2)(6\,;\,2). C'est bien le point visé.

« Tourner à droite » ne veut pas dire « aller vers la droite de l'écran » : cela dépend de la direction que le robot regardait avant de tourner. Un robot qui fait face au haut et tourne à droite se retrouve orienté vers... la droite de l'écran (l'est) ! Un robot qui fait face à la droite et tourne à droite se retrouve orienté vers le bas. Il faut toujours suivre l'orientation du robot, pas celle du lecteur.

InstructionEffet sur le robotCe qui change
avance de nn case(s)se déplace de nn cases dans la direction où il regardesa position (l'abscisse ou l'ordonnée, selon la direction)
tourne à droitepivote d'un quart de tour, sur placeson orientation seulement — la position ne change pas
tourne à gauchepivote d'un quart de tour dans l'autre sens, sur placeson orientation seulement — la position ne change pas
répète nn fois [ … ]rejoue nn fois tout ce qui est entre les crochetsraccourcit le programme, sans changer le résultat final

Ces quatre instructions suffisent à programmer n'importe quel trajet fait de lignes droites et de virages à angle droit.

À retenir

  • Un point se repère par deux nombres, toujours dans le même ordre : (abscisse ; ordonneˊe)(\text{abscisse}\,;\,\text{ordonnée}).
  • L'abscisse compte les cases vers la droite depuis l'origine OO ; l'ordonnée compte les cases vers le haut.
  • Une instruction est un ordre unique ; un algorithme (ou programme) est une suite ordonnée d'instructions.
  • L'ordre des instructions fait partie du programme : l'échanger change le résultat.
  • Une boucle « répète nn fois [ … ] » évite de réécrire une instruction qui se répète, sans changer ce que fait le robot.
  • L'effet de « tourner à droite/gauche » dépend toujours de l'orientation actuelle du robot, pas de l'écran.

À toi de jouer

Pas de réponse à recopier : ici, on s’entraîne à raisonner. Bloqué ? Demande un indice avant la solution.

Exercice 1/9 · difficulté ●○○○○

Sur un quadrillage, on part de l'origine OO. Le point AA est à 44 cases vers la droite et 22 cases vers le haut. Quelles sont les coordonnées de AA ?