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

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

Cette fiche de révision couvre l'algorithmique et les scripts Scratch en classe de troisième du programme français, tels qu'ils sont évalués au brevet et dans les contrôles du Lycée Marie de France et du Collège Stanislas à Montréal.

Elle ne redit pas le cours, que vous avez déjà : elle dit ce qui fait perdre des points sur ce chapitre, et le geste précis qui évite chaque perte. Le fil est toujours le même : dérouler le script dans un tableau au lieu de le lire dans sa tête.

Le fil du chapitre

Un script ne se devine pas, il se DÉROULE : une colonne par variable, une ligne par tour de boucle. Et une affectation n'est pas une égalité : elle calcule à droite avec les ANCIENNES valeurs, puis elle écrase la variable de gauche.

Ce chapitre fait partie de Mathématiques en Troisiè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 (3 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
  3. 3Algorithmique et ScratchQuatrième

L'essentiel

L'affectation : calculer à droite, écraser à gauche

  • L'instruction « mettre vv à quelque chose » CALCULE d'abord l'expression de droite, avec les ANCIENNES valeurs, puis remplace le contenu de vv par le résultat.
  • Ce n'est pas une égalité mathématique : « mettre nn à n+1n+1 » a un sens en programmation et n'en a aucun en algèbre.
  • L'ancienne valeur est DÉFINITIVEMENT perdue. Pour échanger deux variables, il faut donc une troisième variable qui met la première de côté.
  • L'ORDRE des instructions change le résultat : deux affectations échangées ne donnent pas le même programme.
ab533333abt535335355a est perdua est sauvé
À gauche, « mettre a à b » puis « mettre b à a » laisse 33 dans les deux variables : la valeur 55 a disparu. À droite, la variable tt la met de côté et l'échange réussit.

Sur une copie, dérouler le script dans un tableau vaut souvent un point de méthode à lui seul, même si le résultat final se trompe.

Le tableau d'exécution, une colonne par variable

  • On écrit une COLONNE par variable et une LIGNE par tour de boucle, ou par instruction quand il n'y a pas de boucle.
  • On remplit ligne par ligne, sans anticiper : c'est justement l'anticipation qui produit les erreurs.
  • La dernière ligne du tableau donne la réponse ; l'AVANT-DERNIÈRE explique pourquoi la boucle s'est arrêtée là.
  • Un script qui affiche quelque chose n'affiche que ce qui est explicitement demandé : une variable calculée mais non affichée ne fait pas partie de la sortie.

Les boucles, et la condition qui les arrête

  • « Répéter nn fois » est une boucle BORNÉE : le nombre de tours est connu à l'avance.
  • « Répéter jusqu'à ce que ... » teste la condition AVANT chaque tour, et s'arrête dès qu'elle devient vraie.
  • Si le corps de la boucle ne fait pas progresser la variable testée, la boucle est INFINIE.
  • Pour tracer un polygone régulier à nn côtés, le lutin tourne de 360n\dfrac{360^\circ}{n} à chaque sommet. L'angle intérieur, (n2)×180n\dfrac{(n-2)\times 180^\circ}{n}, ne sert PAS au tracé.

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. Échanger deux variables sans variable temporaire

3 points, et c'est la question la plus fréquente du chapitre

Ce qu'il ne faut pas écrire

« mettre a à b, puis mettre b à a : les deux valeurs sont échangées. »

Ce qu'il faut écrire

« mettre t à a, puis mettre a à b, puis mettre b à t : la valeur de aa est mise de côté avant d'être écrasée. »

Pourquoi : Dès la première instruction, l'ancienne valeur de aa est détruite : la seconde recopie alors la nouvelle valeur de aa, qui vaut déjà bb. Les deux variables finissent égales.

2. Lire une affectation comme une équation

toute la question, par blocage

Ce qu'il ne faut pas écrire

« mettre n à n plus 1 est impossible, car nn ne peut pas valoir n+1n+1. »

Ce qu'il faut écrire

« mettre n à n plus 1 calcule l'ancienne valeur augmentée de 11, puis la range dans nn : si nn valait 44, il vaut maintenant 55. »

Pourquoi : La flèche d'une affectation va de la droite vers la gauche et se lit « reçoit ». Le signe égal des mathématiques, lui, décrit un état et ne fait rien.

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

2 points, et la figure obtenue n'est pas un hexagone

Ce qu'il ne faut pas écrire

« Pour un hexagone, l'angle intérieur vaut 120120^\circ, donc je fais tourner le lutin de 120120^\circ. »

Ce qu'il faut écrire

« Le lutin tourne de l'angle EXTÉRIEUR, 3606=60\dfrac{360^\circ}{6}=60^\circ, et la figure se ferme après six côtés. »

60°120°hexagone régulier
Au sommet, le lutin arrive dans la direction pointillée et repart le long du côté suivant : il pivote de 6060^\circ, l'angle extérieur, et non de 120120^\circ, l'angle intérieur du polygone.

Pourquoi : Le lutin avance tout droit puis pivote : il tourne de l'écart entre l'ancienne et la nouvelle direction, qui est l'angle extérieur. Contrôle : la somme des rotations d'un tour complet vaut 360360^\circ.

4. Croire qu'un script testé dix fois est démontré

les 3 points de la question « démontrer »

Ce qu'il ne faut pas écrire

« J'ai essayé avec 11, 22, 55 et 1010 : le script donne toujours le double du nombre choisi, c'est donc démontré. »

Ce qu'il faut écrire

« J'appelle xx le nombre choisi, je suis les instructions, j'obtiens (x+3)×261=2x\dfrac{(x+3)\times 2-6}{1}=2x : le résultat vaut 2x2x pour TOUT nombre. »

Pourquoi : Des essais numériques ne prouvent rien, alors qu'un seul contre-exemple suffit à réfuter. Le calcul littéral est la seule preuve acceptée au brevet.

5. Écrire une boucle que rien ne fait avancer

2 points, et le script ne se termine jamais

Ce qu'il ne faut pas écrire

« répéter jusqu'à ce que p soit supérieur à 2500 : mettre n à n plus 1. »

Ce qu'il faut écrire

« répéter jusqu'à ce que p soit supérieur à 2500 : mettre p à p multiplié par 1,05, puis mettre n à n plus 1. »

Pourquoi : La condition porte sur pp, mais seul nn change : pp garde éternellement sa valeur de départ et la condition reste fausse. La variable TESTÉE doit être modifiée dans la boucle.

6. Ne recalculer que la dernière ligne du tableau

2 points, la réponse est décalée d'un tour

Ce qu'il ne faut pas écrire

« Le script s'arrête quand pp dépasse 25002500, donc la réponse est la valeur de pp. »

Ce qu'il faut écrire

« pp valait 2431,012431{,}01 au tour 44, ce qui ne dépassait pas encore 25002500, et 2552,562552{,}56 au tour 55 : c'est donc au bout de 55 ans que le seuil est franchi. »

Pourquoi : C'est l'AVANT-DERNIÈRE ligne qui prouve que le tour précédent ne convenait pas encore. Sans elle, rien ne dit que la réponse n'est pas plus petite.

7. Additionner les pourcentages au lieu de les multiplier

3 points, et la conclusion sur le seuil est inversée

Ce qu'il ne faut pas écrire

« 55 pour cent par an pendant 55 ans, cela fait 2525 pour cent, donc 2000×1,25=25002000\times 1{,}25=2500. »

Ce qu'il faut écrire

« Chaque année multiplie par 1,051{,}05, donc cinq années multiplient par 1,0551,27631{,}05^{5}\approx 1{,}2763 : la population atteint environ 2552,562552{,}56 habitants. »

Pourquoi : Le pourcentage porte chaque année sur la population de l'année précédente, déjà augmentée : les coefficients se composent par un produit, jamais par une somme de taux.

8. Inverser deux instructions sans vérifier l'effet

2 à 3 points quand les variables se croisent

Ce qu'il ne faut pas écrire

« mettre n à n plus 1 puis mettre p à p multiplié par 1,05, ou l'inverse, cela revient au même. »

Ce qu'il faut écrire

« Ici les deux ordres donnent le même résultat car les deux variables sont indépendantes, mais il faut le VÉRIFIER dans le tableau : dès qu'une instruction utilise la variable modifiée par l'autre, l'ordre compte. »

Pourquoi : Une affectation lit les valeurs au moment où elle s'exécute. Deux instructions qui partagent une variable ne commutent pas, et le tableau est le seul moyen de le voir.

9. Confondre ce qui est calculé et ce qui est affiché

1 point, celui de la question sur la sortie du programme

Ce qu'il ne faut pas écrire

« Le script calcule pp et nn, donc il affiche les deux. »

Ce qu'il faut écrire

« Le script n'affiche que nn, car c'est la seule variable dans le bloc « dire » : la valeur de pp reste interne. »

Pourquoi : Une variable existe indépendamment de son affichage. La question « qu'affiche ce script » porte sur les seules instructions de sortie, pas sur l'état des variables.

Quelle méthode choisir

Que demande la question sur le script ?

Lire le verbe de la question, qui décide entièrement du travail à faire.

  • Si « que fait ce script », « qu'affiche », « quelle valeur » DÉROULER dans un tableau, une colonne par variable

    Exemple : trois colonnes aa, bb, tt et une ligne par instruction

  • Si « démontrer », « quel que soit le nombre choisi », « expliquer pourquoi » appeler xx le nombre choisi et calculer LITTÉRALEMENT

    Exemple : (x+3)×26=2x(x+3)\times 2-6=2x

    aucun essai numérique ne remplace ce calcul

  • Si « compléter le script », « quelle instruction manque » identifier la variable qui n'est jamais modifiée, ou la condition d'arrêt absente

    Exemple : il manque « mettre p à p multiplié par 1,05 »

  • Si « combien de fois la boucle est-elle exécutée » compter les LIGNES du tableau, pas les instructions

    Exemple : cinq tours pour passer de 20002000 à plus de 25002500

  • Si « modifier le script pour ... » écrire les instructions en français, dans l'ordre, avec les mots du script fourni

    Exemple : reprendre exactement « mettre ... à ... »

Quand un script trace une figure, le travail est encore un tableau, mais avec deux colonnes de plus : la position et la direction du lutin.

Quelle boucle, quelle condition d'arrêt ?

Regarder si le nombre de tours est connu à l'avance.

  • Si le nombre de tours est donné (« tracer un carré », « douze motifs ») boucle BORNÉE, « répéter nn fois »

    Exemple : répéter 6 fois pour un hexagone

  • Si on attend qu'une valeur dépasse un seuil boucle NON BORNÉE, « répéter jusqu'à ce que ... »

    Exemple : répéter jusqu'à ce que p soit supérieur à 2500

  • Si la condition est testée AVANT le tour le corps peut ne jamais s'exécuter, si la condition est déjà vraie au départ

    Exemple : si pp vaut déjà 30003000, aucun tour n'a lieu

  • Si la variable testée n'est pas modifiée dans le corps la boucle est INFINIE : il manque une instruction

    Exemple : tester pp en ne modifiant que nn

Un compteur qui sert de réponse, comme le nombre d'années, doit être initialisé AVANT la boucle et incrémenté à chaque tour, sinon il ne compte rien.

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.

Dérouler un script dans un tableau

Quand l'utiliser : L'énoncé demande ce que fait un script, ou la valeur d'une variable à la fin.

  1. 1 Tracer un tableau avec une colonne par variable, plus une colonne pour le numéro du tour.
  2. 2 Remplir la ligne des valeurs INITIALES, avant toute boucle.
  3. 3 Exécuter les instructions dans l'ordre, une ligne par tour, sans anticiper le résultat final.
  4. 4 S'arrêter dès que la condition d'arrêt devient vraie, et écrire explicitement la ligne qui la rend vraie.
  5. 5 Répondre à la question posée en citant la dernière ligne ET l'avant-dernière.

Phrase de conclusion

« Au bout de 44 ans la population vaut environ 24312431 habitants, ce qui ne dépasse pas 25002500 ; au bout de 55 ans elle vaut environ 25532553 habitants. La réponse est donc 55 ans. »

Le piège : Ne montrer que la dernière ligne : sans l'avant-dernière, rien ne prouve qu'un nombre plus petit ne convenait pas, et le point de justification tombe.

Barème : 1 point pour le tableau correctement tracé, 1 point pour les valeurs successives, 1 point pour la conclusion justifiée par les deux dernières lignes.

Démontrer ce que fait un programme de calcul

Quand l'utiliser : L'énoncé demande de prouver que le script donne toujours le même type de résultat.

  1. 1 Poser la lettre : « soit xx le nombre choisi au départ ».
  2. 2 Traduire CHAQUE instruction en une expression, dans l'ordre, en gardant une parenthèse autour de ce qui est déjà construit.
  3. 3 Développer et réduire l'expression finale.
  4. 4 Comparer au résultat annoncé et conclure sur TOUT nombre.

Phrase de conclusion

« Pour tout nombre xx, le script renvoie (x+3)×26=2x+66=2x(x+3)\times 2-6=2x+6-6=2x : il donne toujours le double du nombre choisi. »

Le piège : Remplacer la démonstration par trois essais numériques. Le barème distingue explicitement « vérifier sur un exemple », qui vaut 11 point, et « démontrer », qui en vaut 33.

Barème : 1 point pour la mise en équation, 1 point pour le développement, 1 point pour la conclusion portant sur tout nombre.

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é

Un seuil de croissance, déroulé ligne à ligne

Une ville compte 20002000 habitants et sa population augmente de 55 pour cent par an. On exécute le script ci-dessous.

1. Que représentent les variables pp et nn ?

2. Dérouler le script dans un tableau et donner la valeur affichée.

3. Retrouver ce résultat par un calcul, sans dérouler la boucle.

-1123456190020002100220023002400250026002700seuil 2500n (années)
Les six points sont les valeurs successives de pp : les quatre premiers tours restent sous la ligne du seuil, seul le cinquième la franchit. C'est ce franchissement que la boucle détecte.
Script
mettre p à 2000
mettre n à 0
répéter jusqu'à ce que p soit supérieur à 2500
    mettre p à p multiplié par 1,05
    mettre n à n plus 1
dire n

Étape 1

pp est la population de la ville, nn le nombre d'années écoulées depuis le début. Les deux sont initialisées AVANT la boucle.

Pourquoi

Nommer les variables avec leur signification est la première question du barème, et c'est aussi ce qui permet d'interpréter la réponse à la fin : nn sera un nombre d'années, pas un nombre d'habitants.

Étape 2

Tableau : au départ p=2000p=2000 et n=0n=0. Tour 11 : p=2100p=2100, n=1n=1. Tour 22 : p=2205p=2205, n=2n=2. Tour 33 : p=2315,25p=2315{,}25, n=3n=3.

Pourquoi

On applique les deux instructions dans l'ordre, une ligne par tour, sans arrondir : arrondir à l'unité dès le premier tour décale le franchissement du seuil.

Étape 3

Tour 44 : p2431,01p\approx 2431{,}01, n=4n=4. La condition p>2500p>2500 est encore FAUSSE, donc la boucle continue.

Pourquoi

C'est la ligne décisive et celle que les copies sautent : elle prouve que 44 ans ne suffisent pas, donc que la réponse n'est pas plus petite que 55.

Étape 4

Tour 55 : p2552,56p\approx 2552{,}56, n=5n=5. La condition est maintenant VRAIE, la boucle s'arrête et le script affiche 55.

Pourquoi

La condition est testée AVANT chaque tour : elle est évaluée après le cinquième tour, trouve pp au-dessus de 25002500, et sort. La valeur affichée est celle de nn, pas celle de pp.

Étape 5

Contrôle littéral : après nn années, p=2000×1,05np=2000\times 1{,}05^{n}. Or 2000×1,0542431,012000\times 1{,}05^{4}\approx 2431{,}01 et 2000×1,0552552,562000\times 1{,}05^{5}\approx 2552{,}56.

Pourquoi

La formule remplace le déroulement et confirme les deux lignes décisives d'un seul coup. C'est aussi la méthode attendue quand l'énoncé demande de répondre sans dérouler.

Étape 6

Piège écarté : 55 pour cent pendant 55 ans ne font pas 2525 pour cent. Le calcul linéaire donnerait 2000×1,25=25002000\times 1{,}25=2500, qui ne DÉPASSE pas le seuil.

Pourquoi

Les deux modèles donnent des conclusions opposées sur cette question précise, ce qui rend l'erreur coûteuse : le taux s'applique chaque année à la population déjà augmentée, donc les coefficients se multiplient.

Conclusion rédigée

« La variable pp désigne la population et nn le nombre d'années. Le script affiche 55 : c'est au bout de 55 ans que la population dépasse 25002500 habitants, puisqu'elle vaut environ 24312431 habitants au bout de 44 ans et environ 25532553 au bout de 55. »

L'erreur classique sur cet exercice : Afficher 2552,562552{,}56 au lieu de 55 : le bloc « dire » porte sur nn et non sur pp. Relire la dernière instruction du script avant de conclure coûte trois secondes et sauve le point.

À savoir par cœur

  • Une affectation CALCULE à droite avec les anciennes valeurs, puis ÉCRASE la variable de gauche.
  • Échanger deux variables demande une TROISIÈME variable, toujours.
  • Un tableau d'exécution : une colonne par variable, une ligne par tour, rempli sans anticiper.
  • « Répéter jusqu'à ce que » teste la condition AVANT chaque tour.
  • La variable TESTÉE doit être modifiée dans la boucle, sinon la boucle est infinie.
  • Le lutin tourne de 360n\dfrac{360^\circ}{n}, l'angle EXTÉRIEUR, jamais de l'angle intérieur.
  • nn hausses de tt pour cent multiplient par (1+t100)n\left(1+\dfrac{t}{100}\right)^{n}, jamais par 1+nt1001+\dfrac{nt}{100}.
  • Des essais ne démontrent rien : on appelle xx le nombre choisi et on calcule.

Questions fréquentes

Comment échanger deux variables dans un script Scratch ?

Il faut une troisième variable, souvent appelée t. On met d'abord t à a pour sauvegarder la valeur, puis a à b, puis b à t. Sans cette sauvegarde, la première instruction détruit la valeur de a, et les deux variables finissent avec la même valeur.

De quel angle le lutin doit-il tourner pour tracer un polygone régulier ?

De trois cent soixante degrés divisés par le nombre de côtés. Pour un hexagone, cela fait soixante degrés. L'angle intérieur du polygone, qui vaut cent vingt degrés pour un hexagone, ne sert pas au tracé. Le contrôle est simple : la somme des rotations d'un tour complet doit valoir trois cent soixante degrés.

Comment savoir combien de fois une boucle s'exécute ?

On déroule le script dans un tableau, avec une colonne par variable et une ligne par tour, puis on compte les lignes. Il faut écrire aussi le tour qui ne satisfait pas encore la condition d'arrêt : c'est lui qui prouve que la réponse n'est pas plus petite.

Pourquoi une boucle ne s'arrête-t-elle jamais ?

Parce que la variable testée par la condition n'est pas modifiée à l'intérieur de la boucle. Elle garde donc éternellement sa valeur de départ et la condition reste fausse. Il faut ajouter l'instruction qui fait progresser cette variable précise, pas une autre.

Un script testé sur plusieurs nombres est-il démontré ?

Non. Des essais numériques, même nombreux, ne prouvent rien, alors qu'un seul contre-exemple suffit à réfuter. Pour démontrer, on appelle x le nombre choisi, on traduit chaque instruction en une expression, on développe, et on conclut que le résultat vaut la même chose pour tout nombre.

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 Probabilités et arbres à deux épreuves

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 perd les points de l'exercice d'algorithmique au brevet ?

Contactez-moi pour une première séance. L'exercice de script vaut cinq à sept points au brevet et il est le plus rentable de tout le sujet : il ne demande aucune connaissance nouvelle, seulement une méthode de lecture, celle du tableau d'exécution.

Site par Studio Squalli