Sixième, programme français à Montréal • Exercices corrigés

Fiche de révision : algorithmique et programmation en Sixième

En algorithmique, les points ne se perdent pas sur un calcul mais sur une lecture : l'élève croit que aller aˋ x: 4 y: 2\mathtt{aller\ à\ x:\ 4\ y:\ 2} déplace le lutin de 44 cases, que tourner\mathtt{tourner} le fait avancer, et que mettre score aˋ score+4\mathtt{mettre\ score\ à\ score+4} est une équation impossible.

Cette fiche laisse le cours dans le cahier. Elle rassemble le seul geste qui marche vraiment devant un script : dérouler les instructions une par une dans un petit tableau, en notant à chaque ligne la position, la direction et les variables. C'est long la première fois, et c'est ce qui fait gagner tous les points ensuite.

Le fil du chapitre

La machine exécute CE QUI EST ÉCRIT, pas ce qu'on voulait écrire. Toute question sur un script se répond en avançant ligne par ligne et en tenant à jour trois informations : la position du lutin, sa direction, et la valeur de chaque variable.

Ce chapitre fait partie de Mathématiques en Sixième

L'essentiel

Position ou déplacement : deux familles de blocs

  • aller aˋ x: a y: b\mathtt{aller\ à\ x:\ a\ y:\ b} place le lutin au point (a;b)(a\,;b), quelle que soit sa position d'avant : c'est une POSITION.
  • ajouter n aˋ x\mathtt{ajouter\ n\ à\ x} et avancer de n\mathtt{avancer\ de\ n} partent de là où le lutin se trouve : ce sont des DÉPLACEMENTS.
  • Un même bloc de position donne toujours le même point d'arrivée ; un bloc de déplacement donne un point différent selon le départ.
  • sorienter vers\mathtt{s'orienter\ vers} est à la direction ce que aller aˋ\mathtt{aller\ à} est à la position : une valeur absolue.
aller à x: 4 y: 2ajouter 4 à x
À gauche, deux lutins partis de points différents arrivent au MÊME point (4;2)(4\,;2) ; à droite, le même bloc de déplacement les mène à deux endroits différents.

C'est la distinction la plus rentable du chapitre : la moitié des erreurs de trajet viennent d'un bloc de position lu comme un déplacement, ou l'inverse.

Les trois informations à tenir à jour

  • La POSITION du lutin, écrite (x;y)(x\,;y), avec l'abscisse en premier.
  • Sa DIRECTION, qui décide de ce que fera le prochain avancer\mathtt{avancer}.
  • La valeur de chaque VARIABLE, à réécrire à chaque ligne qui la modifie.
  • On dresse un petit tableau, une ligne par instruction : c'est la seule méthode qui ne se trompe pas.

Lire un script « en gros » ne marche jamais. Le tableau prend trente secondes et il transforme une question de raisonnement en une suite de lectures.

La boucle répéter

  • reˊpeˊter n fois\mathtt{répéter\ n\ fois} exécute nn fois de suite le bloc placé à l'intérieur.
  • Le nombre de répétitions et les nombres écrits DANS la boucle sont des informations différentes.
  • Pour fermer un polygone régulier à nn côtés, le lutin tourne à chaque sommet de 360n\dfrac{360^\circ}{n}.
  • La figure se referme exactement quand le total des rotations vaut 360360^\circ.

Répéter nn fois la même addition, c'est multiplier par nn : reˊpeˊter 6 fois : ajouter 5 aˋ score\mathtt{répéter\ 6\ fois\ :\ ajouter\ 5\ à\ score} mène à 6×5=306\times 5=30 sans dérouler les six tours.

Les variables

  • Une variable est une case mémoire qui contient UNE valeur à la fois.
  • mettre v aˋ \mathtt{mettre\ v\ à\ \ldots} EFFACE l'ancienne valeur.
  • ajouter  aˋ v\mathtt{ajouter\ \ldots\ à\ v} la conserve et la modifie.
  • mettre v aˋ v+4\mathtt{mettre\ v\ à\ v+4} se lit de DROITE À GAUCHE : on calcule v+4v+4 avec l'ancienne valeur, puis on range le résultat dans vv.

Le signe d'affectation n'est pas le signe égal des mathématiques. « v=v+4v=v+4 » n'a aucune solution comme équation, alors que le bloc, lui, s'exécute très bien.

Les pièges qui coûtent des points

Les erreurs ci-dessous sont celles que je corrige le plus souvent en séance. Chacune coûte des points sur une copie, même quand le raisonnement est juste.

1. Lire un bloc de position comme un déplacement

toute la question, car toutes les positions suivantes sont décalées

Ce qu'il ne faut pas écrire

« aller aˋ x: 4 y: 2\mathtt{aller\ à\ x:\ 4\ y:\ 2} déplace le lutin de 44 cases vers la droite et de 22 cases vers le haut. »

Ce qu'il faut écrire

« aller aˋ x: 4 y: 2\mathtt{aller\ à\ x:\ 4\ y:\ 2} place le lutin au point (4;2)(4\,;2), d'où qu'il vienne. »

Pourquoi : Le bloc qui déplace de 44 cases vers la droite s'appelle ajouter 4 aˋ x\mathtt{ajouter\ 4\ à\ x}. Position et déplacement sont deux familles différentes, et le nom du bloc le dit.

2. Croire que le lutin bouge quand il tourne

1 point, et le tableau de suivi devient faux à partir de cette ligne

Ce qu'il ne faut pas écrire

« Après tourner de 90 degreˊs\mathtt{tourner\ de\ 90\ degrés}, le lutin a avancé d'un quart de case. »

Ce qu'il faut écrire

« tourner\mathtt{tourner} fait pivoter le lutin SUR PLACE : sa direction change, ses coordonnées ne changent pas. »

Pourquoi : Une rotation n'a d'effet que sur les blocs avancer\mathtt{avancer} qui la SUIVENT. C'est pour cela qu'on note séparément la position et la direction.

3. Échanger le nombre de répétitions et la longueur du côté

1 point, et la question du périmètre qui suit

Ce qu'il ne faut pas écrire

« reˊpeˊter 4 fois (avancer de 5, tourner de 90)\mathtt{répéter\ 4\ fois\ (avancer\ de\ 5,\ tourner\ de\ 90)} trace un carré de 44 cases de côté. »

Ce qu'il faut écrire

« Ce script trace un carré de 55 cases de côté : le 44 est le nombre de côtés, le 55 est leur longueur. »

Pourquoi : Le nombre écrit après reˊpeˊter\mathtt{répéter} compte les tours de boucle, donc les côtés. Les nombres écrits À L'INTÉRIEUR décrivent ce qui se passe pendant un tour.

4. Faire tourner le lutin de l'angle intérieur de la figure

toute la question, et la figure obtenue ne se referme pas

Ce qu'il ne faut pas écrire

« Pour tracer un triangle équilatéral, le lutin tourne de 6060 degrés à chaque sommet, puisque les angles du triangle valent 6060 degrés. »

Ce qu'il faut écrire

« Le lutin tourne de 3603=120\dfrac{360}{3}=120 degrés à chaque sommet : l'angle de rotation n'est pas l'angle de la figure, c'est ce qui lui manque pour faire un demi-tour. »

60°120°le lutin tourne de 120°, pas de 60°
Le lutin arrive le long du côté, prolongé en pointillés : il doit pivoter de 120120^\circ pour repartir sur le côté suivant, alors que l'angle du triangle mesure 6060^\circ.

Pourquoi : Le lutin arrive dans la direction d'un côté et doit repartir dans celle du suivant : il pivote de 18060=120180^\circ-60^\circ=120^\circ. Le contrôle est immédiat, le total des rotations doit valoir 360360^\circ.

5. Lire une affectation comme une équation

1 point, et le blocage sur toutes les questions de compteur

Ce qu'il ne faut pas écrire

« mettre score aˋ score+4\mathtt{mettre\ score\ à\ score+4} est impossible, car un nombre n'est jamais égal à lui-même plus 44. »

Ce qu'il faut écrire

« Ce bloc calcule score+4\mathtt{score}+4 avec la valeur actuelle, puis range le résultat dans score\mathtt{score} : si score\mathtt{score} valait 2323, il vaut ensuite 2727. »

Pourquoi : En programmation, le mot mettre à désigne une ACTION, un rangement en mémoire. En mathématiques, le signe égal énonce une affirmation. Ce sont deux idées différentes qui se ressemblent.

6. Oublier qu'un mettre à efface tout ce qui précède

toute la question de suivi de variable

Ce qu'il ne faut pas écrire

« Le script ajoute 55, puis 55, puis met score\mathtt{score} à 2020 : le score final est 3030. »

Ce qu'il faut écrire

« mettre score aˋ 20\mathtt{mettre\ score\ à\ 20} efface la valeur en cours : après cette ligne le score vaut 2020, quels que soient les ajouts précédents. »

Pourquoi : Une variable ne contient qu'UNE valeur à la fois. Les ajouts antérieurs ne sont pas mémorisés ailleurs : ils sont simplement perdus.

7. Croire que l'ordre des instructions ne compte pas

toute la question, et elle revient à chaque contrôle

Ce qu'il ne faut pas écrire

« Ces deux scripts contiennent les mêmes blocs, donc ils donnent le même point d'arrivée. »

Ce qu'il faut écrire

« En partant de (1;1)(1\,;1) vers la droite, avancer de 33 puis tourner puis avancer de 22 mène en (4;3)(4\,;3), alors que 22 puis tourner puis 33 mène en (3;4)(3\,;4). »

Pourquoi : Le bloc tourner\mathtt{tourner} sépare les deux déplacements : celui d'avant est horizontal, celui d'après est vertical. Deux instructions ne s'échangent librement que si aucune ne change ce dont l'autre a besoin.

8. Compter les cases au lieu des déplacements

1 point, et le lutin sort du quadrillage à l'exécution

Ce qu'il ne faut pas écrire

« Pour parcourir une ligne de 88 cases, il faut reˊpeˊter 8 fois : avancer de 1 case\mathtt{répéter\ 8\ fois\ :\ avancer\ de\ 1\ case}. »

Ce qu'il faut écrire

« Le lutin occupe déjà la première case : il ne lui reste que 77 déplacements, donc reˊpeˊter 7 fois\mathtt{répéter\ 7\ fois}. »

Pourquoi : Il y a toujours une case de plus que de déplacements sur une ligne, comme il y a un piquet de plus que d'intervalles dans une clôture. C'est le décalage de un le plus courant en algorithmique.

Quelle méthode choisir

Que fait ce bloc au lutin ?

On regarde le NOM du bloc, il dit à lui seul ce qui change.

  • Si aller aˋ x: a y: b\mathtt{aller\ à\ x:\ a\ y:\ b} la position devient (a;b)(a\,;b), la direction ne change pas

    Exemple : d'où qu'il vienne, le lutin se retrouve en (4;2)(4\,;2)

  • Si ajouter n aˋ x\mathtt{ajouter\ n\ à\ x} ou ajouter n aˋ y\mathtt{ajouter\ n\ à\ y} une seule coordonnée change, la direction est ignorée

    Exemple : de (5;1)(5\,;1), le bloc ajouter 3 aˋ y\mathtt{ajouter\ 3\ à\ y} mène en (5;4)(5\,;4)

  • Si avancer de n cases\mathtt{avancer\ de\ n\ cases} le lutin se déplace DANS SA DIRECTION ACTUELLE : il faut donc connaître cette direction avant de répondre

    Exemple : orienté vers la droite, de (1;1)(1\,;1) il va en (5;1)(5\,;1) ; orienté vers le haut, il va en (1;5)(1\,;5)

  • Si tourner de a degreˊs\mathtt{tourner\ de\ a\ degrés} seule la direction change, la position reste identique

    Exemple : en (4;3)(4\,;3) orienté vers la droite, le lutin reste en (4;3)(4\,;3) après le pivot

  • Si mettre v aˋ \mathtt{mettre\ v\ à\ \ldots} ou ajouter  aˋ v\mathtt{ajouter\ \ldots\ à\ v} seule la variable change, ni la position ni la direction

    Exemple : ajouter 5 aˋ score\mathtt{ajouter\ 5\ à\ score} ne déplace aucun lutin

Dans le tableau de suivi, une colonne par information. Un bloc ne touche presque jamais à deux colonnes à la fois, et c'est ce qui rend le remplissage rapide.

Combien de répétitions, et de quel angle tourner ?

On regarde la figure ou le résultat que le script doit produire.

  • Si un polygone régulier à nn côtés reˊpeˊter n fois\mathtt{répéter\ n\ fois}, en tournant de 360n\dfrac{360^\circ}{n} à chaque sommet

    Exemple : carré : 44 fois, 9090^\circ ; triangle équilatéral : 33 fois, 120120^\circ ; hexagone : 66 fois, 6060^\circ

  • Si un rectangle reˊpeˊter 2 fois\mathtt{répéter\ 2\ fois} un bloc de quatre instructions, longueur, pivot, largeur, pivot

    Exemple : rectangle 6×36\times 3 : deux tours de boucle, 88 instructions en tout

  • Si un escalier de nn marches reˊpeˊter n fois\mathtt{répéter\ n\ fois} avec DEUX pivots opposés, un à gauche puis un à droite

    Exemple : 44 marches de 22 cases : trait total 4×4=164\times 4=16 cases

    avec deux pivots dans le même sens, le lutin dessinerait un carré au lieu de monter

  • Si parcourir une ligne de kk cases reˊpeˊter (k1) fois\mathtt{répéter\ (k-1)\ fois}, car le lutin occupe déjà la première case

    Exemple : une ligne de 88 cases demande 77 déplacements

Vérification universelle : le total des rotations d'une figure fermée vaut 360360^\circ. Si la somme ne tombe pas juste, la figure ne se referme pas, et le script est faux avant même d'être exécuté.

La rédaction attendue

Le correcteur coche des étapes. Les voici dans l'ordre, avec la phrase de conclusion qu'il attend mot pour mot.

Suivre un script pas à pas

Quand l'utiliser : L'énoncé donne un script et demande où arrive le lutin, ce qu'il trace, ou ce que vaut une variable à la fin.

  1. 1 Tracer un tableau à trois colonnes : instruction, position, direction. On y ajoute une colonne par variable utilisée.
  2. 2 Écrire la ligne de départ AVANT la première instruction : c'est elle qui évite de partir d'un point inventé.
  3. 3 Remplir une ligne par instruction, en recopiant les valeurs qui ne changent pas plutôt que de laisser des cases vides.
  4. 4 Dérouler la boucle tour par tour, en écrivant « tour 1 », « tour 2 », plutôt que de raisonner de tête.
  5. 5 Conclure par une phrase qui donne la réponse demandée, avec ses coordonnées entre parenthèses.

Phrase de conclusion

« Après le troisième tour de boucle, le lutin se trouve au point (8;7)(8\,;7) et regarde vers la droite. »

Le piège : Ne pas noter la direction, parce qu'elle « ne change pas ». C'est justement quand elle change une seule fois que la copie se trompe.

Barème : 1 point le tableau rempli ligne à ligne, 0,5 point la boucle déroulée tour par tour, 0,5 point la phrase de conclusion.

Écrire un script qui trace une figure

Quand l'utiliser : L'énoncé demande d'écrire ou de compléter un script pour obtenir une figure donnée.

  1. 1 Placer le lutin avant de tracer : un bloc aller aˋ\mathtt{aller\ à}, puis un bloc sorienter vers\mathtt{s'orienter\ vers}.
  2. 2 Baisser le stylo, sinon la figure ne s'affiche pas.
  3. 3 Décrire UN motif complet, celui qui se répète : le côté et le pivot pour un polygone, la marche pour un escalier.
  4. 4 Compter combien de fois ce motif se répète et l'entourer d'un reˊpeˊter\mathtt{répéter}.
  5. 5 Vérifier que le total des rotations vaut 360360^\circ si la figure doit se refermer.

Phrase de conclusion

« aller aˋ x: 2 y: 1\mathtt{aller\ à\ x:\ 2\ y:\ 1}, sorienter vers la droite\mathtt{s'orienter\ vers\ la\ droite}, stylo en position deˊcriture\mathtt{stylo\ en\ position\ d'écriture}, puis reˊpeˊter 4 fois\mathtt{répéter\ 4\ fois} : avancer de 5 cases\mathtt{avancer\ de\ 5\ cases}, tourner de 90 degreˊs vers la droite\mathtt{tourner\ de\ 90\ degrés\ vers\ la\ droite}. »

Le piège : Oublier le bloc de départ et le stylo. Le correcteur exécute le script tel qu'il est écrit : sans position initiale, la figure est indéterminée.

Barème : 0,5 point la mise en place, 1 point le motif exact, 0,5 point le nombre de répétitions.

Vérifier avant de rendre

Cinq minutes de vérification récupèrent plus de points qu'un exercice de plus commencé à la hâte.

L'exercice type décortiqué

Prévoir le point d'arrivée d'un script

Le lutin part du point (2;1)(2\,;1) du quadrillage, stylo baissé. Le script ci-dessous est exécuté en entier.

Où arrive-t-il, dans quelle direction regarde-t-il, et quelle est la longueur du trait tracé ?

1234567891011123456789départ
Seul le point de départ est donné : le tracé se construit en suivant le script ligne à ligne, jamais en devinant la forme finale.
Scratch
quand le drapeau vert est cliqué
aller à x: 2 y: 1
s'orienter vers la droite
stylo en position d'écriture
répéter 3 fois
    avancer de 2 cases
    tourner de 90 degrés vers la gauche
    avancer de 2 cases
    tourner de 90 degrés vers la droite

Étape 1

Ligne de départ du tableau : position (2;1)(2\,;1), direction « vers la droite ». Aucune instruction n'a encore été exécutée.

Pourquoi

On écrit cette ligne AVANT de commencer. C'est elle qui empêche de partir d'un point inventé, et elle vaut souvent le premier demi-point.

Étape 2

Tour 1 : avancer de 2\mathtt{avancer\ de\ 2} mène en (4;1)(4\,;1) ; le pivot à gauche oriente vers le haut ; avancer de 2\mathtt{avancer\ de\ 2} mène en (4;3)(4\,;3) ; le pivot à droite réoriente vers la droite.

Pourquoi

On note les deux pivots même s'ils ne changent pas la position : c'est le premier qui rend le second avancer\mathtt{avancer} vertical, et c'est là que se joue toute la figure.

Étape 3

Tour 2 : de (4;3)(4\,;3) on passe en (6;3)(6\,;3), puis en (6;5)(6\,;5), et le lutin regarde de nouveau vers la droite.

Pourquoi

Le deuxième tour part exactement dans la même configuration que le premier : c'est ce qui prouve que le motif se répète et qu'on peut prévoir le troisième sans le dérouler.

Étape 4

Tour 3 : de (6;5)(6\,;5) on passe en (8;5)(8\,;5), puis en (8;7)(8\,;7). Le lutin regarde vers la droite.

Pourquoi

Chaque tour ajoute 22 à l'abscisse et 22 à l'ordonnée. On pouvait donc écrire directement 2+2×3=82+2\times 3=8 et 1+2×3=71+2\times 3=7 : la boucle se calcule au lieu de se dérouler.

Étape 5

Longueur du trait : chaque tour trace 2+2=42+2=4 cases, et il y a 33 tours, donc 3×4=123\times 4=12 cases.

Pourquoi

On compte le trait, pas le déplacement en ligne droite entre le départ et l'arrivée. C'est la même distinction qu'entre un trajet et un raccourci.

Étape 6

Vérification : le lutin est monté de 66 cases et s'est décalé de 66 cases vers la droite, ce qui donne bien (2+6;1+6)=(8;7)(2+6\,;1+6)=(8\,;7).

1234567891011123456789arrivéedépart

Pourquoi

Le contrôle refait le compte par un autre chemin, en additionnant les déplacements de chaque direction séparément.

Conclusion rédigée

« Le lutin arrive au point (8;7)(8\,;7), orienté vers la droite, après avoir tracé un escalier de 33 marches long de 1212 cases. »

L'erreur classique sur cet exercice : Oublier le second pivot et faire tourner le lutin deux fois dans le même sens : la figure devient un carré fermé au lieu d'un escalier, et le point d'arrivée redevient le point de départ.

À savoir par cœur

  • aller aˋ\mathtt{aller\ à} donne une POSITION ; ajouter aˋ\mathtt{ajouter\ à} et avancer\mathtt{avancer} donnent un DÉPLACEMENT.
  • tourner\mathtt{tourner} change la direction et RIEN d'autre.
  • Un point du quadrillage s'écrit (x;y)(x\,;y) : l'abscisse d'abord, l'ordonnée ensuite.
  • Polygone régulier à nn côtés : reˊpeˊter n fois\mathtt{répéter\ n\ fois}, angle 360n\dfrac{360^\circ}{n}.
  • Une figure fermée totalise 360360^\circ de rotations.
  • mettre aˋ\mathtt{mettre\ à} efface, ajouter aˋ\mathtt{ajouter\ à} conserve.
  • Parcourir kk cases demande k1k-1 déplacements.

Questions fréquentes

Quelle est la différence entre aller à et avancer dans Scratch ?

Le bloc aller à donne une position : il place le lutin au point indiqué, quel que soit l'endroit d'où il vient. Le bloc avancer donne un déplacement : il part de la position actuelle et suit la direction actuelle du lutin. Deux lutins partis d'endroits différents finissent au même point avec aller à, et à deux endroits différents avec avancer.

De quel angle le lutin doit-il tourner pour tracer un triangle équilatéral ?

De 120 degrés à chaque sommet, et non de 60. L'angle de rotation n'est pas l'angle de la figure : c'est ce qu'il manque à cet angle pour faire un demi-tour. La règle générale est de tourner de 360 divisé par le nombre de côtés, ce qui donne 90 degrés pour un carré et 60 degrés pour un hexagone.

Que veut dire mettre score à score plus 4 ?

Cette instruction se lit de droite à gauche. On calcule d'abord la somme de la valeur actuelle de la variable et de 4, puis on range le résultat dans la variable. Ce n'est pas une équation mathématique mais une action de rangement en mémoire : si le score valait 23, il vaut 27 après l'exécution du bloc.

Comment savoir où arrive le lutin à la fin d'un script ?

On dresse un tableau avec une ligne par instruction et trois colonnes : la position, la direction et chaque variable. On écrit d'abord la ligne de départ, puis on avance instruction par instruction en recopiant ce qui ne change pas. Les boucles se déroulent tour par tour. Lire un script globalement conduit presque toujours à une erreur.

Pourquoi faut-il répéter 7 fois pour parcourir 8 cases ?

Parce que le lutin occupe déjà la première case au départ : il ne lui reste que sept déplacements à faire pour atteindre la huitième. Il y a toujours une case de plus que de déplacements sur une ligne, comme il y a un piquet de plus que d'intervalles dans une clôture. Ce décalage de un est l'erreur la plus fréquente en algorithmique.

Passer à la pratique

Exercices corrigés : Algorithmique et Scratch

Une méthode se prouve sur une copie, pas sur une fiche. La série du même chapitre reprend chacun de ces pièges dans un exercice, avec le corrigé rédigé étape par étape.

  • 15 exercices corrigés
  • 150 points
  • 175 minutes
Faire les exercices
Fiche précédente Durées, tableaux et graphiques

Ce chapitre resservira dans

Les chapitres qui le réclament en amont, plus tard dans l'année ou dans les années suivantes.

Voir aussi

Scratch et les quadrillages posent problème ?

Contactez-moi pour une première séance. L'algorithmique de sixième apprend une chose qui sert partout ensuite : suivre un enchaînement d'étapes sans en sauter aucune, et vérifier au fur et à mesure. C'est la même rigueur qui fait réussir une démonstration en troisième.

Site par Studio Squalli