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

Fiche de révision : algorithmique et Scratch (Quatrième)

L'algorithmique n'est pas un chapitre à part : c'est du calcul littéral qui s'exécute. Un script fait exactement ce qui est écrit, dans l'ordre écrit, et il ne devine jamais l'intention. Toute la difficulté est de lire lentement ce qu'on croit avoir compris vite.

Cette fiche donne la méthode du tableau de suivi, l'angle de rotation des polygones réguliers et les huit erreurs qui coûtent des points en contrôle, avec la ligne exacte à écrire à la place.

Le fil du chapitre

Un script ne fait rien d'autre que ce qui est écrit, dans l'ordre où c'est écrit, et une variable ne retient qu'UNE seule valeur à la fois. Presque toutes les erreurs du chapitre viennent de ce qu'on croit que la machine anticipe, ou qu'une variable garde son passé.

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

Avant ce chapitre

Cette fiche suppose ces notions acquises. Si une méthode ci-dessous reste opaque, c'est presque toujours l'une d'elles qui manque, pas la fiche.

Remonter plus loin : la chaîne complète (2 chapitres) ↓

Le chemin de remédiation, du plus ancien au plus proche. Un élève qui reprend ce chapitre de zéro le reprend dans cet ordre.

  1. 1Algorithmique et ScratchSixième
  2. 2Algorithmique et ScratchCinquième

L'essentiel

L'exécution, ligne par ligne

  • Un script s'exécute de haut en bas, une instruction après l'autre, sans jamais rien anticiper ni deviner.
  • Le lutin est repéré par ses coordonnées (x;y)(x\,;y). Le bloc aller aˋ x: a y: b\mathtt{aller\ à\ x:\ a\ y:\ b} le PLACE au point (a;b)(a\,;b) : c'est une position absolue, pas un déplacement.
  • avancer de d\mathtt{avancer\ de\ d} déplace le lutin de dd pas DANS SA DIRECTION ACTUELLE ; tourner de a degreˊs\mathtt{tourner\ de\ a\ degrés} le fait pivoter sur place, sans le déplacer.
  • Pour suivre un script, on tient un tableau : une colonne par variable, une ligne par tour de boucle.

Le tableau de suivi n'est pas une aide facultative : c'est la rédaction attendue, et il vaut souvent la moitié des points de la question.

Les variables : une case, une seule valeur

  • mettre v aˋ \mathtt{mettre\ v\ à\ \ldots} EFFACE l'ancien contenu et le remplace par le résultat du calcul écrit à droite.
  • mettre v aˋ v+3\mathtt{mettre\ v\ à\ v+3} se lit de DROITE à GAUCHE : on calcule v+3v+3 avec l'ANCIENNE valeur, puis on range le résultat dans vv.
  • Une variable ne garde aucun souvenir de ses valeurs précédentes : dès qu'elle est écrasée, l'ancienne valeur est perdue.
  • Échanger deux variables demande donc une TROISIÈME variable, qui met de côté l'une des deux avant l'écrasement.
au départ a = 5 et b = 8mettre a à ba = 8 et b = 8mettre b à aa = 8 et b = 8l'ancien 5 est perdu dès la première ligne
Dès la première ligne, l'ancienne valeur de aa est écrasée : la seconde ligne recopie donc 88 dans bb, et le 55 n'existe plus nulle part.

Le signe d'affectation n'est pas le signe égal des mathématiques : v  v+3\mathtt{v\ \leftarrow\ v+3} n'est pas une équation, c'est un ordre.

Les tests et les boucles

  • si  alors  sinon \mathtt{si\ \ldots\ alors\ \ldots\ sinon\ \ldots} n'exécute qu'UNE seule des deux branches, jamais les deux.
  • reˊpeˊter n fois\mathtt{répéter\ n\ fois} exécute exactement nn fois le bloc placé à l'intérieur.
  • reˊpeˊter jusquaˋ ce que \mathtt{répéter\ jusqu'à\ ce\ que\ \ldots} teste la condition AVANT chaque tour : si elle est déjà vraie au départ, le bloc n'est pas exécuté du tout.
  • Dans des boucles imbriquées, la boucle intérieure fait TOUS ses tours à chaque tour de la boucle extérieure : 33 et 44 donnent 1212 exécutions.

Un test se lit en se demandant quelle branche s'exécute pour une valeur donnée, jamais les deux à la fois. Prendre deux valeurs d'essai, une de chaque côté du seuil, tranche toujours.

Les polygones et l'angle de rotation

  • Pour fermer un polygone régulier à nn côtés, le lutin tourne à chaque sommet de 360°n\dfrac{360°}{n}, et non de l'angle intérieur.
  • Pour un carré, cela fait 90°90° ; pour un triangle équilatéral, 120°120° et non 60°60° ; pour un pentagone, 72°72°.
  • L'angle de rotation est l'angle EXTÉRIEUR : il complète l'angle intérieur à 180°180°.
  • Vérification systématique : sur une figure fermée, la somme de toutes les rotations vaut exactement 360°360°.
60°120°il tourne de 120°, pas de 60°3 × 120° = 360° : la figure est fermée
L'angle intérieur du triangle vaut 60°60°, mais le lutin qui marche le long du côté doit pivoter de 120°120° pour prendre la direction suivante : c'est l'angle extérieur.

Le lutin ne tourne pas « comme la figure », il tourne comme quelqu'un qui marche le long du contour : à chaque sommet, il pivote de l'angle extérieur.

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. Croire que deux affectations échangent deux variables

toute la question, et un script qui tourne sans erreur mais donne un résultat faux

Ce qu'il ne faut pas écrire

« mettre a aˋ b\mathtt{mettre\ a\ à\ b} puis mettre b aˋ a\mathtt{mettre\ b\ à\ a} échange les valeurs de aa et de bb. »

Ce qu'il faut écrire

« Après la première ligne, aa et bb valent tous deux l'ancien bb : l'ancienne valeur de aa est perdue. Il faut une variable temporaire. »

Pourquoi : Une affectation écrase, elle n'échange pas. La machine exécute la seconde ligne avec le contenu déjà modifié, jamais avec celui d'avant.

2. Faire tourner le lutin de l'angle intérieur

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. »

Ce qu'il faut écrire

« Il tourne de 3603=120\dfrac{360}{3}=120 degrés : c'est l'angle EXTÉRIEUR, et 3×120=3603\times 120=360, donc la figure se ferme. »

Pourquoi : Le lutin marche le long du contour : à chaque sommet, il pivote de ce qui lui manque pour prendre la direction suivante, c'est-à-dire l'angle extérieur.

3. Prendre le bloc « aller à » pour un déplacement

1,5 point, et toute la trajectoire tracée ensuite est fausse

Ce qu'il ne faut pas écrire

« aller aˋ x: 50 y: 0\mathtt{aller\ à\ x:\ 50\ y:\ 0} déplace le lutin de 5050 pas vers la droite. »

Ce qu'il faut écrire

« Il le PLACE au point de coordonnées (50;0)(50\,;0), quelle que soit sa position de départ. C'est avancer de 50\mathtt{avancer\ de\ 50} qui déplace. »

Pourquoi : Une position absolue ne dépend pas de l'endroit d'où l'on part, un déplacement si. Les deux blocs se ressemblent à la lecture rapide et ne font pas du tout la même chose.

4. Exécuter les deux branches d'un test

toute la question de suivi, et une valeur finale doublement modifiée

Ce qu'il ne faut pas écrire

« Si la condition est vraie, on exécute la branche « alors », puis on continue avec la branche « sinon ». »

Ce qu'il faut écrire

« Une seule des deux branches s'exécute, jamais les deux : « sinon » n'est atteinte que lorsque la condition est fausse. »

Pourquoi : Le bloc « sinon » n'est pas la suite du script, c'est l'autre chemin. Après le test, l'exécution reprend sous le bloc entier, quelle que soit la branche prise.

5. Croire qu'une boucle non bornée fait au moins un tour

1,5 point, et une valeur finale décalée d'un tour

Ce qu'il ne faut pas écrire

« reˊpeˊter jusquaˋ ce que v>10\mathtt{répéter\ jusqu'à\ ce\ que\ v>10} avec v=12v=12 au départ : le bloc s'exécute une fois, puis s'arrête. »

Ce qu'il faut écrire

« La condition est testée AVANT chaque tour : comme 12>1012>10 est déjà vrai, le bloc n'est pas exécuté du tout. »

Pourquoi : Le test précède le corps de la boucle, il ne le suit pas. Le tableau de suivi doit donc commencer par une ligne « test » avant la première ligne « tour ».

6. Additionner les tours de boucles imbriquées

2 points, et un décompte d'instructions faux dans tout le problème

Ce qu'il ne faut pas écrire

« Un reˊpeˊter 3 fois\mathtt{répéter\ 3\ fois} qui contient un reˊpeˊter 4 fois\mathtt{répéter\ 4\ fois} exécute le bloc intérieur 3+4=73+4=7 fois. »

Ce qu'il faut écrire

« Il l'exécute 3×4=123\times 4=12 fois : la boucle intérieure refait TOUS ses tours à chaque tour de la boucle extérieure. »

tour 3tour 2tour 1répéter 3 fois { répéter 4 fois }3 × 4 = 12 exécutions, et non 3 + 4 = 7
Chaque tour de la boucle extérieure relance les quatre tours de la boucle intérieure : les cases se comptent en lignes et en colonnes, donc par un produit.

Pourquoi : Les deux boucles ne se suivent pas, l'une est dans l'autre. Dessiner trois paquets de quatre cases rend le produit évident.

7. Croire que « tourner » déplace le lutin

1 point, et une figure décalée dès le premier sommet

Ce qu'il ne faut pas écrire

« tourner de 90 degreˊs\mathtt{tourner\ de\ 90\ degrés} fait avancer le lutin d'un quart de tour. »

Ce qu'il faut écrire

« Le lutin pivote SUR PLACE : ses coordonnées ne changent pas, seule sa direction change. »

Pourquoi : Tourner et avancer sont deux blocs indépendants, et un contour se trace en les alternant. Un script qui ne contient que des rotations ne dessine rien du tout.

8. Prouver un programme de calcul par des exemples

toute la question de démonstration, même quand la conjecture est juste

Ce qu'il ne faut pas écrire

« Le programme donne 77 pour x=3x=3 et 77 pour x=5x=5, donc il donne toujours 77. »

Ce qu'il faut écrire

« Deux exemples ne prouvent rien : il faut poser l'expression littérale, la développer, et montrer que les termes en xx se simplifient. »

Pourquoi : Un contre-exemple suffit à réfuter, mais aucun nombre d'exemples ne suffit à démontrer. C'est le calcul littéral, et lui seul, qui prouve.

Quelle méthode choisir

Quelle boucle et quel test selon l'énoncé

On repère si le nombre de répétitions est connu à l'avance, et si une décision doit être prise en cours de route.

  • Si le nombre de répétitions est connu, comme un nombre de côtés reˊpeˊter n fois\mathtt{répéter\ n\ fois}

    Exemple : un pentagone demande reˊpeˊter 5 fois\mathtt{répéter\ 5\ fois}

  • Si la répétition s'arrête sur une CONDITION, comme un seuil atteint reˊpeˊter jusquaˋ ce que \mathtt{répéter\ jusqu'à\ ce\ que\ \ldots}, en sachant que le test précède le premier tour

    Exemple : reˊpeˊter jusquaˋ ce que v>100\mathtt{répéter\ jusqu'à\ ce\ que\ v>100}

    si la condition est vraie dès le départ, le bloc n'est jamais exécuté

  • Si une seule décision doit être prise, sans répétition si  alors  sinon \mathtt{si\ \ldots\ alors\ \ldots\ sinon\ \ldots}, dont une seule branche s'exécute

    Exemple : un tarif qui change au-delà de deux heures de stationnement

  • Si un motif se répète à l'intérieur d'un motif, comme une frise de carrés deux boucles imbriquées, dont le nombre total d'exécutions est le PRODUIT

    Exemple : reˊpeˊter 3 fois\mathtt{répéter\ 3\ fois} contenant reˊpeˊter 4 fois\mathtt{répéter\ 4\ fois} donne 1212 exécutions

Après la boucle, il faut souvent une instruction de déplacement pour passer au motif suivant : elle se place à l'intérieur de la boucle extérieure et à l'extérieur de l'intérieure.

Suivre une variable tour par tour

On dresse un tableau avec une ligne par tour et une colonne par variable, puis on remplit ligne après ligne.

  • Si l'instruction est mettre v aˋ \mathtt{mettre\ v\ à\ } suivie d'un nombre écrire ce nombre dans la colonne, en oubliant totalement la valeur précédente

    Exemple : mettre v aˋ 5\mathtt{mettre\ v\ à\ 5} donne v=5v=5

  • Si l'instruction contient la variable elle-même à droite calculer le membre de droite avec l'ANCIENNE valeur, puis écrire le résultat

    Exemple : v=5v=5 et mettre v aˋ v×21\mathtt{mettre\ v\ à\ v\times 2-1} donnent v=9v=9

    on lit toujours de droite à gauche : d'abord le calcul, ensuite le rangement

  • Si l'instruction est dans une boucle recopier la ligne précédente et n'appliquer que les modifications de ce tour

    Exemple : trois tours donnent 55, puis 99, puis 1717, puis 3333

  • Si deux variables doivent échanger leurs valeurs introduire une variable temporaire et écrire les trois affectations dans l'ordre

    Exemple : ta\mathtt{t\leftarrow a}, puis ab\mathtt{a\leftarrow b}, puis bt\mathtt{b\leftarrow t}

La dernière ligne du tableau est la réponse. Un tableau incomplet vaut souvent plus de points qu'une réponse juste sans tableau.

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 et donner la valeur finale

Quand l'utiliser : L'énoncé donne un script avec une ou plusieurs variables et demande la valeur obtenue à la fin.

  1. 1 Dresser le tableau de suivi : une colonne par variable, une ligne par tour, plus une ligne de départ.
  2. 2 Remplir la ligne de départ avec les valeurs initiales, avant toute boucle.
  3. 3 Pour chaque tour, calculer le membre de droite avec les ANCIENNES valeurs, puis écrire les nouvelles.
  4. 4 Annoncer la valeur finale en citant le nombre de tours effectués.

Phrase de conclusion

« Après les trois tours de la boucle, la variable vv vaut 3333. »

Le piège : Calculer un tour avec la valeur qu'on vient d'écrire au lieu de celle de la ligne précédente. Le tableau, lu ligne par ligne, rend cette erreur impossible.

Barème : 1 point pour le tableau, 0,5 par ligne correcte, 0,5 pour la valeur finale annoncée.

Écrire le script d'un polygone régulier

Quand l'utiliser : L'énoncé demande de tracer un polygone régulier à nn côtés, ou de corriger un script qui ne se referme pas.

  1. 1 Calculer l'angle de rotation et l'écrire : « pour un pentagone, l'angle vaut 3605=72\dfrac{360}{5}=72 degrés ».
  2. 2 Écrire la boucle avec le bon nombre de tours : reˊpeˊter 5 fois\mathtt{répéter\ 5\ fois}.
  3. 3 Placer à l'intérieur les deux instructions, dans l'ordre : avancer, puis tourner.
  4. 4 Vérifier que la somme des rotations vaut 360360 degrés, et l'écrire.

Phrase de conclusion

« Le script est reˊpeˊter 5 fois\mathtt{répéter\ 5\ fois} contenant avancer de 60\mathtt{avancer\ de\ 60} puis tourner de 72 degreˊs\mathtt{tourner\ de\ 72\ degrés}, et 5×72=3605\times 72=360. »

Le piège : Utiliser l'angle intérieur du polygone, 108108 degrés pour un pentagone. La somme donnerait 540540 degrés et la figure ne se refermerait pas.

Barème : 0,5 point pour l'angle, 1 point pour la boucle et les deux instructions dans le bon ordre, 0,5 pour la vérification.

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é

Une variable dans une boucle, puis un pentagone

On exécute le script suivant : mettre v aˋ 5\mathtt{mettre\ v\ à\ 5}, puis reˊpeˊter 3 fois\mathtt{répéter\ 3\ fois} contenant mettre v aˋ v×21\mathtt{mettre\ v\ à\ v\times 2-1}. Donner la valeur de vv à chaque tour.

Le lutin doit ensuite tracer un pentagone régulier de côté 6060 pas. Donner l'angle de rotation et le script complet.

72°5 fois : avancer, puis tourner de 72°5 × 72° = 360° : la figure se referme
À chaque sommet, le lutin pivote de 7272 degrés par rapport à la direction précédente, pointillée ici : cinq pivots de 7272 degrés font le tour complet et referment le pentagone.

Étape 1

Ligne de départ du tableau : avant la boucle, v=5v=5.

Pourquoi

La ligne de départ n'est pas un tour de boucle, et c'est précisément pour cela qu'elle se note à part. La confondre avec le premier tour décale tout le tableau.

Étape 2

Tour 11 : on calcule 5×21=95\times 2-1=9 avec l'ancienne valeur, puis on range 99 dans vv.

Pourquoi

L'instruction se lit de droite à gauche : d'abord le calcul, ensuite le rangement. La variable qui apparaît des deux côtés n'est pas une équation à résoudre, c'est un ordre.

Étape 3

Tour 22 : 9×21=179\times 2-1=17. Tour 33 : 17×21=3317\times 2-1=33.

Pourquoi

Chaque tour repart de la ligne précédente, jamais de la valeur initiale. Recopier le tableau ligne par ligne empêche de sauter un tour ou d'en ajouter un.

Étape 4

La boucle s'arrête après le troisième tour, donc v=33v=33.

Pourquoi

Un reˊpeˊter 3 fois\mathtt{répéter\ 3\ fois} exécute exactement trois tours, ni deux ni quatre. Le nombre de lignes du tableau doit donc valoir trois, plus la ligne de départ.

Étape 5

Pentagone : l'angle de rotation vaut 3605=72\dfrac{360}{5}=72 degrés.

Pourquoi

Le lutin pivote de l'angle EXTÉRIEUR à chaque sommet. L'angle intérieur du pentagone, 108108 degrés, ne sert pas ici et refermerait mal la figure.

Étape 6

Script : reˊpeˊter 5 fois\mathtt{répéter\ 5\ fois} contenant avancer de 60\mathtt{avancer\ de\ 60} puis tourner de 72 degreˊs\mathtt{tourner\ de\ 72\ degrés}.

Pourquoi

L'ordre des deux instructions compte : on trace le côté, puis on pivote. Les inverser donne la même figure mais décalée, et une rédaction fausse dans un exercice de construction.

Étape 7

Contrôle : 5×72=3605\times 72=360 degrés, donc la figure se referme, et l'angle intérieur vaut bien 18072=108180-72=108 degrés.

Pourquoi

La somme des rotations est le seul contrôle qui distingue un polygone fermé d'une ligne brisée ouverte. Il tient en une multiplication et sauve la question.

Conclusion rédigée

« La variable vv prend successivement les valeurs 99, 1717 et 3333. Le pentagone se trace avec reˊpeˊter 5 fois\mathtt{répéter\ 5\ fois} contenant avancer de 60\mathtt{avancer\ de\ 60} et tourner de 72 degreˊs\mathtt{tourner\ de\ 72\ degrés}. »

L'erreur classique sur cet exercice : Faire pivoter le lutin de 108108 degrés, l'angle intérieur du pentagone. La somme des rotations vaudrait alors 540540 degrés et la figure ne se refermerait jamais.

À savoir par cœur

  • Un script s'exécute de haut en bas, sans rien anticiper.
  • aller aˋ x: a y: b\mathtt{aller\ à\ x:\ a\ y:\ b} PLACE le lutin ; avancer de d\mathtt{avancer\ de\ d} le DÉPLACE ; tourner\mathtt{tourner} le fait pivoter sur place.
  • Une affectation écrase : mettre v aˋ v+3\mathtt{mettre\ v\ à\ v+3} se lit de droite à gauche, avec l'ANCIENNE valeur.
  • Échanger deux variables demande une TROISIÈME variable.
  • si  sinon\mathtt{si\ \ldots\ sinon} n'exécute qu'UNE branche. reˊpeˊter jusquaˋ\mathtt{répéter\ jusqu'à} teste AVANT le premier tour.
  • Boucles imbriquées : le nombre d'exécutions est le PRODUIT des deux nombres de tours.
  • Polygone régulier à nn côtés : le lutin tourne de 360°n\dfrac{360°}{n}, et la somme des rotations vaut 360°360°.

Questions fréquentes

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

De cent vingt degrés à chaque sommet, et non de soixante. Le lutin pivote de l'angle extérieur, celui qui complète l'angle intérieur à cent quatre-vingts degrés. Le contrôle est immédiat : trois fois cent vingt font trois cent soixante, donc la figure se referme.

Comment lire l'instruction mettre v à v plus trois ?

De droite à gauche : on calcule d'abord v plus trois avec l'ancienne valeur de v, puis on range le résultat dans v, ce qui efface l'ancienne. Ce n'est pas une équation mathématique, c'est un ordre donné à la machine, et il s'exécute une seule fois.

Pourquoi deux affectations ne suffisent-elles pas à échanger deux variables ?

Parce que la première affectation écrase déjà l'une des deux valeurs, qui est alors perdue définitivement. La seconde ligne recopie donc la même valeur dans les deux variables. Il faut une troisième variable pour mettre l'une des deux de côté avant l'écrasement.

Combien de fois s'exécute une boucle placée dans une autre boucle ?

Autant de fois que le produit des deux nombres de tours. Une boucle de trois tours contenant une boucle de quatre tours exécute le bloc intérieur douze fois, et non sept : la boucle intérieure refait tous ses tours à chaque tour de la boucle extérieure.

La boucle répéter jusqu'à ce que fait-elle toujours au moins un tour ?

Non. La condition est testée avant chaque tour, y compris le premier. Si elle est déjà vraie au départ, le bloc n'est pas exécuté du tout. C'est pour cela que le tableau de suivi commence par une ligne de départ, avant tout tour de boucle.

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
  • 195 minutes
Faire les exercices
Fiche précédente Statistiques et probabilités

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

Votre enfant lit un script sans savoir ce qu'il produit ?

Contactez-moi pour une première séance. L'algorithmique tombe chaque année au brevet et elle ne demande aucune connaissance nouvelle : uniquement la rigueur de suivre un script ligne par ligne, qui est exactement ce que demandent ensuite les équations et la démonstration.

Site par Studio Squalli