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

Exercices corrigés : algorithmique et programmation (Sixième)

Ces quinze exercices corrigés couvrent l'algorithmique et la programmation avec Scratch en sixième. Ils s'adressent aux élèves du Lycée Marie de France et du Collège Stanislas à Montréal.

Le fil de la série : 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. Lire un script « en gros » ne marche jamais.

Trois pièges reviennent et le corrigé les désigne à chaque fois : le bloc aller aˋ\mathtt{aller\ à} donne une position alors que avancer\mathtt{avancer} donne un déplacement ; tourner\mathtt{tourner} change la direction sans bouger le lutin d'une case ; et mettre score aˋ score+4\mathtt{mettre\ score\ à\ score+4} n'est pas une égalité mathématique mais un rangement en mémoire.

Série autocorrigée Tape tes réponses sous chaque question : la page te dit juste ou faux avant d'ouvrir la correction. Avec un compte, chaque bonne réponse du premier coup rapporte des points.

Ce chapitre fait partie de Mathématiques en Sixième
Avant de commencer Fiche de révision : les pièges et la méthode de ce chapitre

Rappel de cours

  • Un script s'exécute de haut en bas, une instruction après l'autre.
  • Sur un quadrillage, un point se repère par un COUPLE de nombres : d'abord le déplacement horizontal, ensuite le vertical.
  • 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, pas un déplacement.
  • ajouter 3 aˋ y\mathtt{ajouter\ 3\ à\ y} est au contraire un déplacement : la nouvelle ordonnée est l'ancienne augmentée de 33.
  • avancer de n cases\mathtt{avancer\ de\ n\ cases} déplace le lutin DANS SA DIRECTION ACTUELLE ; tourner\mathtt{tourner} le fait pivoter sur place, sans le déplacer.
  • reˊpeˊter n fois\mathtt{répéter\ n\ fois} exécute nn fois de suite le bloc placé à l'intérieur.
  • Pour fermer un polygone régulier à nn côtés, le lutin tourne à chaque sommet de 360n\dfrac{360^\circ}{n} : 9090^\circ pour le carré, 120120^\circ pour le triangle équilatéral.
  • Une variable est une case mémoire. mettre v aˋ \mathtt{mettre\ v\ à\ \ldots} efface l'ancienne valeur, ajouter  aˋ v\mathtt{ajouter\ \ldots\ à\ v} la conserve et la modifie.
  • si  alors  sinon \mathtt{si\ \ldots\ alors\ \ldots\ sinon\ \ldots} n'exécute qu'UNE des deux branches, jamais les deux.
  • Deux scripts formés des mêmes blocs dans un ordre différent ne donnent pas forcément le même résultat.

Partie A : les bases (/50)

Exercice 1 : Se repérer sur un quadrillage

La scène d'un jeu est un quadrillage. Chaque point y est désigné par un COUPLE de deux nombres (x;y)(x\,;y) : le premier se lit sur l'axe horizontal, le second sur l'axe vertical. L'ordre des deux nombres n'est jamais interchangeable.

-11234567891011-11234567891011ABCD
  • 1) Donner les coordonnées des points AA, BB, CC et DD.
  • 2) Que représente le premier nombre du couple ? Et le second ?
  • 3) Où se trouve le point de coordonnées (0;0)(0\,;0) ? Comment s'appelle-t-il ?
  • 4) Un lutin se trouve au point (6;0)(6\,;0). Décrire sa position sur la scène.
  • 5) On place un point EE de coordonnées (3;5)(3\,;5). Est-il à gauche ou à droite de CC ? Plus haut ou plus bas que BB ?
  • 6) Deux des quatre points ont la même abscisse. Lesquels ? Que peut-on dire du segment qui les joint ?

Tape tes réponses, la page te dit juste ou faux 0/11

1)
2)
3)
4)
5)
6)
Voir la correction

Réponses

  • 1) A(2 ; 6), B(2 ; 3), C(8 ; 7), D(5 ; 1)
  • 2) Abscisse, puis ordonnée
  • 3) L'origine
  • 4) Sur l'axe horizontal
  • 5) À gauche de C ; plus haut que B
  • 6) A et B : segment vertical de 3

1) On lit chaque point en descendant vers l'axe horizontal, puis en allant vers l'axe vertical : A(2;6)A(2\,;6), B(2;3)B(2\,;3), C(8;7)C(8\,;7) et D(5;1)D(5\,;1). On écrit toujours les deux nombres entre parenthèses, séparés par un point-virgule, dans l'ordre horizontal puis vertical.

2) Le premier nombre, appelé ABSCISSE, indique de combien de cases on se déplace vers la droite en partant de l'origine. Le second, appelé ORDONNÉE, indique de combien de cases on monte ensuite. Inverser les deux donne un autre point : (2;6)(2\,;6) et (6;2)(6\,;2) ne sont pas au même endroit, ce qui se voit immédiatement sur le quadrillage.

3) Le point (0;0)(0\,;0) est le coin en bas à gauche, là où les deux axes se croisent. On l'appelle l'ORIGINE du repère : c'est le point à partir duquel tous les autres sont décrits, et ses deux coordonnées sont nulles parce qu'on ne se déplace ni horizontalement ni verticalement pour l'atteindre.

4) Le point (6;0)(6\,;0) a une ordonnée nulle : le lutin ne monte pas du tout, il se trouve donc SUR l'axe horizontal, à 66 cases à droite de l'origine. De la même façon, tous les points de la forme (0;y)(0\,;y) sont sur l'axe vertical.

5) Le point E(3;5)E(3\,;5) a pour abscisse 33, plus petite que celle de CC qui vaut 88 : il est donc à GAUCHE de CC. Son ordonnée vaut 55, plus grande que celle de BB qui vaut 33 : il est donc PLUS HAUT que BB. La position horizontale se juge sur la première coordonnée, la position verticale sur la seconde, et jamais les deux en même temps.

6) Les points A(2;6)A(2\,;6) et B(2;3)B(2\,;3) ont la même abscisse, 22. Ils sont donc sur la même colonne du quadrillage, et le segment [AB][AB] est VERTICAL. Sa longueur se lit sur la différence des ordonnées : 63=36-3=3 cases. Deux points de même ordonnée donneraient au contraire un segment horizontal.

Exercice 2 : Suivre un script pas à pas

Le lutin part du point marqué sur le quadrillage. Le script s'exécute de haut en bas, et la seule méthode fiable consiste à noter la position du lutin APRÈS chaque instruction, sans jamais sauter de ligne.

-11234567891011-11234567891011départ
Scratch
quand le drapeau vert est cliqué
aller à x: 1 y: 1
s'orienter vers la droite
avancer de 4 cases
ajouter 3 à y
avancer de 2 cases
  • 1) Quelles sont les coordonnées du lutin juste après le bloc aller aˋ x: 1 y: 1\mathtt{aller\ à\ x:\ 1\ y:\ 1} ?
  • 2) Et juste après avancer de 4 cases\mathtt{avancer\ de\ 4\ cases} ?
  • 3) Et juste après ajouter 3 aˋ y\mathtt{ajouter\ 3\ à\ y} ?
  • 4) Quelles sont les coordonnées d'arrivée ?
  • 5) On échange les deux dernières instructions. Le point d'arrivée change-t-il ? Justifier.
  • 6) On remplace sorienter vers la droite\mathtt{s'orienter\ vers\ la\ droite} par sorienter vers le haut\mathtt{s'orienter\ vers\ le\ haut}. Quelles sont alors les coordonnées d'arrivée ?

Tape tes réponses, la page te dit juste ou faux 0/11

1)
2)
3)
4)
5)
6)
Voir la correction

Réponses

  • 1) (1 ; 1)
  • 2) (5 ; 1)
  • 3) (5 ; 4)
  • 4) (7 ; 4)
  • 5) Non : déplacements indépendants
  • 6) (1 ; 10)

1) Le lutin est en (1;1)(1\,;1). Le bloc aller aˋ\mathtt{aller\ à} ne déplace pas le lutin d'une certaine quantité : il le place directement au point indiqué, quelle que soit sa position précédente. C'est une POSITION, à ne pas confondre avec un déplacement.

2) Le lutin regarde vers la droite : avancer augmente son abscisse et laisse son ordonnée inchangée. Il passe de (1;1)(1\,;1) à (1+4;1)(1+4\,;1), c'est-à-dire (5;1)(5\,;1).

3) Le bloc ajouter 3 aˋ y\mathtt{ajouter\ 3\ à\ y} ne touche qu'à l'ordonnée : 1+3=41+3=4. Le lutin est donc en (5;4)(5\,;4). Ce bloc est un déplacement vertical, et il ne modifie pas la direction dans laquelle le lutin regarde.

4) Le lutin regarde toujours vers la droite, car aucun bloc tourner\mathtt{tourner} n'est intervenu. Il avance donc horizontalement de 22 cases et arrive en (5+2;4)(5+2\,;4), c'est-à-dire (7;4)(7\,;4). Le tableau complet est : (1;1)(1\,;1), puis (5;1)(5\,;1), puis (5;4)(5\,;4), puis (7;4)(7\,;4).

5) NON, le point d'arrivée ne change pas. En échangeant, on obtient (5;1)(5\,;1), puis (7;1)(7\,;1) après avancer de 2 cases\mathtt{avancer\ de\ 2\ cases}, puis (7;4)(7\,;4) après ajouter 3 aˋ y\mathtt{ajouter\ 3\ à\ y} : c'est bien le même point. La raison est que ces deux instructions sont deux déplacements indépendants, l'un horizontal, l'autre vertical, et que l'ordre de deux additions ne change pas la somme. Attention, cette conclusion ne vaut QUE parce que la direction du lutin reste la même entre les deux.

6) Le lutin regarde vers le haut, donc avancer\mathtt{avancer} modifie maintenant l'ordonnée. Départ (1;1)(1\,;1) ; après avancer de 4 cases\mathtt{avancer\ de\ 4\ cases} il est en (1;5)(1\,;5) ; après ajouter 3 aˋ y\mathtt{ajouter\ 3\ à\ y} il est en (1;8)(1\,;8) ; après avancer de 2 cases\mathtt{avancer\ de\ 2\ cases} il est en (1;10)(1\,;10), tout en haut du quadrillage. Une seule instruction a changé et le point d'arrivée passe de (7;4)(7\,;4) à (1;10)(1\,;10) : la direction du lutin est donc une information à tenir à jour au même titre que sa position.

Exercice 3 : La boucle répéter et le tracé du carré

Le bloc reˊpeˊter\mathtt{répéter} évite de recopier plusieurs fois les mêmes instructions. Dans le script ci-dessous, le lutin laisse une trace derrière lui et part orienté vers la droite.

Scratch
quand le drapeau vert est cliqué
stylo en position d'écriture
répéter 4 fois
    avancer de 5 cases
    tourner de 90 degrés vers la droite
  • 1) Combien d'instructions le lutin exécute-t-il à l'intérieur de la boucle, en tout ?
  • 2) Quelle figure trace-t-il ? Donner ses dimensions.
  • 3) Où se trouve le lutin à la fin, et dans quelle direction regarde-t-il ?
  • 4) Quelle est la longueur totale du trait tracé ?
  • 5) On remplace reˊpeˊter 4 fois\mathtt{répéter\ 4\ fois} par reˊpeˊter 3 fois\mathtt{répéter\ 3\ fois} et 9090 par 120120. Quelle figure obtient-on ?
  • 6) On garde reˊpeˊter 4 fois\mathtt{répéter\ 4\ fois} mais on met 6060 degrés. La figure se referme-t-elle ?

Tape tes réponses, la page te dit juste ou faux 0/7

1)
2)
3)
4)
5)
6)
Voir la correction

Réponses

  • 1) 8 instructions
  • 2) Carré de 5 cases
  • 3) Au départ, vers la droite
  • 4) 20 cases
  • 5) Triangle équilatéral
  • 6) Non : 240° ; il faut 6 répétitions

1) La boucle contient deux instructions et elle est répétée 44 fois : le lutin exécute donc 4×2=84\times 2=8 instructions. Le bloc reˊpeˊter\mathtt{répéter} ne fait rien d'autre que recopier ces deux lignes quatre fois de suite ; le script serait identique, mais quatre fois plus long à écrire.

2) Il trace un CARRÉ de 55 cases de côté. À chaque tour, le lutin trace un côté de 55 cases puis pivote d'un quart de tour : quatre côtés égaux et quatre angles droits, c'est bien la définition du carré. Attention à ne pas confondre le nombre de répétitions, 44, avec la longueur du côté, 55 : ce sont deux nombres qui jouent des rôles différents.

3) Le lutin revient exactement à son point de départ et regarde de nouveau vers la droite. En effet, il a tourné quatre fois de 9090^\circ, soit 4×90=3604\times 90=360^\circ : un tour complet le ramène à sa direction initiale. C'est ce retour au point de départ qui prouve que la figure est bien fermée.

4) Le lutin trace 44 côtés de 55 cases, soit 4×5=204\times 5=20 cases de trait. C'est le PÉRIMÈTRE du carré. Le nombre de cases situées à l'intérieur, lui, serait 5×5=255\times 5=25 : périmètre et aire ne se confondent pas.

5) Avec 33 répétitions et un pivot de 120120^\circ, le lutin trace trois côtés égaux et tourne en tout de 3×120=3603\times 120=360^\circ : la figure se referme, c'est un TRIANGLE ÉQUILATÉRAL de 55 cases de côté. La règle générale est que, pour un polygone régulier à nn côtés, l'angle de rotation vaut 360÷n360\div n degrés.

6) NON, la figure ne se referme pas. Le lutin ne tourne que de 4×60=2404\times 60=240^\circ, ce qui est moins qu'un tour complet : il termine son parcours loin de son point de départ, avec une ligne brisée ouverte de quatre segments. Pour refermer avec des pivots de 6060^\circ, il faudrait 66 répétitions, puisque 6×60=3606\times 60=360, et l'on obtiendrait un hexagone régulier.

départ et arrivée5 cases

Exercice 4 : L'ordre des instructions change le résultat

Les deux scripts ci-dessous contiennent exactement les mêmes blocs, mais rangés dans un ordre différent. Dans les deux cas, le lutin part du point (1;1)(1\,;1) et regarde vers la droite.

Scratch
SCRIPT A               SCRIPT B
avancer de 3 cases     avancer de 2 cases
tourner de 90 vers     tourner de 90 vers
  la gauche              la gauche
avancer de 2 cases     avancer de 3 cases
  • 1) Quel est le point d'arrivée du script A ?
  • 2) Quel est le point d'arrivée du script B ?
  • 3) Les deux scripts contiennent les mêmes blocs. Pourquoi les résultats sont-ils différents ?
  • 4) On remplace les déplacements par ajouter 3 aˋ x\mathtt{ajouter\ 3\ à\ x} et ajouter 2 aˋ y\mathtt{ajouter\ 2\ à\ y}. Leur ordre change-t-il le point d'arrivée ?
  • 5) Formuler la règle qui se dégage des questions 3 et 4.
  • 6) À la fin du script A, on ajoute tourner de 90 vers la droite\mathtt{tourner\ de\ 90\ vers\ la\ droite}. Le point d'arrivée change-t-il ?

Tape tes réponses, la page te dit juste ou faux 0/8

1)
2)
3)
4)
5)
6)
Voir la correction

Réponses

  • 1) (4 ; 3)
  • 2) (3 ; 4)
  • 3) Le pivot sépare les déplacements
  • 4) Non
  • 5) Instructions indépendantes échangeables
  • 6) Non : il pivote sur place

1) Le lutin part de (1;1)(1\,;1) vers la droite. Il avance de 33 cases et arrive en (4;1)(4\,;1). Il tourne alors vers la gauche : il regarde désormais vers le haut. Il avance de 22 cases, ce qui augmente cette fois son ordonnée : il arrive en (4;3)(4\,;3).

2) Le lutin avance d'abord de 22 cases vers la droite et arrive en (3;1)(3\,;1). Il tourne vers la gauche, donc vers le haut, puis avance de 33 cases : il arrive en (3;4)(3\,;4). Les deux scripts se terminent donc à des endroits différents, (4;3)(4\,;3) pour A et (3;4)(3\,;4) pour B.

3) Parce que le bloc tourner\mathtt{tourner} est placé ENTRE les deux déplacements. Le déplacement effectué avant le pivot est horizontal, celui effectué après est vertical. Échanger les deux nombres revient donc à échanger ce qui va à l'horizontale et ce qui va à la verticale, ce qui donne un autre point. Le résultat d'un script ne dépend pas seulement des blocs utilisés, mais de leur ordre.

4) NON, l'ordre n'a alors aucune importance. Avec ajouter 3 aˋ x\mathtt{ajouter\ 3\ à\ x} puis ajouter 2 aˋ y\mathtt{ajouter\ 2\ à\ y}, on passe de (1;1)(1\,;1) à (4;1)(4\,;1) puis à (4;3)(4\,;3). Dans l'autre ordre, on passe de (1;1)(1\,;1) à (1;3)(1\,;3) puis à (4;3)(4\,;3) : c'est le même point d'arrivée. Ces deux blocs agissent en effet sur des coordonnées différentes, et aucun des deux ne modifie ce que fait l'autre.

5) Deux instructions peuvent être échangées sans conséquence lorsqu'elles sont INDÉPENDANTES, c'est-à-dire lorsque aucune des deux ne change ce dont l'autre a besoin. Dès qu'une instruction modifie la DIRECTION du lutin, elle change le sens de tous les avancer\mathtt{avancer} qui la suivent : elle n'est plus indépendante, et son ordre devient décisif.

6) NON, le point d'arrivée reste (4;3)(4\,;3). Le bloc tourner\mathtt{tourner} fait pivoter le lutin sur place : il change sa direction, pas sa position. Ce pivot final n'aurait d'effet que sur les instructions SUIVANTES, et il n'y en a aucune. C'est la raison pour laquelle il faut suivre deux informations différentes, la position et la direction : une instruction peut modifier l'une sans toucher à l'autre.

Exercice 5 : Les variables : mettre à et ajouter à

Une variable est une case mémoire qui porte un nom et contient une valeur à la fois. Deux blocs la modifient : mettre  aˋ\mathtt{mettre\ \ldots\ à}, qui efface l'ancienne valeur, et ajouter  aˋ\mathtt{ajouter\ \ldots\ à}, qui la conserve et la modifie.

Scratch
quand le drapeau vert est cliqué
mettre score à 0
ajouter 5 à score
ajouter 5 à score
mettre score à 20
ajouter 3 à score
  • 1) Donner la valeur de score\mathtt{score} après chacune des cinq instructions.
  • 2) Quelle est la différence entre mettre score aˋ 20\mathtt{mettre\ score\ à\ 20} et ajouter 20 aˋ score\mathtt{ajouter\ 20\ à\ score} ?
  • 3) On ajoute à la fin le bloc mettre score aˋ score+4\mathtt{mettre\ score\ à\ score+4}. Que vaut alors score\mathtt{score} ?
  • 4) Cette dernière ligne est-elle une équation ? Que signifierait-elle en mathématiques ?
  • 5) On échange les deux dernières instructions du script initial. Quelle est la valeur finale ?
  • 6) On remplace tout le script par mettre score aˋ 0\mathtt{mettre\ score\ à\ 0} suivi de reˊpeˊter 6 fois : ajouter 5 aˋ score\mathtt{répéter\ 6\ fois\ :\ ajouter\ 5\ à\ score}. Quelle est la valeur finale ?

Tape tes réponses, la page te dit juste ou faux 0/10

1)
2)
3)
4)
5)
6)
Voir la correction

Réponses

  • 1) 0, 5, 10, 20, 23
  • 2) Mettre efface, ajouter conserve
  • 3) 27
  • 4) Non : un rangement
  • 5) 20
  • 6) 30

1) On suit le script ligne par ligne : après mettre score aˋ 0\mathtt{mettre\ score\ à\ 0}, la variable vaut 00 ; après le premier ajouter 5\mathtt{ajouter\ 5}, elle vaut 55 ; après le second, 1010 ; après mettre score aˋ 20\mathtt{mettre\ score\ à\ 20}, elle vaut 2020, car cette instruction EFFACE tout ce qui précède ; après ajouter 3\mathtt{ajouter\ 3}, elle vaut 2323. La valeur finale est donc 2323.

2) mettre score aˋ 20\mathtt{mettre\ score\ à\ 20} range 2020 dans la case, quelle que soit la valeur qui s'y trouvait : le passé est perdu. ajouter 20 aˋ score\mathtt{ajouter\ 20\ à\ score} conserve la valeur présente et lui ajoute 2020. Ici, à partir de 1010, le premier bloc donne 2020 et le second donnerait 3030. Confondre les deux est l'erreur la plus fréquente sur les variables.

3) Le bloc se lit de DROITE À GAUCHE : on calcule d'abord score+4\mathtt{score}+4 avec la valeur actuelle, soit 23+4=2723+4=27, puis on range ce résultat dans score\mathtt{score}. La variable vaut donc 2727.

4) NON, ce n'est pas une équation. En mathématiques, l'égalité « s=s+4s=s+4 » n'a aucune solution, puisqu'un nombre ne peut pas être égal à lui-même augmenté de 44. En programmation, le symbole ne signifie pas « est égal à » mais « reçoit la valeur de » : il désigne une ACTION, un rangement en mémoire, et non une affirmation. C'est le même mot d'apparence pour deux idées très différentes.

5) Le script devient : mettre aˋ 0\mathtt{mettre\ à\ 0}, ajouter 5\mathtt{ajouter\ 5}, ajouter 5\mathtt{ajouter\ 5}, ajouter 3\mathtt{ajouter\ 3}, mettre aˋ 20\mathtt{mettre\ à\ 20}. Les valeurs successives sont 00, 55, 1010, 1313, puis 2020. La valeur finale est 2020 au lieu de 2323 : les trois premiers ajouts ont été effacés par le mettre aˋ\mathtt{mettre\ à} final, et tout le travail du début a été perdu.

6) La boucle ajoute 55 à six reprises en partant de 00 : la valeur finale est 6×5=306\times 5=30. On peut suivre les valeurs une à une, 55, 1010, 1515, 2020, 2525, 3030, ou bien reconnaître qu'ajouter 66 fois le même nombre revient à le multiplier par 66. La boucle transforme ainsi une répétition d'additions en une multiplication, et c'est exactement ce qu'un ordinateur fait de mieux : répéter sans se lasser.

Partie B : problèmes et raisonnement (/50)

Exercice 6 : Problème : tracer un rectangle, puis un escalier

Le lutin part orienté vers la droite, stylo baissé. Le script ci-dessous répète deux fois un groupe de quatre instructions.

Scratch
quand le drapeau vert est cliqué
stylo en position d'écriture
répéter 2 fois
    avancer de 6 cases
    tourner de 90 degrés vers la droite
    avancer de 3 cases
    tourner de 90 degrés vers la droite
  • 1) Quelle figure le lutin trace-t-il ? Donner ses dimensions.
  • 2) Combien d'instructions exécute-t-il à l'intérieur de la boucle ?
  • 3) Quelle est la longueur totale du trait tracé ?
  • 4) Combien de cases la figure entoure-t-elle ? Comparer avec la réponse précédente et commenter.
  • 5) Écrire un script qui trace un escalier de 44 marches, chaque marche mesurant 22 cases en largeur et 22 cases en hauteur.
  • 6) Quelle est la longueur totale du trait tracé pour cet escalier ?

Tape tes réponses, la page te dit juste ou faux 0/6

1)
2)
3)
4)
5)
6)
Voir la correction

Réponses

  • 1) Rectangle de 6 sur 3
  • 2) 8 instructions
  • 3) 18 cases
  • 4) 18 cases : coïncidence
  • 5) Avancer 2, gauche, avancer 2, droite
  • 6) 16 cases

1) Le lutin trace un RECTANGLE de 66 cases de longueur et 33 cases de largeur. À chaque tour de boucle, il trace un côté long, pivote, trace un côté court, pivote encore : deux tours suffisent donc à faire les quatre côtés. Après les quatre pivots de 9090^\circ, soit 360360^\circ en tout, il retrouve sa direction de départ.

2) La boucle contient 44 instructions et elle est répétée 22 fois : le lutin exécute 2×4=82\times 4=8 instructions. Le script écrit sans boucle compterait ces mêmes huit lignes : la boucle ne réduit pas le travail de la machine, seulement celui de la personne qui écrit.

3) Le trait suit le contour, c'est-à-dire le PÉRIMÈTRE : 6+3+6+3=186+3+6+3=18 cases, ou plus rapidement 2×(6+3)=182\times(6+3)=18 cases.

4) La figure entoure 6×3=186\times 3=18 cases, ce qui est son AIRE. Les deux nombres valent 1818, et c'est une coïncidence : ils ne mesurent pas la même chose et ne s'expriment pas dans la même unité, l'un en cases de trait, l'autre en cases de surface. Un rectangle de 88 sur 22 le montre bien : son périmètre vaut 2020 et son aire 1616.

5) Chaque marche est un déplacement vers la droite suivi d'un déplacement vers le haut, ce qui demande deux pivots opposés : reˊpeˊter 4 fois\mathtt{répéter\ 4\ fois} contenant avancer de 2 cases\mathtt{avancer\ de\ 2\ cases}, tourner de 90 vers la gauche\mathtt{tourner\ de\ 90\ vers\ la\ gauche}, avancer de 2 cases\mathtt{avancer\ de\ 2\ cases}, tourner de 90 vers la droite\mathtt{tourner\ de\ 90\ vers\ la\ droite}. Les deux pivots sont indispensables et vont en sens contraire : sans le second, le lutin continuerait à tourner dans le même sens et dessinerait un carré au lieu de monter en escalier.

6) Chaque marche trace 2+2=42+2=4 cases de trait, et il y a 44 marches : le trait total mesure 4×4=164\times 4=16 cases. On remarque que le lutin arrive en 88 cases à droite et 88 cases au-dessus de son point de départ : le trajet réel est plus long que le déplacement en ligne droite, ce qui est toujours le cas dès qu'on ne va pas tout droit.

rectangle 6 x 3escalier de 4 marches

Exercice 7 : Problème : le robot qui nettoie la pièce

Un robot nettoie une pièce rectangulaire de 88 cases sur 55. Il part de la case du coin en bas à gauche, nettoie la case où il se trouve, avance en ligne droite jusqu'au bord, monte d'une case, repart en sens inverse, et ainsi de suite jusqu'en haut.

robot8 cases5
  • 1) Combien de cases la pièce compte-t-elle ?
  • 2) Combien de cases le robot nettoie-t-il sur une ligne ? Combien de lignes doit-il parcourir ?
  • 3) Combien de déplacements d'une case le robot effectue-t-il en tout ?
  • 4) Il met 33 secondes pour nettoyer une case. Combien de temps dure le nettoyage complet ?
  • 5) Sa batterie faiblit et il ne nettoie plus qu'une ligne sur deux, en commençant par la première. Quelle part de la pièce est nettoyée ?
  • 6) Quelle instruction faut-il répéter, et combien de fois, pour que le robot parcoure une ligne entière ?

Tape tes réponses, la page te dit juste ou faux 0/10

1)
2)
3)
4)
5)
6)
Voir la correction

Réponses

  • 1) 40 cases
  • 2) 8 cases, 5 lignes
  • 3) 39 déplacements
  • 4) 120 s = 2 min
  • 5) 24 cases : 35\frac{3}{5}
  • 6) Répéter 7 fois

1) La pièce est un rectangle de 88 cases sur 55 : elle compte 8×5=408\times 5=40 cases. On multiplie le nombre de colonnes par le nombre de lignes, exactement comme pour une aire en cases.

2) Une ligne compte 88 cases, et il y a 55 lignes à parcourir. Le robot nettoie donc 55 fois 88 cases, soit bien les 4040 cases de la question 1 : les deux façons de compter doivent coïncider.

3) Sur une ligne, le robot nettoie 88 cases mais ne se déplace que 77 fois, car la première case est celle où il commence. Cela fait 5×7=355\times 7=35 déplacements horizontaux. À cela s'ajoutent les montées d'une ligne à la suivante : il y en a 44, et non 55, puisqu'il n'a pas à monter après la dernière ligne. Le total est 35+4=3935+4=39 déplacements. Ce décalage de un, entre le nombre de cases et le nombre de déplacements, est le piège classique de tous les problèmes de parcours.

4) Il nettoie 4040 cases à raison de 33 secondes chacune, soit 40×3=12040\times 3=120 secondes. Comme 120=2×60120=2\times 60, cela fait exactement 22 minutes. On convertit toujours le résultat dans une unité parlante : 120120 secondes est correct, mais 22 minutes se comprend mieux.

5) En commençant par la première ligne et en sautant une ligne sur deux, il nettoie les lignes 11, 33 et 55, c'est-à-dire 33 lignes sur 55. Cela représente 3×8=243\times 8=24 cases sur 4040, soit une part de 2440=35\frac{24}{40}=\frac{3}{5}, autrement dit 6060 pour cent de la pièce. Attention à ne pas répondre « la moitié » : une ligne sur deux ne fait pas la moitié des lignes quand leur nombre est impair.

6) Il faut répéter l'instruction avancer de 1 case\mathtt{avancer\ de\ 1\ case}, et la répéter 77 fois, pas 88. On écrit donc reˊpeˊter 7 fois : avancer de 1 case\mathtt{répéter\ 7\ fois\ :\ avancer\ de\ 1\ case}. C'est la même différence qu'à la question 3 : la boucle compte les DÉPLACEMENTS, alors que l'énoncé parle des CASES, et il y a toujours une case de plus que de déplacements sur une ligne.

Exercice 8 : Cinq affirmations à corriger

Chacune des cinq affirmations suivantes est FAUSSE. Dites pourquoi et donnez l'énoncé correct.

  • 1) « Le bloc 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. »
  • 2) « Le bloc tourner de 90 degreˊs\mathtt{tourner\ de\ 90\ degrés} déplace le lutin d'un quart de case. »
  • 3) « mettre score aˋ score+4\mathtt{mettre\ score\ à\ score+4} est une égalité impossible, donc le bloc provoque une erreur. »
  • 4) « 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é. »
  • 5) « Deux scripts formés exactement des mêmes blocs donnent toujours le même résultat. »

Tape tes réponses, la page te dit juste ou faux 0/5

1)
2)
3)
4)
5)
Voir la correction

Réponses

  • 1) Une position, pas un déplacement
  • 2) Pivot sur place
  • 3) Aucune erreur : score augmente de 4
  • 4) Carré de 5 cases
  • 5) L'ordre compte

1) FAUX. Le bloc aller aˋ\mathtt{aller\ à} donne une POSITION absolue : il place le lutin au point (4;2)(4\,;2), quel que soit l'endroit d'où il vient. Le bloc qui déplace de 44 cases vers la droite est ajouter 4 aˋ x\mathtt{ajouter\ 4\ à\ x}. Énoncé correct : « le bloc aller aˋ x: 4 y: 2\mathtt{aller\ à\ x:\ 4\ y:\ 2} place le lutin au point (4;2)(4\,;2) ». Position et déplacement sont deux idées différentes, et c'est la distinction la plus importante du chapitre.

2) FAUX. tourner\mathtt{tourner} fait pivoter le lutin SUR PLACE : sa direction change, sa position ne bouge pas d'un millimètre. Énoncé correct : « le bloc tourner de 90 degreˊs\mathtt{tourner\ de\ 90\ degrés} fait pivoter le lutin d'un quart de tour sans le déplacer ». Ce pivot n'a d'effet que sur les blocs avancer\mathtt{avancer} qui viennent après lui.

3) FAUX. En programmation, ce bloc ne prétend rien : il ORDONNE de calculer score+4\mathtt{score}+4 avec la valeur actuelle, puis de ranger le résultat dans score\mathtt{score}. Si score\mathtt{score} valait 2323, il vaut ensuite 2727, et aucune erreur ne se produit. Énoncé correct : « ce bloc augmente la valeur de score\mathtt{score} de 44 ». Ce qui est impossible, c'est l'équation mathématique s=s+4s=s+4, et c'est justement pourquoi le langage utilise un mot d'action, mettre à.

4) FAUX, les deux nombres ont été échangés. Le 44 est le nombre de RÉPÉTITIONS, c'est-à-dire le nombre de côtés, et le 55 est la longueur de chaque côté. Énoncé correct : « ce script trace un carré de 55 cases de côté ». Un carré de 44 cases de côté s'obtiendrait avec avancer de 4\mathtt{avancer\ de\ 4}, en gardant 44 répétitions et des pivots de 9090^\circ.

5) FAUX. Contre-exemple vu à l'exercice 4 : 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 les mêmes blocs dans l'ordre 22, tourner, 33 mènent en (3;4)(3\,;4). Énoncé correct : « deux scripts formés des mêmes blocs peuvent donner des résultats différents si l'ordre change ». L'ordre n'est indifférent que pour des instructions indépendantes, comme deux déplacements sur des axes différents.

Exercice 9 : Problème : le compteur de points d'un jeu

Dans un jeu, le score démarre à 00 et chaque étoile ramassée rapporte 1515 points. La variable score\mathtt{score} garde en mémoire le total en cours.

Scratch
quand le drapeau vert est cliqué
mettre score à 0
répéter 4 fois
    ajouter 15 à score
  • 1) Donner la valeur de score\mathtt{score} après chaque tour de boucle.
  • 2) Quelle opération unique donne directement le score final ?
  • 3) Combien d'étoiles faut-il ramasser pour atteindre exactement 120120 points ?
  • 4) Dans un autre niveau, chaque étoile vaut 1212 points. Combien faut-il d'étoiles pour dépasser 100100 points ?
  • 5) Un joueur ramasse 77 étoiles à 1515 points et reçoit un bonus de fin de niveau de 2525 points. Quel est son score ?
  • 6) Un joueur peut-il atteindre exactement 100100 points en ne ramassant que des étoiles à 1515 points ? Justifier.

Tape tes réponses, la page te dit juste ou faux 0/9

1)
2)
3)
4)
5)
6)
Voir la correction

Réponses

  • 1) 15, 30, 45, 60
  • 2) 4×15=604\times 15=60
  • 3) 8 étoiles
  • 4) 9 étoiles
  • 5) 130 points
  • 6) Non : 100 n'est pas multiple de 15

1) Le score part de 00, puis vaut 1515 après le premier tour, 3030 après le deuxième, 4545 après le troisième et 6060 après le quatrième. Chaque tour ajoute la même quantité, ce qui donne la table de 1515.

2) Ajouter quatre fois 1515 revient à calculer 4×15=604\times 15=60. Une boucle qui répète la même addition est donc exactement une multiplication : c'est ce qui permet de prévoir le résultat sans dérouler le script tour par tour, ce qui deviendrait impossible avec 500500 répétitions.

3) On cherche le nombre d'étoiles nn tel que 15×n=12015\times n=120, c'est-à-dire n=120÷15=8n=120\div 15=8. Il faut ramasser 88 étoiles. Vérification : 15×8=12015\times 8=120.

4) On teste : 12×8=9612\times 8=96, ce qui ne dépasse pas encore 100100, et 12×9=10812\times 9=108, qui dépasse. Il faut donc 99 étoiles. Attention au mot DÉPASSER : avec 88 étoiles le joueur est à 9696, tout près du but mais en dessous, et la réponse 88 serait fausse.

5) Les étoiles rapportent 7×15=1057\times 15=105 points, auxquels s'ajoute le bonus : 105+25=130105+25=130 points. On effectue la multiplication avant l'addition, car le bonus n'est versé qu'une fois et non à chaque étoile : dans une expression comme 7×15+257\times 15+25, c'est bien la multiplication qui est prioritaire.

6) NON. Tous les scores possibles sont des multiples de 1515 : 00, 1515, 3030, 4545, 6060, 7575, 9090, 105105... Or 100100 n'est pas un multiple de 1515, puisque 100=15×6+10100=15\times 6+10 : le reste n'est pas nul. Le joueur passe donc de 9090 à 105105 sans jamais s'arrêter sur 100100. C'est une question de divisibilité, et elle montre qu'un programme ne peut produire que les valeurs autorisées par ses règles.

Exercice 10 : Problème : un test si alors sinon

Une borne calcule le tarif d'entrée d'un musée à partir de l'âge du visiteur. Le bloc si  alors  sinon\mathtt{si\ \ldots\ alors\ \ldots\ sinon} n'exécute qu'UNE des deux branches : celle du haut si la condition est vraie, celle du bas sinon.

Scratch
demander "Quel est ton age ?" et attendre
si reponse < 12 alors
    dire "tarif enfant : 6 dollars"
sinon
    dire "tarif adulte : 10 dollars"
  • 1) Que répond la borne à un visiteur de 99 ans ?
  • 2) Que répond-elle à un visiteur de 1212 ans ? Ce résultat est-il conforme à ce qu'on attendait ?
  • 3) Comment modifier la condition pour qu'un visiteur de 1212 ans paie le tarif enfant ?
  • 4) Avec le script d'origine, combien paie une famille de deux parents et de trois enfants âgés de 88, 1111 et 1414 ans ?
  • 5) Pour un visiteur donné, combien de branches du test sont exécutées ?
  • 6) Le musée ajoute un tarif de 44 dollars pour les 6565 ans et plus. Où placer ce nouveau test, et quelle erreur faut-il éviter ?

Tape tes réponses, la page te dit juste ou faux 0/7

1)
2)
3)
4)
5)
6)
Voir la correction

Réponses

  • 1) Tarif enfant : 6 dollars
  • 2) Tarif adulte : 10 dollars
  • 3) reponse < 13
  • 4) 42 dollars
  • 5) Une seule
  • 6) Dans le sinon, avant adulte

1) La condition demande si l'âge est strictement inférieur à 1212. Comme 9<129<12 est vrai, la borne exécute la branche du haut et répond « tarif enfant : 66 dollars ». La branche du bas n'est pas lue du tout.

2) Elle répond « tarif adulte : 1010 dollars », car la condition 12<1212<12 est FAUSSE : 1212 n'est pas strictement inférieur à lui-même. Ce n'est probablement pas ce que voulait le musée, mais c'est bien ce que le script demande. Les conditions au bord, comme ici l'âge exactement égal à 1212, sont l'endroit où se cachent la plupart des erreurs de programmation.

3) Il suffit d'écrire si reponse<13\mathtt{si\ reponse < 13}, ou de façon équivalente si reponse12\mathtt{si\ reponse \le 12}. Les deux conditions décrivent le même ensemble d'âges entiers, et le choix entre les deux est affaire de lisibilité : la seconde dit littéralement « jusqu'à 1212 ans inclus ».

4) Avec le script d'origine, les enfants de 88 et 1111 ans paient le tarif enfant, soit 2×6=122\times 6=12 dollars. Les deux parents et l'enfant de 1414 ans paient le tarif adulte, soit 3×10=303\times 10=30 dollars. Le total est 12+30=4212+30=42 dollars. Il faut bien compter TROIS personnes au tarif adulte : l'adolescent de 1414 ans en fait partie d'après la règle écrite, même si le mot adulte semble mal choisi.

5) Une seule. Le bloc si  alors  sinon\mathtt{si\ \ldots\ alors\ \ldots\ sinon} garantit que l'une des deux branches est exécutée, et que ce n'est jamais les deux. C'est d'ailleurs pour cela que la borne ne peut pas annoncer deux tarifs différents à la même personne.

6) Le nouveau test doit venir APRÈS le test des enfants et AVANT la conclusion adulte : si reponse<12\mathtt{si\ reponse < 12}, alors enfant ; sinon, si reponse65\mathtt{si\ reponse \ge 65}, alors senior ; sinon, adulte. L'erreur à éviter est de conclure « adulte » dès que l'âge atteint 1212 ans : la branche du bas serait alors terminée, le test des 6565 ans ne serait jamais atteint et aucun visiteur ne paierait le tarif senior. Dans une suite de tests, l'ordre décide de ce qui est encore examinable, exactement comme l'ordre des instructions décide du trajet du lutin.

Partie C : les classiques (/50)

Exercice 11 : Remonter un programme de calcul

Le script ci-dessous demande un nombre, lui applique trois opérations et affiche le résultat. On le suit ligne par ligne, en notant la valeur de reˊsultat\mathtt{résultat} après chaque instruction.

Scratch
demander "Choisis un nombre" et attendre
mettre résultat à réponse
mettre résultat à résultat × 3
ajouter 5 à résultat
mettre résultat à résultat × 2
dire résultat
  • 1) Quel résultat le script affiche-t-il si l'on choisit 44 ?
  • 2) Et si l'on choisit 00 ?
  • 3) Et si l'on choisit 2,52{,}5 ?
  • 4) Le script affiche 5858. Quel nombre avait-on choisi ?
  • 5) Un élève échange les lignes « ajouter 5 à résultat » et « mettre résultat à résultat × 2 ». Quel résultat son script affiche-t-il pour 44 ?

Tape tes réponses, la page te dit juste ou faux 0/5

1)
2)
3)
4)
5)
Voir la correction

Réponses

  • 1) 34
  • 2) 10
  • 3) 25
  • 4) 8
  • 5) 29

1) reˊsultat\mathtt{résultat} vaut 44, puis 4×3=124\times 3=12, puis 12+5=1712+5=17, puis 17×2=3417\times 2=34. Le script affiche 3434.

2) 00, puis 0×3=00\times 3=0, puis 0+5=50+5=5, puis 5×2=105\times 2=10. Le script affiche 1010 : même en partant de 00, le résultat n'est pas nul, à cause de l'ajout de 55.

3) 2,52{,}5, puis 2,5×3=7,52{,}5\times 3=7{,}5, puis 7,5+5=12,57{,}5+5=12{,}5, puis 12,5×2=2512{,}5\times 2=25.

4) On remonte le script à l'envers, en faisant l'opération CONTRAIRE à chaque étape, de la dernière à la première. Avant ×2\times 2 : 58÷2=2958\div 2=29. Avant +5+5 : 295=2429-5=24. Avant ×3\times 3 : 24÷3=824\div 3=8. On avait choisi 88. Contrôle : 8×3=248\times 3=24, 24+5=2924+5=29, 29×2=5829\times 2=58.

5) 44, puis 4×3=124\times 3=12, puis 12×2=2412\times 2=24, puis 24+5=2924+5=29. Il affiche 2929 au lieu de 3434 : dans le script d'origine, le 55 ajouté est lui aussi doublé, ce qui n'arrive plus quand on ajoute après avoir doublé.

Exercice 12 : Coder un déplacement avec des flèches

Un robot se déplace case par case sur un quadrillage. Il comprend quatre flèches : H, une case vers le haut ; B, une case vers le bas ; G, une case vers la gauche ; D, une case vers la droite. Contrairement au lutin de Scratch, il n'a pas de direction : chaque flèche est un déplacement fixe, quelle que soit la flèche précédente.

Le robot part de la case (2;1)(2\,;1) : le premier nombre est l'abscisse, le second l'ordonnée.

  • 1) Où arrive le robot avec le code « D D H H H G » ?
  • 2) Où arrive-t-il avec le code « H D H D H D » ?
  • 3) On veut aller de (2;1)(2\,;1) à (6;3)(6\,;3). Combien de flèches compte le code le plus court possible ?
  • 4) Un code de 1010 flèches mène aussi de (2;1)(2\,;1) à (6;3)(6\,;3). Combien de ses flèches ne servent à rien ?
  • 5) Où arrive le robot avec le code « répéter 3 fois (D H) » suivi de « G » ?

Tape tes réponses, la page te dit juste ou faux 0/8

1)
2)
3)
4)
5)
Voir la correction

Réponses

  • 1) (3 ; 4)
  • 2) (5 ; 4)
  • 3) 6 flèches
  • 4) 4 flèches
  • 5) (4 ; 4)

1) Deux D : 2+2=42+2=4. Trois H : 1+3=41+3=4. Un G : 41=34-1=3. Le robot arrive en (3;4)(3\,;4). L'ordre des flèches ne change rien ici, puisque chaque flèche est un déplacement fixe : seuls comptent les nombres de H, B, G et D.

2) Trois D et trois H : il arrive en (2+3;1+3)=(5;4)(2+3\,;1+3)=(5\,;4). Le trajet en zigzag mène au même point que « D D D H H H ».

3) Il faut avancer de 62=46-2=4 cases vers la droite et de 31=23-1=2 cases vers le haut. Le code le plus court compte 4+2=64+2=6 flèches, par exemple « D D D D H H ». Aucune flèche G ou B ne doit y figurer, elle obligerait à revenir.

4) Le plus court en utilise 66, donc 106=410-6=4 flèches sont inutiles. Elles vont forcément par paires qui s'annulent, un H avec un B ou un G avec un D : ce code contient deux allers-retours.

5) Trois fois D et H : trois D et trois H, soit (2+3;1+3)=(5;4)(2+3\,;1+3)=(5\,;4). Puis G : (4;4)(4\,;4). Le robot arrive en (4;4)(4\,;4).

Exercice 13 : La boucle répéter jusqu'à

Le bloc reˊpeˊter jusquaˋ ce que\mathtt{répéter\ jusqu'à\ ce\ que} recommence son contenu TANT QUE la condition est fausse. Il vérifie la condition avant chaque tour, et s'arrête dès qu'elle devient vraie.

Scratch
mettre total à 0
mettre tours à 0
répéter jusqu'à ce que total > 50
    ajouter 7 à total
    ajouter 1 à tours
dire total
dire tours
  • 1) Quelle est la valeur de total\mathtt{total} après chacun des trois premiers tours ?
  • 2) Combien de tours la boucle fait-elle ?
  • 3) Quelles sont les deux valeurs dites à la fin ?
  • 4) On remplace total>50\mathtt{total > 50} par total>49\mathtt{total > 49}. Qu'est-ce qui change ?
  • 5) On revient à total>50\mathtt{total > 50}, mais on remplace ajouter 7\mathtt{ajouter\ 7} par ajouter 10\mathtt{ajouter\ 10}. Combien de tours la boucle fait-elle, et quelle valeur de total\mathtt{total} est dite ?

Tape tes réponses, la page te dit juste ou faux 0/9

1)
2)
3)
4)
5)
Voir la correction

Réponses

  • 1) 7, 14, 21
  • 2) 8 tours
  • 3) 56 et 8
  • 4) Rien
  • 5) 6 tours, 60

1) total\mathtt{total} vaut 77 après le premier tour, 1414 après le deuxième, 2121 après le troisième : la table de 77.

2) La boucle continue tant que total\mathtt{total} ne dépasse pas 5050. Après 77 tours, total=49\mathtt{total}=49, qui ne dépasse pas 5050 : on continue. Après 88 tours, total=56>50\mathtt{total}=56>50 : on s'arrête. La boucle fait 88 tours.

3) Le lutin dit 5656, puis 88.

4) Rien ne change. Après 77 tours, 49>4949>49 est FAUX : un nombre n'est pas strictement plus grand que lui-même. La boucle fait encore un tour et s'arrête à 5656, après 88 tours. Il faudrait écrire total>48\mathtt{total > 48} pour s'arrêter à 4949.

5) total\mathtt{total} vaut 1010, 2020, 3030, 4040, 5050 : à 5050, la condition 50>5050>50 est fausse, on continue. Au sixième tour, 60>5060>50 : arrêt. La boucle fait 66 tours et le lutin dit 6060.

Exercice 14 : Problème : le distributeur qui rend la monnaie

Un distributeur rend une somme entière avec des pièces de 55, 22 et 11 dollars, en utilisant le moins de pièces possible. Il suit le script ci-dessous, où somme\mathtt{somme} est la somme à rendre.

Scratch
mettre reste à somme
répéter jusqu'à ce que reste < 5
    donner une pièce de 5
    ajouter -5 à reste
répéter jusqu'à ce que reste < 2
    donner une pièce de 2
    ajouter -2 à reste
si reste = 1 alors
    donner une pièce de 1
  • 1) Quelles pièces le distributeur rend-il pour une somme de 1313 dollars ?
  • 2) Et pour une somme de 2424 dollars ?
  • 3) Pour 1313 dollars, la première boucle donne un certain nombre de pièces de 55 et laisse un reste. Quelle division euclidienne a-t-elle effectuée ?
  • 4) Pourquoi le dernier bloc n'a-t-il jamais besoin de donner deux pièces de 11 ?
  • 5) Combien de pièces le distributeur rend-il en tout pour 3838 dollars ?

Tape tes réponses, la page te dit juste ou faux 0/10

1)
2)
3)
4)
5)
Voir la correction

Réponses

  • 1) 5 + 5 + 2 + 1
  • 2) 5 + 5 + 5 + 5 + 2 + 2
  • 3) 13=5×2+313=5\times 2+3
  • 4) Reste 0 ou 1
  • 5) 9 pièces

1) Première boucle : 1313, puis 88, puis 33, qui est plus petit que 55 : deux pièces de 55. Deuxième boucle : 33, puis 11, plus petit que 22 : une pièce de 22. Le reste vaut 11 : une pièce de 11. En tout 2+1+1=42+1+1=4 pièces, et 2×5+2+1=132\times 5+2+1=13.

2) Quatre pièces de 55 : 2424, 1919, 1414, 99, puis 44, plus petit que 55. Deux pièces de 22 : 44, 22, puis 00. Aucune pièce de 11. En tout 66 pièces.

3) Retirer 55 tant que c'est possible, c'est chercher combien de fois 55 tient dans 1313 : 13=5×2+313=5\times 2+3. Le quotient 22 est le nombre de pièces de 55, le reste 33 ce qui reste à rendre.

4) La deuxième boucle ne s'arrête que quand le reste est plus petit que 22 : il vaut alors 00 ou 11. Il n'y a donc jamais plus d'une pièce de 11 à rendre, et un simple si\mathtt{si} suffit.

5) 38=5×7+338=5\times 7+3 : 77 pièces de 55, reste 33. Puis 3=2×1+13=2\times 1+1 : une pièce de 22, reste 11, une pièce de 11. En tout 7+1+1=97+1+1=9 pièces.

Exercice 15 : Problème : le jeu du plus ou moins

Léa pense à un nombre entier compris entre 11 et 100100. Tom propose un nombre, et Léa répond « plus grand », « plus petit » ou « gagné ».

Tom suit toujours la même méthode : il propose le nombre situé au milieu des possibilités qui restent, c'est-à-dire la moitié de la somme de la plus petite et de la plus grande, arrondie à l'unité inférieure.

  • 1) Quel nombre Tom propose-t-il en premier ?
  • 2) Léa répond « plus grand ». Combien de nombres restent possibles ? Quel nombre Tom propose-t-il ensuite ?
  • 3) Léa pense à 6262. Écrivez toutes les propositions de Tom jusqu'à ce qu'il gagne. Combien en fait-il ?
  • 4) Après chaque réponse « plus grand » ou « plus petit », que devient à peu près le nombre de possibilités ?
  • 5) Quel que soit le nombre choisi par Léa, combien de propositions faut-il au plus à Tom pour gagner ?

Tape tes réponses, la page te dit juste ou faux 0/7

1)
2)
3)
4)
5)
Voir la correction

Réponses

  • 1) 50
  • 2) 50 nombres ; 75
  • 3) 50, 75, 62 : 3 propositions
  • 4) Divisé par deux
  • 5) 7 propositions

1) (1+100)÷2=50,5(1+100)\div 2=50{,}5, arrondi à l'unité inférieure : Tom propose 5050.

2) Le nombre est entre 5151 et 100100 : il reste 10051+1=50100-51+1=50 possibilités. Tom propose (51+100)÷2=75,5(51+100)\div 2=75{,}5, soit 7575.

3) 5050 : « plus grand », il reste 5151 à 100100. 7575 : « plus petit », il reste 5151 à 7474. (51+74)÷2=62,5(51+74)\div 2=62{,}5, Tom propose 6262 : « gagné ». Il a fait 33 propositions.

4) Il est à peu près divisé par deux : la proposition coupe les possibilités en deux moitiés, et la réponse en élimine une. C'est ce qui rend la méthode si rapide.

5) Dans le pire des cas, il reste au plus 5050 possibilités après la première proposition, puis 2525, puis 1212, puis 66, puis 33, puis 11 : la septième proposition est forcément la bonne. Il faut au plus 77 propositions, alors qu'essayer 11, 22, 33... pourrait en demander 100100.

Chapitre précédent 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