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.
À 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é — 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.
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 : . L'abscisse est le nombre de cases vers la droite ; l'ordonnée est le nombre de cases vers le haut. Le point se lit : « cases à droite, puis cases en haut, à partir de ».
Exemple résolu — Lire les coordonnées d'un point
- 1On part toujours de l'origine , jamais d'un autre point.
- 2On compte d'abord le déplacement horizontal : c'est l'abscisse (premier nombre).
- 3On compte ensuite le déplacement vertical : c'est l'ordonnée (second nombre).
- 4Pour le point du schéma : cases à droite, cases en haut, donc .
- 5Un point situé cases à droite et case en haut aurait pour coordonnées : il resterait sur l'axe horizontal.
Le piège classique : écrire au lieu de , en inversant l'ordre. L'ordre change tout : le point et le point 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 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 , 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 cases » et « tourne à gauche ». Programme 1 : avance puis tourne. Le robot avance de cases vers la droite (il est toujours orienté vers la droite) : il arrive en , 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 cases dans cette nouvelle direction : il arrive en . Les deux programmes contiennent les deux mêmes instructions, et pourtant : 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.
Boucle
Écrire dix fois de suite « avance de case » est fastidieux et source d'erreurs. Une boucle permet de dire, en une seule fois : « répète fois [ instruction(s) ] ». Le robot exécute alors le contenu des crochets, fois de suite, sans qu'on ait besoin de le réécrire.
Exemple résolu — Tracer un carré de 4 cases de côté
- 1Sans boucle, il faudrait écrire : avance ×4, tourne à droite, avance ×4, tourne à droite, avance ×4, tourne à droite, avance ×4, tourne à droite — soit instructions d'avancée en tout.
- 2Avec une boucle, on repère ce qui se répète : « avancer de cases puis tourner à droite », quatre fois de suite.
- 3Le programme devient : « répète fois [ avance de cases ; tourne à droite ] ».
- 4Une seule ligne, et pourtant le robot exécute bien les avancées et les virages : rien n'est perdu, tout est juste écrit plus court.
Écrire un programme de déplacement
- 1Repérer les coordonnées du point de départ et celles du point d'arrivée.
- 2Décomposer le trajet en deux mouvements simples : d'abord tout le déplacement horizontal, puis tout le déplacement vertical (ou l'inverse).
- 3Traduire chaque mouvement en instructions élémentaires (« avance de case »), en ajoutant les virages nécessaires entre les deux.
- 4Repérer les répétitions et les regrouper avec « répète fois [ … ] » pour raccourcir le programme.
- 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 jusqu'à , robot orienté au départ vers la droite
- 1Étape 1 — coordonnées : départ , arrivée .
- 2Étape 2 — décomposition : il faut cases vers la droite (l'abscisse passe de à ), puis cases vers le haut (l'ordonnée passe de à ).
- 3Étape 3 — instructions : le robot fait déjà face à droite, donc pas besoin de tourner avant d'avancer horizontalement. Après les cases, il doit tourner à gauche pour faire face au haut, puis avancer de cases.
- 4Étape 4 — regrouper avec des boucles : « répète fois [ avance de case ] ; tourne à gauche ; répète fois [ avance de case ] ».
- 5Étape 5 — test mental : après la première boucle, le robot est en ; après le virage, il fait face au haut ; après la seconde boucle, il est en . 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.
| Instruction | Effet sur le robot | Ce qui change |
|---|---|---|
| avance de case(s) | se déplace de cases dans la direction où il regarde | sa position (l'abscisse ou l'ordonnée, selon la direction) |
| tourne à droite | pivote d'un quart de tour, sur place | son orientation seulement — la position ne change pas |
| tourne à gauche | pivote d'un quart de tour dans l'autre sens, sur place | son orientation seulement — la position ne change pas |
| répète fois [ … ] | rejoue fois tout ce qui est entre les crochets | raccourcit 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 : .
- L'abscisse compte les cases vers la droite depuis l'origine ; 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 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 . Le point est à cases vers la droite et cases vers le haut. Quelles sont les coordonnées de ?