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

Exercices corrigés : algorithmique et Scratch au brevet (Troisième)

Ces quinze exercices corrigés couvrent l'algorithmique et la programmation avec Scratch en troisième, au format des exercices posés chaque année au brevet. 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 : au brevet, on ne PROGRAMME pas, on LIT. Chaque question se répond en simulant le script ligne par ligne, et la seule difficulté réelle est de savoir quelle valeur porte chaque variable à chaque tour.

Trois pièges reviennent d'un exercice à l'autre et le corrigé les désigne à chaque fois : une affectation ÉCRASE l'ancienne valeur, donc l'ordre de deux affectations n'est jamais indifférent ; dix exemples concordants ne démontrent rien, seule l'algèbre démontre ; et une boucle reˊpeˊter jusquaˋ\mathtt{répéter\ jusqu'à} peut ne jamais s'arrêter.

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 Troisiè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 (3 chapitres) ↓

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

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

Rappel de cours

  • Un script s'exécute de haut en bas. Pour prévoir ce qu'il produit, on écrit un tableau avec une colonne par variable et une ligne par tour de boucle.
  • mettre v aˋ \mathtt{mettre\ v\ à\ \ldots} est une AFFECTATION : le calcul de droite est fait avec les anciennes valeurs, puis le résultat écrase le contenu de vv.
  • Deux affectations échangées ne donnent pas le même programme : mettre a aˋ b\mathtt{mettre\ a\ à\ b} puis mettre b aˋ a\mathtt{mettre\ b\ à\ a} perd définitivement l'ancienne valeur de aa.
  • reˊpeˊter jusquaˋ ce que \mathtt{répéter\ jusqu'à\ ce\ que\ \ldots} teste la condition AVANT chaque tour ; si le corps de la boucle ne fait pas progresser la variable testée, la boucle est infinie.
  • Un script qui donne le même résultat sur dix essais ne prouve rien : la démonstration passe toujours par le calcul littéral, en appelant xx le nombre choisi.
  • Identités remarquables utiles ici : (a+b)2=a2+2ab+b2(a+b)^{2}=a^{2}+2ab+b^{2}, (ab)2=a22ab+b2(a-b)^{2}=a^{2}-2ab+b^{2} et a2b2=(a+b)(ab)a^{2}-b^{2}=(a+b)(a-b).
  • Pour tracer un polygone régulier à nn côtés, le lutin tourne de 360n\dfrac{360^\circ}{n} à chaque sommet ; l'angle intérieur, lui, vaut (n2)×180n\dfrac{(n-2)\times 180^\circ}{n} et ne sert PAS au tracé.
  • Le PGCD de deux entiers ne change pas quand on remplace le plus grand par leur différence : c'est ce qui fait fonctionner l'algorithme d'Euclide par soustractions.
  • Une hausse de tt pour cent revient à multiplier par 1+t1001+\dfrac{t}{100} ; nn hausses successives reviennent à multiplier par (1+t100)n\left(1+\dfrac{t}{100}\right)^{n}, et non par 1+nt1001+\dfrac{nt}{100}.
  • Vérification systématique : on recalcule toujours la dernière ligne du tableau ET l'avant-dernière, car c'est exactement là que se décide l'arrêt d'une boucle.

Partie A : les bases (/50)

Exercice 1 : Échanger deux variables

Une affectation n'est pas une égalité : le calcul écrit à droite est effectué avec les valeurs actuelles, puis le résultat ÉCRASE l'ancien contenu de la variable.

Le script ci-dessous n'utilise que deux variables, et pourtant il produit un effet que l'on croit souvent impossible sans une troisième.

Scratch
quand le drapeau vert est cliqué
mettre a à 12
mettre b à 5
mettre a à a + b
mettre b à a - b
mettre a à a - b
dire a
  • 1) Recopiez et complétez un tableau donnant a\mathtt{a} et b\mathtt{b} après chacune des cinq affectations.
  • 2) Que dit le lutin ? Que vaut alors b\mathtt{b} ?
  • 3) Que fait ce script, en une phrase ?
  • 4) Démontrez-le en appelant xx la valeur initiale de a\mathtt{a} et yy celle de b\mathtt{b}.
  • 5) Un élève propose de remplacer les trois dernières affectations par mettre a aˋ b\mathtt{mettre\ a\ à\ b} puis mettre b aˋ a\mathtt{mettre\ b\ à\ a}. Que produit sa version ?
  • 6) Écrivez une version correcte utilisant une troisième variable temp\mathtt{temp}.

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) a=17a=17, b=12b=12, puis a=5a=5
  • 2) 5 ; b=12b=12
  • 3) Échange des deux variables
  • 4) a=ya=y et b=xb=x
  • 5) a=5a=5 et b=5b=5 : 12 perdu
  • 6) temp ← a ; a ← b ; b ← temp

1) On suit ligne par ligne. Après mettre a aˋ 12\mathtt{mettre\ a\ à\ 12} : a=12a=12. Après mettre b aˋ 5\mathtt{mettre\ b\ à\ 5} : a=12a=12, b=5b=5. Après mettre a aˋ a+b\mathtt{mettre\ a\ à\ a+b} : a=12+5=17a=12+5=17 et b=5b=5. Après mettre b aˋ ab\mathtt{mettre\ b\ à\ a-b} : b=175=12b=17-5=12, et aa vaut toujours 1717. Après mettre a aˋ ab\mathtt{mettre\ a\ à\ a-b} : a=1712=5a=17-12=5. Le tableau final donne donc a=5a=5 et b=12b=12.

2) Le lutin dit 55, et b\mathtt{b} vaut 1212. Autrement dit, chaque variable contient maintenant la valeur que l'autre contenait au départ.

3) Ce script ÉCHANGE le contenu des deux variables, sans utiliser de variable supplémentaire. C'est un procédé classique en programmation, où la mémoire disponible peut être limitée.

4) Au départ a=xa=x et b=yb=y. Après la première affectation, a=x+ya=x+y et b=yb=y. Après la deuxième, b=(x+y)y=xb=(x+y)-y=x, et aa vaut encore x+yx+y. Après la troisième, a=(x+y)x=ya=(x+y)-x=y. On obtient donc a=ya=y et b=xb=x pour TOUTES les valeurs de départ, et pas seulement pour 1212 et 55 : c'est bien un échange. Le calcul littéral fait ici exactement ce que l'essai numérique ne peut pas faire, démontrer au lieu de constater.

5) Sa version détruit une information. Après mettre a aˋ b\mathtt{mettre\ a\ à\ b}, la variable aa vaut 55 et l'ancienne valeur 1212 n'existe plus nulle part. La deuxième instruction mettre b aˋ a\mathtt{mettre\ b\ à\ a} recopie alors 55 dans bb : on obtient a=5a=5 et b=5b=5. Les deux variables portent la même valeur, et 1212 est définitivement perdu. C'est l'erreur la plus courante sur les affectations, et elle vient de lire mettre a aˋ b\mathtt{mettre\ a\ à\ b} comme l'égalité a=ba=b, qui, elle, serait symétrique.

6) mettre temp aˋ a\mathtt{mettre\ temp\ à\ a}, puis mettre a aˋ b\mathtt{mettre\ a\ à\ b}, puis mettre b aˋ temp\mathtt{mettre\ b\ à\ temp}. La variable temp\mathtt{temp} conserve la valeur de aa avant qu'elle ne soit écrasée, ce qui permet de la restituer ensuite. Contrôle avec 1212 et 55 : temp=12temp=12, puis a=5a=5, puis b=12b=12 ✓, le même résultat qu'à la question 2. Cette version est plus lisible et fonctionne aussi sur des textes, alors que la version de l'énoncé exige des nombres, puisqu'elle additionne et soustrait.

Exercice 2 : Un script, une fonction

Un script qui prend un nombre et en renvoie un autre définit une FONCTION. On note ici ff la fonction qui, au nombre saisi, associe le nombre annoncé par le lutin.

Scratch
quand le drapeau vert est cliqué
demander "Choisis un nombre" et attendre
mettre x à réponse
mettre y à (x - 4) * (x + 4)
dire y
  • 1) Calculez f(0)f(0), f(4)f(4), f(4)f(-4) et f(10)f(10).
  • 2) Développez l'expression (x4)(x+4)(x-4)(x+4) et reconnaissez l'identité remarquable utilisée.
  • 3) Déterminez tous les antécédents de 00 par ff.
  • 4) Déterminez l'antécédent de 16-16 par ff.
  • 5) Pour quelles valeurs saisies le lutin annonce-t-il un nombre négatif ?
  • 6) Le lutin peut-il annoncer 20-20 ? Justifiez.

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) 16-16 ; 0 ; 0 ; 84
  • 2) x216x^2-16
  • 3) 4 et 4-4
  • 4) 0
  • 5) 4<x<4-4<x<4
  • 6) Non : minimum 16-16

1) f(0)=(04)(0+4)=(4)×4=16f(0)=(0-4)(0+4)=(-4)\times 4=-16. f(4)=(44)(4+4)=0×8=0f(4)=(4-4)(4+4)=0\times 8=0. f(4)=(44)(4+4)=(8)×0=0f(-4)=(-4-4)(-4+4)=(-8)\times 0=0. f(10)=(104)(10+4)=6×14=84f(10)=(10-4)(10+4)=6\times 14=84. Deux entrées différentes, 44 et 4-4, donnent donc la même sortie 00 : une fonction a parfaitement le droit de faire cela, alors qu'un antécédent, lui, n'est pas toujours unique.

2) (x4)(x+4)=x2+4x4x16=x216(x-4)(x+4)=x^{2}+4x-4x-16=x^{2}-16. C'est l'identité a2b2=(a+b)(ab)a^{2}-b^{2}=(a+b)(a-b) lue de droite à gauche, avec a=xa=x et b=4b=4. Le script calcule donc x216x^{2}-16, et l'on peut vérifier les résultats de la question 1 avec cette forme : 016=160-16=-16 ✓, 10016=84100-16=84 ✓.

3) Résoudre f(x)=0f(x)=0 revient à résoudre (x4)(x+4)=0(x-4)(x+4)=0. Un produit est nul si et seulement si l'un de ses facteurs est nul, donc x4=0x-4=0 ou x+4=0x+4=0, c'est-à-dire x=4x=4 ou x=4x=-4. Il y a donc DEUX antécédents de 00, ce que la question 1 laissait déjà voir. La forme factorisée est ici bien plus commode que la forme développée : c'est elle qu'il faut garder pour résoudre.

4) Résoudre x216=16x^{2}-16=-16 donne x2=0x^{2}=0, donc x=0x=0 : c'est l'unique antécédent de 16-16. On utilise cette fois la forme DÉVELOPPÉE, parce que l'équation n'est plus « produit égal à zéro ». Savoir choisir entre les deux formes selon la question posée est exactement ce que teste le brevet.

5) Le lutin annonce un nombre négatif quand x216<0x^{2}-16<0, c'est-à-dire x2<16x^{2}<16. Cela se produit pour 4<x<4-4<x<4, c'est-à-dire pour tous les nombres strictement compris entre 4-4 et 44. On peut aussi raisonner sur la forme factorisée : le produit (x4)(x+4)(x-4)(x+4) est négatif quand ses deux facteurs sont de signes contraires, ce qui n'arrive qu'entre 4-4 et 44. Contrôle : f(3)=916=7<0f(3)=9-16=-7<0 ✓ et f(5)=2516=9>0f(5)=25-16=9>0 ✓.

6) NON. Comme x2x^{2} est toujours positif ou nul, x216x^{2}-16 est toujours supérieur ou égal à 16-16 : le plus petit nombre que le lutin puisse annoncer est 16-16, obtenu pour x=0x=0. La valeur 20-20 est donc hors d'atteinte, et l'équation x216=20x^{2}-16=-20, qui donnerait x2=4x^{2}=-4, n'a aucune solution. Un script ne peut pas produire n'importe quelle sortie, et repérer ce minimum évite de chercher longtemps une solution qui n'existe pas.

Exercice 3 : Un script qui teste si un triangle est rectangle

Ce script applique la réciproque du théorème de Pythagore. Les deux triangles de la figure ont pour côtés 33, 44, 55 pour le premier et 44, 55, 66 pour le second.

345645triangle 1triangle 2
Scratch
quand le drapeau vert est cliqué
demander "le plus grand côté ?" et attendre
mettre c à réponse
demander "un autre côté ?" et attendre
mettre a à réponse
demander "le dernier côté ?" et attendre
mettre b à réponse
si c * c = a * a + b * b alors
    dire "rectangle"
sinon
    dire "pas rectangle"
  • 1) Que dit le lutin si l'on saisit 55, puis 33, puis 44 ?
  • 2) Que dit-il si l'on saisit 66, puis 44, puis 55 ? Détaillez le calcul.
  • 3) Que dit-il si l'on saisit 1313, puis 55, puis 1212 ?
  • 4) Un élève saisit 88, puis 1717, puis 1515. Que répond le lutin, et pourquoi cette réponse est-elle fausse ?
  • 5) Proposez une modification du script qui corrige ce défaut.
  • 6) Le script accepte la saisie 1010, 22, 33. Pourquoi est-ce un problème ?

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) Rectangle
  • 2) Pas rectangle : 364136\neq 41
  • 3) Rectangle
  • 4) Pas rectangle : saisie fausse
  • 5) Tester les trois égalités
  • 6) Aucun triangle possible

1) Le lutin dit « rectangle ». En effet c×c=5×5=25c\times c=5\times 5=25 et a×a+b×b=9+16=25a\times a+b\times b=9+16=25 : les deux membres sont égaux, donc la condition est vraie. D'après la réciproque du théorème de Pythagore, le triangle 33-44-55 est bien rectangle, et son angle droit est opposé au plus grand côté.

2) Le lutin dit « pas rectangle ». Le calcul donne 6×6=366\times 6=36 d'un côté et 16+25=4116+25=41 de l'autre : 364136\neq 41, la condition est fausse. L'écart n'est que de 55, ce qui montre qu'un triangle peut ressembler beaucoup à un triangle rectangle sans en être un : l'œil ne décide jamais, seul le calcul décide.

3) Le lutin dit « rectangle », car 13×13=16913\times 13=169 et 25+144=16925+144=169 ✓. Le triplet 55-1212-1313 est, avec 33-44-55, l'un des deux triplets que l'on rencontre le plus souvent au brevet ; les reconnaître fait gagner du temps.

4) Le lutin répond « pas rectangle », car il calcule 8×8=648\times 8=64 d'une part et 289+225=514289+225=514 d'autre part. Or le triangle de côtés 88, 1515, 1717 EST rectangle, puisque 172=28917^{2}=289 et 64+225=28964+225=289 ✓. La réponse est donc fausse, et la faute n'est pas dans le triangle mais dans la SAISIE : l'élève a entré 88 comme plus grand côté alors que c'est le plus petit. Le script fait confiance à l'utilisateur sans rien vérifier, ce qui est le défaut le plus courant des programmes.

5) Il suffit de ne plus demander à l'utilisateur de repérer le plus grand côté. Une solution consiste à tester les trois égalités possibles : la condition devient si cc=aa+bb ou aa=bb+cc ou bb=aa+cc\mathtt{si\ c*c=a*a+b*b\ ou\ a*a=b*b+c*c\ ou\ b*b=a*a+c*c}. Une autre consiste à ranger les trois valeurs par ordre croissant avant le test, en réutilisant l'échange de variables de l'exercice 1. Dans les deux cas, le programme devient indépendant de l'ordre de saisie, ce qui est exactement ce qu'on attend d'un test correct.

6) Parce qu'il n'existe AUCUN triangle de côtés 1010, 22 et 33 : l'inégalité triangulaire n'est pas respectée, puisque 2+3=52+3=5 est inférieur à 1010. Le script répond pourtant « pas rectangle », comme si la question avait un sens. Un bon programme devrait d'abord vérifier que la somme des deux plus petits côtés dépasse le plus grand, et refuser la saisie sinon. Répondre à une question qui n'a pas de sens est aussi grave que répondre faux.

Exercice 4 : L'algorithme d'Euclide par soustractions

Ce script remplace à chaque tour le plus grand des deux nombres par leur différence, jusqu'à ce qu'ils deviennent égaux.

Scratch
quand le drapeau vert est cliqué
mettre a à 156
mettre b à 60
répéter jusqu'à ce que a = b
    si a > b alors
        mettre a à a - b
    sinon
        mettre b à b - a
dire a
  • 1) Recopiez et complétez le tableau des valeurs de a\mathtt{a} et b\mathtt{b} à chaque tour.
  • 2) Que dit le lutin ?
  • 3) Que calcule ce script ? Vérifiez votre réponse par une décomposition en facteurs premiers.
  • 4) Utilisez ce résultat pour rendre la fraction 60156\dfrac{60}{156} irréductible.
  • 5) Que se passe-t-il si l'on saisit a=24\mathtt{a}=24 et b=24\mathtt{b}=24 au départ ?
  • 6) Que se passe-t-il si l'on saisit a=0\mathtt{a}=0 et b=7\mathtt{b}=7 ?

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) Cinq tours
  • 2) 12
  • 3) Plus grand diviseur commun
  • 4) 513\frac{5}{13}
  • 5) 24 immédiatement
  • 6) Boucle infinie

1) On applique la règle tour par tour. Départ : a=156a=156, b=60b=60. Tour 1 : a>ba>b, donc a=15660=96a=156-60=96. Tour 2 : a=9660=36a=96-60=36. Tour 3 : maintenant a<ba<b, donc b=6036=24b=60-36=24. Tour 4 : a>ba>b, donc a=3624=12a=36-24=12. Tour 5 : a<ba<b, donc b=2412=12b=24-12=12. Les deux valeurs sont égales, la boucle s'arrête. Le tableau comporte donc cinq lignes, et il faut à chaque tour REGARDER lequel des deux nombres est le plus grand avant de soustraire.

2) Le lutin dit 1212, la valeur commune de aa et de bb à la sortie de la boucle.

3) Ce script calcule le PGCD des deux nombres de départ, c'est-à-dire leur plus grand diviseur commun. Vérification par les facteurs premiers : 156=22×3×13156=2^{2}\times 3\times 13 et 60=22×3×560=2^{2}\times 3\times 5. Les facteurs communs sont 222^{2} et 33, donc le PGCD vaut 4×3=124\times 3=12 ✓. L'algorithme fonctionne parce qu'un diviseur commun à deux nombres divise aussi leur différence : soustraire ne perd donc aucun diviseur commun, mais fait décroître les nombres jusqu'à les rendre égaux.

4) On divise le numérateur et le dénominateur par le PGCD, 1212 : 60156=60÷12156÷12=513\dfrac{60}{156}=\dfrac{60\div 12}{156\div 12}=\dfrac{5}{13}. La fraction est irréductible, car 55 et 1313 sont deux nombres premiers distincts, donc leur seul diviseur commun est 11. Diviser par un diviseur commun plus petit, par exemple 44, aurait donné 1539\dfrac{15}{39}, qui est simplifiée mais pas irréductible : seul le PGCD garantit d'aller au bout en une seule fois.

5) La condition a=ba=b est vraie AVANT le premier tour, donc la boucle n'est pas exécutée du tout et le lutin dit 2424 immédiatement. C'est cohérent, puisque le PGCD d'un nombre avec lui-même est ce nombre. Cela illustre une propriété importante de reˊpeˊter jusquaˋ ce que\mathtt{répéter\ jusqu'à\ ce\ que} : le test précède le corps, donc une boucle peut faire zéro tour.

6) Le programme ne s'arrête JAMAIS. Comme a=0a=0 est plus petit que b=7b=7, c'est bb qui est remplacé par ba=70=7b-a=7-0=7 : bb ne change pas, aa non plus, et la condition a=ba=b reste fausse indéfiniment. On a une boucle infinie, qui bloque le programme. C'est le défaut classique des boucles conditionnelles, et il rappelle qu'un algorithme doit prévoir les cas limites : le plus grand diviseur commun de 00 et 77 existe, il vaut 77, mais cette version par soustractions ne sait pas le trouver. Un cas particulier oublié par le programmeur devient un plantage.

156601213 x 5 = 65 carrés de 12 sur 12

Exercice 5 : Compléter un script : la rosace de douze carrés

Le script ci-dessous trace la rosace de la figure : douze carrés identiques, tous issus du même point, chacun étant l'image du précédent par une rotation de centre ce point.

Une valeur a été effacée dans le dernier bloc.

Scratch
quand le drapeau vert est cliqué
aller à x: 0 y: 0
stylo en position d'écriture
répéter 12 fois
    répéter 4 fois
        avancer de 60
        tourner de 90 degrés vers la droite
    tourner de ... degrés vers la droite
  • 1) Quelle valeur manque dans le dernier bloc ? Justifiez.
  • 2) Combien de fois le bloc avancer de 60\mathtt{avancer\ de\ 60} est-il exécuté ? Quelle est la longueur totale du trait tracé ?
  • 3) Le lutin revient-il à son point de départ à la fin du script ? Et retrouve-t-il sa direction initiale ?
  • 4) On remplace la valeur manquante par 4040. La figure se referme-t-elle sur elle-même ?
  • 5) Avec un angle de 4040 degrés, combien de répétitions faudrait-il pour que la rosace se referme ?
  • 6) Quelle est la plus grande distance atteinte par le lutin depuis le centre de la rosace ?

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) 30°
  • 2) 48 fois ; 2 880 pas
  • 3) Oui et oui
  • 4) Rosace de 9 carrés
  • 5) 9 répétitions
  • 6) 60284,960\sqrt{2}\approx 84{,}9 pas

1) Il manque 3030 degrés. Les douze carrés se partagent un tour complet autour du point de départ, donc la rotation entre deux carrés voisins vaut 36012=30\dfrac{360}{12}=30^\circ. C'est le même calcul que pour un polygone régulier, mais appliqué cette fois à un motif entier et non à un côté.

2) Le bloc est à l'intérieur des deux boucles, donc il est exécuté 12×4=4812\times 4=48 fois. La longueur totale tracée vaut 48×60=288048\times 60=2880 pas. Le stylo n'est jamais relevé, donc tout ce que parcourt le lutin est dessiné.

3) OUI dans les deux cas. Chaque boucle intérieure ramène le lutin à son point de départ, puisqu'un carré est une figure fermée ; les rotations de 3030 degrés, elles, ne le déplacent pas. Le lutin est donc toujours au centre entre deux carrés, ce qui explique que les douze carrés aient tous un sommet commun. Quant à la direction, il a tourné 4×90=3604\times 90=360 degrés par carré, plus 12×30=36012\times 30=360 degrés au total pour les rotations : soit un nombre entier de tours, il regarde donc bien dans sa direction de départ.

4) Elle se referme, mais pas comme prévu. Avec 4040 degrés répétés douze fois, le lutin tourne de 12×40=48012\times 40=480 degrés, c'est-à-dire un tour complet plus 120120 degrés. Les neuf premiers carrés forment déjà une rosace complète, puisque 9×40=3609\times 40=360 ; les trois derniers, tracés après ce tour complet, repassent exactement sur les trois premiers. On voit donc une rosace régulière de NEUF carrés, dont trois sont tracés deux fois, et non une rosace de douze. Une rosace ne se referme que si le produit du nombre de répétitions par l'angle vaut un nombre entier de tours.

5) Il faudrait 36040=9\dfrac{360}{40}=9 répétitions, ce qui donnerait une rosace de neuf carrés. Vérification : 9×40=3609\times 40=360 ✓. Plus généralement, avec un angle α\alpha qui divise 360360, le nombre de carrés d'une rosace complète vaut 360α\dfrac{360}{\alpha}.

6) Le point le plus éloigné du centre est le sommet du carré opposé au point de départ, c'est-à-dire l'extrémité de la diagonale. Un carré de côté 6060 a pour diagonale 602+602=7200=60284,9\sqrt{60^{2}+60^{2}}=\sqrt{7200}=60\sqrt{2}\approx 84{,}9 pas, d'après le théorème de Pythagore. La rosace tient donc dans un disque de rayon environ 8585 pas, largement à l'intérieur de la scène qui va de 180-180 à 180180 en ordonnée.

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

Exercice 6 : Deux scripts, un seul résultat

Deux élèves écrivent chacun un script pour le même exercice. Le premier recopie l'énoncé mot à mot, le second affirme avoir trouvé « beaucoup plus court ».

Scratch
SCRIPT 1
mettre r à (x + 5) * (x + 5) - (x - 5) * (x - 5)

SCRIPT 2
mettre s à 20 * x
  • 1) Calculez r\mathtt{r} et s\mathtt{s} pour x=3x=3, puis pour x=7x=-7.
  • 2) Quelle conjecture formulez-vous ?
  • 3) Démontrez-la en développant les deux carrés.
  • 4) Démontrez-la une seconde fois en utilisant a2b2=(a+b)(ab)a^{2}-b^{2}=(a+b)(a-b).
  • 5) Comptez les opérations effectuées par chaque script. Lequel est le plus rapide ?
  • 6) Pour quelle valeur de xx le résultat vaut-il 100100 ? Peut-il valoir 77 ?

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) 60 et 60 ; 140-140 et 140-140
  • 2) r=s=20xr=s=20x
  • 3) 20x20x
  • 4) (2x)×10=20x(2x)\times 10=20x
  • 5) 5 opérations contre 1
  • 6) x=5x=5 ; x=0,35x=0{,}35

1) Pour x=3x=3 : r=(3+5)2(35)2=82(2)2=644=60\mathtt{r}=(3+5)^{2}-(3-5)^{2}=8^{2}-(-2)^{2}=64-4=60, et s=20×3=60\mathtt{s}=20\times 3=60. Pour x=7x=-7 : r=(2)2(12)2=4144=140\mathtt{r}=(-2)^{2}-(-12)^{2}=4-144=-140, et s=20×(7)=140\mathtt{s}=20\times(-7)=-140. Attention au carré d'un nombre négatif, qui est POSITIF : écrire (2)2=4(-2)^{2}=-4 fausse tout l'exercice.

2) Les deux scripts semblent donner le même résultat, égal à 2020 fois le nombre choisi. Deux essais concordants ne prouvent rien, mais ils indiquent quoi démontrer.

3) On développe séparément : (x+5)2=x2+10x+25(x+5)^{2}=x^{2}+10x+25 et (x5)2=x210x+25(x-5)^{2}=x^{2}-10x+25. La différence vaut (x2+10x+25)(x210x+25)=x2+10x+25x2+10x25=20x(x^{2}+10x+25)-(x^{2}-10x+25)=x^{2}+10x+25-x^{2}+10x-25=20x. Le point délicat est le signe : soustraire une parenthèse change le signe de CHACUN de ses termes, ce qui transforme 10x-10x en +10x+10x. Les deux scripts calculent donc bien la même chose, pour toute valeur de xx.

4) On reconnaît une différence de deux carrés avec a=x+5a=x+5 et b=x5b=x-5. Alors a2b2=(a+b)(ab)=((x+5)+(x5))×((x+5)(x5))=(2x)×(10)=20xa^{2}-b^{2}=(a+b)(a-b)=\big((x+5)+(x-5)\big)\times\big((x+5)-(x-5)\big)=(2x)\times(10)=20x ✓. Cette seconde démonstration tient en une ligne et ne développe aucun carré : reconnaître l'identité remarquable AVANT de développer est ce qui fait gagner du temps au brevet.

5) Le script 1 effectue deux additions ou soustractions pour former x+5x+5 et x5x-5, deux multiplications pour les carrés et une soustraction finale, soit 55 opérations. Le script 2 en effectue une seule. Le second est donc cinq fois plus économique, pour un résultat rigoureusement identique. C'est exactement ce que sert à faire le calcul littéral : simplifier une expression avant de la calculer, que ce soit à la main ou par un programme.

6) On résout 20x=10020x=100, donc x=5x=5. Vérification avec le script 1 : (5+5)2(55)2=1000=100(5+5)^{2}-(5-5)^{2}=100-0=100 ✓. Le résultat peut aussi valoir 77 : il suffit de prendre x=720=0,35x=\dfrac{7}{20}=0{,}35, et le script accepte parfaitement les nombres décimaux. Toute valeur est donc atteignable, ce qui n'était pas le cas de la fonction de l'exercice 2, qui ne descendait jamais sous 16-16.

Exercice 7 : Un seuil de croissance

La population d'une ville est de 1200012\,000 habitants et augmente de 88 pour cent par an. Le script cherche au bout de combien d'années elle dépassera 2000020\,000 habitants.

Scratch
quand le drapeau vert est cliqué
mettre population à 12000
mettre annee à 0
répéter jusqu'à ce que population > 20000
    mettre population à population * 1.08
    mettre annee à annee + 1
dire annee
  • 1) Pourquoi multiplier par 1,081{,}08 correspond-il à une hausse de 88 pour cent ?
  • 2) Complétez le tableau des populations, arrondies à l'unité, pour les sept premières années.
  • 3) Que dit le lutin ?
  • 4) Un élève affirme qu'il suffit de diviser : 200001200012000×0,08\dfrac{20\,000-12\,000}{12\,000\times 0{,}08}, soit environ 8,38{,}3, donc 99 ans. Pourquoi se trompe-t-il ?
  • 5) De quel pourcentage la population a-t-elle augmenté au total sur ces sept années ?
  • 6) On remplace la condition par population>24000\mathtt{population>24000}. Que dit alors le lutin ?

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) 1+81001+\frac{8}{100}
  • 2) … 19 042 ; 20 566
  • 3) 7
  • 4) Hausses composées
  • 5) 71,4\approx 71{,}4 %
  • 6) 10

1) Augmenter de 88 pour cent, c'est ajouter 8100=0,08\dfrac{8}{100}=0{,}08 fois la valeur de départ, donc obtenir 1×p+0,08×p=1,08p1\times p+0{,}08\times p=1{,}08\,p. Le nombre 1,081{,}08 s'appelle le coefficient multiplicateur, et c'est lui qui permet d'enchaîner plusieurs hausses par de simples multiplications.

2) On multiplie chaque ligne par 1,081{,}08. Année 1 : 1296012\,960. Année 2 : 1399713\,997. Année 3 : 1511715\,117. Année 4 : 1632616\,326. Année 5 : 1763217\,632. Année 6 : 1904219\,042. Année 7 : 2056620\,566. C'est bien à la septième année que le seuil de 2000020\,000 est franchi, la sixième restant en dessous avec 1904219\,042 habitants.

3) Le lutin dit 77. Il faut lire les DEUX dernières lignes du tableau pour être sûr : la sixième année donne 1904219\,042, qui ne dépasse pas 2000020\,000, donc un septième tour est effectué, et il porte la population à 2056620\,566, qui dépasse le seuil. La boucle s'arrête alors, avec annee=7\mathtt{annee}=7.

4) Parce qu'il traite la hausse comme si elle était toujours calculée sur la population de DÉPART, 1200012\,000, soit 960960 habitants chaque année. En réalité, la hausse de la deuxième année porte sur 1296012\,960 et vaut donc 10371\,037 habitants, celle de la troisième porte sur 1399713\,997, et ainsi de suite : les hausses grossissent, donc le seuil est atteint plus vite. Son raisonnement donne 99 ans au lieu de 77 : il oublie que les pourcentages successifs se MULTIPLIENT et ne s'additionnent pas. Coût de l'erreur : deux ans d'écart sur une prévision, c'est-à-dire une décision d'urbanisme prise trop tard.

5) La population est passée de 1200012\,000 à 2056620\,566 habitants, donc elle a été multipliée par 1,0871,7141{,}08^{7}\approx 1{,}714 : la hausse totale est d'environ 71,471{,}4 pour cent. Ce n'est PAS 7×8=567\times 8=56 pour cent, et l'écart de plus de quinze points vient entièrement du fait que chaque hausse s'applique au total déjà augmenté. Vérification directe : 2056612000120000,714\dfrac{20\,566-12\,000}{12\,000}\approx 0{,}714 ✓.

6) Il faut poursuivre le tableau. Année 8 : 2221122\,211. Année 9 : 2398823\,988, encore en dessous de 2400024\,000, de justesse. Année 10 : 2590725\,907. Le lutin dit donc 1010. Ce cas montre l'intérêt de garder deux décimales pendant les calculs : arrondir la neuvième année à 2400024\,000 aurait conduit à répondre 99, alors que la valeur exacte, 23988,123\,988{,}1, reste strictement inférieure au seuil.

12345678-2000200040006000800010000120001400016000180002000022000seuil 20 000années écouléespopulation

Exercice 8 : Cinq affirmations à corriger

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

  • 1) « Pour échanger deux variables, il suffit d'écrire mettre a aˋ b\mathtt{mettre\ a\ à\ b} puis mettre b aˋ a\mathtt{mettre\ b\ à\ a}. »
  • 2) « Une boucle reˊpeˊter jusquaˋ ce que a=b\mathtt{répéter\ jusqu'à\ ce\ que\ a=b} finit toujours par s'arrêter. »
  • 3) « Un script qui donne le même résultat pour dix valeurs testées donnera toujours ce résultat. »
  • 4) « Le bloc nombre aleˊatoire entre 1 et 6\mathtt{nombre\ aléatoire\ entre\ 1\ et\ 6} donne un résultat différent à chaque exécution, donc le script contient une erreur. »
  • 5) « Pour tracer un polygone régulier à nn côtés, le lutin doit tourner de (n2)×180n\dfrac{(n-2)\times 180}{n} degrés à chaque sommet. »

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

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

Réponses

  • 1) Il faut une variable auxiliaire
  • 2) Non : boucle infinie possible
  • 3) Des essais ne prouvent rien
  • 4) L'aléatoire doit varier
  • 5) Tourner de 360n\frac{360}{n}

1) FAUX. Énoncé correct : « il faut une variable auxiliaire, ou bien la suite de trois affectations de l'exercice 1 ». Avec la version proposée, la première instruction écrase aa, dont l'ancienne valeur est alors définitivement perdue : partant de a=12a=12 et b=5b=5, on obtient a=5a=5 puis b=5b=5. Les deux variables finissent égales au lieu d'être échangées.

2) FAUX. Énoncé correct : « cette boucle s'arrête si le corps fait effectivement évoluer aa ou bb vers l'égalité ». Contre-exemple vu à l'exercice 4 : avec a=0a=0 et b=7b=7, l'instruction mettre b aˋ ba\mathtt{mettre\ b\ à\ b-a} laisse bb inchangé, la condition reste fausse et le programme tourne indéfiniment. Une boucle conditionnelle n'offre aucune garantie d'arrêt, contrairement à reˊpeˊter n fois\mathtt{répéter\ n\ fois}.

3) FAUX. Énoncé correct : « des essais concordants ne font que suggérer une conjecture ; seule une démonstration par le calcul littéral établit un résultat ». Contre-exemple célèbre : le script qui calcule n2n+41n^{2}-n+41 donne un nombre PREMIER pour toutes les valeurs de nn de 00 à 4040, par exemple 16011601 pour n=40n=40. Mais pour n=41n=41, il donne 41241+41=412=168141^{2}-41+41=41^{2}=1681, qui est divisible par 4141 : la propriété tombe exactement à la quarante et unième valeur. Quarante essais réussis n'avaient donc rien prouvé du tout.

4) FAUX. Énoncé correct : « ce bloc doit précisément donner des résultats différents, c'est son rôle ». Un générateur aléatoire sert à simuler le hasard : c'est parce qu'il varie qu'on peut simuler 6060 lancers de dé et comparer les fréquences obtenues à la probabilité théorique. Un programme qui donnerait toujours le même tirage serait, lui, inutilisable.

5) FAUX, la formule donnée est celle de l'angle INTÉRIEUR. Énoncé correct : « le lutin tourne de 360n\dfrac{360}{n} degrés ». Pour un hexagone régulier, la formule fausse donnerait 4×1806=120\dfrac{4\times 180}{6}=120 degrés, alors que le lutin doit tourner de 3606=60\dfrac{360}{6}=60 degrés. Les deux angles sont supplémentaires, puisque 120+60=180120+60=180 : le lutin arrive dans le prolongement du côté et se rabat, il tourne donc de l'angle extérieur. Avec 120120 degrés, la somme des rotations vaudrait 720720 degrés, soit deux tours, et le lutin repasserait deux fois sur un triangle au lieu de tracer un hexagone.

Exercice 9 : Problème : le remplissage d'un récipient

Un récipient de 4,54{,}5 litres se remplit à débit constant. Le script simule le remplissage minute par minute. Le graphique donne le volume pour les six premières minutes seulement.

2468101214161820-5005001000150020002500300035004000450050004 500 mL : récipient pleintemps en minutesvolume en mL
Scratch
quand le drapeau vert est cliqué
mettre volume à 0
mettre temps à 0
répéter jusqu'à ce que volume >= 4500
    mettre volume à volume + 250
    mettre temps à temps + 1
dire temps
  • 1) Lisez sur le graphique le volume atteint après 66 minutes, puis donnez le débit en millilitres par minute.
  • 2) Le volume est-il proportionnel au temps ? Justifiez.
  • 3) Que dit le lutin à la fin du script ? Justifiez par un calcul.
  • 4) À quel instant le récipient est-il à moitié plein ?
  • 5) On remplace volume4500\mathtt{volume\geq 4500} par volume>4500\mathtt{volume>4500}. Que dit alors le lutin ?
  • 6) Le récipient présente une fuite de 3030 mL par minute. Combien de minutes faut-il alors pour le remplir ?

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) 1 500 mL ; 250 mL/min
  • 2) Oui
  • 3) 18
  • 4) 9 minutes
  • 5) 19 : débordement
  • 6) 21 minutes

1) Le graphique donne 15001\,500 mL après 66 minutes. Le débit vaut donc 15006=250\dfrac{1\,500}{6}=250 mL par minute, ce que confirme le script, où chaque tour ajoute 250250 à la variable volume\mathtt{volume}.

2) OUI. Les points sont alignés avec l'origine, et le quotient du volume par le temps vaut 250250 à chaque relevé : 2501=5002=15006=250\dfrac{250}{1}=\dfrac{500}{2}=\dfrac{1\,500}{6}=250 ✓. C'est la signature d'une situation de proportionnalité, et 250250 en est le coefficient.

3) Le lutin dit 1818. En effet 4,54{,}5 litres valent 45004\,500 mL, et il faut 4500250=18\dfrac{4\,500}{250}=18 tours de boucle pour les atteindre. Au dix-huitième tour, le volume vaut exactement 45004\,500 : la condition volume4500\mathtt{volume\geq 4500} est alors vraie, puisque l'inégalité est large, et la boucle s'arrête.

4) La moitié de 45004\,500 mL vaut 22502\,250 mL, atteints au bout de 2250250=9\dfrac{2\,250}{250}=9 minutes. C'est bien la moitié du temps total, ce qui n'est vrai que parce que le remplissage est proportionnel : avec un débit variable, la moitié du volume ne serait pas atteinte à la moitié du temps.

5) Le lutin dit 1919. Avec l'inégalité STRICTE, la valeur 45004\,500 atteinte au dix-huitième tour ne suffit plus à arrêter la boucle : un dix-neuvième tour est effectué, portant le volume à 47504\,750 mL, ce qui ferait déborder le récipient de 250250 mL. Un seul symbole change, et le programme passe d'un remplissage exact à un débordement : c'est la raison pour laquelle les conditions de seuil se relisent toujours deux fois.

6) Chaque minute, le récipient gagne 250250 mL et en perd 3030 : le débit NET vaut 25030=220250-30=220 mL par minute. Il faut donc 450022020,45\dfrac{4\,500}{220}\approx 20{,}45 minutes, c'est-à-dire 2121 tours de boucle, puisqu'une minute ne se coupe pas en deux dans ce script. Au vingtième tour le volume vaut 44004\,400 mL, encore insuffisant, et au vingt et unième il vaut 46204\,620 mL ✓. On remarque que la fuite ne représente que 1212 pour cent du débit mais rallonge le remplissage de trois minutes : c'est le débit net, et non le débit d'arrivée, qui commande tout.

Exercice 10 : Problème : la suite de motifs

Les motifs ci-dessous sont construits en croix : le motif de numéro nn possède un carreau central et quatre branches de nn carreaux chacune.

Le script doit annoncer le nombre de carreaux du motif dont on saisit le numéro. Une expression a été effacée.

motif 1motif 2motif 3
Scratch
quand le drapeau vert est cliqué
demander "numéro du motif ?" et attendre
mettre n à réponse
mettre carreaux à ...
dire carreaux
  • 1) Comptez les carreaux des motifs 11, 22 et 33.
  • 2) Quelle expression faut-il écrire dans le bloc effacé ? Justifiez.
  • 3) Combien de carreaux comptent le motif 1010 et le motif 2525 ?
  • 4) Existe-t-il un motif de 100100 carreaux ? Justifiez.
  • 5) Écrivez le script qui, à partir du nombre de carreaux, retrouve le numéro du motif. Testez-le avec 6161.
  • 6) Le périmètre du motif nn, compté en côtés de carreaux, vaut 8n+48n+4. Vérifiez-le sur les trois motifs dessinés, puis trouvez le motif de périmètre 100100.

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) 5, 9, 13
  • 2) 4*n+1
  • 3) 41 et 101
  • 4) Non : 4n+14n+1 impair
  • 5) Motif 15
  • 6) Motif 12

1) Motif 11 : 55 carreaux. Motif 22 : 99 carreaux. Motif 33 : 1313 carreaux. On peut compter directement sur la figure, ou raisonner : un carreau central plus quatre branches de même longueur.

2) Il faut écrire 4n+1\mathtt{4*n+1}. La justification vient de la construction elle-même, pas de la suite des nombres : il y a 44 branches de nn carreaux, soit 4n4n carreaux, auxquels s'ajoute le carreau CENTRAL, qui n'appartient à aucune branche. Contrôles : 4×1+1=54\times 1+1=5 ✓, 4×2+1=94\times 2+1=9 ✓, 4×3+1=134\times 3+1=13 ✓. Remarquer seulement que l'on ajoute 44 à chaque fois ne suffirait pas à justifier la formule, cela ne dirait pas d'où vient le +1+1.

3) Motif 1010 : 4×10+1=414\times 10+1=41 carreaux. Motif 2525 : 4×25+1=1014\times 25+1=101 carreaux.

4) NON. Le nombre 4n+14n+1 est toujours IMPAIR, puisque 4n4n est pair et qu'on lui ajoute 11 : aucun motif ne peut donc compter un nombre pair de carreaux, et 100100 est pair. On peut aussi le voir en résolvant 4n+1=1004n+1=100, qui donne n=994=24,75n=\dfrac{99}{4}=24{,}75 : ce n'est pas un entier, donc aucun motif ne convient. L'argument de parité est plus rapide et se transporte à toutes les questions du même genre.

5) Il faut inverser l'opération : à partir de cc carreaux, on retire d'abord le carreau central puis on partage en quatre branches, ce qui donne le bloc mettre n aˋ (c1)/4\mathtt{mettre\ n\ à\ (c-1)/4}. Test avec 6161 : 6114=604=15\dfrac{61-1}{4}=\dfrac{60}{4}=15, c'est donc le motif 1515. Vérification par le premier script : 4×15+1=614\times 15+1=61 ✓. L'ordre des opérations est imposé par l'inverse du programme direct : soustraire AVANT de diviser, car le programme direct multipliait avant d'ajouter.

6) Motif 11 : le contour de la croix compte 1212 côtés, et 8×1+4=128\times 1+4=12 ✓. Motif 22 : 2020 côtés, et 8×2+4=208\times 2+4=20 ✓. Motif 33 : 2828 côtés, et 8×3+4=288\times 3+4=28 ✓. La formule se justifie ainsi : les 4n+14n+1 carreaux offrent 4(4n+1)=16n+44(4n+1)=16n+4 côtés au total, mais chacun des 4n4n contacts entre deux carreaux voisins en cache DEUX, d'où 16n+48n=8n+416n+4-8n=8n+4. Enfin, 8n+4=1008n+4=100 donne 8n=968n=96 et n=12n=12 : c'est le motif 1212, qui compte 4×12+1=494\times 12+1=49 carreaux. On note que le périmètre grandit deux fois plus vite que le nombre de carreaux, ce qui est le contraire de ce qui se passe pour un carré plein.

Partie C : les classiques (/50)

Exercice 11 : Le nombre mystère

Le script choisit un nombre entier au hasard entre 11 et 100100. Le joueur propose des nombres, et le lutin répond « plus grand » ou « plus petit » jusqu'à ce que le joueur trouve.

Scratch
quand le drapeau vert est cliqué
mettre mystère à nombre aléatoire entre 1 et 100
mettre essais à 0
répéter jusqu'à ce que réponse = mystère
    demander "Ton nombre ?" et attendre
    ajouter 1 à essais
    si réponse < mystère alors
        dire "plus grand" pendant 1 secondes
    si réponse > mystère alors
        dire "plus petit" pendant 1 secondes
dire essais
  • 1) Le nombre mystère est 3737. Le joueur propose 5050, puis 2525, puis 3737. Que dit le lutin après 5050, après 2525, et quel nombre d'essais annonce-t-il à la fin ?
  • 2) Un joueur propose toujours le milieu de l'intervalle qui reste possible. Montrez qu'il trouve toujours en 77 essais au plus.
  • 3) Pourquoi 66 essais ne suffisent-ils pas toujours ?
  • 4) Avec des nombres de 11 à 1 0001\ 000, combien d'essais faut-il au plus avec cette stratégie ?
  • 5) Quelle est la probabilité de trouver le nombre mystère du premier coup en proposant un nombre au hasard ?

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

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

Réponses

  • 1) « plus petit », « plus grand » ; 3 essais
  • 2) 27=1281002^7=128\geq 100
  • 3) 26=64<1002^6=64<100
  • 4) 10 essais
  • 5) 0,010{,}01

1) Après 5050 : 5050 est plus grand que 3737, le lutin dit « plus petit ». Après 2525 : il dit « plus grand ». Au troisième essai, la boucle s'arrête et le lutin annonce 33 essais. Le piège est de lire « plus petit » comme une description de la proposition : le lutin indique dans quel sens chercher.

2) Chaque essai au milieu élimine au moins la moitié des nombres encore possibles. En partant de 100100 nombres, il en reste au plus 5050 après un essai, puis 2525, 1212, 66, 33, 11 : au septième essai, un seul nombre reste possible, et c'est le bon. On retient que 27=1282^{7}=128 dépasse 100100.

3) Avec 66 essais, on ne peut distinguer que 26=642^{6}=64 cas, moins que les 100100 nombres possibles : pour certains nombres mystères, il restera encore deux candidats après six essais.

4) Il faut la plus petite puissance de 22 qui dépasse 1 0001\ 000 : 210=1 0242^{10}=1\ 024. Dix essais suffisent. Dix fois plus de nombres ne demandent que trois essais de plus : c'est la force de la recherche par dichotomie.

5) Un nombre sur 100100 équiprobables : 1100=0,01\dfrac{1}{100}=0{,}01.

Le fil : couper l'intervalle en deux à chaque essai fait décroître les possibilités comme des puissances de 22.

Exercice 12 : Une liste et sa moyenne

Le script range cinq notes dans une liste nommée notes\mathtt{notes}, puis parcourt la liste pour en calculer la moyenne. On saisit, dans l'ordre, 1212, 1515, 99, 1414 et 1010.

Scratch
quand le drapeau vert est cliqué
supprimer tous les éléments de la liste notes
répéter 5 fois
    demander "note ?" et attendre
    ajouter réponse à notes
mettre somme à 0
mettre i à 1
répéter longueur de notes fois
    ajouter élément i de notes à somme
    ajouter 1 à i
dire somme / longueur de notes
  • 1) Combien d'éléments la liste contient-elle ? Que vaut l'élément 33 ?
  • 2) Que vaut somme\mathtt{somme} à la fin de la seconde boucle ?
  • 3) Que dit le lutin ?
  • 4) Un élève déplace le bloc mettre i aˋ 1\mathtt{mettre\ i\ à\ 1} à l'intérieur de la seconde boucle. Que dit alors le lutin avec ces cinq notes ? Et avec les notes 1515, 1212, 99, 1414, 1010 ?
  • 5) Pour trouver la plus grande note, on part de max=\mathtt{max}= élément 11 et, pour chaque élément, on remplace max\mathtt{max} si l'élément est plus grand. Quelle valeur trouve-t-on ? Pourquoi ne faut-il pas partir de max=0\mathtt{max}=0 si les valeurs peuvent être négatives ?

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

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

Réponses

  • 1) 5 éléments ; élément 3 : 9
  • 2) 60
  • 3) 12
  • 4) 12 par hasard, puis 15
  • 5) 15 ; partir du premier élément

1) La liste contient 55 éléments, dans l'ordre de saisie : 1212 ; 1515 ; 99 ; 1414 ; 1010. L'élément 33 est 99.

2) La boucle ajoute l'élément ii puis augmente ii : 12+15+9+14+10=6012+15+9+14+10=60.

3) 605=12\dfrac{60}{5}=12.

4) Si ii est remis à 11 à chaque tour, la boucle ajoute cinq fois l'élément 11. Avec ces notes : 5×12=605\times 12=60, et le lutin dit encore 1212, la bonne réponse, par pur hasard, parce que la première note est égale à la moyenne. Avec 1515 en premier : 5×15=755\times 15=75 et le lutin dit 1515 au lieu de 1212. Un test qui réussit ne prouve pas qu'un script est juste.

5) On trouve 1515. Partir de 00 marcherait ici, mais si toutes les valeurs étaient négatives, par exemple des températures, aucune ne dépasserait 00 et le script annoncerait 00, qui n'est pas dans la liste. Partir du premier élément garantit une réponse qui appartient à la liste.

Le fil : on suit les variables tour par tour, et l'on choisit des tests qui peuvent faire échouer le script, pas seulement le confirmer.

Exercice 13 : Un bloc personnalisé : des carrés emboîtés

On a créé un bloc personnalisé carreˊ\mathtt{carré} qui reçoit une longueur co^teˊ\mathtt{côté} et trace un carré de ce côté. Le script principal l'utilise cinq fois, en partant toujours du même point et dans la même direction.

Scratch
définir carré (côté)
    répéter 4 fois
        avancer de côté
        tourner de 90 degrés vers la droite

quand le drapeau vert est cliqué
aller à x: 0 y: 0
s'orienter à 90
stylo en position d'écriture
mettre taille à 20
répéter 5 fois
    carré (taille)
    ajouter 20 à taille
  • 1) Quelle est la longueur du côté du plus petit carré ? Du plus grand ?
  • 2) Quelle distance totale le lutin parcourt-il, stylo baissé ?
  • 3) Que vaut la variable taille\mathtt{taille} à la fin du script ?
  • 4) Quelle est l'aire du plus grand carré, en pas carrés ? Par combien l'aire du plus petit est-elle multipliée pour obtenir celle du plus grand ?
  • 5) On remplace ajouter 20 aˋ taille\mathtt{ajouter\ 20\ à\ taille} par mettre taille aˋ taille2\mathtt{mettre\ taille\ à\ taille*2}. Quelle est la longueur du côté du dernier carré tracé ?

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

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

Réponses

  • 1) 20 et 100 pas
  • 2) 1 200 pas
  • 3) 120
  • 4) 10 000 ; aire ×25
  • 5) 320 pas

1) taille\mathtt{taille} vaut 2020 au premier appel, puis 4040, 6060, 8080 et 100100 : le plus petit carré a 2020 pas de côté, le plus grand 100100.

2) Chaque carré fait parcourir quatre fois son côté : 4×(20+40+60+80+100)=4×300=1 2004\times(20+40+60+80+100)=4\times 300=1\ 200 pas. Les carrés se superposent en partie le long de deux côtés, mais le lutin, lui, parcourt bien toute cette distance.

3) taille\mathtt{taille} est augmentée APRÈS chaque carré, y compris après le cinquième : elle vaut 120120 à la fin, alors qu'aucun carré de 120120 n'a été tracé. Le piège est de répondre 100100.

4) 100×100=10 000100\times 100=10\ 000 pas carrés. Le côté est multiplié par 55, donc l'aire par 52=255^{2}=25 : 400×25=10 000400\times 25=10\ 000 ✓.

5) Les côtés deviennent 2020, 4040, 8080, 160160 et 320320 : le dernier carré a 320320 pas de côté. Il sort très probablement de la scène, qui ne mesure que 480480 pas sur 360360.

Le fil : un bloc personnalisé exécute le même tracé avec une valeur différente à chaque appel ; on suit la variable pour savoir quelle valeur il reçoit.

Exercice 14 : Problème : simuler 600 lancers de dé

Le script simule 600600 lancers d'un dé équilibré et compte les 66 obtenus. Il annonce la fréquence des 66.

Scratch
quand le drapeau vert est cliqué
mettre six à 0
répéter 600 fois
    mettre dé à nombre aléatoire entre 1 et 6
    si dé = 6 alors
        ajouter 1 à six
dire six / 600
  • 1) Combien de 66 peut-on espérer sur 600600 lancers ?
  • 2) Lors d'une exécution, le lutin dit 0,170{,}17. Combien de 66 ont été obtenus ?
  • 3) Une seconde exécution donne 0,1550{,}155. Le script est-il faux ?
  • 4) On modifie le script pour lancer deux dés à chaque tour et compter les sommes égales à 77. Vers quelle fréquence doit-on s'attendre, au millième ?
  • 5) Un élève remplace les deux dés par un seul bloc nombre aleˊatoire entre 2 et 12\mathtt{nombre\ aléatoire\ entre\ 2\ et\ 12}. Quelle fréquence des 77 obtiendra-t-il alors, au millième ? Pourquoi sa simulation est-elle fausse ?

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

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

Réponses

  • 1) 100
  • 2) 102
  • 3) Non : fluctuation
  • 4) 160,167\frac{1}{6}\approx 0{,}167
  • 5) 1110,091\frac{1}{11}\approx 0{,}091 : faux

1) La probabilité d'un 66 vaut 16\dfrac{1}{6}, donc on peut espérer 6006=100\dfrac{600}{6}=100 six.

2) 0,17×600=1020{,}17\times 600=102 six.

3) Non. Chaque exécution tire de nouveaux nombres au hasard, et la fréquence fluctue autour de 160,167\dfrac{1}{6}\approx 0{,}167 : 102102 puis 9393 six sur 600600 lancers sont des résultats ordinaires. Un script qui donnerait toujours la même fréquence serait au contraire suspect.

4) La somme 77 s'obtient avec 66 couples sur 3636 : fréquence attendue 636=160,167\dfrac{6}{36}=\dfrac{1}{6}\approx 0{,}167.

5) Le bloc donne l'un des 1111 entiers de 22 à 1212 avec la même probabilité : la fréquence des 77 tournera autour de 1110,091\dfrac{1}{11}\approx 0{,}091. C'est faux, parce que les sommes de deux dés ne sont PAS équiprobables : 77 est six fois plus fréquent que 22. Une simulation doit reproduire l'expérience, pas seulement l'ensemble des résultats possibles.

Le fil : une simulation donne une fréquence qui fluctue autour de la probabilité, à condition de reproduire fidèlement l'expérience.

Exercice 15 : Problème : la suite de Syracuse

On choisit un entier nn supérieur ou égal à 11. S'il est pair, on le divise par 22 ; s'il est impair, on le multiplie par 33 et on ajoute 11. On recommence jusqu'à obtenir 11, et le script compte les étapes.

Scratch
quand le drapeau vert est cliqué
demander "Nombre de départ ?" et attendre
mettre n à réponse
mettre étapes à 0
répéter jusqu'à ce que n = 1
    si n modulo 2 = 0 alors
        mettre n à n / 2
    sinon
        mettre n à 3 * n + 1
    ajouter 1 à étapes
dire étapes
  • 1) Déroulez le script pour n=6n=6. Combien d'étapes annonce le lutin ?
  • 2) Déroulez-le pour n=7n=7. Combien d'étapes, et quelle est la plus grande valeur atteinte ?
  • 3) Combien d'étapes pour n=16n=16 ? Pourquoi est-ce si rapide ?
  • 4) Que dit le lutin si l'on saisit 11 ?
  • 5) Pour n=27n=27, le script s'arrête après 111111 étapes. Peut-on affirmer qu'il s'arrête pour tout entier de départ ?

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

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

Réponses

  • 1) 8 étapes
  • 2) 16 étapes ; 52
  • 3) 4 étapes
  • 4) 0
  • 5) Non : conjecture ouverte

1) 631051684216\to 3\to 10\to 5\to 16\to 8\to 4\to 2\to 1 : huit étapes, le lutin dit 88.

2) 72211341752261340201051684217\to 22\to 11\to 34\to 17\to 52\to 26\to 13\to 40\to 20\to 10\to 5\to 16\to 8\to 4\to 2\to 1 : seize étapes. La plus grande valeur atteinte est 5252. Partir d'un nombre plus grand ne garantit pas d'arriver plus vite ou plus lentement : 77 demande deux fois plus d'étapes que 66.

3) 16842116\to 8\to 4\to 2\to 1 : quatre étapes. 16=2416=2^{4} est une puissance de 22 : on ne rencontre que des nombres pairs, divisés par 22 à chaque étape.

4) La condition d'arrêt n=1n=1 est vraie dès le départ : la boucle ne s'exécute pas, et le lutin dit 00.

5) Non. Des essais, même sur des milliards d'entiers, ne démontrent rien pour TOUS les entiers. Personne n'a jamais démontré que la suite atteint toujours 11 : c'est une conjecture, célèbre et toujours ouverte. Rien n'exclut, en l'état des connaissances, un entier pour lequel le script tournerait sans fin.

Le fil : dérouler un script, c'est suivre la variable étape par étape ; mais aucun nombre d'exécutions ne remplace une démonstration.

Chapitre précédent Probabilités et arbres à deux épreuves

Ce chapitre resservira dans

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

Voir aussi

Votre enfant perd les points de l'exercice d'algorithmique au brevet ?

Contactez-moi pour une première séance. L'exercice de programmation du brevet ne demande aucune connaissance nouvelle : il se gagne entièrement avec la méthode du tableau de valeurs, qui s'apprend en une séance et se rentabilise ensuite sur les fonctions et les équations.

Site par Studio Squalli