[enonce]
Ce QCM porte sur les boucles utilisées pour accumuler des valeurs dans une variable (somme, compteur). Pour chaque question, dérouler le programme pas à pas et choisir la bonne réponse parmi les 4 propositions.
[/enonce]
[etape]
On considère le programme suivant :
Que dit le lutin ?
[qcm]
[option]$3$[/option]
[option]$4$[/option]
[option]$7$[/option]
[option correct="true"]$12$[/option]
[reponse statut="correct"]Bonne réponse !
La variable $s$ commence à $0$ et reçoit $+3$ à chaque tour de boucle. Après $4$ tours : $s = 3 + 3 + 3 + 3 = 4 \times 3 = 12$.[/reponse]
[reponse motif="$3$"]Non.
La boucle ajoute $3$ à $s$ une fois par tour. Comme il y a $4$ tours, l'ajout est répété $4$ fois.[/reponse]
[reponse motif="$4$"]Non.
$s$ n'est pas le nombre de répétitions de la boucle, mais l'accumulation des valeurs ajoutées. Il faut compter ce qui s'ajoute à chaque tour.[/reponse]
[reponse motif="$7$"]Non.
$7$ correspondrait à $4 + 3$, mais l'opération à chaque tour est « ajouter $3$ à $s$ » et non « ajouter $4$ à $s$ ».[/reponse]
[reponse statut="incorrect"]Non.
La boucle ajoute $3$ à $s$, $4$ fois de suite : $s = 4 \times 3 = 12$.[/reponse]
[/qcm]
[/etape]
[etape]
On considère le programme suivant :

Que dit le lutin ?
[qcm]
[option]$5$[/option]
[option]$10$[/option]
[option correct="true"]$15$[/option]
[option]$21$[/option]
[reponse statut="correct"]Bravo !
On déroule pas à pas :
Tour 1 : $s = 0 + 1 = 1$, puis $i = 2$.
Tour 2 : $s = 1 + 2 = 3$, puis $i = 3$.
Tour 3 : $s = 3 + 3 = 6$, puis $i = 4$.
Tour 4 : $s = 6 + 4 = 10$, puis $i = 5$.
Tour 5 : $s = 10 + 5 = 15$, puis $i = 6$.
Le lutin dit $15$ (somme $1 + 2 + 3 + 4 + 5$).[/reponse]
[reponse motif="$5$"]Non.
$5$ correspond au nombre de répétitions, pas à la somme accumulée. La variable $s$ additionne les valeurs successives de $i$.[/reponse]
[reponse motif="$10$"]Non.
Cette valeur correspond à la somme $1 + 2 + 3 + 4$, mais il y a $5$ tours de boucle, pas $4$. Vérifier en déroulant un tour de plus.[/reponse]
[reponse motif="$21$"]Non.
$21$ est la somme $1 + 2 + 3 + 4 + 5 + 6$. Or, après le dernier tour $i$ vaut $6$ mais cette valeur n'est pas ajoutée à $s$ : la boucle s'arrête avant.[/reponse]
[reponse statut="incorrect"]Non.
On accumule : $s = 1 + 2 + 3 + 4 + 5 = 15$.[/reponse]
[/qcm]
[/etape]
[etape]
A quoi sert le bloc répéter jusqu'à ... dans Scratch ?
[qcm]
[option]A répéter un nombre fixé d'instructions.[/option]
[option correct="true"]A répéter des instructions tant qu'une condition n'est pas vérifiée.[/option]
[option]A exécuter des instructions une seule fois.[/option]
[option]A initialiser une variable.[/option]
[reponse statut="correct"]Exact !
Le bloc « répéter jusqu'à » répète le bloc d'instructions tant que la condition est fausse. Dès que la condition devient vraie, la boucle s'arrête.[/reponse]
[reponse motif="A répéter un nombre fixé d'instructions."]Non.
C'est le rôle de « répéter ... fois ». La différence est importante : avec « répéter jusqu'à », on ne sait pas à l'avance combien de tours auront lieu.[/reponse]
[reponse motif="A exécuter des instructions une seule fois."]Non.
Une boucle sert au contraire à répéter des instructions. Pour exécuter une seule fois, il suffit de placer les blocs sans boucle.[/reponse]
[reponse motif="A initialiser une variable."]Non.
Pour initialiser une variable, on utilise « mettre ... à ... » du menu Variables.[/reponse]
[reponse statut="incorrect"]Non.
Le bloc « répéter jusqu'à » répète son contenu jusqu'à ce que la condition devienne vraie.[/reponse]
[/qcm]
[/etape]
[etape]
On considère le programme suivant :

Que dit le lutin ?
[qcm]
[option]$20$[/option]
[option correct="true"]$21$[/option]
[option]$25$[/option]
[option]$26$[/option]
[reponse statut="correct"]C'est bien ça !
Les valeurs successives de $n$ sont : $1, 6, 11, 16, 21$. A chaque tour, la condition $n > 20$ est testée : tant qu'elle est fausse, on exécute le tour ; dès qu'elle est vraie, la boucle s'arrête. Quand $n = 21$, la condition $21 > 20$ devient vraie, donc on n'ajoute plus $5$. Le lutin dit $21$.[/reponse]
[reponse motif="$20$"]Non.
$20$ n'est jamais atteint exactement : on part de $1$ et on ajoute $5$ à chaque tour. Les valeurs successives sont $1, 6, 11, 16, 21$.[/reponse]
[reponse motif="$25$"]Non.
On part de $1$ et on ajoute $5$ à chaque tour. Les valeurs prises par $n$ sont $1, 6, 11, 16, 21$ : $25$ n'apparaît pas dans la suite.[/reponse]
[reponse motif="$26$"]Non.
Attention au moment où la boucle s'arrête. Dès que $n$ dépasse $20$ (à $n = 21$), la boucle s'arrête : on n'ajoute pas un $5$ supplémentaire.[/reponse]
[reponse statut="incorrect"]Non.
On déroule : $1, 6, 11, 16, 21$. La condition $21 > 20$ est vraie, la boucle s'arrête. Le lutin dit $21$.[/reponse]
[/qcm]
[/etape]
[etape]
On considère le programme suivant :

Combien vaut $k$ à la fin (le nombre de tours effectués) ?
[qcm]
[option]$3$[/option]
[option]$4$[/option]
[option correct="true"]$5$[/option]
[option]$6$[/option]
[reponse statut="correct"]Tu as raison !
On déroule : à chaque tour $n$ augmente de $7$ et $k$ augmente de $1$.
Tour 1 : $n = 7$, $k = 1$.
Tour 2 : $n = 14$, $k = 2$.
Tour 3 : $n = 21$, $k = 3$.
Tour 4 : $n = 28$, $k = 4$.
Tour 5 : $n = 35$, $k = 5$.
A ce moment, $n = 35 > 30$ : la boucle s'arrête. Le lutin dit $5$.[/reponse]
[reponse motif="$3$"]Non.
Au tour 3, $n = 21$ et la condition $21 > 30$ est fausse : la boucle continue. Il faut dérouler tous les tours.[/reponse]
[reponse motif="$4$"]Non.
Au tour 4, $n = 28$ et la condition $28 > 30$ est encore fausse. La boucle effectue donc au moins un tour de plus.[/reponse]
[reponse motif="$6$"]Non.
Au tour 5, on a déjà $n = 35 > 30$ : la boucle s'arrête. Il n'y a pas de tour 6.[/reponse]
[reponse statut="incorrect"]Non.
Il faut $5$ tours pour que $n$ dépasse $30$ (les valeurs sont $7, 14, 21, 28, 35$). Donc $k = 5$.[/reponse]
[/qcm]
[/etape]
[etape]
Que se passe-t-il si on oublie d'initialiser à $0$ la variable $\text{somme}$ avant une boucle d'accumulation ?
[qcm]
[option]Le programme refuse de démarrer.[/option]
[option correct="true"]La variable conserve son ancienne valeur (ou $0$ par défaut au tout premier lancement) et le résultat peut être faux aux exécutions suivantes.[/option]
[option]Scratch initialise automatiquement toutes les variables à $1$.[/option]
[option]La boucle ne s'exécute jamais.[/option]
[reponse statut="correct"]Excellent !
Si la variable n'est pas remise à $0$ au début, elle garde la valeur calculée à l'exécution précédente. Le résultat sera donc faussé. Pour cette raison, il faut toujours initialiser les variables d'accumulation avant la boucle.[/reponse]
[reponse motif="Le programme refuse de démarrer."]Non.
Scratch lance le programme même si une variable n'est pas initialisée. Le problème est que le résultat sera faux, pas que le programme s'arrête.[/reponse]
[reponse motif="Scratch initialise automatiquement toutes les variables à $1$."]Non.
Scratch n'impose pas une valeur par défaut systématique. La variable conserve sa dernière valeur, ce qui peut produire des résultats incorrects.[/reponse]
[reponse motif="La boucle ne s'exécute jamais."]Non.
La boucle s'exécute normalement. Le défaut d'initialisation ne bloque pas l'exécution, il fausse simplement le résultat.[/reponse]
[reponse statut="incorrect"]Non.
Sans initialisation, la variable garde sa valeur précédente : le résultat de l'accumulation est faussé.[/reponse]
[/qcm]
[/etape]