Aller au contenu principal
5e⏱ 45 minutes

Scratch : boucles et conditions — Entraînement type évaluation

Pour un entraînement qui sert vraiment à quelque chose : pas de cours sous les yeux, une feuille et un stylo. Note-toi ensuite avec le corrigé.

Barème indicatif : 20 points.

Exercice 1 (4 points) — Vocabulaire

  1. Que fait une instruction conditionnelle « si... alors » ? (1 point)
  2. Quelle est la différence entre « si... alors » et « si... alors... sinon » ? (1 point)
  3. Cite les trois opérateurs de comparaison vus dans ce chapitre. (1 point)
  4. Quelle est la différence entre répéter ... fois et répéter jusqu'à ce que ? (1 point)
Voir le corrigé
  1. Elle n'exécute les instructions qu'elle contient que si la condition indiquée est vraie.
  2. « si... alors » n'a qu'une seule branche, exécutée si la condition est vraie ; « si... alors... sinon » propose deux branches, l'une pour le cas vrai, l'autre pour le cas faux.
  3. = (égal à), < (strictement inférieur à), > (strictement supérieur à).
  4. répéter ... fois s'arrête après un nombre de tours fixé à l'avance ; répéter jusqu'à ce que s'arrête dès qu'une condition devient vraie.

Exercice 2 (4 points) — Lire un script

quand [drapeau vert] cliqué
mettre vies à 3
répéter jusqu'à ce que <vies < 1>
    si <touche [Ennemi] ?> alors
        changer vies de -1
dire [Partie terminée] pendant 2 secondes
  1. Quelle est la valeur de vies au tout début du script ? (1 point)
  2. Que se passe-t-il quand le lutin touche l'ennemi ? (1 point)
  3. À quelle condition la boucle répéter jusqu'à s'arrête-t-elle ? (1 point)
  4. Combien de fois faut-il toucher l'ennemi, au minimum, pour que « Partie terminée » s'affiche ? (1 point)
Voir le corrigé
  1. vies vaut 33 au tout début.
  2. La variable vies diminue de 11 (changer vies de -1).
  3. Elle s'arrête dès que vies devient strictement inférieure à 11, c'est-à-dire quand elle atteint 00.
  4. Il faut toucher l'ennemi 33 fois : 3→2→1→03 \to 2 \to 1 \to 0, et 0<10 < 1 arrête la boucle.

Exercice 3 (4 points) — Écrire une condition

Une variable temperature représente une température en degrés.

  1. Écris la condition qui devient vraie quand il gèle (temperature strictement inférieure à 00). (1 point)
  2. Écris un script si...alors...sinon qui affiche « Il gèle ! » si cette condition est vraie, et « Pas de gel » sinon. (2 points)
  3. Que s'affiche-t-il si temperature vaut exactement 00 ? Justifie. (1 point)
Voir le corrigé
  1. temperature < 0.
  2. si <temperature < 0> alors
        dire [Il gèle !] pendant 2 secondes
    sinon
        dire [Pas de gel] pendant 2 secondes
    
  3. Si temperature vaut exactement 00, la condition temperature < 0 est fausse (zéro n'est pas strictement inférieur à zéro) : c'est donc « Pas de gel » qui s'affiche.

Exercice 4 (4 points) — Combiner boucle et condition

On veut qu'un lutin avance de 44 jusqu'à ce qu'il touche le bord de la scène, puis qu'il dise « Arrivé ! ».

  1. Quel type de boucle utiliser : répéter ... fois ou répéter jusqu'à ce que ? Justifie. (1 point)
  2. Écris le script complet correspondant. (3 points)
Voir le corrigé
  1. répéter jusqu'à ce que, car on ne connaît pas à l'avance le nombre de pas nécessaires pour atteindre le bord (cela dépend de la position de départ du lutin).
  2. quand [drapeau vert] cliqué
    répéter jusqu'à ce que <touche le bord ?>
        avancer de 4
    dire [Arrivé !] pendant 2 secondes
    

Exercice 5 (4 points) — Un script à corriger

Un élève veut qu'un jeu affiche « Gagné ! » dès que le score atteint 55, et a écrit :

répéter jusqu'à ce que <score = 5>
    changer score de 2
dire [Gagné !] pendant 2 secondes

sachant que score vaut 00 au départ.

  1. Quelles sont les valeurs successives de score au fil des tours de boucle ? (2 points)
  2. Le script fonctionne-t-il comme prévu ? Explique le problème. (1 point)
  3. Propose une correction (changement de condition, ou de valeur ajoutée à chaque tour) qui règle ce problème. (1 point)
Voir le corrigé
  1. score prend les valeurs 0,2,4,6,8,10,...0, 2, 4, 6, 8, 10, ... : elle augmente de 22 en 22 à partir de 00.
  2. Le script ne fonctionne pas comme prévu : score passe directement de 44 à 66, sans jamais valoir exactement 55. La condition score = 5 n'est donc jamais vraie, et la boucle tourne indéfiniment (boucle infinie).
  3. Deux corrections possibles : changer la condition en score > 4 (ou score < 5 inversée en sortie de boucle), qui devient vraie dès que score dépasse 44 ; ou bien changer l'incrément à changer score de 1, pour que score prenne bien toutes les valeurs entières et finisse par valoir exactement 55.