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

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

Ces quinze exercices corrigés couvrent l'algorithmique et la programmation avec Scratch en quatriè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 : un programme fait EXACTEMENT ce qui est écrit, dans l'ordre où c'est écrit. Pour savoir ce qu'il produit, on ne devine pas et on ne lit pas le script « en gros » : on remplit un tableau, une ligne par tour de boucle.

Trois pièges reviennent d'un exercice à l'autre et le corrigé les désigne à chaque fois : échanger deux instructions change le résultat ; mettre n aˋ n+1\mathtt{mettre\ n\ à\ n+1} 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 du polygone 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 Quatriè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.

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

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

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

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é par ses coordonnées (x;y)(x\,;y) sur la scène. Le bloc aller aˋ x: a y: b\mathtt{aller\ à\ x:\ a\ y:\ b} le place directement au point de coordonnées (a;b)(a\,;b) : c'est une position absolue, pas un déplacement.
  • avancer de d\mathtt{avancer\ de\ d} déplace le lutin de dd pas DANS SA DIRECTION ACTUELLE ; tourner de a degreˊs\mathtt{tourner\ de\ a\ degrés} le fait pivoter sur place, sans le déplacer.
  • 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.
  • reˊpeˊter jusquaˋ ce que \mathtt{répéter\ jusqu'à\ ce\ que\ \ldots} teste la condition AVANT chaque tour : si elle est vraie dès le départ, le bloc n'est pas exécuté du tout.
  • Pour fermer un polygone régulier à nn côtés, le lutin tourne à chaque sommet de 360n\dfrac{360^\circ}{n}, et non de l'angle intérieur.
  • Vérification systématique : sur une figure fermée, la somme de toutes les rotations vaut exactement 360360^\circ.

Partie A : les bases (/50)

Exercice 1 : Lire un script de déplacement

Sur la scène de Scratch, le lutin est repéré par ses coordonnées. Il part de l'origine, tourné vers la droite, et le stylo est abaissé : il laisse donc une trace derrière lui.

Le point PP marqué sur la figure a pour coordonnées (180;120)(180\,;120).

-240-180-120-6060120180240-180-120-6060120180départP
Scratch
quand le drapeau vert est cliqué
aller à x: 0 y: 0
s'orienter vers la droite
stylo en position d'écriture
avancer de 100
tourner de 90 degrés vers la gauche
avancer de 60
  • 1) Quelles sont les coordonnées du lutin juste après le bloc avancer de 100\mathtt{avancer\ de\ 100} ?
  • 2) Dans quelle direction le lutin pointe-t-il après le bloc tourner\mathtt{tourner} ?
  • 3) Quelles sont ses coordonnées à la fin du script ?
  • 4) Quelle est la longueur totale du trait tracé ? Quelle est la distance à vol d'oiseau entre le départ et l'arrivée ?
  • 5) On échange les blocs avancer de 100\mathtt{avancer\ de\ 100} et tourner de 90 degreˊs\mathtt{tourner\ de\ 90\ degrés}. Quelles sont alors les coordonnées finales ?
  • 6) Quel bloc unique amènerait le lutin de l'origine directement au point PP ?

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) (100;0)(100\,;0)
  • 2) Vers le haut
  • 3) (100;60)(100\,;60)
  • 4) 160 pas ; 116,6\approx 116{,}6 pas
  • 5) (0;160)(0\,;160)
  • 6) aller à x: 180 y: 120

1) Le lutin part de (0;0)(0\,;0) orienté vers la droite, donc avancer de 100100 pas augmente son abscisse de 100100 et laisse son ordonnée inchangée : il est en (100;0)(100\,;0). Le mot important est « sa direction actuelle » : avancer\mathtt{avancer} ne signifie jamais « vers la droite », mais « tout droit devant soi ».

2) Vers le HAUT. Le lutin regardait vers la droite ; tourner de 9090 degrés vers la gauche, c'est-à-dire dans le sens inverse des aiguilles d'une montre, l'amène à regarder vers le haut de la scène. Ce bloc ne le déplace pas : ses coordonnées restent (100;0)(100\,;0).

3) Le dernier bloc le fait avancer de 6060 pas vers le haut, donc son ordonnée augmente de 6060 : il termine en (100;60)(100\,;60). Le tracé obtenu est une ligne brisée formée de deux segments perpendiculaires, visible sur le corrigé.

4) Le trait mesure 100+60=160100+60=160 pas, car le stylo est resté abaissé pendant les deux déplacements. La distance à vol d'oiseau est celle du segment qui joint (0;0)(0\,;0) à (100;60)(100\,;60) : le triangle étant rectangle, le théorème de Pythagore donne 1002+602=13600116,6\sqrt{100^{2}+60^{2}}=\sqrt{13600}\approx 116{,}6 pas. Le chemin parcouru est donc plus long que la distance à vol d'oiseau, ce qui est toujours le cas dès qu'on ne va pas tout droit.

5) Le lutin tourne d'abord, donc il regarde vers le haut AVANT d'avancer. Il monte alors de 100100 pas, en (0;100)(0\,;100), puis de 6060 pas encore, et termine en (0;160)(0\,;160). Le résultat est complètement différent de celui de la question 3, alors que les blocs utilisés sont exactement les mêmes : l'ORDRE des instructions fait partie du programme au même titre que les instructions elles-mêmes. C'est le fil de toute la série.

6) Le bloc aller aˋ x: 180 y: 120\mathtt{aller\ à\ x:\ 180\ y:\ 120}. Ce bloc place le lutin aux coordonnées indiquées quelles que soient sa position et sa direction de départ : il ne trace d'ailleurs un segment que parce que le stylo est abaissé. Il ne faut pas le confondre avec un déplacement relatif : aller aˋ x: 180 y: 120\mathtt{aller\ à\ x:\ 180\ y:\ 120} ne veut pas dire « avancer de 180180 vers la droite et de 120120 vers le haut », ce qui, depuis (100;60)(100\,;60), aurait conduit en (280;180)(280\,;180), hors de la scène.

-240-180-120-6060120180240-180-120-6060120180(0 ; 0)(100 ; 0)(100 ; 60)

Exercice 2 : Le carré et le polygone régulier

Le script ci-dessous trace une figure fermée. La figure de l'énoncé montre un PENTAGONE RÉGULIER, c'est-à-dire un polygone à cinq côtés de même longueur : chacun de ses angles intérieurs mesure 108108^\circ.

108°
Scratch
quand le drapeau vert est cliqué
stylo en position d'écriture
répéter 4 fois
    avancer de 80
    tourner de 90 degrés vers la droite
  • 1) Quelle figure le script trace-t-il ?
  • 2) Quelle est la longueur totale du trait tracé ?
  • 3) Pourquoi le lutin tourne-t-il de 9090 degrés et non d'un autre angle ?
  • 4) Pour tracer le pentagone régulier de la figure, de combien de degrés le lutin doit-il tourner à chaque sommet ? Attention, ce n'est pas 108108.
  • 5) Écrivez le script qui trace ce pentagone régulier de côté 8080.
  • 6) Quel angle faudrait-il pour un polygone régulier à 2424 côtés ? À quoi ressemblerait la figure ?

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) Un carré de côté 80
  • 2) 320 pas
  • 3) 3604=90\frac{360}{4}=90
  • 4) 72°
  • 5) répéter 5 fois, tourner de 72 degrés
  • 6) 15° : presque un cercle

1) Un CARRÉ de côté 8080 pas. Le lutin répète quatre fois la même paire d'actions : avancer de 8080, 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 80\mathtt{avancer\ de\ 80} est exécuté quatre fois, donc le trait mesure 4×80=3204\times 80=320 pas, ce qui est le périmètre du carré. Attention à ne pas compter les blocs tourner\mathtt{tourner} : ils ne tracent rien, puisqu'ils ne déplacent pas le lutin.

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.

4) Le lutin doit tourner de 3605=72\dfrac{360}{5}=72^\circ. L'angle de 108108^\circ est l'angle INTÉRIEUR du pentagone, celui que l'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, qui est le supplémentaire, soit 180108=72180-108=72^\circ ✓. La cohérence est totale, puisque 5×72=3605\times 72=360. Confondre les deux est le piège numéro un du chapitre : avec 108108^\circ, la figure ne se referme pas et le lutin part en étoile.

5) Il suffit de changer deux nombres : reˊpeˊter 5 fois\mathtt{répéter\ 5\ fois}, avancer de 80\mathtt{avancer\ de\ 80}, tourner de 72 degreˊs vers la droite\mathtt{tourner\ de\ 72\ degrés\ vers\ la\ droite}. Le périmètre de ce pentagone vaut 5×80=4005\times 80=400 pas, plus grand que celui du carré alors que le côté est identique.

6) Il faudrait 36024=15\dfrac{360}{24}=15^\circ. Avec des côtés courts, disons 2020 pas, la figure obtenue serait pratiquement indiscernable d'un CERCLE de périmètre 24×20=48024\times 20=480 pas : plus le nombre de côtés augmente, plus l'angle de rotation diminue et plus le polygone régulier ressemble à un cercle. C'est d'ailleurs ainsi que l'on trace un cercle en programmation, et c'est la même idée qui permet d'approcher le nombre π\pi.

carré : 4 côtés, 90°pentagone : 5 côtés, 72°

Exercice 3 : Suivre une variable tour par tour

Une variable est une case mémoire qui ne contient qu'une seule valeur à la fois. Le bloc mettre nombre aˋ nombre23\mathtt{mettre\ nombre\ à\ nombre*2-3} se lit de droite à gauche : on calcule d'abord nombre×23\mathtt{nombre}\times 2-3 avec l'ancienne valeur, puis on range le résultat dans la case, effaçant l'ancienne valeur.

Scratch
quand le drapeau vert est cliqué
mettre nombre à 5
répéter 4 fois
    mettre nombre à nombre * 2 - 3
dire nombre
  • 1) Recopiez et complétez le tableau des valeurs prises par nombre\mathtt{nombre} après chacun des quatre tours.
  • 2) Que dit le lutin à la fin du script ?
  • 3) On remplace mettre nombre aˋ 5\mathtt{mettre\ nombre\ à\ 5} par mettre nombre aˋ 3\mathtt{mettre\ nombre\ à\ 3}. Que dit alors le lutin ?
  • 4) Résolvez l'équation x=2x3x=2x-3 et expliquez le lien avec la question 3.
  • 5) On part maintenant de 22. Donnez les quatre valeurs successives.
  • 6) Expliquez, sans faire le calcul tour par tour, pourquoi le départ à 55 donne 3535 et le départ à 22 donne 13-13.

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) 7 ; 11 ; 19 ; 35
  • 2) 35
  • 3) 3
  • 4) x=3x=3 : point fixe
  • 5) 1 ; 1-1 ; 5-5 ; 13-13
  • 6) L'écart à 3 double

1) On remplit une ligne par tour, en utilisant à chaque fois la valeur de la ligne précédente. Tour 1 : 5×23=75\times 2-3=7. Tour 2 : 7×23=117\times 2-3=11. Tour 3 : 11×23=1911\times 2-3=19. Tour 4 : 19×23=3519\times 2-3=35. Le tableau est donc 55, puis 77, 1111, 1919, 3535. Cette colonne de calculs est la seule méthode fiable : lire le script « en gros » ne permet jamais de prévoir une valeur.

2) Le lutin dit 3535, la valeur contenue dans la variable après le quatrième et dernier tour. Le bloc dire\mathtt{dire} est en dehors de la boucle, donc il n'est exécuté qu'une seule fois, à la fin. S'il avait été à l'intérieur, le lutin aurait annoncé successivement 77, 1111, 1919 puis 3535.

3) Le lutin dit 33. En effet 3×23=33\times 2-3=3 : la valeur ne change pas, et elle ne changera donc jamais, quel que soit le nombre de tours. La boucle tourne bien quatre fois, mais elle recopie chaque fois la même valeur.

4) x=2x3x=2x-3 donne x2x=3x-2x=-3, soit x=3-x=-3 et x=3x=3. Ce nombre 33 est appelé POINT FIXE de la transformation : c'est l'unique valeur que le programme laisse inchangée, et c'est exactement ce qu'on a observé à la question 3. Une équation du premier degré vient donc de répondre à une question de programmation, ce qui est l'un des intérêts du chapitre.

5) 2×23=12\times 2-3=1, puis 1×23=11\times 2-3=-1, puis 1×23=5-1\times 2-3=-5, puis 5×23=13-5\times 2-3=-13. Les valeurs sont 11, 1-1, 5-5, 13-13 : elles descendent de plus en plus vite. Attention au calcul avec les nombres relatifs, où 1×23-1\times 2-3 vaut 5-5 et non 1-1.

6) Tout se lit sur l'ÉCART au point fixe 33. Si la valeur vaut 3+e3+e, alors le tour suivant donne 2(3+e)3=3+2e2(3+e)-3=3+2e : l'écart au point fixe est simplement DOUBLÉ à chaque tour. Partant de 55, l'écart vaut +2+2, puis +4+4, +8+8, +16+16, +32+32, et la valeur finale est 3+32=353+32=35 ✓. Partant de 22, l'écart vaut 1-1, puis 2-2, 4-4, 8-8, 16-16, et la valeur finale est 316=133-16=-13 ✓. Une valeur de départ égale à 33 a un écart nul, qui reste nul : on retrouve la question 3. C'est ce raisonnement qui permet de prévoir le résultat après 2020 tours sans remplir vingt lignes.

Exercice 4 : Le test si sinon et son seuil

Le bloc si  alors  sinon\mathtt{si\ \ldots\ alors\ \ldots\ sinon} n'exécute qu'une seule des deux branches. Le graphique ci-dessous représente le résultat annoncé par le lutin en fonction du nombre saisi.

Le point plein et le petit rond vide, tous deux d'abscisse 1010, ne sont pas un détail : ils disent laquelle des deux branches s'applique exactement en 1010.

2468101214161820-551015202530354045n + 202nn saisirésultat annoncé
Scratch
quand le drapeau vert est cliqué
demander "Choisis un nombre entier" et attendre
mettre n à réponse
si n > 10 alors
    mettre resultat à n * 2
sinon
    mettre resultat à n + 20
dire resultat
  • 1) Quel résultat le lutin annonce-t-il pour n=4n=4, pour n=10n=10 et pour n=11n=11 ?
  • 2) Pourquoi le résultat DIMINUE-t-il quand on passe de n=10n=10 à n=11n=11 ?
  • 3) Lisez sur le graphique le résultat pour n=15n=15, puis vérifiez-le par le script.
  • 4) Combien de valeurs entières de nn donnent le résultat 3030 ? Lesquelles ?
  • 5) À partir de quelle valeur entière de nn le résultat dépasse-t-il 4040 ?
  • 6) On remplace la condition n>10\mathtt{n>10} par n10\mathtt{n\geq 10}. Qu'est-ce que cela change ?

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) 24 ; 30 ; 22
  • 2) Changement de branche
  • 3) 30
  • 4) Deux : 10 et 15
  • 5) n=21n=21
  • 6) Seul n=10n=10 change : 20

1) Pour n=4n=4 : la condition 4>104>10 est fausse, donc c'est la branche sinon\mathtt{sinon} qui s'exécute et le lutin annonce 4+20=244+20=24. Pour n=10n=10 : la condition 10>1010>10 est FAUSSE, car l'inégalité est stricte ; c'est encore la branche sinon\mathtt{sinon}, et le résultat est 10+20=3010+20=30. Pour n=11n=11 : la condition est vraie, donc c'est la branche alors\mathtt{alors} et le résultat est 11×2=2211\times 2=22.

2) Parce qu'on change de BRANCHE. Jusqu'à 1010 inclus, le programme ajoute 2020 ; à partir de 1111, il double. Or à cet endroit, doubler donne moins qu'ajouter 2020 : 2222 contre 3030. Le graphique montre bien ce SAUT, avec le point plein en (10;30)(10\,;30) et le rond vide en (10;20)(10\,;20), qui marque la valeur que la deuxième branche prendrait si elle s'appliquait en 1010, ce qui n'est pas le cas. Un programme défini par un test peut parfaitement donner un résultat plus petit pour une entrée plus grande : c'est ce qui rend ces programmes surprenants et ce qui explique la plupart des erreurs de facturation dans la vraie vie.

3) Sur le graphique, la deuxième portion passe par le point d'abscisse 1515 et d'ordonnée 3030. Vérification par le script : 15>1015>10 est vrai, donc le résultat vaut 15×2=3015\times 2=30 ✓. Lecture graphique et calcul se confirment mutuellement, ce qui est la meilleure façon de vérifier une lecture.

4) DEUX valeurs : n=10n=10, par la branche sinon\mathtt{sinon}, et n=15n=15, par la branche alors\mathtt{alors}. Le graphique le montre immédiatement, puisque la droite horizontale d'ordonnée 3030 rencontre le tracé en deux points. Un programme à deux branches peut donc renvoyer la même sortie pour deux entrées différentes, ce qui interdit de « remonter » du résultat vers la donnée sans précaution.

5) Il faut être dans la branche alors\mathtt{alors}, car la branche sinon\mathtt{sinon} ne dépasse jamais 3030. On résout donc n×2>40n\times 2>40, soit n>20n>20 : la première valeur entière qui convient est n=21n=21, qui donne 4242. Pour n=20n=20 le résultat vaut exactement 4040, ce qui ne DÉPASSE pas 4040 : la lecture précise du mot « dépasser » vaut ici un point entier.

6) Cela ne change qu'une seule valeur, mais elle change beaucoup : pour n=10n=10, la condition devient vraie, et le résultat passe de 3030 à 10×2=2010\times 2=20. Toutes les autres entrées sont inchangées. Sur le graphique, cela revient à échanger le point plein et le rond vide. C'est le genre de détail qui, dans un programme de caisse, fait payer le mauvais prix à un seul client sur mille et reste invisible pendant des mois.

Exercice 5 : La boucle répéter jusqu'à et son compteur

Une boucle reˊpeˊter jusquaˋ ce que\mathtt{répéter\ jusqu'à\ ce\ que} ne connaît pas à l'avance son nombre de tours : elle s'arrête quand une condition devient vraie. La condition est testée AVANT chaque tour.

Scratch
quand le drapeau vert est cliqué
mettre somme à 0
mettre compteur à 0
répéter jusqu'à ce que somme > 50
    mettre compteur à compteur + 1
    mettre somme à somme + compteur * 2
dire compteur
  • 1) Recopiez et complétez un tableau à deux colonnes donnant compteur\mathtt{compteur} et somme\mathtt{somme} à la fin de chaque tour.
  • 2) Que dit le lutin à la fin, et que vaut alors somme\mathtt{somme} ?
  • 3) Vérifiez que somme\mathtt{somme} vaut toujours compteur×(compteur+1)\mathtt{compteur}\times(\mathtt{compteur}+1).
  • 4) On remplace la condition par somme>500\mathtt{somme>500}. Que dit alors le lutin ?
  • 5) On supprime le bloc mettre compteur aˋ compteur+1\mathtt{mettre\ compteur\ à\ compteur+1}. Que se passe-t-il ?
  • 6) On remplace la condition par somme>0\mathtt{somme>0}. Combien de tours la boucle effectue-t-elle ?

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) 2, 6, 12, 20, 30, 42, 56
  • 2) 7, somme 56
  • 3) k(k+1)k(k+1) vérifié
  • 4) 22
  • 5) Boucle sans fin
  • 6) Un seul tour

1) À chaque tour, le compteur augmente de 11 et la somme augmente du double du nouveau compteur. Tour 1 : compteur 11, somme 0+2=20+2=2. Tour 2 : compteur 22, somme 2+4=62+4=6. Tour 3 : compteur 33, somme 6+6=126+6=12. Tour 4 : compteur 44, somme 12+8=2012+8=20. Tour 5 : compteur 55, somme 20+10=3020+10=30. Tour 6 : compteur 66, somme 30+12=4230+12=42. Tour 7 : compteur 77, somme 42+14=5642+14=56. La condition 56>5056>50 est alors vraie, et la boucle s'arrête.

2) Le lutin dit 77, et somme\mathtt{somme} vaut 5656. Attention : la boucle ne s'arrête pas à 5050 mais au premier dépassement STRICT de 5050. À la fin du sixième tour, la somme valait 4242, c'est-à-dire moins que 5050 : le septième tour était donc obligatoire, et il fait passer d'un coup à 5656.

3) Après le tour numéro kk, la somme vaut 2×(1+2++k)2\times(1+2+\ldots+k), c'est-à-dire le double de la somme des kk premiers entiers. Or cette somme des entiers vaut k×(k+1)2\dfrac{k\times(k+1)}{2}, donc somme=k×(k+1)\mathtt{somme}=k\times(k+1). Vérifications : pour k=4k=4, 4×5=204\times 5=20 ✓ ; pour k=7k=7, 7×8=567\times 8=56 ✓. Cette formule évite de remplir le tableau quand le nombre de tours devient grand.

4) On cherche le premier entier kk tel que k×(k+1)>500k\times(k+1)>500. Comme 21×22=46221\times 22=462, encore insuffisant, et 22×23=506>50022\times 23=506>500 ✓, la boucle s'arrête au tour 2222 : le lutin dit 2222, et la somme vaut alors 506506. Remplir un tableau de vingt-deux lignes aurait pris dix minutes ; la formule de la question 3 rend la réponse immédiate.

5) La variable compteur\mathtt{compteur} reste à 00, donc chaque tour ajoute 0×2=00\times 2=0 à la somme, qui reste indéfiniment à 00. La condition somme>50\mathtt{somme>50} n'est jamais vraie : la boucle tourne SANS FIN et le programme se bloque. C'est le défaut classique des boucles conditionnelles : il faut toujours vérifier que le corps de la boucle fait bien progresser la variable testée.

6) Un seul tour. Au moment du premier test, somme\mathtt{somme} vaut 00, et 0>00>0 est faux, donc la boucle exécute un tour, ce qui porte la somme à 22. Au test suivant, 2>02>0 est vrai et la boucle s'arrête. Le lutin dit donc 11. Le point à retenir est que la condition est testée AVANT chaque tour : si elle avait été vraie dès le départ, la boucle n'aurait effectué aucun tour du tout.

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

Exercice 6 : Boucles imbriquées : la frise de carrés

Une boucle peut en contenir une autre : on parle alors de boucles imbriquées. La boucle intérieure s'exécute entièrement à chaque tour de la boucle extérieure.

Ici, le stylo est abaissé pendant la boucle intérieure et relevé pendant le déplacement qui sépare deux motifs.

Scratch
quand le drapeau vert est cliqué
aller à x: -180 y: 0
s'orienter vers la droite
répéter 5 fois
    stylo en position d'écriture
    répéter 4 fois
        avancer de 40
        tourner de 90 degrés vers la droite
    relever le stylo
    avancer de 60
  • 1) Décrivez précisément la figure obtenue.
  • 2) Pourquoi le lutin se retrouve-t-il à son point de départ après chaque boucle intérieure ?
  • 3) Combien de fois le bloc avancer de 40\mathtt{avancer\ de\ 40} est-il exécuté au total ? Quelle est la longueur totale du trait tracé ?
  • 4) Quel est l'écart entre deux carrés voisins ?
  • 5) Quelle est la largeur totale de la frise, du bord gauche du premier carré au bord droit du dernier ?
  • 6) La scène de Scratch mesure 480480 pas de large. Combien de carrés au maximum ce script pourrait-il dessiner sans sortir de la scène ?

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) Cinq carrés de côté 40
  • 2) Rotation totale de 360°
  • 3) 20 fois, 800 pas
  • 4) 20 pas
  • 5) 280 pas
  • 6) 8 carrés

1) On obtient une frise de CINQ carrés de côté 4040 pas, alignés horizontalement et séparés les uns des autres. La boucle extérieure se répète cinq fois, et chacun de ses tours trace un carré complet puis déplace le lutin vers la droite sans tracer. Le premier carré commence en (180;0)(-180\,;0).

2) Parce que la boucle intérieure fait tourner le lutin quatre fois de 9090 degrés, soit 4×90=3604\times 90=360 degrés au total : un tour complet. Un lutin qui a tourné d'un tour complet regarde de nouveau dans sa direction de départ, et comme il a parcouru les quatre côtés d'un carré, il est aussi revenu au même point. C'est ce qui rend la frise régulière : chaque motif repart exactement dans les mêmes conditions que le précédent.

3) Le bloc est à l'intérieur des deux boucles, donc il est exécuté 5×4=205\times 4=20 fois. La longueur tracée vaut 20×40=80020\times 40=800 pas. Le déplacement de 6060 pas, lui, ne trace rien puisque le stylo est relevé : le lutin parcourt en réalité 800+5×60=1100800+5\times 60=1100 pas, mais il n'en dessine que 800800. Confondre distance parcourue et longueur tracée est l'erreur classique de cet exercice.

4) Le lutin avance de 6060 pas depuis le coin où il a fini son carré, mais le carré lui-même occupe 4040 pas de large : l'écart entre le bord droit d'un carré et le bord gauche du suivant vaut donc 6040=2060-40=20 pas.

5) La frise contient cinq carrés de 4040 pas et quatre écarts de 2020 pas, car il y a toujours un écart de moins que de motifs. Sa largeur vaut donc 5×40+4×20=200+80=2805\times 40+4\times 20=200+80=280 pas. Autre façon de compter : le lutin a avancé quatre fois de 6060 pas entre les motifs, puis il reste 4040 pas pour le dernier carré, soit 4×60+40=2804\times 60+40=280 ✓.

6) Avec nn carrés, la largeur vaut 40n+20(n1)=60n2040n+20(n-1)=60n-20 pas. On cherche le plus grand entier nn tel que 60n2048060n-20\leq 480, c'est-à-dire 60n50060n\leq 500 et n8,33n\leq 8{,}33. La réponse est donc 88 carrés, qui occupent 60×820=46060\times 8-20=460 pas ✓, alors que 99 carrés en occuperaient 520520, soit plus que la scène. Il faut bien arrondir vers le BAS : arrondir 8,338{,}33 à 88 n'est pas ici une question de précision mais de place disponible.

cinq carrés de côté 40, espacés de 20 pas

Exercice 7 : Deux programmes de calcul et leur démonstration

Programme A : « Choisir un nombre. Lui ajouter 33. Multiplier le résultat par 22. Soustraire le double du nombre choisi. » C'est ce programme que traduit le script ci-dessous.

Programme B : « Choisir un nombre. Le multiplier par 44. Ajouter 66. Diviser le résultat par 22. Soustraire 33. »

Scratch
quand le drapeau vert est cliqué
demander "Choisis un nombre" et attendre
mettre nombre à réponse
mettre a à (nombre + 3) * 2 - 2 * nombre
dire a
  • 1) Appliquez le programme A aux nombres 55, 1010 et 4-4.
  • 2) Quelle conjecture pouvez-vous formuler ?
  • 3) Démontrez cette conjecture par le calcul littéral.
  • 4) Appliquez le programme B aux nombres 55 et 4-4, puis démontrez ce que fait ce programme.
  • 5) Écrivez le bloc Scratch qui calcule le programme B dans une variable b\mathtt{b}.
  • 6) Pour quelle valeur du nombre choisi les deux programmes donnent-ils le même résultat ?

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) 6 ; 6 ; 6
  • 2) Toujours 6
  • 3) 2(x+3)2x=62(x+3)-2x=6
  • 4) 10 et 8-8 : le double
  • 5) mettre b à (nombre*4+6)/2-3
  • 6) x=3x=3

1) Avec 55 : 5+3=85+3=8, puis 8×2=168\times 2=16, puis 162×5=1610=616-2\times 5=16-10=6. Avec 1010 : 10+3=1310+3=13, puis 2626, puis 2620=626-20=6. Avec 4-4 : 4+3=1-4+3=-1, puis 1×2=2-1\times 2=-2, puis 22×(4)=2+8=6-2-2\times(-4)=-2+8=6. Attention au dernier calcul : soustraire le double d'un nombre négatif revient à AJOUTER, ce qui est l'erreur de signe la plus fréquente ici.

2) Le programme A semble donner 66 quel que soit le nombre choisi. Trois exemples ne démontrent rien, mais ils suffisent à formuler la conjecture : c'est exactement le rôle que joue un programme informatique dans un raisonnement, celui de fournir vite des cas particuliers.

3) On appelle xx le nombre choisi. Le programme calcule 2(x+3)2x=2x+62x=62(x+3)-2x=2x+6-2x=6. Le terme en xx disparaît, donc le résultat vaut 66 pour TOUTE valeur de xx, y compris décimale ou négative. C'est ce que trois exemples ne pourront jamais prouver et que deux lignes de calcul littéral établissent définitivement.

4) Avec 55 : 5×4=205\times 4=20, puis 2626, puis 1313, puis 1010. Avec 4-4 : 16-16, puis 10-10, puis 5-5, puis 8-8. On conjecture que le programme B DOUBLE le nombre choisi, et l'on démontre : 4x+623=2x+33=2x\dfrac{4x+6}{2}-3=2x+3-3=2x ✓. Les deux vérifications concordent, car 2×5=102\times 5=10 et 2×(4)=82\times(-4)=-8.

5) mettre b aˋ (nombre4+6)/23\mathtt{mettre\ b\ à\ (nombre*4+6)/2-3}. L'ordre des opérations écrites dans le bloc doit reproduire exactement l'énoncé, et les parenthèses sont indispensables : sans elles, nombre4+6/23\mathtt{nombre*4+6/2-3} calculerait 4x+33=4x4x+3-3=4x, soit le double du résultat attendu. Une parenthèse oubliée ne provoque aucun message d'erreur, le programme donne simplement un résultat faux.

6) On résout 6=2x6=2x, donc x=3x=3. Vérification : le programme A donne 66 et le programme B donne 2×3=62\times 3=6 ✓. Pour toute autre valeur, les deux programmes diffèrent, et l'écart entre eux vaut 2x6|2x-6|, qui grandit à mesure qu'on s'éloigne de 33. On retrouve ici le point fixe rencontré à l'exercice 3 : une équation du premier degré répond à une question posée sur des programmes.

Exercice 8 : Cinq affirmations à corriger

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

  • 1) « Dans un script, avancer de 50\mathtt{avancer\ de\ 50} puis tourner de 90 degreˊs\mathtt{tourner\ de\ 90\ degrés} donne le même résultat que tourner de 90 degreˊs\mathtt{tourner\ de\ 90\ degrés} puis avancer de 50\mathtt{avancer\ de\ 50}. »
  • 2) « Le bloc mettre n aˋ n+1\mathtt{mettre\ n\ à\ n+1} est impossible, car un nombre ne peut pas être égal à lui-même plus un. »
  • 3) « Pour tracer un pentagone régulier, le lutin doit tourner de 108108 degrés à chaque sommet. »
  • 4) « La boucle reˊpeˊter jusquaˋ ce que somme>50\mathtt{répéter\ jusqu'à\ ce\ que\ somme>50} s'arrête dès que somme\mathtt{somme} vaut exactement 5050. »
  • 5) « Le bloc aller aˋ x: 30 y: 40\mathtt{aller\ à\ x:\ 30\ y:\ 40} fait avancer le lutin de 3030 pas vers la droite et de 4040 pas vers le haut. »

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;0)(50\,;0) contre (0;50)(0\,;50)
  • 2) Affectation : 7 devient 8
  • 3) 72°
  • 4) Arrêt au dépassement strict
  • 5) Position absolue (30;40)(30\,;40)

1) FAUX. Énoncé correct : « échanger deux instructions change en général le résultat ». Contre-exemple chiffré, en partant de l'origine tourné vers la droite : dans le premier ordre, le lutin arrive en (50;0)(50\,;0) ; dans le second, il tourne d'abord, donc il monte et arrive en (0;50)(0\,;50). Ce sont deux points différents, distants de 502+50270,7\sqrt{50^{2}+50^{2}}\approx 70{,}7 pas. L'ordre fait partie du programme.

2) FAUX, et l'erreur porte sur le sens du mot « à ». Énoncé correct : « mettre n aˋ n+1\mathtt{mettre\ n\ à\ n+1} range dans la case n\mathtt{n} le résultat du calcul n+1\mathtt{n}+1 effectué avec l'ancienne valeur ». Ce n'est pas une égalité mathématique mais une AFFECTATION : si n\mathtt{n} valait 77, il vaut 88 après le bloc. C'est d'ailleurs ce bloc qui fait fonctionner tous les compteurs.

3) FAUX. Énoncé correct : « le lutin doit tourner de 3605=72\dfrac{360}{5}=72 degrés ». Les 108108 degrés sont l'angle INTÉRIEUR du pentagone ; le lutin, lui, tourne de l'angle extérieur, supplémentaire du précédent, et 180108=72180-108=72 ✓. Avec 108108 degrés, la somme des rotations vaudrait 5×108=5405\times 108=540 degrés, soit un tour et demi : la figure ne se refermerait pas.

4) FAUX. Énoncé correct : « la boucle s'arrête au premier tour où somme\mathtt{somme} DÉPASSE strictement 5050 ». Tant que la somme vaut exactement 5050, la condition 50>5050>50 est fausse et un tour supplémentaire est effectué. Pour arrêter à 5050, il faudrait écrire somme50\mathtt{somme\geq 50}. La différence entre les deux symboles vaut un tour de boucle entier, et parfois beaucoup plus.

5) FAUX. Énoncé correct : « ce bloc place le lutin AU POINT de coordonnées (30;40)(30\,;40), quelle que soit sa position de départ ». Il s'agit d'une position absolue et non d'un déplacement. Si le lutin était en (100;100)(100\,;100), la version fausse le conduirait en (130;140)(130\,;140), alors qu'il se retrouve en réalité en (30;40)(30\,;40) : le lutin RECULE, ce qui est l'inverse de ce que l'affirmation prédit.

Exercice 9 : Problème : le jeu de dés

Ce script simule 6060 lancers d'un dé équilibré à six faces. Le joueur gagne 33 jetons quand le dé dépasse 44, et perd 11 jeton sinon.

Le diagramme en barres donne les effectifs réellement obtenus lors d'une exécution du programme.

1921131041258610024681012effectifs observés sur 60 lancers
Scratch
quand le drapeau vert est cliqué
mettre gains à 0
répéter 60 fois
    mettre de à nombre aléatoire entre 1 et 6
    si de > 4 alors
        mettre gains à gains + 3
    sinon
        mettre gains à gains - 1
dire gains
  • 1) Quelle est la probabilité que la condition de>4\mathtt{de>4} soit vraie à un lancer ?
  • 2) Sur 6060 lancers, combien de fois s'attend-on à ce qu'elle soit vraie ?
  • 3) Quel gain total peut-on attendre en moyenne ?
  • 4) Lisez sur le diagramme combien de fois la condition a été vraie lors de cette exécution, puis donnez la fréquence correspondante.
  • 5) Quel nombre le lutin a-t-il annoncé à la fin de cette exécution ?
  • 6) Le jeu est-il équitable ? Quelle perte faudrait-il fixer, à la place de 11 jeton, pour qu'il le devienne ?

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) 13\frac{1}{3}
  • 2) 20 fois
  • 3) 20 jetons
  • 4) 18 : fréquence 0,30{,}3
  • 5) 12 jetons
  • 6) Non ; perte de 1,51{,}5 jeton

1) La condition de>4\mathtt{de>4} est vraie pour les faces 55 et 66 seulement, soit 22 faces sur 66 : la probabilité vaut 26=130,33\dfrac{2}{6}=\dfrac{1}{3}\approx 0{,}33. Attention à l'inégalité stricte : la face 44 ne convient PAS, alors qu'elle conviendrait avec de4\mathtt{de\geq 4}, ce qui ferait passer la probabilité à 12\dfrac{1}{2}.

2) On attend en moyenne 60×13=2060\times\dfrac{1}{3}=20 lancers gagnants, et donc 4040 lancers perdants. Ce sont des valeurs MOYENNES : une exécution particulière donnera presque toujours autre chose, comme le montre la question 4.

3) Le gain attendu vaut 20×340×1=6040=2020\times 3-40\times 1=60-40=20 jetons. Le joueur gagne donc en moyenne 2060=13\dfrac{20}{60}=\dfrac{1}{3} de jeton par lancer : sur le long terme, ce jeu lui est favorable.

4) La condition est vraie pour les faces 55 et 66, dont les effectifs se lisent sur le diagramme : 88 et 1010, soit 1818 lancers gagnants. La fréquence vaut 1860=0,3\dfrac{18}{60}=0{,}3, à comparer à la probabilité 130,333\dfrac{1}{3}\approx 0{,}333 : l'écart est normal sur seulement 6060 lancers. Relancer le programme donnerait d'ailleurs un diagramme différent, puisque le bloc nombre aleˊatoire\mathtt{nombre\ aléatoire} retire un nouveau nombre à chaque fois.

5) Il y a eu 1818 lancers gagnants et 6018=4260-18=42 lancers perdants, donc le lutin a annoncé 18×342×1=5442=1218\times 3-42\times 1=54-42=12 jetons. C'est moins que les 2020 jetons attendus, sans que cela remette en cause le calcul de la question 3 : une moyenne théorique n'est jamais une promesse sur une partie.

6) Le jeu n'est pas équitable, il est favorable au joueur, puisque le gain moyen par lancer vaut +13+\dfrac{1}{3} jeton au lieu de 00. Pour qu'il le devienne avec une perte de LL jetons, il faut que le gain moyen s'annule : 13×323×L=0\dfrac{1}{3}\times 3-\dfrac{2}{3}\times L=0, donc 1=2L31=\dfrac{2L}{3} et L=1,5L=1{,}5 jeton. Vérification sur 6060 lancers en moyenne : 20×340×1,5=6060=020\times 3-40\times 1{,}5=60-60=0 ✓. Autrement dit, comme on perd deux fois plus souvent qu'on ne gagne, la perte doit être deux fois plus petite que le gain.

Exercice 10 : Problème : le tarif du stationnement

Un stationnement affiche ses tarifs sous forme d'un programme : les deux premières heures coûtent 33 dollars chacune, puis chaque heure supplémentaire coûte 22 dollars.

Le graphique représente le prix payé en fonction de la durée.

12345678910-5510152025prix = 3hprix = 6 + 2(h - 2)durée en heuresprix en dollars
Scratch
quand le drapeau vert est cliqué
demander "Combien d'heures ?" et attendre
mettre h à réponse
si h <= 2 alors
    mettre prix à h * 3
sinon
    mettre prix à 6 + (h - 2) * 2
dire prix
  • 1) Calculez le prix pour 11 heure, 22 heures, 55 heures et 88 heures.
  • 2) Lisez sur le graphique le prix pour 44 heures, puis vérifiez-le à l'aide du script.
  • 3) Le prix est-il proportionnel à la durée ? Justifiez par un calcul.
  • 4) À partir de combien d'heures le prix dépasse-t-il 2020 dollars ?
  • 5) Quel est le prix moyen d'une heure pour un stationnement de 88 heures ?
  • 6) Le graphique de l'exercice 4 présentait un saut, celui-ci n'en présente pas. Expliquez pourquoi.

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) 3 ; 6 ; 12 ; 18 dollars
  • 2) 10 dollars
  • 3) Non : 32,43\neq 2{,}4
  • 4) 10 heures
  • 5) 2,252{,}25 dollars
  • 6) Les deux formules se rejoignent en 2 h

1) Pour 11 heure : la condition 121\leq 2 est vraie, donc le prix vaut 1×3=31\times 3=3 dollars. Pour 22 heures : la condition est encore vraie, car l'inégalité est large, et le prix vaut 2×3=62\times 3=6 dollars. Pour 55 heures : la condition est fausse, donc le prix vaut 6+(52)×2=6+6=126+(5-2)\times 2=6+6=12 dollars. Pour 88 heures : 6+(82)×2=6+12=186+(8-2)\times 2=6+12=18 dollars.

2) Sur le graphique, la deuxième portion passe par le point d'abscisse 44 et d'ordonnée 1010. Vérification : 6+(42)×2=6+4=106+(4-2)\times 2=6+4=10 dollars ✓. La lecture graphique et le script donnent bien la même chose, ce qui valide à la fois la lecture et le calcul.

3) NON. Pour une situation de proportionnalité, le quotient du prix par la durée devrait être constant. Or 31=3\dfrac{3}{1}=3 pour une heure, mais 125=2,4\dfrac{12}{5}=2{,}4 pour cinq heures : les deux quotients diffèrent, donc il n'y a pas proportionnalité. Graphiquement, cela se voit aussi : la représentation n'est pas une droite unique passant par l'origine, mais une ligne brisée qui change de pente en 22 heures.

4) Le prix ne dépasse 2020 dollars que dans la deuxième branche. On résout 6+(h2)×2>206+(h-2)\times 2>20, soit (h2)×2>14(h-2)\times 2>14, puis h2>7h-2>7 et h>9h>9. Il faut donc dépasser 99 heures : à 99 heures pile, le prix vaut exactement 6+14=206+14=20 dollars, ce qui ne dépasse pas 2020 ; à 1010 heures, il vaut 2222 dollars ✓.

5) Le prix moyen de l'heure vaut 188=2,25\dfrac{18}{8}=2{,}25 dollars. Il est inférieur au tarif des deux premières heures, 33 dollars, et supérieur au tarif des heures suivantes, 22 dollars : c'est logique, puisque la facture mélange les deux tarifs. Plus la durée augmente, plus ce prix moyen se rapproche de 22 dollars sans jamais l'atteindre.

6) Parce qu'ici les deux formules donnent la MÊME valeur au point de bascule : à 22 heures, la première donne 2×3=62\times 3=6 et la seconde donnerait 6+(22)×2=66+(2-2)\times 2=6 également. Les deux portions se rejoignent, la ligne est continue et le point de bascule n'a plus besoin d'un point plein et d'un rond vide. Dans l'exercice 4, au contraire, les deux branches donnaient 3030 et 2020 en n=10n=10, d'où le saut. C'est ce que vérifie tout bon tarif : personne n'accepterait de payer moins cher en restant plus longtemps.

Partie C : les classiques (/50)

Exercice 11 : Le triangle équilatéral et l'étoile

Un lutin trace une figure fermée quand, à la fin du script, il est revenu à son point de départ. La somme de ses rotations est alors un nombre entier de tours complets, c'est-à-dire un multiple de 360360^\circ. Le script ci-dessous part d'un lutin stylo abaissé.

Scratch
quand le drapeau vert est cliqué
stylo en position d'écriture
répéter 3 fois
    avancer de 100
    tourner de 120 degrés vers la droite
  • 1) Quelle figure ce script trace-t-il ?
  • 2) L'angle intérieur d'un triangle équilatéral mesure 6060^\circ. Pourquoi le lutin tourne-t-il de 120120^\circ ?
  • 3) Quel nombre de répétitions et quel angle faut-il pour tracer un hexagone régulier ?
  • 4) On écrit reˊpeˊter 5 fois\mathtt{répéter\ 5\ fois} avec tourner de 144 degreˊs\mathtt{tourner\ de\ 144\ degrés}. Quelle est la somme des rotations ? Combien de tours complets le lutin a-t-il faits, et quelle figure obtient-on ?
  • 5) Un élève écrit reˊpeˊter 5 fois\mathtt{répéter\ 5\ fois} avec tourner de 108 degreˊs\mathtt{tourner\ de\ 108\ degrés}. La figure se referme-t-elle au bout des cinq répétitions ? Justifiez par la somme des rotations.

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

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

Réponses

  • 1) Triangle équilatéral
  • 2) Angle extérieur : 18060180-60
  • 3) 6 fois, 60°
  • 4) 720° : deux tours, une étoile
  • 5) Non : 540°

1) Trois côtés de 100100 pas séparés par trois rotations identiques : un TRIANGLE ÉQUILATÉRAL de côté 100100 pas.

2) Le lutin arrive dans le prolongement du côté qu'il vient de tracer : il tourne de l'angle extérieur, 18060=120180-60=120^\circ. Et 3×120=3603\times 120=360^\circ : un tour complet, la figure se ferme. Tourner de 6060^\circ ne ferait qu'un demi-tour en tout.

3) Six côtés : reˊpeˊter 6 fois\mathtt{répéter\ 6\ fois} et tourner de 60 degreˊs\mathtt{tourner\ de\ 60\ degrés}, puisque 3606=60\dfrac{360}{6}=60.

4) 5×144=7205\times 144=720^\circ, soit DEUX tours complets : le lutin revient bien à son point de départ, dans sa direction de départ, mais il a fait deux fois le tour du centre. Les côtés se croisent : on obtient une ÉTOILE à cinq branches.

5) Non. 5×108=5405\times 108=540^\circ, soit un tour et demi : le lutin ne regarde pas dans sa direction de départ, et la figure reste ouverte. L'angle 108108^\circ est l'angle intérieur du pentagone ; pour le fermer, il fallait tourner de 7272^\circ.

Le fil : un script trace une figure fermée quand la somme des rotations est un nombre entier de tours ; un tour donne un polygone, deux tours une étoile.

Exercice 12 : Compter avec le bloc modulo

Le bloc n modulo d\mathtt{n\ modulo\ d} donne le reste de la division euclidienne de nn par dd. Par exemple, 1717 modulo 55 vaut 22, car 17=5×3+217=5\times 3+2. Un nombre est multiple de dd exactement quand ce reste vaut 00.

Scratch
quand le drapeau vert est cliqué
mettre compte à 0
mettre n à 1
répéter 30 fois
    si (n modulo 3) = 0 alors
        mettre compte à compte + 1
    mettre n à n + 1
dire compte
  • 1) Que valent 1717 modulo 33 et 1818 modulo 33 ?
  • 2) Que dit le lutin à la fin du script ?
  • 3) On remplace la condition par (n modulo 3)=0 ou (n modulo 5)=0\mathtt{(n\ modulo\ 3)=0\ ou\ (n\ modulo\ 5)=0}. Que dit alors le lutin ?
  • 4) On la remplace par (n modulo 3)=0 et (n modulo 5)=0\mathtt{(n\ modulo\ 3)=0\ et\ (n\ modulo\ 5)=0}. Que dit le lutin ?
  • 5) On reprend la condition de la question 3, mais la boucle est répétée 100100 fois. Que dit le lutin ?

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

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

Réponses

  • 1) 2 et 0
  • 2) 10
  • 3) 14
  • 4) 2
  • 5) 47

1) 17=3×5+217=3\times 5+2, donc 1717 modulo 33 vaut 22. 18=3×6+018=3\times 6+0, donc 1818 modulo 33 vaut 00 : 1818 est un multiple de 33.

2) La variable n\mathtt{n} prend les valeurs 11 à 3030, et le compteur augmente pour chaque multiple de 33 : 33, 66, ..., 3030, soit 303=10\dfrac{30}{3}=10 nombres. Le lutin dit 1010.

3) Il y a 1010 multiples de 33 et 66 multiples de 55 entre 11 et 3030. Mais 1515 et 3030 sont multiples des deux et ne sont comptés qu'une fois, car la condition est vraie une seule fois pour chaque nombre : 10+62=1410+6-2=14. Le lutin dit 1414.

4) Avec ET, il faut être multiple de 33 et de 55, donc de 1515 : seuls 1515 et 3030 conviennent. Le lutin dit 22.

5) Entre 11 et 100100 : 3333 multiples de 33, car 99=3×3399=3\times 33 ; 2020 multiples de 55 ; 66 multiples de 1515, car 90=15×690=15\times 6. Le lutin dit 33+206=4733+20-6=47.

Le fil : le modulo teste la divisibilité ; avec OU, on retire les nombres comptés deux fois, avec ET, on ne garde que les multiples communs.

Exercice 13 : Les conditions composées : et, ou

Un musée programme sa caisse. Une condition A et B\mathtt{A\ et\ B} est vraie quand les DEUX conditions sont vraies ; une condition A ou B\mathtt{A\ ou\ B} est vraie quand AU MOINS l'une des deux l'est. L'âge saisi est un nombre entier d'années.

Scratch
quand le drapeau vert est cliqué
demander "Quel âge as-tu ?" et attendre
mettre age à réponse
si (age < 6) ou (age > 64) alors
    mettre prix à 0
sinon
    si (age > 11) et (age < 18) alors
        mettre prix à 5
    sinon
        mettre prix à 12
dire prix
  • 1) Quel prix affiche le script pour un enfant de 44 ans ? Pour une personne de 7070 ans ?
  • 2) Quel prix affiche-t-il pour 1414 ans ? Pour 1818 ans ?
  • 3) Quel prix affiche-t-il pour 66 ans ? Pour 1111 ans ?
  • 4) Pour quels âges le prix est-il de 55 dollars ? Donnez le plus petit et le plus grand.
  • 5) Une famille compte deux parents de 4040 et 3838 ans, trois enfants de 1515, 99 et 33 ans, et une grand-mère de 6666 ans. Combien paie-t-elle en tout ?

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

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

Réponses

  • 1) 0 et 0 dollar
  • 2) 5 et 12 dollars
  • 3) 12 et 12 dollars
  • 4) De 12 à 17 ans
  • 5) 41 dollars

1) Pour 44 ans, age<6\mathtt{age<6} est vraie, donc la condition avec OU est vraie : prix 00. Pour 7070 ans, c'est age>64\mathtt{age>64} qui est vraie : prix 00 également.

2) Pour 1414 ans, la première condition est fausse ; dans le sinon\mathtt{sinon}, 14>1114>11 et 14<1814<18 sont vraies toutes les deux : prix 55 dollars. Pour 1818 ans, 18<1818<18 est fausse, donc la condition avec ET est fausse : prix 1212 dollars.

3) Pour 66 ans, 6<66<6 est fausse et 6>646>64 aussi : on passe au sinon\mathtt{sinon}, où 6>116>11 est fausse, donc prix 1212 dollars. Pour 1111 ans, 11>1111>11 est fausse : prix 1212 dollars. Les inégalités strictes excluent les âges frontières.

4) Il faut age>11\mathtt{age>11} ET age<18\mathtt{age<18} : les âges entiers de 1212 à 1717 ans, soit six âges.

5) Parents : 12+12=2412+12=24. Enfants : 1515 ans paie 55, 99 ans paie 1212, 33 ans paie 00. Grand-mère : 00. Total : 24+5+12+0+0=4124+5+12+0+0=41 dollars.

Le fil : on évalue chaque condition simple, puis on combine ; ET demande tout, OU se contente d'une seule, et une inégalité stricte exclut sa borne.

Exercice 14 : Problème : l'escargot et le mur

Un escargot part du pied d'un mur de 1010 mètres. Chaque jour il monte de 33 mètres, mais chaque nuit il glisse et redescend de 22 mètres. Le script simule son ascension et s'arrête dès que l'escargot atteint le haut du mur, les hauteurs étant des nombres entiers de mètres.

Scratch
quand le drapeau vert est cliqué
mettre hauteur à 0
mettre jour à 0
mettre arrivé à 0
répéter jusqu'à ce que arrivé = 1
    mettre jour à jour + 1
    mettre hauteur à hauteur + 3
    si hauteur > 9 alors
        mettre arrivé à 1
    sinon
        mettre hauteur à hauteur - 2
dire jour
  • 1) À quelle hauteur est l'escargot le soir du premier jour ? Et au matin du deuxième jour ?
  • 2) De combien l'escargot progresse-t-il en une journée et une nuit complètes ?
  • 3) À quelle hauteur est-il le soir du septième jour ?
  • 4) Que dit le lutin à la fin du script ?
  • 5) Un élève répond « 1010 jours, puisqu'il gagne 11 mètre par jour ». Expliquez son erreur, puis dites ce qu'annoncerait le lutin pour un mur de 2020 mètres.

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

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

Réponses

  • 1) 3 m puis 1 m
  • 2) 1 m
  • 3) 9 m
  • 4) 8
  • 5) Pas de glissade le dernier jour ; 18

1) Le soir du premier jour : 0+3=30+3=3 mètres. Pendant la nuit il redescend à 32=13-2=1 mètre : c'est sa hauteur au matin du deuxième jour.

2) 32=13-2=1 mètre par jour et nuit complets.

3) Au matin du septième jour, après six jours et six nuits, il est à 66 mètres ; le soir, il atteint 6+3=96+3=9 mètres. Comme 9>99>9 est faux, la nuit le fait redescendre à 77 mètres.

4) Le huitième jour, il part de 77 mètres et monte à 1010 mètres : la condition hauteur>9\mathtt{hauteur>9} est vraie, la variable arriveˊ\mathtt{arrivé} passe à 11 et la boucle s'arrête. Le lutin dit 88.

5) Le dernier jour, l'escargot atteint le haut PENDANT la journée : il ne glisse plus. Le soir du jour nn, il est à (n1)+3=n+2(n-1)+3=n+2 mètres. Pour 1010 mètres, n+210n+2\geq 10 donne n=8n=8, et non 1010. Pour 2020 mètres, n+220n+2\geq 20 donne n=18n=18 : le lutin dirait 1818.

Le fil : on suit les variables tour par tour ; la boucle s'arrête au moment précis où la condition devient vraie, pas à la fin d'un tour complet imaginé.

Exercice 15 : Problème : la spirale

Le lutin part de l'origine, tourné vers la droite, le stylo abaissé. À chaque tour de boucle, il avance, pivote d'un quart de tour vers la gauche, puis allonge la longueur du prochain segment.

Scratch
quand le drapeau vert est cliqué
aller à x: 0 y: 0
s'orienter vers la droite
stylo en position d'écriture
mettre longueur à 10
répéter 8 fois
    avancer de longueur
    tourner de 90 degrés vers la gauche
    mettre longueur à longueur + 10
  • 1) Quelle est la longueur du troisième segment tracé ? Et celle du huitième ?
  • 2) Quelle est la longueur totale du trait tracé ?
  • 3) Quelles sont les coordonnées du lutin après les quatre premiers segments ?
  • 4) Quelles sont ses coordonnées à la fin du script ?
  • 5) On remplace reˊpeˊter 8 fois\mathtt{répéter\ 8\ fois} par reˊpeˊter 20 fois\mathtt{répéter\ 20\ fois}. Quelle est la longueur totale du trait ? Quelle est l'abscisse finale du lutin ?

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

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

Réponses

  • 1) 30 et 80 pas
  • 2) 360 pas
  • 3) (20;20)(-20\,;-20)
  • 4) (40;40)(-40\,;-40)
  • 5) 21002\,100 pas ; abscisse 100-100

1) La longueur vaut 1010 au premier tour et augmente de 1010 à chaque tour : 3030 au troisième tour, 8080 au huitième.

2) 10+20+30+40+50+60+70+80=36010+20+30+40+50+60+70+80=360 pas.

3) Le lutin avance de 1010 vers la droite, 2020 vers le haut, 3030 vers la gauche, 4040 vers le bas. Abscisse : 1030=2010-30=-20. Ordonnée : 2040=2020-40=-20. Il est en (20;20)(-20\,;-20).

4) Les quatre segments suivants vont de nouveau à droite, en haut, à gauche et en bas : 5050, 6060, 7070, 8080. Abscisse : 20+5070=40-20+50-70=-40. Ordonnée : 20+6080=40-20+60-80=-40. Il termine en (40;40)(-40\,;-40), et il regarde de nouveau vers la droite après huit quarts de tour.

5) Longueur : 10×(1+2++20)=10×210=210010\times(1+2+\ldots+20)=10\times 210=2\,100 pas. Chaque paquet de quatre segments décale le lutin de 20-20 en abscisse et en ordonnée ; vingt segments font cinq paquets, donc l'abscisse finale vaut 5×(20)=1005\times(-20)=-100.

Le fil : une variable qui change à chaque tour transforme un carré en spirale ; on retrouve les positions en regroupant les segments par quatre.

Chapitre précédent Statistiques et probabilités

Ce chapitre resservira dans

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

Voir aussi

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

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

Site par Studio Squalli