Suivre une boucle Scratch pas à pas
[enonce]
On considère le programme Scratch suivant, qui utilise une variable appelée cagnotte :
On souhaite déterminer ce que le lutin affiche, en suivant la valeur de la variable cagnotte après chaque tour de boucle.
[/enonce]
[etape]
Avant le premier tour de boucle, quelle est la valeur de la variable cagnotte ?
[qcm]
[option]$25$[/option]
[option correct="true"]$0$[/option]
[option]La variable n'a pas encore de valeur[/option]
[option]$100$[/option]
[reponse statut="correct"]Correct !
La première instruction du programme fixe la valeur de départ : la variable cagnotte vaut $0$ avant d'entrer dans la boucle.[/reponse]
[reponse motif="$25$"]Non.
$25$ est la valeur qui sera ajoutée à chaque tour, pas la valeur de départ. Relire l'instruction placée juste avant la boucle.[/reponse]
[reponse motif="La variable n'a pas encore de valeur"]Non.
Une instruction « mettre ... à ... » apparaît avant la boucle : elle donne bien une valeur de départ à la variable.[/reponse]
[reponse motif="$100$"]Non.
C'est une valeur que la variable n'atteint qu'à la toute fin. La question porte sur sa valeur avant le premier tour.[/reponse]
[reponse statut="incorrect"]Non.
L'instruction placée juste avant la boucle donne à la variable sa valeur de départ.[/reponse]
[/qcm]
[/etape]
[etape]
Donner la valeur de la variable cagnotte après le premier tour de boucle.
cagnotte $=$ [[t1]]
[math id="t1" attendu="25"]
[reponse statut="correct"]Bonne réponse !
On part de $0$ et le premier tour ajoute $25$ : la variable vaut $0 + 25 = 25$.[/reponse]
[reponse motif="50"]Attention, un seul tour de boucle a été effectué pour l'instant.
La boucle n'ajoute $25$ qu'une seule fois au premier tour.[/reponse]
[reponse motif="0"]La variable valait $0$ avant la boucle, mais le bloc « ajouter à cagnotte » la modifie dès le premier tour.[/reponse]
[reponse statut="incorrect"]Repartir de la valeur de départ et appliquer une seule fois le bloc « ajouter à cagnotte ».[/reponse]
[aide essai="2"]La variable valait $0$ avant la boucle. Le bloc « ajouter à cagnotte $25$ » augmente cette valeur de $25$.[/aide]
[aide essai="3"]Calculer $0 + 25$.[/aide]
[/math]
[solution]Avant la boucle, cagnotte $= 0$. Après le premier tour : cagnotte $= 0 + 25 = 25$.[/solution]
[/etape]
[etape]
Le bloc « ajouter à cagnotte $25$ » s'exécute à chaque tour. Donner la valeur de la variable cagnotte après le deuxième tour.
cagnotte $=$ [[t2]]
[math id="t2" attendu="50"]
[reponse statut="correct"]Exactement !
Après le premier tour, cagnotte valait $25$. Le deuxième tour ajoute encore $25$ : $25 + 25 = 50$.[/reponse]
[reponse motif="25"]La variable accumule les ajouts : elle ne repart pas de sa valeur précédente sans rien changer.
Au deuxième tour, on ajoute encore $25$ à ce qu'elle contenait.[/reponse]
[reponse motif="0"]La variable n'est pas remise à $0$ à chaque tour. Elle conserve sa valeur et on lui ajoute $25$.[/reponse]
[reponse statut="incorrect"]Reprendre la valeur obtenue au tour précédent, puis ajouter encore $25$.[/reponse]
[aide essai="2"]Après le premier tour, la variable valait $25$. Le deuxième tour ajoute de nouveau $25$.[/aide]
[aide essai="3"]Calculer $25 + 25$.[/aide]
[/math]
[solution]Après le premier tour : cagnotte $= 25$. Après le deuxième tour : cagnotte $= 25 + 25 = 50$.[/solution]
[/etape]
[etape]
La boucle se répète en tout $4$ fois. Donner la valeur affichée par le lutin à la fin du programme.
Le lutin dit [[fin]]
[math id="fin" attendu="100"]
[reponse statut="correct"]Bravo !
La boucle ajoute $25$ quatre fois de suite à partir de $0$ : $0 + 25 + 25 + 25 + 25 = 100$. Le lutin affiche $100$.[/reponse]
[reponse motif="75"]Compter le nombre de tours indiqué dans le bloc « répéter ... fois ».
La boucle ne s'arrête pas au troisième tour.[/reponse]
[reponse motif="125"]Vérifier le nombre inscrit dans le bloc « répéter ... fois ».
Le bloc « ajouter à cagnotte » n'est pas exécuté un tour de plus que prévu.[/reponse]
[reponse motif="25"]Un seul ajout donnerait cette valeur. Or le bloc à l'intérieur de la boucle est répété plusieurs fois.[/reponse]
[reponse statut="incorrect"]Repartir de la valeur après le deuxième tour, puis poursuivre les ajouts jusqu'au dernier tour de la boucle.[/reponse]
[aide essai="2"]Après le deuxième tour, cagnotte valait $50$. Il reste deux tours, chacun ajoutant $25$.[/aide]
[aide essai="3"]Continuer : $50 + 25 = 75$ après le troisième tour, puis ajouter encore $25$.[/aide]
[/math]
[solution]Après chaque tour, la variable vaut successivement $25$, $50$, $75$ puis $100$. Le lutin affiche $100$.[/solution]
[/etape]
[etape]
On modifie une seule chose dans le programme : la valeur de départ devient $30$ au lieu de $0$.
Donner la nouvelle valeur affichée par le lutin.
Le lutin dit [[t5]]
[math id="t5" attendu="130"]
[reponse statut="correct"]Tu as raison !
La boucle ajoute toujours $25$ quatre fois, soit $100$ au total. En partant de $30$, le lutin affiche $30 + 100 = 130$.[/reponse]
[reponse motif="100"]La valeur de départ n'est plus $0$ : elle s'ajoute aussi au total accumulé par la boucle.[/reponse]
[reponse motif="55"]Le nombre de tours de la boucle n'a pas changé : le bloc « ajouter $25$ » est toujours exécuté quatre fois.[/reponse]
[reponse statut="incorrect"]La boucle apporte le même total qu'avant. Seule la valeur de départ a changé.[/reponse]
[aide essai="2"]La boucle ajoute $25$ quatre fois, ce qui fait $100$ comme dans le programme précédent.[/aide]
[aide essai="3"]Cette fois, on part de $30$ au lieu de $0$. Calculer $30 + 100$.[/aide]
[/math]
[solution]La boucle ajoute $100$ en tout. En partant de $30$ : cagnotte $= 30 + 100 = 130$.[/solution]
[/etape]
[etape]
On revient au programme de départ (valeur de départ $0$), mais on oublie cette fois la première instruction « mettre cagnotte à $0$ ». Juste avant l'exécution, la variable cagnotte contenait déjà $40$ (sa valeur lors d'une exécution précédente). Que dit alors le lutin ?
[qcm]
[option]$100$[/option]
[option]$40$[/option]
[option correct="true"]$140$[/option]
[option]$0$[/option]
[reponse statut="correct"]C'est bien ça !
Sans l'instruction de départ, la variable conserve son ancienne valeur $40$. La boucle lui ajoute ensuite $100$ : $40 + 100 = 140$.[/reponse]
[reponse motif="$100$"]Non.
Ce serait le résultat si la variable repartait de $0$. Mais ici l'initialisation a été oubliée : la variable garde sa valeur précédente.[/reponse]
[reponse motif="$40$"]Non.
La boucle s'exécute quand même : elle ajoute $25$ à chaque tour. La valeur $40$ est seulement le point de départ.[/reponse]
[reponse motif="$0$"]Non.
Aucune instruction ne remet la variable à $0$ dans ce programme : c'est justement l'instruction qui a été oubliée.[/reponse]
[reponse statut="incorrect"]Non.
La variable part de son ancienne valeur, puis la boucle lui ajoute son total habituel.[/reponse]
[/qcm]
[/etape]