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
- Que fait une instruction conditionnelle « si... alors » ? (1 point)
- Quelle est la différence entre « si... alors » et « si... alors... sinon » ? (1 point)
- Cite les trois opérateurs de comparaison vus dans ce chapitre. (1 point)
- Quelle est la différence entre
répéter ... foisetrépéter jusqu'à ce que? (1 point)
Voir le corrigé
- Elle n'exécute les instructions qu'elle contient que si la condition indiquée est vraie.
- « 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.
=(égal à),<(strictement inférieur à),>(strictement supérieur à).répéter ... foiss'arrête après un nombre de tours fixé à l'avance ;répéter jusqu'à ce ques'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
- Quelle est la valeur de
viesau tout début du script ? (1 point) - Que se passe-t-il quand le lutin touche l'ennemi ? (1 point)
- À quelle condition la boucle
répéter jusqu'às'arrête-t-elle ? (1 point) - Combien de fois faut-il toucher l'ennemi, au minimum, pour que « Partie terminée » s'affiche ? (1 point)
Voir le corrigé
viesvaut au tout début.- La variable
viesdiminue de (changer vies de -1). - Elle s'arrête dès que
viesdevient strictement inférieure à , c'est-à-dire quand elle atteint . - Il faut toucher l'ennemi fois : , et arrête la boucle.
Exercice 3 (4 points) — Écrire une condition
Une variable temperature représente une température en degrés.
- Écris la condition qui devient vraie quand il gèle (
temperaturestrictement inférieure à ). (1 point) - Écris un script
si...alors...sinonqui affiche « Il gèle ! » si cette condition est vraie, et « Pas de gel » sinon. (2 points) - Que s'affiche-t-il si
temperaturevaut exactement ? Justifie. (1 point)
Voir le corrigé
temperature < 0.-
si <temperature < 0> alors dire [Il gèle !] pendant 2 secondes sinon dire [Pas de gel] pendant 2 secondes - Si
temperaturevaut exactement , la conditiontemperature < 0est 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 jusqu'à ce qu'il touche le bord de la scène, puis qu'il dise « Arrivé ! ».
- Quel type de boucle utiliser :
répéter ... foisourépéter jusqu'à ce que? Justifie. (1 point) - Écris le script complet correspondant. (3 points)
Voir le corrigé
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).-
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 , et a écrit :
répéter jusqu'à ce que <score = 5>
changer score de 2
dire [Gagné !] pendant 2 secondes
sachant que score vaut au départ.
- Quelles sont les valeurs successives de
scoreau fil des tours de boucle ? (2 points) - Le script fonctionne-t-il comme prévu ? Explique le problème. (1 point)
- Propose une correction (changement de condition, ou de valeur ajoutée à chaque tour) qui règle ce problème. (1 point)
Voir le corrigé
scoreprend les valeurs : elle augmente de en à partir de .- Le script ne fonctionne pas comme prévu :
scorepasse directement de à , sans jamais valoir exactement . La conditionscore = 5n'est donc jamais vraie, et la boucle tourne indéfiniment (boucle infinie). - Deux corrections possibles : changer la condition en
score > 4(ouscore < 5inversée en sortie de boucle), qui devient vraie dès quescoredépasse ; ou bien changer l'incrément àchanger score de 1, pour quescoreprenne bien toutes les valeurs entières et finisse par valoir exactement .