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

Exercices corrigés : algorithmique et programmation avec Scratch (Cinquième)

Ces quinze exercices corrigés couvrent l'algorithmique et la programmation avec Scratch en cinquiè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 : le lutin ne sait pas où il va. À chaque instant il ne connaît que DEUX choses, sa position et sa direction. Toute question sur un script se répond en tenant ces deux informations à jour, ligne après ligne, dans un tableau, et jamais en lisant le script « en gros ».

Trois pièges reviennent et le corrigé les désigne à chaque fois : l'ordre de deux instructions peut tout changer, ou ne rien changer, et il faut savoir dire pourquoi ; mettre v aˋ v+3\mathtt{mettre\ v\ à\ v+3} n'est pas une équation mais un rangement en mémoire ; et l'angle dont tourne le lutin n'est pas l'angle intérieur de la figure qu'il dessine.

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 Cinquième
Avant de commencer Fiche de révision : les pièges et la méthode de ce chapitre

Avant ce chapitre

Ces notions sont supposées acquises ici. Si le premier exercice résiste, le blocage vient presque toujours de l'une d'elles, pas du chapitre lui-même.

Rappel de cours

  • Un script s'exécute de haut en bas, une instruction après l'autre, sans jamais rien anticiper.
  • Le lutin est repéré sur la scène par ses coordonnées (x;y)(x\,;y). Le bloc aller aˋ x: a y: b\mathtt{aller\ à\ x:\ a\ y:\ b} le place directement au point (a;b)(a\,;b) : c'est une position, pas un déplacement.
  • ajouter 60 aˋ x\mathtt{ajouter\ 60\ à\ x} est au contraire un déplacement : la nouvelle abscisse est l'ancienne augmentée de 6060. Avec un nombre négatif, le lutin recule.
  • 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.
  • sorienter aˋ 90\mathtt{s'orienter\ à\ 90} regarde vers la droite, sorienter aˋ 0\mathtt{s'orienter\ à\ 0} vers le haut.
  • reˊpeˊter n fois\mathtt{répéter\ n\ fois} exécute nn fois le bloc placé à l'intérieur.
  • Une variable est une case mémoire. 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.
  • si  alors  sinon \mathtt{si\ \ldots\ alors\ \ldots\ sinon\ \ldots} n'exécute qu'UNE seule des deux branches, jamais les deux.
  • Pour fermer un polygone régulier à nn côtés, le lutin tourne à chaque sommet de 360n\dfrac{360^\circ}{n}.

Partie A : les bases (/50)

Exercice 1 : Suivre un lutin instruction par instruction

Sur la scène de Scratch, le lutin est repéré par ses coordonnées (x;y)(x\,;y). Le quadrillage ci-dessous est gradué de 6060 en 6060 pas. Le script s'exécute de haut en bas.

-240-180-120-6060120180240-180-120-6060120180départ
Scratch
quand le drapeau vert est cliqué
aller à x: -120 y: 60
s'orienter à 90 (vers la droite)
avancer de 120
ajouter -120 à y
avancer de 60
  • 1) Quelles sont les coordonnées du lutin juste après le bloc aller aˋ x: 120 y: 60\mathtt{aller\ à\ x:\ -120\ y:\ 60} ?
  • 2) Et juste après le bloc avancer de 120\mathtt{avancer\ de\ 120} ?
  • 3) Et juste après le bloc ajouter 120 aˋ y\mathtt{ajouter\ -120\ à\ 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 aˋ 90\mathtt{s'orienter\ à\ 90} par sorienter aˋ 0 (vers le haut)\mathtt{s'orienter\ à\ 0\ (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) (120;60)(-120\,;60)
  • 2) (0;60)(0\,;60)
  • 3) (0;60)(0\,;-60)
  • 4) (60;60)(60\,;-60)
  • 5) Non : deux déplacements indépendants
  • 6) (120;120)(-120\,;120)

1) Le lutin est en (120;60)(-120\,;60). Le bloc aller aˋ\mathtt{aller\ à} ne déplace pas le lutin d'une certaine quantité : il le TÉLÉPORTE au point indiqué, quelle que soit sa position précédente. C'est une position absolue, à ne jamais confondre avec ajouter  aˋ x\mathtt{ajouter\ \ldots\ à\ x}.

2) Le lutin regarde vers la droite, donc avancer augmente son abscisse et ne change pas son ordonnée. Il passe de (120;60)(-120\,;60) à (120+120;60)(-120+120\,;60), c'est-à-dire (0;60)(0\,;60). Il se trouve donc exactement sur l'axe vertical de la scène.

3) Seule l'ordonnée change : 60+(120)=6060+(-120)=-60. Le lutin est en (0;60)(0\,;-60). Ajouter un nombre négatif à yy fait DESCENDRE le lutin, ce qui est cohérent avec le chapitre sur les nombres relatifs : additionner un négatif, c'est reculer sur l'axe.

4) Le lutin regarde toujours vers la droite, car aucun bloc tourner\mathtt{tourner} n'est intervenu : le bloc ajouter  aˋ y\mathtt{ajouter\ \ldots\ à\ y} déplace mais ne fait pas pivoter. Il avance donc de 6060 pas horizontalement et arrive en (0+60;60)(0+60\,;-60), c'est-à-dire (60;60)(60\,;-60).

5) Non, le point d'arrivée ne change pas. En échangeant, on obtient (0;60)(0\,;60), puis (60;60)(60\,;60) après avancer de 60\mathtt{avancer\ de\ 60}, puis (60;60)(60\,;-60) après ajouter 120 aˋ y\mathtt{ajouter\ -120\ à\ 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 cependant : cette conclusion ne vaut QUE parce que la direction du lutin ne change pas entre les deux. Dès qu'un bloc tourner\mathtt{tourner} s'intercale, l'ordre compte, et le résultat est différent.

6) Le lutin regarde vers le haut, donc avancer\mathtt{avancer} augmente maintenant son ordonnée. Départ (120;60)(-120\,;60) ; après avancer de 120\mathtt{avancer\ de\ 120} il est en (120;180)(-120\,;180) ; après ajouter 120 aˋ y\mathtt{ajouter\ -120\ à\ y} il est en (120;60)(-120\,;60) ; après avancer de 60\mathtt{avancer\ de\ 60} il est en (120;120)(-120\,;120). Une seule instruction a été changée et le point d'arrivée passe de (60;60)(60\,;-60) à (120;120)(-120\,;120) : la direction du lutin est bien la seconde information à tenir à jour, au même titre que sa position.

Exercice 2 : Coordonnées et déplacements relatifs

Pour alléger l'écriture, la scène a été réduite à un repère où une unité vaut 4040 pas. Le lutin part du point AA et doit parcourir le contour ABCDABCD en n'utilisant que les blocs ajouter  aˋ x\mathtt{ajouter\ \ldots\ à\ x} et ajouter  aˋ y\mathtt{ajouter\ \ldots\ à\ y}.

-5-4-3-2-112345-5-4-3-2-112345ABCD
  • 1) Lire les coordonnées des points AA, BB, CC et DD.
  • 2) Quelle est la nature du quadrilatère ABCDABCD ? Donner ses dimensions, en unités du repère.
  • 3) Quel bloc amène le lutin de AA à BB ? Et de BB à CC ?
  • 4) Calculer l'aire de ABCDABCD, en unités d'aire, puis en pas carrés.
  • 5) Écrire le script complet qui part de AA et trace le contour ABCDABCD en revenant en AA.
  • 6) Dans ce script, on remplace le bloc qui va de AA à BB par ajouter 7 aˋ x\mathtt{ajouter\ -7\ à\ x}. Où le lutin arrive-t-il ? La figure est-elle encore fermée ?

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

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

Réponses

  • 1) A(3;2)A(-3\,;2), B(4;2)B(4\,;2), C(4;1)C(4\,;-1), D(3;1)D(-3\,;-1)
  • 2) Rectangle de 7 sur 3
  • 3) Ajouter 7 à xx ; ajouter 3-3 à yy
  • 4) 21 u.a. = 33 600 pas²
  • 5) +7+7 en xx, 3-3 en yy, 7-7 en xx, +3+3 en yy
  • 6) (10;2)(-10\,;2) ; figure ouverte, arrivée (17;2)(-17\,;2)

1) On lit A(3;2)A(-3\,;2), B(4;2)B(4\,;2), C(4;1)C(4\,;-1) et D(3;1)D(-3\,;-1). On lit toujours l'abscisse en premier, en se déplaçant horizontalement, puis l'ordonnée, verticalement. Inverser les deux revient à désigner un autre point : (4;2)(4\,;2) et (2;4)(2\,;4) n'ont rien à voir.

2) AA et BB ont la même ordonnée 22, donc [AB][AB] est horizontal ; CC et DD ont la même ordonnée 1-1, donc [DC][DC] est horizontal aussi ; AA et DD ont la même abscisse 3-3, donc [AD][AD] est vertical. Le quadrilatère a quatre angles droits : c'est un RECTANGLE. Sa longueur vaut 4(3)=74-(-3)=7 unités et sa largeur 2(1)=32-(-1)=3 unités. On calcule une distance en soustrayant les coordonnées, et le résultat est toujours positif si l'on soustrait la plus petite à la plus grande.

3) De AA à BB, l'ordonnée ne change pas et l'abscisse passe de 3-3 à 44, ce qui fait +7+7 : le bloc est ajouter 7 aˋ x\mathtt{ajouter\ 7\ à\ x}. De BB à CC, l'abscisse ne change pas et l'ordonnée passe de 22 à 1-1, ce qui fait 3-3 : le bloc est ajouter 3 aˋ y\mathtt{ajouter\ -3\ à\ y}. On vérifie chaque fois en repartant de la valeur de départ : 3+7=4-3+7=4 ✓ et 2+(3)=12+(-3)=-1 ✓.

4) L'aire du rectangle vaut 7×3=217\times 3=21 unités d'aire. Une unité valant 4040 pas, une unité d'aire vaut 40×40=160040\times 40=1\,600 pas carrés, donc l'aire vaut 21×1600=3360021\times 1\,600=33\,600 pas carrés. Le facteur est bien 16001\,600 et non 4040 : une aire est un produit de deux longueurs, donc le coefficient s'applique deux fois.

5) Le script tient en quatre déplacements : aller aˋ x: 3 y: 2\mathtt{aller\ à\ x:\ -3\ y:\ 2}, puis stylo en position deˊcriture\mathtt{stylo\ en\ position\ d'écriture}, puis ajouter 7 aˋ x\mathtt{ajouter\ 7\ à\ x}, ajouter 3 aˋ y\mathtt{ajouter\ -3\ à\ y}, ajouter 7 aˋ x\mathtt{ajouter\ -7\ à\ x}, ajouter 3 aˋ y\mathtt{ajouter\ 3\ à\ y}. Contrôle : la somme des déplacements horizontaux vaut 7+(7)=07+(-7)=0 et celle des déplacements verticaux 3+3=0-3+3=0. Sur toute figure fermée, ces deux sommes valent zéro, et c'est la vérification à faire avant même de lancer le programme.

6) Le lutin part de A(3;2)A(-3\,;2) et arrive en (37;2)(-3-7\,;2), c'est-à-dire (10;2)(-10\,;2) : il part à gauche au lieu d'aller à droite. La suite du script le conduit ensuite en (10;1)(-10\,;-1), puis en (17;1)(-17\,;-1), puis en (17;2)(-17\,;2). La figure obtenue n'est plus fermée : c'est une ligne brisée en créneau, qui part toujours vers la gauche. La somme des déplacements horizontaux vaut désormais 7+(7)=14-7+(-7)=-14, donc le lutin ne revient pas à son point de départ : il termine 1414 unités à gauche de AA. Un seul signe changé suffit à ouvrir la figure.

Exercice 3 : La boucle répéter : le carré, puis le rectangle

Le script ci-dessous trace une figure fermée. Le lutin part orienté vers la droite, stylo baissé. La figure de l'énoncé montre le RECTANGLE de la question 4, à tracer ensuite.

100 pas20 pas
Scratch
quand le drapeau vert est cliqué
stylo en position d'écriture
répéter 4 fois
    avancer de 60
    tourner de 90 degrés vers la droite
  • 1) Quelle figure ce script trace-t-il ? Donner sa nature et ses dimensions.
  • 2) Quelle est la longueur totale du trait tracé ? Quelle est l'aire de la figure, en pas carrés ?
  • 3) Pourquoi le lutin tourne-t-il de 9090 degrés, et non d'un autre angle ?
  • 4) Écrire un script qui trace le rectangle de la figure, de 100100 pas sur 2020 pas, en utilisant une boucle reˊpeˊter 2 fois\mathtt{répéter\ 2\ fois}.
  • 5) Calculer le périmètre et l'aire de ce rectangle. Comparer avec le carré.
  • 6) Que peut-on en conclure sur deux figures tracées avec la même longueur de trait ?

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) Carré de 60 pas
  • 2) 240 pas ; 3 600 pas²
  • 3) 360 ÷ 4 = 90
  • 4) Répéter 2 fois : 100, tourner, 20, tourner
  • 5) 240 pas ; 2 000 pas²
  • 6) Le périmètre ne fixe pas l'aire

1) C'est un CARRÉ de côté 6060 pas. Le lutin répète quatre fois la même paire d'actions : avancer de 6060, puis pivoter d'un quart de tour. Quatre côtés de même longueur séparés par quatre angles droits, c'est la définition du carré. On remarque qu'après le quatrième tour le lutin est revenu à son point de départ et regarde de nouveau dans sa direction initiale : la figure est bien fermée.

2) Le bloc avancer de 60\mathtt{avancer\ de\ 60} est exécuté quatre fois, donc le trait mesure 4×60=2404\times 60=240 pas : c'est le périmètre du carré. Les blocs tourner\mathtt{tourner} ne tracent rien, puisqu'ils ne déplacent pas le lutin, et il ne faut surtout pas les compter. L'aire, elle, vaut 60×60=360060\times 60=3\,600 pas carrés. Périmètre et aire ne se mesurent pas dans la même unité, et le script ne trace que le périmètre.

3) Parce que la somme des rotations d'une figure fermée vaut un tour complet, soit 360360^\circ, et qu'il y a quatre sommets : chaque rotation vaut donc 3604=90\dfrac{360}{4}=90^\circ. Cette division est le seul calcul du chapitre sur les tracés, et elle vaut pour tous les polygones réguliers : 360n\dfrac{360}{n} pour nn côtés.

4) Un rectangle a deux longueurs et deux largeurs qui alternent, donc le motif à répéter contient DEUX côtés et deux rotations : reˊpeˊter 2 fois\mathtt{répéter\ 2\ fois}, et à l'intérieur avancer de 100\mathtt{avancer\ de\ 100}, tourner de 90 degreˊs vers la droite\mathtt{tourner\ de\ 90\ degrés\ vers\ la\ droite}, avancer de 20\mathtt{avancer\ de\ 20}, tourner de 90 degreˊs vers la droite\mathtt{tourner\ de\ 90\ degrés\ vers\ la\ droite}. Écrire reˊpeˊter 4 fois\mathtt{répéter\ 4\ fois} avec le même motif tracerait le rectangle deux fois de suite, ce qui ne se verrait pas à l'écran mais doublerait le temps d'exécution.

5) Le périmètre vaut 2×(100+20)=2402\times(100+20)=240 pas, exactement le même que celui du carré. L'aire, elle, ne vaut que 100×20=2000100\times 20=2\,000 pas carrés, contre 36003\,600 pour le carré, soit 16001\,600 pas carrés de moins. Le lutin trace donc la même longueur de trait dans les deux cas, mais n'enferme pas du tout la même surface.

6) Que le périmètre ne détermine pas l'aire. Deux figures tracées avec la même longueur de trait peuvent enfermer des aires très différentes, et parmi tous les rectangles de périmètre donné, c'est le carré qui enferme la plus grande aire. C'est exactement ce que confirme la comparaison précédente, et c'est la raison pour laquelle on ne peut jamais déduire l'une de ces deux grandeurs de l'autre.

Exercice 4 : L'escalier : lire une boucle sans la dessiner

Le lutin part du point de coordonnées (100;100)(-100\,;-100), orienté vers la droite, stylo baissé. On demande de répondre SANS exécuter le programme, en tenant à jour la position et la direction.

Scratch
quand le drapeau vert est cliqué
aller à x: -100 y: -100
s'orienter à 90 (vers la droite)
stylo en position d'écriture
répéter 5 fois
    avancer de 40
    tourner de 90 degrés vers la gauche
    avancer de 40
    tourner de 90 degrés vers la droite
  • 1) Décrire la figure tracée par ce script.
  • 2) Quelle est la longueur totale du trait tracé ?
  • 3) De combien le lutin s'est-il déplacé horizontalement en tout ? Et verticalement ?
  • 4) Quelles sont les coordonnées du point d'arrivée ?
  • 5) On veut le même point d'arrivée avec huit marches. Quelle longueur donner à chaque avancée ?
  • 6) On échange les deux blocs tourner\mathtt{tourner}. Que devient la figure, et quel est le nouveau point d'arrivée ?

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) Escalier de 5 marches, montant
  • 2) 400 pas
  • 3) 200 et 200 pas
  • 4) (100;100)(100\,;100)
  • 5) 25 pas
  • 6) Escalier descendant, (100;300)(100\,;-300)

1) Un ESCALIER de cinq marches qui monte vers la droite. Il faut suivre un tour de boucle en entier pour le voir : le lutin regarde à droite, avance de 4040 pas horizontalement, pivote d'un quart de tour vers la gauche donc regarde vers le haut, avance de 4040 pas verticalement, puis pivote d'un quart de tour vers la droite et regarde de nouveau vers la droite. Chaque tour dessine donc une marche, un trait horizontal suivi d'un trait vertical, et le lutin termine le tour dans la direction où il l'avait commencé, ce qui permet au tour suivant de recommencer à l'identique.

2) Chaque tour trace deux segments de 4040 pas, soit 8080 pas. Avec cinq tours, le trait mesure 5×80=4005\times 80=400 pas. Les blocs tourner\mathtt{tourner} ne tracent rien : le lutin pivote sur place, sans laisser de trace.

3) À chaque tour, le lutin gagne 4040 pas horizontalement, puis 4040 pas verticalement. Sur cinq tours, il se déplace de 5×40=2005\times 40=200 pas vers la droite et de 5×40=2005\times 40=200 pas vers le haut. Le déplacement horizontal et le déplacement vertical sont ici égaux, ce qui explique que l'escalier monte à 4545 degrés et que le point d'arrivée est aligné en diagonale avec le point de départ.

4) Le lutin part de (100;100)(-100\,;-100). Son abscisse devient 100+200=100-100+200=100 et son ordonnée 100+200=100-100+200=100. Il arrive donc en (100;100)(100\,;100). On remarque que la longueur du trait, 400400 pas, est bien supérieure à la distance à vol d'oiseau entre le départ et l'arrivée : monter un escalier fait parcourir plus de chemin que la diagonale.

5) Le déplacement total doit rester 200200 pas dans chaque direction, réparti sur huit marches au lieu de cinq. Chaque avancée doit donc valoir 2008=25\dfrac{200}{8}=25 pas. Le trait mesurera alors 8×2×25=4008\times 2\times 25=400 pas, la même longueur qu'avant : l'escalier a des marches plus petites et plus nombreuses, mais on parcourt exactement le même chemin. Seul l'aspect change, pas la distance.

6) Le lutin regarde à droite, avance de 4040, pivote d'un quart de tour vers la DROITE donc regarde vers le bas, avance de 4040 en descendant, puis pivote vers la gauche et regarde de nouveau à droite. Chaque tour donne donc +40+40 horizontalement et 40-40 verticalement : l'escalier DESCEND vers la droite. Le point d'arrivée est (100+200;100200)(-100+200\,;-100-200), c'est-à-dire (100;300)(100\,;-300). Deux blocs échangés, une figure entièrement différente : c'est le fil de la série, la direction compte autant que la position.

départarrivée

Exercice 5 : Suivre une variable tour par tour

Une variable est une case mémoire. Le bloc mettre score aˋ \mathtt{mettre\ score\ à\ \ldots} efface l'ancien contenu et range à la place le résultat du calcul écrit à droite. Pour savoir ce que produit une boucle, on remplit un tableau, une ligne par tour.

Scratch
quand le drapeau vert est cliqué
mettre score à 0
répéter 4 fois
    ajouter 3 à score
    mettre score à score * 2
  • 1) Recopier et compléter un tableau donnant la valeur de score\mathtt{score} après chaque instruction, pour les quatre tours.
  • 2) Quelle valeur la variable score\mathtt{score} contient-elle à la fin ?
  • 3) On échange les deux instructions à l'intérieur de la boucle. Quelle est alors la valeur finale ?
  • 4) Pourquoi l'ordre change-t-il le résultat ici, alors qu'il ne le changeait pas à l'exercice 1 ?
  • 5) Avec le script d'origine, combien de tours faut-il pour que score\mathtt{score} dépasse 10001\,000 ?
  • 6) Écrire un script qui calcule 3+6+9++303+6+9+\ldots+30 à l'aide d'une variable et d'une boucle. Donner le résultat.

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) 6 ; 18 ; 42 ; 90
  • 2) 90
  • 3) 45
  • 4) Addition et multiplication ne s'échangent pas
  • 5) 8 tours
  • 6) 165

1) On part de score=0\mathtt{score}=0. Tour 1 : 0+3=30+3=3, puis 3×2=63\times 2=6. Tour 2 : 6+3=96+3=9, puis 9×2=189\times 2=18. Tour 3 : 18+3=2118+3=21, puis 21×2=4221\times 2=42. Tour 4 : 42+3=4542+3=45, puis 45×2=9045\times 2=90. Le tableau comporte donc deux colonnes de valeurs par tour, une après chaque instruction, et c'est la seule façon fiable de ne pas se perdre.

2) À la fin, score\mathtt{score} vaut 9090. On peut contrôler l'ordre de grandeur : la variable double à chaque tour et gagne un peu, donc partant de 33 elle doit atteindre à peu près 3×24=483\times 2^{4}=48 au minimum, et un peu plus à cause des additions successives. Trouver 9090 est cohérent ; trouver 2424 ou 200200 ne l'aurait pas été.

3) Avec l'ordre inversé, chaque tour double d'abord, puis ajoute 33. Tour 1 : 0×2=00\times 2=0, puis 0+3=30+3=3. Tour 2 : 3×2=63\times 2=6, puis 6+3=96+3=9. Tour 3 : 9×2=189\times 2=18, puis 18+3=2118+3=21. Tour 4 : 21×2=4221\times 2=42, puis 42+3=4542+3=45. La valeur finale est 4545, c'est-à-dire exactement la MOITIÉ de 9090. Ce n'est pas un hasard : dans le premier script, le dernier 33 ajouté est encore doublé ; dans le second, il ne l'est pas.

4) Parce qu'ici les deux instructions ne sont pas de même nature : l'une additionne, l'autre multiplie. Or multiplier une somme, ce n'est pas ajouter à un produit : (n+3)×2=2n+6(n+3)\times 2=2n+6 tandis que n×2+3=2n+3n\times 2+3=2n+3. À l'exercice 1, les deux instructions étaient deux déplacements, donc deux additions, et deux additions peuvent toujours être échangées. La règle à retenir : on peut échanger deux instructions de même nature, jamais une addition et une multiplication.

5) On poursuit le tableau. Tour 5 : 90+3=9390+3=93, puis 186186. Tour 6 : 189189, puis 378378. Tour 7 : 381381, puis 762762. Tour 8 : 765765, puis 15301\,530. La variable dépasse donc 10001\,000 au huitième tour. Au septième, elle ne valait que 762762, ce qui est inférieur à 10001\,000 : il faut bien 88 tours et non 77. On répond toujours à ce genre de question en donnant la valeur du dernier tour insuffisant et celle du premier tour suffisant.

6) Il faut deux variables, l'une pour le terme courant, l'autre pour le total : mettre terme aˋ 0\mathtt{mettre\ terme\ à\ 0}, mettre somme aˋ 0\mathtt{mettre\ somme\ à\ 0}, puis reˊpeˊter 10 fois\mathtt{répéter\ 10\ fois} contenant ajouter 3 aˋ terme\mathtt{ajouter\ 3\ à\ terme} et ajouter terme aˋ somme\mathtt{ajouter\ terme\ à\ somme}. La boucle tourne 1010 fois car 30=3×1030=3\times 10. Le résultat vaut 3+6+9++30=3×(1+2++10)=3×55=1653+6+9+\ldots+30=3\times(1+2+\ldots+10)=3\times 55=165. On peut le vérifier autrement, en regroupant par paires de somme constante : 3+30=333+30=33, 6+27=336+27=33, et ainsi de suite, soit cinq paires à 3333, donc 5×33=1655\times 33=165 ✓.

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

Exercice 6 : Le test si sinon et son seuil

Un magasin vend un article 1212 dollars. Le script ci-dessous calcule le prix d'une commande de nn articles : au-delà de dix articles une remise s'applique, en dessous des frais de livraison s'ajoutent.

Scratch
demander « Combien d'articles ? » et attendre
mettre n à réponse
mettre prix à n * 12
si n > 10 alors
    mettre prix à prix * 0,85
sinon
    ajouter 4 à prix
  • 1) Quel prix affiche le script pour n=6n=6 ?
  • 2) Quel prix affiche-t-il pour n=10n=10 ?
  • 3) Quel prix affiche-t-il pour n=11n=11 ?
  • 4) Peut-on payer moins cher en achetant plus d'articles ? Justifier par les résultats précédents.
  • 5) À partir de combien d'articles le prix dépasse-t-il 200200 dollars ?
  • 6) On remplace la condition n>10\mathtt{n>10} par n10\mathtt{n\ge 10}. Qu'est-ce que cela change, et pour quelle commande ?

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) 76 dollars
  • 2) 124 dollars
  • 3) 112,20112{,}20 dollars
  • 4) Oui : 11 coûtent moins que 10
  • 5) 20 articles
  • 6) Seule la commande de 10 : 102 dollars

1) Le script calcule d'abord prix=6×12=72\mathtt{prix}=6\times 12=72. Puis il teste la condition : 6>106>10 est FAUSSE, donc c'est la branche sinon\mathtt{sinon} qui s'exécute, et elle seule. Le prix devient 72+4=7672+4=76 dollars. Une seule des deux branches est parcourue, jamais les deux : c'est toute la différence entre un test et une suite d'instructions.

2) prix=10×12=120\mathtt{prix}=10\times 12=120. La condition 10>1010>10 est fausse, car le symbole >> est STRICT : dix n'est pas strictement plus grand que dix. On passe donc encore par la branche sinon\mathtt{sinon} et le prix vaut 120+4=124120+4=124 dollars.

3) prix=11×12=132\mathtt{prix}=11\times 12=132. Cette fois 11>1011>10 est vraie, donc le prix devient 132×0,85=112,20132\times 0{,}85=112{,}20 dollars. Multiplier par 0,850{,}85, c'est retirer 15%15\,\% : on garde 8585 centièmes du prix. On peut vérifier autrement : 15%15\,\% de 132132 vaut 19,8019{,}80, et 13219,80=112,20132-19{,}80=112{,}20 ✓.

4) Oui, et c'est même flagrant ici. Onze articles coûtent 112,20112{,}20 dollars alors que dix articles en coûtent 124124 : un article de plus fait économiser 11,8011{,}80 dollars. Cela vient de ce que le prix fait un SAUT au passage du seuil, la remise s'appliquant d'un coup à toute la commande. Un client averti n'a donc aucun intérêt à commander exactement dix articles, ce qui est un défaut classique des barèmes à seuil et une bonne raison de tracer la courbe des prix avant de publier un tarif.

5) Au-delà de dix articles, le prix vaut n×12×0,85=10,2×nn\times 12\times 0{,}85=10{,}2\times n dollars. Pour n=19n=19, cela donne 193,80193{,}80 dollars, ce qui ne dépasse pas 200200. Pour n=20n=20, cela donne 204204 dollars, ce qui dépasse. Il faut donc commander 2020 articles. On répond en encadrant : le dernier cas insuffisant et le premier cas suffisant, jamais par un seul essai.

6) Avec n10\mathtt{n\ge 10}, la condition devient vraie dès dix articles. Seule la commande de n=10n=10 est concernée, puisque c'est la seule valeur qui distingue les deux conditions : son prix passerait de 124124 à 120×0,85=102120\times 0{,}85=102 dollars, soit 2222 dollars de moins. Un seul symbole modifié, et le tarif change pour toute une catégorie de clients : c'est pourquoi on relit toujours si une inégalité est stricte ou large.

3691215182120406080100120140160180200220nprix (dollars)le prix baisse à 11 articles

Exercice 7 : Un programme de calcul et sa preuve

Le script ci-dessous applique un programme de calcul au nombre saisi par l'utilisateur. Le calcul littéral de cinquième permet de prouver ce que l'on observe, au lieu de se contenter de quelques essais.

Scratch
demander « Choisis un nombre » et attendre
mettre n à réponse
mettre r à n * 4
ajouter 10 à r
mettre r à r / 2
mettre r à r - n
dire r
  • 1) Quel résultat le script affiche-t-il pour n=3n=3 ? Détailler les quatre étapes.
  • 2) Même question pour n=7n=7.
  • 3) Formuler une conjecture reliant le résultat au nombre de départ.
  • 4) Démontrer cette conjecture en appelant nn le nombre choisi.
  • 5) Vérifier que la conjecture reste vraie pour n=4n=-4.
  • 6) Un second programme fait : multiplier par 66, ajouter 1818, diviser par 33, puis soustraire le double du nombre choisi. Conjecturer, puis démontrer.

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
  • 2) 12
  • 3) Résultat =n+5=n+5
  • 4) 4n+102n=n+5\frac{4n+10}{2}-n=n+5
  • 5) 1
  • 6) Toujours 6

1) Étape par étape : r=3×4=12\mathtt{r}=3\times 4=12 ; puis r=12+10=22\mathtt{r}=12+10=22 ; puis r=222=11\mathtt{r}=\dfrac{22}{2}=11 ; puis r=113=8\mathtt{r}=11-3=8. Le script affiche 88. Chaque ligne écrase la valeur précédente de r\mathtt{r} : c'est bien une case mémoire, pas une équation.

2) r=7×4=28\mathtt{r}=7\times 4=28 ; puis 28+10=3828+10=38 ; puis 382=19\dfrac{38}{2}=19 ; puis 197=1219-7=12. Le script affiche 1212.

3) Pour 33 on obtient 88, pour 77 on obtient 1212 : dans les deux cas, le résultat est le nombre de départ AUGMENTÉ DE 55. La conjecture est donc : le programme rend toujours n+5n+5. Deux exemples ne prouvent rien, ils suggèrent seulement ce qu'il faut démontrer.

4) On refait le calcul avec la lettre. Après la première ligne, r=4n\mathtt{r}=4n. Après la deuxième, r=4n+10\mathtt{r}=4n+10. Après la troisième, r=4n+102=2n+5\mathtt{r}=\dfrac{4n+10}{2}=2n+5, car on divise CHAQUE terme par 22. Après la dernière, r=2n+5n=n+5\mathtt{r}=2n+5-n=n+5. Le résultat est donc n+5n+5 quel que soit le nombre choisi, ce qui démontre la conjecture. Le point délicat est la division : oublier de diviser aussi le 1010 donnerait 2n+102n+10, et toute la suite serait fausse.

5) r=4×4=16\mathtt{r}=-4\times 4=-16 ; puis 16+10=6-16+10=-6 ; puis 62=3\dfrac{-6}{2}=-3 ; puis 3(4)=3+4=1-3-(-4)=-3+4=1. Or n+5=4+5=1n+5=-4+5=1 ✓. La démonstration littérale n'a jamais supposé que nn était positif, donc elle vaut aussi pour les nombres relatifs, et c'est précisément l'avantage d'une preuve sur une série d'essais.

6) Essayons d'abord : avec n=5n=5, on obtient 3030, puis 4848, puis 1616, puis 1610=616-10=6. Avec n=1n=1 : 66, puis 2424, puis 88, puis 82=68-2=6. Conjecture : le résultat est toujours 66, quel que soit le nombre choisi. Démonstration : 6n6n, puis 6n+186n+18, puis 6n+183=2n+6\dfrac{6n+18}{3}=2n+6, puis 2n+62n=62n+6-2n=6. Le nombre de départ disparaît complètement du calcul, ce qui explique que le résultat soit constant. C'est le genre de programme que l'on présente comme un tour de magie, et le calcul littéral en donne le secret en trois lignes.

Exercice 8 : Cinq affirmations à corriger

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

  • 1) « Dans un script, l'ordre des instructions n'a pas d'importance : seul compte ce qu'elles contiennent. »
  • 2) « Pour tracer un triangle équilatéral, le lutin doit tourner de 6060 degrés à chaque sommet, puisque les angles d'un triangle équilatéral mesurent 6060 degrés. »
  • 3) « L'instruction mettre score aˋ score+1\mathtt{mettre\ score\ à\ score+1} est impossible, car un nombre ne peut pas être égal à lui-même plus un. »
  • 4) « Le bloc reˊpeˊter 4 fois [avancer de 50]\mathtt{répéter\ 4\ fois\ [avancer\ de\ 50]} fait avancer le lutin de 5050 pas en tout. »
  • 5) « Un bloc si  alors  sinon \mathtt{si\ \ldots\ alors\ \ldots\ sinon\ \ldots} exécute d'abord la première branche, puis la seconde. »

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

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

Réponses

  • 1) L'ordre compte en général
  • 2) 120° à chaque sommet
  • 3) Affectation : score passe de 7 à 8
  • 4) 200 pas
  • 5) Une seule branche

1) Faux. Un script s'exécute de haut en bas et chaque instruction travaille sur l'état laissé par la précédente. Échanger avancer de 50\mathtt{avancer\ de\ 50} et tourner de 90 degreˊs\mathtt{tourner\ de\ 90\ degrés} ne donne pas le même dessin du tout. Énoncé correct : l'ordre compte, sauf dans le cas particulier de deux instructions de même nature qui n'interfèrent pas, comme deux déplacements. C'est exactement ce que comparaient les exercices 1 et 5 : deux additions s'échangent, une addition et une multiplication non.

2) Faux. Les 6060 degrés sont l'angle INTÉRIEUR du triangle, celui qu'on mesure entre deux côtés à l'intérieur de la figure. Le lutin, lui, arrive dans le prolongement du côté et doit se rabattre : il tourne de l'angle extérieur, soit 18060=120180-60=120 degrés. Énoncé correct : le lutin tourne de 3603=120\dfrac{360}{3}=120 degrés à chaque sommet. Vérification : 3×120=3603\times 120=360, un tour complet, comme sur toute figure fermée. Avec 6060 degrés, trois rotations ne font que 180180 degrés : la figure ne se referme pas, le lutin trace la moitié d'un hexagone régulier.

3) Faux, parce que ce n'est pas une équation. Le bloc mettre  aˋ \mathtt{mettre\ \ldots\ à\ \ldots} est une AFFECTATION : on calcule d'abord score+1\mathtt{score}+1 avec l'ancienne valeur, puis on range le résultat dans la case, en écrasant ce qu'elle contenait. Énoncé correct : si score\mathtt{score} vaut 77, l'instruction calcule 7+1=87+1=8 et score\mathtt{score} vaut désormais 88. Le signe de l'affectation se lit de droite à gauche, et c'est la source d'erreur la plus tenace de tout le chapitre.

4) Faux. La boucle exécute quatre fois l'instruction, donc le lutin avance de 4×50=2004\times 50=200 pas. Énoncé correct : reˊpeˊter 4 fois\mathtt{répéter\ 4\ fois} multiplie l'effet par quatre. Si aucune rotation n'est présente, le lutin file tout droit sur 200200 pas ; c'est justement pour cela qu'un carré a besoin des blocs tourner\mathtt{tourner}.

5) Faux. Un test si  alors  sinon\mathtt{si\ \ldots\ alors\ \ldots\ sinon} n'exécute qu'UNE seule des deux branches : celle du alors\mathtt{alors} si la condition est vraie, celle du sinon\mathtt{sinon} si elle est fausse, et jamais les deux. Énoncé correct : les deux branches s'excluent. Si les deux s'exécutaient, le prix de l'exercice 6 subirait à la fois la remise et les frais de livraison, ce qui n'a aucun sens commercial.

Exercice 9 : Problème : le barème du quiz de mathématiques

Un quiz comporte douze questions. Chaque bonne réponse rapporte 55 points, chaque mauvaise en retire 22. Le script ci-dessous tient le score à jour. On note bb le nombre de bonnes réponses.

Scratch
mettre score à 0
mettre bonnes à 0
répéter 12 fois
    poser la question suivante
    si la réponse est correcte alors
        ajouter 5 à score
        ajouter 1 à bonnes
    sinon
        ajouter -2 à score
  • 1) Léa donne neuf bonnes réponses. Quel est son score ?
  • 2) Quel pourcentage de bonnes réponses a-t-elle obtenu ?
  • 3) Quels sont le score maximal et le score minimal possibles ?
  • 4) Quel score obtient un élève qui donne six bonnes réponses ?
  • 5) Combien faut-il de bonnes réponses au minimum pour obtenir un score d'au moins 3030 points ?
  • 6) Exprimer le score en fonction de bb. Un élève peut-il obtenir exactement 00 point ?

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) 39 points
  • 2) 75 %
  • 3) 60 et 24-24
  • 4) 18 points
  • 5) 8 bonnes réponses
  • 6) 7b247b-24 ; 0 impossible

1) Neuf bonnes réponses rapportent 9×5=459\times 5=45 points. Les trois autres réponses sont fausses et coûtent 3×2=63\times 2=6 points, ce qui s'écrit 3×(2)=63\times(-2)=-6. Le score vaut donc 456=3945-6=39 points. L'erreur classique est d'oublier les mauvaises réponses : le script contient une branche sinon\mathtt{sinon}, donc chacune des douze questions modifie le score, dans un sens ou dans l'autre.

2) Léa a répondu correctement à 99 questions sur 1212, soit 912=34=0,75\dfrac{9}{12}=\dfrac{3}{4}=0{,}75, c'est-à-dire 75%75\,\%. On simplifie la fraction avant de convertir : c'est plus rapide et cela évite la calculatrice.

3) Le score maximal s'obtient avec douze bonnes réponses : 12×5=6012\times 5=60 points. Le minimal s'obtient avec zéro bonne réponse : 12×(2)=2412\times(-2)=-24 points. Un score négatif est donc possible, ce qui n'a rien d'absurde avec un barème à malus, et illustre bien l'utilité des nombres relatifs.

4) Six bonnes réponses rapportent 6×5=306\times 5=30 points, et les six mauvaises en retirent 6×2=126\times 2=12. Le score vaut 3012=1830-12=18 points. Répondre juste à la moitié des questions ne donne donc PAS la moitié du score maximal, qui serait 3030 : le malus déforme le barème.

5) Essayons : avec sept bonnes réponses, 7×5=357\times 5=35 et 5×2=105\times 2=10, donc 3510=2535-10=25 points, ce qui est insuffisant. Avec huit bonnes réponses, 8×5=408\times 5=40 et 4×2=84\times 2=8, donc 408=3240-8=32 points, ce qui convient. Il faut donc au minimum HUIT bonnes réponses. Chaque bonne réponse supplémentaire fait gagner 77 points et non 55, puisqu'elle rapporte 55 points et évite un malus de 22 : c'est ce qui explique le saut de 2525 à 3232.

6) Il y a bb bonnes réponses et 12b12-b mauvaises, donc le score vaut 5b2(12b)=5b24+2b=7b245b-2(12-b)=5b-24+2b=7b-24. On vérifie avec Léa : 7×924=6324=397\times 9-24=63-24=39 ✓, et avec le score maximal : 7×1224=8424=607\times 12-24=84-24=60 ✓. Pour obtenir exactement 00, il faudrait 7b=247b=24, donc b=2473,43b=\dfrac{24}{7}\approx 3{,}43, qui n'est pas un nombre entier. C'est impossible : avec trois bonnes réponses le score vaut 3-3, avec quatre il vaut 44, et le score saute par pas de 77 sans jamais passer par zéro.

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

Un distributeur doit rendre une somme, exprimée en cents. Il rend d'abord le plus de pièces de 11 dollar possible, c'est-à-dire de 100100 cents, puis le plus de pièces de 2525 cents, puis des pièces de 1010 cents. Le script ci-dessous traite la première étape.

Scratch
mettre reste à monnaie
mettre pieces à 0
répéter jusqu'à ce que reste < 100
    ajouter -100 à reste
    ajouter 1 à pieces
  • 1) La monnaie à rendre vaut 385385 cents. Donner les valeurs de reste\mathtt{reste} et de pieces\mathtt{pieces} après chaque tour de boucle.
  • 2) Combien de pièces de 11 dollar le distributeur rend-il, et que reste-t-il à rendre ?
  • 3) On enchaîne la même boucle avec 2525 à la place de 100100. Combien de pièces de 2525 cents, et quel reste ?
  • 4) On enchaîne enfin la même boucle avec 1010. Combien de pièces en tout le client reçoit-il ?
  • 5) Pourquoi la condition est-elle reste<100\mathtt{reste<100} et non reste100\mathtt{reste\le 100} ?
  • 6) Que se passe-t-il si la monnaie à rendre vaut 6060 cents ? Et si elle vaut 400400 cents ?

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

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

Réponses

  • 1) 285, 185, 85 ; 3 pièces
  • 2) 3 pièces, reste 85 cents
  • 3) 3 pièces, reste 10 cents
  • 4) 7 pièces
  • 5) Rendre le cas 100 cents en une pièce
  • 6) 3 pièces ; 4 pièces

1) On part de reste=385\mathtt{reste}=385 et pieces=0\mathtt{pieces}=0. La condition 385<100385<100 est fausse, donc la boucle tourne. Tour 1 : reste=285\mathtt{reste}=285, pieces=1\mathtt{pieces}=1. Tour 2 : reste=185\mathtt{reste}=185, pieces=2\mathtt{pieces}=2. Tour 3 : reste=85\mathtt{reste}=85, pieces=3\mathtt{pieces}=3. La condition 85<10085<100 est maintenant vraie, donc la boucle s'arrête. Le bloc reˊpeˊter jusquaˋ ce que\mathtt{répéter\ jusqu'à\ ce\ que} teste la condition AVANT chaque tour, et non après.

2) Le distributeur rend 33 pièces de 11 dollar, soit 300300 cents, et il reste 385300=85385-300=85 cents à rendre. On vérifie par la division euclidienne : 385=3×100+85385=3\times 100+85, avec un reste inférieur au diviseur. La boucle ne fait rien d'autre que calculer un quotient et un reste par soustractions successives.

3) On repart de reste=85\mathtt{reste}=85. Tour 1 : 6060. Tour 2 : 3535. Tour 3 : 1010. La condition 10<2510<25 est vraie, la boucle s'arrête. Le distributeur rend donc 33 pièces de 2525 cents, soit 7575 cents, et il reste 1010 cents. Contrôle : 85=3×25+1085=3\times 25+10 ✓.

4) On repart de reste=10\mathtt{reste}=10. Tour 1 : reste=0\mathtt{reste}=0, pieces=1\mathtt{pieces}=1, et 0<100<10 est vraie, donc la boucle s'arrête. Le distributeur rend 11 pièce de 1010 cents et il ne reste rien. Au total, le client reçoit 3+3+1=73+3+1=7 pièces. Vérification de la somme : 3×100+3×25+1×10=300+75+10=3853\times 100+3\times 25+1\times 10=300+75+10=385 cents ✓. Cette vérification finale est indispensable : elle contrôle d'un coup les trois boucles.

5) Parce que la boucle doit continuer tant qu'il reste au moins une pièce entière à rendre. Avec reste100\mathtt{reste\le 100}, la boucle s'arrêterait alors que le reste vaut exactement 100100 cents, c'est-à-dire une pièce de 11 dollar encore à rendre. Le distributeur la rendrait alors en 44 pièces de 2525 cents : la somme resterait juste, mais le client recevrait trois pièces de plus que nécessaire. Le symbole d'une condition d'arrêt se choisit donc en se demandant quel cas limite doit encore être traité.

6) Pour 6060 cents, la condition 60<10060<100 est vraie DÈS LE DÉPART : la boucle ne tourne pas du tout, et pieces\mathtt{pieces} reste à 00. Une boucle reˊpeˊter jusquaˋ ce que\mathtt{répéter\ jusqu'à\ ce\ que} peut donc s'exécuter zéro fois, ce qui surprend souvent. La suite donne 22 pièces de 2525 cents, reste 1010, puis 11 pièce de 1010 cents : trois pièces au total, et 2×25+10=602\times 25+10=60 ✓. Pour 400400 cents, la première boucle tourne quatre fois et laisse un reste nul ; les deux autres boucles ne tournent alors pas du tout, puisque 0<250<25 et 0<100<10 sont vraies d'emblée. Le client reçoit 44 pièces.

Partie C : les classiques (/50)

Exercice 11 : Déboguer un script de rectangle

Un élève veut tracer un rectangle de 8080 pas sur 4040 pas. Son lutin part du point (0;0)(0\,;0), orienté vers la droite, stylo baissé. Voici son script, qui ne donne pas le dessin attendu.

Scratch
quand le drapeau vert est cliqué
aller à x: 0 y: 0
s'orienter à 90 (vers la droite)
stylo en position d'écriture
répéter 2 fois
    avancer de 80
    tourner de 90 degrés vers la gauche
    avancer de 40
  • 1) Suivez le script et donnez les coordonnées du lutin après chacune des quatre avancées. Où arrive-t-il ?
  • 2) Quelle est la longueur totale du trait tracé ? Comparez avec le périmètre du rectangle voulu.
  • 3) Quelle instruction manque, et à quel endroit ?
  • 4) Après correction, où arrive le lutin, et dans quelle direction regarde-t-il ?
  • 5) Un camarade garde le script faux mais remplace reˊpeˊter 2 fois\mathtt{répéter\ 2\ fois} par reˊpeˊter 4 fois\mathtt{répéter\ 4\ fois}. Où arrive le lutin ? A-t-il tracé le rectangle ?

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

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

Réponses

  • 1) Arrivée en (40;120)(40\,;120)
  • 2) 240 pas, comme le rectangle
  • 3) Un second « tourner » en fin de boucle
  • 4) (0;0)(0\,;0), vers la droite
  • 5) (0;0)(0\,;0) : un carré de 120 pas, pas le rectangle

1) Tour 1 : il avance de 8080 vers la droite, en (80;0)(80\,;0), tourne vers la gauche donc regarde vers le haut, avance de 4040, en (80;40)(80\,;40). Tour 2 : il regarde toujours vers le haut, car aucun bloc ne l'a fait pivoter : il avance de 8080, en (80;120)(80\,;120), tourne vers la gauche donc regarde vers la gauche, avance de 4040, en (40;120)(40\,;120). Il arrive en (40;120)(40\,;120).

2) 80+40+80+40=24080+40+80+40=240 pas, exactement le périmètre du rectangle voulu, 2×(80+40)=2402\times(80+40)=240. La longueur est juste, la forme est fausse : compter les pas ne suffit pas à valider un tracé.

3) Il manque un second tourner de 90 degreˊs vers la gauche\mathtt{tourner\ de\ 90\ degrés\ vers\ la\ gauche}, à la fin de la boucle, après avancer de 40\mathtt{avancer\ de\ 40}. Le motif d'un rectangle contient deux côtés ET deux rotations.

4) Avec la correction, le lutin trace (80;0)(80\,;0), (80;40)(80\,;40), (0;40)(0\,;40) puis (0;0)(0\,;0) : il revient à son point de départ. Il a tourné quatre fois d'un quart de tour, soit un tour complet : il regarde de nouveau vers la droite.

5) Tour 3 : il regarde vers la gauche, avance de 8080 en (40;120)(-40\,;120), tourne et regarde vers le bas, avance de 4040 en (40;80)(-40\,;80). Tour 4 : il avance de 8080 vers le bas en (40;0)(-40\,;0), tourne et regarde vers la droite, avance de 4040 en (0;0)(0\,;0). Il revient à son départ, mais la figure n'est PAS le rectangle voulu : les segments se prolongent deux à deux, 8080 puis 4040 dans la même direction, et dessinent un CARRÉ de 120120 pas de côté, de (40;0)(-40\,;0) à (80;120)(80\,;120), soit 480480 pas de trait. Revenir au départ ne prouve pas qu'on a tracé la bonne figure.

Le fil : on débogue un script en le suivant ligne à ligne, position ET direction, jamais en le lisant « en gros ».

Exercice 12 : Les multiples d'un nombre, dits par le lutin

Le script ci-dessous fait dire au lutin une suite de nombres. Le bloc reˊpeˊter jusquaˋ ce que\mathtt{répéter\ jusqu'à\ ce\ que} teste sa condition AVANT chaque tour.

Scratch
quand le drapeau vert est cliqué
mettre n à 0
répéter jusqu'à ce que n > 100
    ajouter 7 à n
    dire n pendant 1 seconde
  • 1) Quels sont les trois premiers nombres dits par le lutin ?
  • 2) Quel est le dernier nombre dit par le lutin ?
  • 3) Combien de nombres le lutin dit-il en tout ?
  • 4) On veut que le lutin s'arrête au dernier multiple de 77 qui ne dépasse pas 100100. Quelle modification de la condition convient ?
  • 5) Sans lancer de script, combien y a-t-il de multiples de 77 entre 11 et 10001\,000 ?

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

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

Réponses

  • 1) 7, 14, 21
  • 2) 105
  • 3) 15 nombres
  • 4) n>93n>93
  • 5) 142

1) nn vaut 00 ; le test 0>1000>100 est faux, la boucle tourne : nn devient 77, le lutin dit 77. Puis 1414, puis 2121.

2) Quand nn vaut 9898, le test 98>10098>100 est encore FAUX : la boucle tourne une fois de plus, nn devient 105105 et le lutin dit 105105. Ensuite seulement le test 105>100105>100 est vrai et la boucle s'arrête. Le dernier nombre dit est 105105, qui dépasse 100100 : c'est le piège d'une condition testée avant d'ajouter.

3) Le lutin dit 77, 1414, ..., 105105, c'est-à-dire 7×17\times 1 jusqu'à 7×157\times 15 : 1515 nombres.

4) Il faut arrêter la boucle dès que nn vaut 9898. Avec la condition n>93\mathtt{n>93} : à 9191, le test est faux, le lutin dit 9898 ; à 9898, le test est vrai, la boucle s'arrête. Avec n>107\mathtt{n>107}, le lutin dirait encore 105105 et 112112.

5) On cherche combien de fois 77 tient dans 10001\,000 : la division euclidienne donne 1000=7×142+61\,000=7\times 142+6. Il y a 142142 multiples de 77 entre 11 et 10001\,000, le plus grand étant 7×142=9947\times 142=994.

Le fil : une boucle se vérifie sur ses cas limites, le premier et surtout le dernier tour.

Exercice 13 : Un script qui calcule périmètre et aire

Ce script demande les deux dimensions d'un rectangle, puis affiche son périmètre et son aire.

Scratch
quand le drapeau vert est cliqué
demander « Longueur ? » et attendre
mettre L à réponse
demander « Largeur ? » et attendre
mettre l à réponse
mettre P à 2 * (L + l)
mettre A à L * l
dire P pendant 2 secondes
dire A pendant 2 secondes
  • 1) Qu'affiche le script si l'on répond 1212 puis 55 ?
  • 2) Qu'affiche-t-il si l'on répond 77 puis 77 ? Quelle figure l'utilisateur a-t-il décrite ?
  • 3) Un élève a écrit mettre P aˋ 2L+l\mathtt{mettre\ P\ à\ 2*L+l}. Qu'affiche son script pour 1212 et 55 ? D'où vient l'erreur ?
  • 4) Quelles dimensions entières faut-il donner pour que le script affiche un périmètre de 3030 et une aire de 5050 ?
  • 5) Le script affiche une aire de 3636 et un périmètre de 2424. Quelles dimensions a-t-on données ?

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

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

Réponses

  • 1) 34 et 60
  • 2) 28 et 49 : un carré
  • 3) 29 : parenthèses oubliées
  • 4) 10 et 5
  • 5) 6 et 6

1) P=2×(12+5)=2×17=34P=2\times(12+5)=2\times 17=34 et A=12×5=60A=12\times 5=60. Le script dit 3434 puis 6060.

2) P=2×14=28P=2\times 14=28 et A=49A=49. Longueur et largeur égales : c'est un CARRÉ, cas particulier de rectangle.

3) Sans parenthèses, la multiplication passe avant l'addition : 2×12+5=24+5=292\times 12+5=24+5=29 au lieu de 3434. Le script de l'élève double la longueur mais pas la largeur. Les parenthèses de 2(L+l)\mathtt{2*(L+l)} sont indispensables.

4) Un périmètre de 3030 donne L+l=15L+l=15. On cherche deux entiers de somme 1515 et de produit 5050 : 1010 et 55 conviennent, car 10+5=1510+5=15 et 10×5=5010\times 5=50. On répond 1010 puis 55.

5) P=24P=24 donne L+l=12L+l=12 ; on cherche un produit de 3636. Les couples de somme 1212 sont (11;1)(11\,;1), (10;2)(10\,;2), (9;3)(9\,;3), (8;4)(8\,;4), (7;5)(7\,;5), (6;6)(6\,;6), de produits 1111, 2020, 2727, 3232, 3535, 3636. Seul (6;6)(6\,;6) convient : on a décrit un carré de côté 66.

Le fil : un script de calcul traduit une formule, parenthèses comprises ; et l'on remonte d'un résultat vers les données en essayant les cas un par un.

Exercice 14 : Problème : le thermostat de la serre

Une serre est chauffée par un radiateur piloté par un thermostat. Le script simule la température toutes les 1010 minutes : à chaque tour, si la température est inférieure à 18 °C18\ °\mathrm{C}, le chauffage fonctionne et la fait monter de 1,5 °C1{,}5\ °\mathrm{C} ; sinon il s'arrête et la serre perd 0,5 °C0{,}5\ °\mathrm{C}.

Scratch
quand le drapeau vert est cliqué
mettre température à 15
répéter 6 fois
    si température < 18 alors
        ajouter 1,5 à température
    sinon
        ajouter -0,5 à température
    attendre 1 seconde
  • 1) Donnez la température après chacun des quatre premiers tours.
  • 2) Quelle est la température à la fin du script ? Quelle durée la simulation représente-t-elle ?
  • 3) Pendant combien de tours le chauffage a-t-il fonctionné ?
  • 4) Une fois les 18 °C18\ °\mathrm{C} atteints, entre quelles valeurs la température oscille-t-elle ?
  • 5) On remplace la condition par tempeˊrature18\mathtt{température\le 18}. Quelle température maximale atteint-on alors pendant les six tours ?

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

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

Réponses

  • 1) 16,516{,}5 ; 18 ; 17,517{,}5 ; 19
  • 2) 18 °C en 60 minutes
  • 3) 3 tours
  • 4) Entre 17,517{,}5 et 19 °C
  • 5) 19,519{,}5 °C

1) On part de 1515. Tour 1 : 15<1815<18, chauffage : 16,516{,}5. Tour 2 : 16,5<1816{,}5<18 : 1818. Tour 3 : 18<1818<18 est FAUX, arrêt : 17,517{,}5. Tour 4 : 17,5<1817{,}5<18 : 1919.

2) Tour 5 : 19<1819<18 est faux : 18,518{,}5. Tour 6 : 18,5<1818{,}5<18 est faux : 1818. La température finale est 18 °C18\ °\mathrm{C}. Six tours de 1010 minutes représentent 6060 minutes.

3) Le chauffage a fonctionné aux tours 1, 2 et 4 : 33 tours.

4) Entre 17,5 °C17{,}5\ °\mathrm{C} et 19 °C19\ °\mathrm{C} : dès qu'elle passe sous 1818, le chauffage la remonte de 1,51{,}5 ; au-dessus, elle redescend doucement. C'est le principe de tout thermostat : on n'obtient jamais une température fixe, mais une oscillation autour de la consigne.

5) 1515, puis 16,516{,}5, puis 1818 ; au tour 3, 181818\le 18 est VRAI : le chauffage repart, 19,519{,}5. Puis 1919, puis 18,518{,}5. Le maximum est 19,5 °C19{,}5\ °\mathrm{C}. Un seul symbole change le cas limite 1818, et donc toute la suite.

Le fil : une boucle avec un test se suit tour par tour, en recalculant la condition à chaque tour avec la valeur du moment.

Exercice 15 : Problème : la caisse du cinéma

À l'entrée d'un cinéma, la caissière saisit l'âge de chaque spectateur. Une place coûte 55 dollars pour un spectateur de moins de 1414 ans, et 99 dollars sinon.

Huit spectateurs se présentent, âgés dans l'ordre de 1212, 3535, 88, 1414, 4141, 1313, 1616 et 7070 ans.

Scratch
quand le drapeau vert est cliqué
mettre recette à 0
mettre enfants à 0
répéter 8 fois
    demander « Âge ? » et attendre
    si réponse < 14 alors
        ajouter 5 à recette
        ajouter 1 à enfants
    sinon
        ajouter 9 à recette
  • 1) Quelle est la valeur de recette\mathtt{recette} après les trois premiers spectateurs ?
  • 2) Quelles sont les valeurs de recette\mathtt{recette} et de enfants\mathtt{enfants} à la fin du script ?
  • 3) Quel est le prix moyen d'une place pour ces huit spectateurs ?
  • 4) Le cinéma ajoute un tarif de 66 dollars à partir de 6565 ans. Quelle serait alors la recette pour ces huit spectateurs ?
  • 5) Avec le script d'origine, une file de 2020 spectateurs rapporte 144144 dollars. Combien d'enfants de moins de 1414 ans contient-elle ?

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

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

Réponses

  • 1) 19 dollars
  • 2) 60 dollars, 3 enfants
  • 3) 7,507{,}50 dollars
  • 4) 57 dollars
  • 5) 9 enfants

1) 12<1412<14 : 55 dollars. 3535 : 99 dollars. 8<148<14 : 55 dollars. recette=5+9+5=19\mathtt{recette}=5+9+5=19.

2) Enfants de moins de 1414 ans : 1212, 88 et 1313, soit 33 enfants et 1515 dollars. Le spectateur de 1414 ans paie plein tarif, car 14<1414<14 est faux. Les 55 autres paient 5×9=455\times 9=45 dollars. recette=60\mathtt{recette}=60 et enfants=3\mathtt{enfants}=3.

3) 60÷8=7,560\div 8=7{,}5 dollars par place.

4) Seul le spectateur de 7070 ans est concerné : il paie 66 dollars au lieu de 99. La recette devient 603=5760-3=57 dollars.

5) Si les 2020 spectateurs payaient plein tarif, la recette serait 20×9=18020\times 9=180 dollars. Chaque enfant fait perdre 95=49-5=4 dollars. Il manque 180144=36180-144=36 dollars, donc il y a 36÷4=936\div 4=9 enfants. Contrôle : 9×5+11×9=45+99=1449\times 5+11\times 9=45+99=144 ✓.

Le fil : un test répété dans une boucle trie les données une par une, et le cas limite, ici 1414 ans, se lit sur le symbole de la condition.

Chapitre précédent Aires, volumes et conversions

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 de cinquième ne demande aucune connaissance nouvelle : uniquement la rigueur de suivre un script ligne par ligne, qui est exactement ce que réclameront ensuite les équations en quatrième et la démonstration en troisième.

Site par Studio Squalli