3ᵉ · Chapitre 14 · Algorithmique et programmation

Exercices — Algorithmique et programmation (Scratch)

16 exercices de difficulté croissante, à chercher avant de regarder le corrigé.

16 exercices, difficulté croissante de ★ (application directe) à ★★★★ (défi). Les corrigés détaillés sont dans le PDF — cherchez d'abord, le corrigé ensuite : c'est là que ça progresse.

Exercice 1 ★★★Exécuter un script pas à pas

Lire et exécuter un script pas à pas

Léa vient de créer son premier script dans Scratch. Elle l'exécute et observe son lutin.

quand le drapeau vert est cliqué
dire « Bonjour ! » pendant 2 secondes
avancer de (50) pas
tourner à droite de (90) degrés
avancer de (50) pas

1. Décris, dans l'ordre, tout ce que fait le lutin quand on clique sur le drapeau vert.

2. Dans quel ordre les instructions d'un script s'exécutent-elles ? Réponds par une phrase.

3. Léa affirme : « à la fin du script, le lutin a avancé de 100 pas en ligne droite ». Vrai ou faux ? Justifie ta réponse.

Exercice 2 ★★★Que dit le lutin ?

Lire et exécuter un script pas à pasVariables, compteurs et programmes de calcul

Un lutin exécute le programme de calcul suivant.

quand le drapeau vert est cliqué
demander « Choisis un nombre. » et attendre
mettre [nombre] à réponse
mettre [nombre] à nombre * 2
ajouter 7 à [nombre]
dire (nombre)

Que dit le lutin à la fin du script si l'utilisateur répond :

1. 5 ?

2. 3 ?

3. 2,5 ?

4. Explique, avec tes mots, la différence entre les blocs mettre [nombre] à … et ajouter … à [nombre].

Exercice 3 ★★★Répéter n fois

Boucles : répéter n fois, répéter jusqu'à

On considère le script suivant.

quand le drapeau vert est cliqué
mettre [total] à 0
répéter (6) fois
    ajouter 4 à [total]
dire (total)

1. Combien de fois l'instruction ajouter 4 à [total] est-elle exécutée ?

2. Que dit le lutin à la fin du script ?

3. On remplace 6 par 10 dans la boucle et 4 par 3 dans l'instruction ajouter. Que dit alors le lutin ?

4. Pour le script de départ, écris un calcul « en une seule multiplication » qui donne directement le résultat affiché par le lutin.

Exercice 4 ★★★Le bon script pour la bonne figure

Déplacements et tracés de figuresBoucles : répéter n fois, répéter jusqu'à

Trois scripts ont été écrits pour tracer des figures avec le stylo. Les voici, ainsi que les trois figures obtenues, dans le désordre.

Script A

quand le drapeau vert est cliqué
stylo en position d'écriture
répéter (4) fois
    avancer de (60) pas
    tourner à droite de (90) degrés

Script B

quand le drapeau vert est cliqué
stylo en position d'écriture
répéter (3) fois
    avancer de (80) pas
    tourner à droite de (120) degrés

Script C

quand le drapeau vert est cliqué
stylo en position d'écriture
répéter (6) fois
    avancer de (40) pas
    tourner à droite de (60) degrés

Figure 1

Figure 2

Figure 3

1. Associe chaque script à la figure qu'il trace. Justifie ta réponse en t'appuyant sur les angles.

2. Quel est le périmètre, en pas, de la figure tracée par le script A ?

3. Vrai ou faux : « dans le script C, le lutin tourne en tout de 360 degrés ». Justifie.

Exercice 5 ★★★★Programme de calcul et expression littérale

Variables, compteurs et programmes de calculLire et exécuter un script pas à pas

Zoé a programmé le script suivant, qui exécute un programme de calcul.

quand le drapeau vert est cliqué
demander « Choisis un nombre. » et attendre
mettre [résultat] à réponse * 3
ajouter 12 à [résultat]
dire (résultat)

1. Que dit le lutin si on choisit :

a. le nombre 8 ?

b. le nombre 5 ?

2. On note x le nombre choisi. Exprime, en fonction de x, le résultat affiché par le lutin.

3. Factorise l'expression obtenue à la question précédente.

4. Zoé affirme : « si je choisis un nombre entier, le résultat est toujours un multiple de 3 ». A-t-elle raison ? Justifie ta réponse.

Exercice 6 ★★★★Le compteur dans la boucle

Variables, compteurs et programmes de calculBoucles : répéter n fois, répéter jusqu'à

On considère le script suivant, qui utilise deux variables : un compteur n et une variable somme.

quand le drapeau vert est cliqué
mettre [n] à 1
mettre [somme] à 0
répéter (5) fois
    ajouter n à [somme]
    ajouter 1 à [n]
dire (somme)

1. Recopie et complète le tableau de trace d'exécution ci-dessous (la première ligne est déjà remplie).

Tour de boucle Valeur de n en fin de tour Valeur de somme en fin de tour
1 2 1
2
3
4
5

2. Que dit le lutin à la fin du script ?

3. Quel calcul ce script effectue-t-il ? Écris-le sous la forme d'une somme.

4. Que faudrait-il changer dans le script pour calculer 1+2+3++10 ?

Exercice 7 ★★★★Répéter jusqu'à ce que

Boucles : répéter n fois, répéter jusqu'àVariables, compteurs et programmes de calcul

Un nénuphar est posé sur un étang. Chaque jour, la surface qu'il occupe double. Au départ, sa surface vaut 1 dm2, et on considère que l'étang est recouvert dès que la surface du nénuphar dépasse 100 dm2.

On a écrit le script suivant :

quand le drapeau vert est cliqué
mettre [surface] à 1
mettre [jours] à 0
répéter jusqu'à ce que <surface > 100>
    mettre [surface] à surface * 2
    ajouter 1 à [jours]
dire (jours)

1. Recopie et complète la trace d'exécution ci-dessous, jusqu'à l'arrêt de la boucle. Ajoute autant de lignes que nécessaire.

Fin du tour Valeur de surface Valeur de jours
1 2 1
2 4 2
3

2. À la fin du script, que dit le lutin ?

3. Explique pourquoi on ne peut pas remplacer cette boucle par une boucle « répéter n fois » sans avoir d'abord résolu le problème.

4. On remplace la condition de la boucle par <surface > 1000>. Combien de tours la boucle effectue-t-elle ? Quelle est la valeur finale de surface, et que dit le lutin ?

Exercice 8 ★★★★Tracer des polygones réguliers

Déplacements et tracés de figuresBoucles : répéter n fois, répéter jusqu'à

Pour tracer un polygone régulier avec Scratch, le lutin avance d'une longueur fixe, puis tourne toujours du même angle, et recommence autant de fois qu'il y a de côtés.

1. Écris un script complet (avec l'événement de départ et le stylo) qui trace un hexagone régulier de côté 50 pas. Tu justifieras la valeur de l'angle de rotation choisie.

2. Quel angle de rotation faut-il utiliser pour tracer :

a. un polygone régulier à 8 côtés ?

b. un polygone régulier à 12 côtés ?

3. Pour tracer un pentagone régulier de côté 70 pas, un élève écrit :

répéter (5) fois
    avancer de (70) pas
    tourner à droite de (60) degrés

Ce script ne trace pas un pentagone régulier. Explique les deux erreurs de raisonnement de cet élève.

Exercice 9 ★★★★Le jeu du dé

Instructions conditionnelles et hasard

On programme un petit jeu de hasard avec le script suivant :

quand le drapeau vert est cliqué
mettre [dé] à nombre aléatoire entre (1) et (6)
si <dé = 6> alors
    dire « Gagné ! »
sinon
    dire « Perdu… »

1. Décris en une ou deux phrases ce que fait ce script.

2. Léa lance le script et le lutin dit « Perdu… ». Quelles valeurs la variable a-t-elle pu prendre ?

3. On admet que le bloc nombre aléatoire entre (1) et (6) simule un dé équilibré. Quelle est la probabilité que le lutin dise « Gagné ! » ?

4. Modifie le script pour que le joueur gagne lorsque le dé donne 5 ou 6. Quelle est alors la probabilité que le lutin dise « Gagné ! » ?

Exercice 10 ★★★Devine mon nombre

Instructions conditionnelles et hasardBoucles : répéter n fois, répéter jusqu'àVariables, compteurs et programmes de calcul

On programme le jeu suivant : l'ordinateur choisit un nombre entier secret entre 1 et 20, et le joueur doit le deviner. À chaque proposition, le lutin indique si elle est trop grande ou trop petite.

quand le drapeau vert est cliqué
mettre [secret] à nombre aléatoire entre (1) et (20)
mettre [essais] à 0
répéter jusqu'à ce que <réponse = secret>
    demander « Devine mon nombre ! » et attendre
    ajouter 1 à [essais]
    si <réponse > secret> alors
        dire « Trop grand ! »
    si <réponse < secret> alors
        dire « Trop petit ! »
dire « Bravo ! »
dire (essais)

1. Dans une partie, le nombre secret est 13 et le joueur propose successivement 10, puis 15, puis 13. Qu'affiche le lutin après chaque proposition, puis à la fin du script ?

2. À quoi sert la variable essais dans ce programme ?

3. Pourquoi a-t-on utilisé une boucle « répéter jusqu'à ce que » plutôt qu'une boucle « répéter n fois » ?

4. Le joueur adopte la stratégie suivante : il propose d'abord 10, puis, à chaque réponse du lutin, il propose le nombre situé au milieu des valeurs encore possibles. En coupant ainsi l'intervalle en deux à chaque proposition, combien d'essais suffisent à coup sûr pour trouver un nombre entre 1 et 20 ? Explique ton raisonnement.

Exercice 11 ★★★La frise

Déplacements et tracés de figuresBoucles : répéter n fois, répéter jusqu'àÉvénements, blocs personnalisés et scripts parallèles

On veut décorer le bas de l'écran avec une frise en créneaux. On commence par créer un bloc personnalisé motif qui trace un seul créneau :

définir motif
avancer de (20) pas
tourner à gauche de (90) degrés
avancer de (20) pas
tourner à droite de (90) degrés
avancer de (20) pas
tourner à droite de (90) degrés
avancer de (20) pas
tourner à gauche de (90) degrés
avancer de (20) pas

Voici le tracé obtenu quand le lutin, orienté horizontalement vers la droite, exécute une fois le bloc motif :

Le motif en créneau

1. Le lutin part orienté horizontalement vers la droite. Vérifie qu'à la fin du bloc motif, il est de nouveau orienté vers la droite. Tu pourras faire le bilan des rotations effectuées.

2. De combien de pas le lutin s'est-il déplacé horizontalement en tout pendant le tracé d'un motif ? Attention : tous les segments ne comptent pas !

3. Écris le script complet (événement de départ, stylo, boucle) qui trace la frise de 5 motifs ci-dessous :

La frise complète

4. Quelle est la longueur totale de la frise, c'est-à-dire le déplacement horizontal du lutin entre le début et la fin du tracé ?

Exercice 12 ★★★★Événements et scripts parallèles

Événements, blocs personnalisés et scripts parallèles

Deux lutins, Chat et Souris, sont sur la scène. Voici leurs scripts.

Script du Chat :

quand le drapeau vert est cliqué
dire « Attrape-moi ! » pendant 2 secondes
envoyer [départ] à tous

Script 1 de la Souris :

quand je reçois [départ]
répéter (3) fois
    avancer de (30) pas
    attendre 1 seconde

Script 2 de la Souris :

quand la touche espace est pressée
dire « Squeak ! » pendant 1 seconde

1. Décris, dans l'ordre, tout ce qui se passe quand on clique sur le drapeau vert.

2. La Souris commence-t-elle à avancer dès le clic sur le drapeau vert ? Justifie ta réponse.

3. De combien de pas la Souris avance-t-elle en tout ?

4. On appuie sur la touche espace pendant que la Souris avance. Que se passe-t-il ?

Exercice 13 ★★★La rosace

Événements, blocs personnalisés et scripts parallèlesDéplacements et tracés de figures

On veut faire tracer au lutin la rosace ci-dessous, formée de 12 carrés de côté 40 pas : entre deux carrés, le lutin tourne de 30 degrés.

La rosace de douze carrés

Pour cela, on a créé le bloc personnalisé suivant.

définir carré
répéter (4) fois
    avancer de (40) pas
    tourner à droite de (90) degrés

1. Que trace le bloc carré utilisé seul ? Justifie la valeur de l'angle de 90 degrés.

2. Écris le script principal qui trace la rosace complète. Il doit démarrer au clic sur le drapeau vert, effacer les tracés précédents, mettre le stylo en position d'écriture, puis utiliser le bloc carré.

3. Explique par un calcul pourquoi la rosace « se referme » exactement après le douzième carré.

4. Quel est l'intérêt d'utiliser le bloc personnalisé carré plutôt que de recopier 12 fois les instructions qu'il contient ?

5. On veut maintenant une rosace formée de 18 carrés. De quel angle le lutin doit-il tourner entre deux carrés ?

Exercice 14 ★★★Programme de calcul et équation

Variables, compteurs et programmes de calculLire et exécuter un script pas à pas

On considère les deux programmes de calcul suivants.

Programme A (script Scratch) :

quand le drapeau vert est cliqué
demander « Choisis un nombre. » et attendre
mettre [résultat] à réponse * 5
ajouter (-3) à [résultat]
dire (résultat)

Programme B :

  • Choisir un nombre.
  • Ajouter 4.
  • Multiplier le tout par 2.

1. Vérifie que si on choisit le nombre 6, le programme A donne 27 et le programme B donne 20.

2. On note x le nombre choisi au départ. Exprime en fonction de x le résultat du programme A, puis celui du programme B.

3. Développe l'expression obtenue pour le programme B.

4. Quel nombre faut-il choisir pour que les deux programmes donnent le même résultat ? Vérifie ta réponse.

Exercice 15 ★★★La spirale

Déplacements et tracés de figuresBoucles : répéter n fois, répéter jusqu'àVariables, compteurs et programmes de calcul

On veut faire tracer au lutin la spirale carrée ci-dessous : le premier segment mesure 5 pas, chaque segment est plus long de 5 pas que le précédent, et le lutin tourne à angle droit entre deux segments.

La spirale carrée

Voici le script utilisé, dans lequel trois valeurs ont été effacées (remplacées par ).

quand le drapeau vert est cliqué
mettre [longueur] à …
stylo en position d'écriture
répéter (20) fois
    avancer de (longueur) pas
    tourner à droite de (…) degrés
    ajouter … à [longueur]

1. Recopie le script en complétant les trois valeurs manquantes pour qu'il trace la spirale.

2. Quelle est la longueur du dernier segment tracé ?

3. Quelle est la longueur totale de la ligne tracée ?

4. Vrai ou faux : « après les 20 segments, le lutin est orienté comme au départ ». Justifie ta réponse.

Exercice 16 ★★★★Défi : le jeu du trésor

Instructions conditionnelles et hasardVariables, compteurs et programmes de calculBoucles : répéter n fois, répéter jusqu'àÉvénements, blocs personnalisés et scripts parallèles

Voici un jeu complet programmé dans Scratch. Un trésor est caché derrière l'une des cases numérotées de 1 à 10, et le joueur doit le trouver.

Script 1 :

quand le drapeau vert est cliqué
mettre [score] à 0
mettre [trésor] à nombre aléatoire entre (1) et (10)
répéter jusqu'à ce que <score = 3>
    demander « Où est le trésor ? (1 à 10) » et attendre
    si <réponse = trésor> alors
        ajouter 1 à [score]
        dire « Trouvé ! » pendant 1 seconde
        mettre [trésor] à nombre aléatoire entre (1) et (10)
    sinon
        dire « Raté… » pendant 1 seconde
envoyer [victoire] à tous

Script 2 :

quand je reçois [victoire]
dire « Champion ! »

1. Combien de trésors le joueur doit-il trouver pour gagner ?

2. À la première demande, quelle est la probabilité de trouver le trésor du premier coup ?

3. Pourquoi l'instruction mettre [trésor] à nombre aléatoire entre (1) et (10) est-elle répétée après chaque succès ?

4. Jules joue une partie. Le trésor est d'abord caché en case 7, puis en case 2, puis en case 9. Jules propose successivement : 4, 7, 7, 2, 9. Recopie et complète la trace de la partie.

Proposition Trésor trouvé ? Score après
4
7
7
2
9

5. Que se passe-t-il exactement quand le score atteint 3 ?

6. On veut aussi compter le nombre total d'essais du joueur. Quelles instructions faut-il ajouter au script 1, et à quels endroits ?

Bloqué sur « Algorithmique et programmation (Scratch) » ?

On peut le travailler ensemble dès cette semaine. La première heure est offerte — on fait le point honnêtement, et vous repartez au minimum avec une méthode.