1. Rappel : boucles et variables
Exercice 1 — ⭐
- Que fait le bloc
répéter 6 foisplacé au-dessus d’un blocavancer de 40ettourner de 60 degrés? - Quelle est la différence entre
mettre score à 0etchanger score de 1?
Voir le corrigé
- Il fait avancer le lutin de puis tourner de , et ce 6 fois de suite : cela trace un hexagone régulier de côté .
mettre score à 0donne àscorela valeur , en effaçant l’ancienne valeur.changer score de 1ajoute à la valeur actuelle descore, sans l’effacer.
2. L’instruction conditionnelle « si… alors »
Exercice 2 — ⭐⭐
On donne le script suivant :
quand [drapeau vert] cliqué
répéter jusqu'à ce que faux
avancer de 5
si <touche le bord ?> alors
tourner de 180 degrés
- Que se passe-t-il si le lutin ne touche jamais le bord ?
- Que se passe-t-il dès que le lutin touche le bord ?
- Pourquoi le bloc
si...alorsest-il adapté ici, plutôt qu’unsi...alors...sinon?
Voir le corrigé
- Il continue simplement d’avancer de à chaque tour, sans jamais tourner.
- La condition
touche le bord ?devient vraie : le lutin tourne de , c’est-à-dire qu’il fait demi-tour. - Il n’y a rien de particulier à faire quand le lutin ne touche pas le bord (il doit
juste continuer à avancer, ce qui est déjà fait par le bloc
avancerplacé avant lesi...alors) : unsinonserait donc inutile ici.
3. « si… alors… sinon »
Exercice 3 — ⭐⭐
Un jeu de quiz pose la question « Combien font 6 x 7 ? ».
- Écris le script utilisant
si...alors...sinonqui affiche « Bravo ! » et ajoute 1 point au score si la réponse donnée vaut 42, et qui affiche « Perdu » sinon. - Que se passe-t-il si l’élève répond
41? - Que se passe-t-il si l’élève répond
42?
Voir le corrigé
-
demander [Combien font 6 x 7 ?] et attendre si <réponse = 42> alors dire [Bravo !] pendant 2 secondes changer score de 1 sinon dire [Perdu] pendant 2 secondes - La condition
réponse = 42est fausse (puisque la réponse vaut ) : c’est la branchesinonqui s’exécute, donc le message « Perdu » s’affiche, et le score n’est pas modifié. - La condition
réponse = 42est vraie : la branche dualorss’exécute, donc « Bravo ! » s’affiche et le score augmente de .
4. Les opérateurs de comparaison
Exercice 4 — ⭐⭐⭐
Une variable vies commence à et diminue de à chaque erreur.
- Écris la condition, avec un opérateur de comparaison, qui devient vraie quand le joueur
n’a plus de vies (
viesvaut ou moins). - Écris la condition qui devient vraie tant que le joueur a strictement plus de 1 vie.
- Quelle différence y a-t-il entre les blocs
vies < 1etvies = 0dans ce contexte ?
Voir le corrigé
vies < 1(strictement inférieur à , donc ou une valeur négative).vies > 1.- Si
viesne peut jamais devenir négatif (elle s’arrête toujours pile à ), les deux conditions sont équivalentes dans ce cas précis. Maisvies < 1reste vraie même siviesdevenait négative par erreur (par exemple ), alors quevies = 0ne serait plus vraie dans ce cas :vies < 1est donc une condition plus prudente pour détecter « il n’y a plus de vies ».
5. La boucle « répéter jusqu’à »
Exercice 5 — ⭐⭐⭐
- Quelle est la différence entre
répéter 10 foisetrépéter jusqu'à ce que <...>? - Écris un script qui fait avancer un lutin de tant qu’il ne touche pas le pointeur de la souris, puis affiche « Trouvé ! » une fois arrivé.
- Un élève a écrit
répéter jusqu'à ce que <vies = 10>, alors queviescommence à et ne peut que diminuer. Que va-t-il se passer ? Comment corriger le script ?
Voir le corrigé
répéter 10 foiss’arrête après un nombre de tours fixé à l’avance (ici 10).répéter jusqu'à ce que <...>s’arrête dès qu’une condition devient vraie, sans que l’on connaisse forcément à l’avance le nombre de tours nécessaires.-
quand [drapeau vert] cliqué répéter jusqu'à ce que <touche [pointeur de la souris] ?> avancer de 3 dire [Trouvé !] pendant 2 secondes - Puisque
viesne fait que diminuer à partir de , elle n’atteindra jamais : la conditionvies = 10ne devient jamais vraie, donc la boucle ne s’arrête jamais (elle est infinie par erreur). Pour corriger le script, il faudrait utiliser une condition cohérente avec l’évolution réelle devies, par exemplevies < 1pour arrêter la boucle quand il n’y a plus de vies.