Tableau de valeurs : variables et bloc ajouter à

On considère le programme Scratch suivant, qui utilise trois variables $ x $, $ y $ et $ z $ :

Programme Scratch utilisant trois variables x, y et z
  1. Recopier et compléter le tableau de valeurs ci-dessous, ligne par ligne. Les variables sont initialisées à $ 0 $ lors de leur création.

    Instruction x y z
    mettre x à 4 ... ... ...
    mettre y à 7 ... ... ...
    mettre z à x + y ... ... ...
    ajouter à x : 5 ... ... ...
    mettre y à z × 2 ... ... ...
  2. Quel nombre le lutin affiche-t-il à la fin du programme ?
  3. On permute les deux dernières instructions « ajouter à $ x $ : $ 5 $ » et « mettre $ y $ à $ z \times 2 $ ». Le nombre affiché est-il le même ?

Corrigé

  1. On complète le tableau instruction par instruction. À chaque ligne, seules les variables modifiées changent de valeur.

    Instruction x y z
    mettre x à 4 4 0 0
    mettre y à 7 4 7 0
    mettre z à x + y 4 7 11
    ajouter à x : 5 9 7 11
    mettre y à z × 2 9 22 11

    Détail des calculs :
    $ z = x + y = 4 + 7 = 11 $
    $ x = x + 5 = 4 + 5 = 9 $
    $ y = z \times 2 = 11 \times 2 = 22 $

  2. Le lutin affiche $\mathbf{22}$.
  3. La permutation ne change pas le résultat affiché. En effet, l'instruction « mettre $ y $ à $ z \times 2 $ » utilise uniquement la variable $ z $, qui n'est pas modifiée par « ajouter à $ x $ : $ 5 $ ». L'ordre des deux instructions n'a donc aucune incidence sur la valeur finale de $ y $.

Pour réviser : Utiliser une variable dans Scratch

Vrai/Faux : Variables et affectation

[enonce]
Pour chaque affirmation suivante sur les variables et l'affectation dans Scratch, indiquer si elle est Vraie ou Fausse.
[/enonce]

[etape]
Affirmation : L'instruction « mettre $a$ à $5$ » remplace la valeur précédente de $a$ par $5$.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Exact !
« Mettre à » est une affectation : l'ancienne valeur est effacée et remplacée par la nouvelle, quelle qu'elle soit.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : « mettre $a$ à ... » remplace toujours la valeur précédente. Pour augmenter une valeur sans l'effacer, il faut utiliser « ajouter ... à ... ».[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. « Mettre $a$ à $5$ » écrase la valeur précédente et $a$ vaut désormais $5$.
[/solution]
[/etape]

[etape]
On suppose que la variable $n$ vaut $4$ avant l'instruction.

Affirmation : Après l'instruction « ajouter à $n$ ... $3$ », la variable $n$ vaut $3$.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Bonne réponse !
« Ajouter à $n$ ... $3$ » signifie « augmenter $n$ de $3$ » : si $n$ valait $4$, il vaut maintenant $4 + 3 = 7$.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Attention à ne pas confondre « mettre ... à » et « ajouter ... à ». La première remplace, la seconde augmente. Ici, on augmente $n$ de $3$.[/reponse]
[/qcm]

[solution]
Cette affirmation est fausse. « Ajouter à $n$ ... $3$ » augmente $n$ de $3$ : si $n = 4$, alors $n$ vaut $4 + 3 = 7$.
[/solution]
[/etape]

[etape]
Affirmation : Une variable peut être modifiée plusieurs fois dans un programme.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]C'est bien ça !
Une variable peut être affectée puis réaffectée autant de fois qu'on le souhaite. Sa valeur évolue au cours de l'exécution.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : c'est même ce qui rend les variables utiles. Une variable peut changer de valeur tout au long du programme (compteur, accumulateur, résultat intermédiaire...).[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. Une variable peut prendre plusieurs valeurs successives au cours de l'exécution d'un programme.
[/solution]
[/etape]

[etape]
On considère le programme :

  • mettre $x$ à $3$
  • mettre $x$ à $7$

Affirmation : Après ces deux instructions, $x$ vaut $10$.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Bravo !
La deuxième instruction « mettre $x$ à $7$ » écrase la valeur précédente : $x$ vaut $7$, pas $10$. Pour obtenir $10$, il faudrait « ajouter $4$ à $x$ » au lieu de la deuxième instruction.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Le piège ici est de confondre « mettre à » et « ajouter à ». Avec « mettre $x$ à $7$ », l'ancienne valeur $3$ est effacée : il ne reste que $7$.[/reponse]
[/qcm]

[solution]
Cette affirmation est fausse. La deuxième « mettre à » remplace la valeur. À la fin, $x = 7$.
[/solution]
[/etape]

[etape]
Affirmation : Pour suivre l'évolution des valeurs prises par chaque variable, on peut construire un tableau de valeurs pas à pas.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Tu as raison !
Le tableau de valeurs pas à pas est un outil très utile : on note la valeur de chaque variable après chaque instruction. Il permet d'éviter les erreurs en exécution mentale.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : pour comprendre un programme, on note ligne par ligne la valeur de chaque variable. C'est la méthode du tableau de valeurs pas à pas.[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. Le tableau de valeurs pas à pas trace l'évolution de chaque variable instruction par instruction.
[/solution]
[/etape]

[etape]
On considère le programme :

  • mettre $a$ à $2$
  • mettre $b$ à $5$
  • mettre $a$ à $b$

Affirmation : Après ces trois instructions, $a = 5$ et $b = 5$.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Excellent !
La troisième instruction copie la valeur de $b$ dans $a$ : $a$ vaut désormais $5$. La variable $b$ n'est pas modifiée et conserve sa valeur $5$.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : « mettre $a$ à $b$ » copie la valeur courante de $b$ dans $a$. Cela ne change pas $b$. À la fin, $a$ et $b$ valent toutes les deux $5$.[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. La troisième instruction copie $b$ dans $a$ : on obtient $a = 5$ et $b = 5$.
[/solution]
[/etape]

QCM : Boucles imbriquées et programmes complexes

[enonce]
Ce QCM porte sur les boucles imbriquées (une boucle à l'intérieur d'une autre) dans Scratch. Pour chaque question, choisir la bonne réponse parmi les 4 propositions.
[/enonce]

[etape]
On considère le programme suivant :

Programme Scratch avec deux boucles imbriquées

Que dit le lutin ?
[qcm]
[option]$3$[/option]
[option]$4$[/option]
[option]$7$[/option]
[option correct="true"]$12$[/option]
[reponse statut="correct"]Exact !
La boucle extérieure se répète $3$ fois. À chaque passage, la boucle intérieure se répète $4$ fois et ajoute $1$ à $c$. Au total : $3 \times 4 = 12$ ajouts. Donc $c = 12$.[/reponse]
[reponse motif="$3$"]Non.
$3$ correspond seulement aux passages de la boucle extérieure. Il faut multiplier par les passages de la boucle intérieure.[/reponse]
[reponse motif="$4$"]Non.
$4$ correspond aux passages de la boucle intérieure pour un seul passage extérieur. Il faut compter tous les passages de la boucle extérieure.[/reponse]
[reponse motif="$7$"]Non.
Avec deux boucles imbriquées, le nombre total de répétitions est le produit des deux nombres, pas leur somme. Ici, ce n'est donc pas $3 + 4 = 7$.[/reponse]
[reponse statut="incorrect"]Non.
Le total est $3 \times 4 = 12$ : la boucle intérieure exécute son contenu $4$ fois, à chacun des $3$ passages de la boucle extérieure.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant :

Programme Scratch avec accumulation et double boucle

Que dit le lutin ?
[qcm]
[option]$10$[/option]
[option correct="true"]$20$[/option]
[option]$25$[/option]
[option]$7$[/option]
[reponse statut="correct"]Bonne réponse !
Le bloc « ajouter $2$ à $s$ » est exécuté $2 \times 5 = 10$ fois. Chaque exécution ajoute $2$ : au total $s = 10 \times 2 = 20$.[/reponse]
[reponse motif="$10$"]Non.
$10$ est le nombre d'exécutions du bloc, mais chaque exécution ajoute $2$, pas $1$. Le total accumulé est plus grand.[/reponse]
[reponse motif="$25$"]Non.
$25$ correspondrait à $5 \times 5$. Or la boucle extérieure se répète $2$ fois, pas $5$. Le total des exécutions est $2 \times 5 = 10$.[/reponse]
[reponse motif="$7$"]Non.
Le total des exécutions est un produit (boucle extérieure × boucle intérieure), pas une somme.[/reponse]
[reponse statut="incorrect"]Non.
Nombre d'ajouts : $2 \times 5 = 10$. Total ajouté : $10 \times 2 = 20$.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant, qui trace une figure :

Programme Scratch traçant 4 carrés disposés en ligne

Que trace ce programme ?
[qcm]
[option]Un grand carré.[/option]
[option correct="true"]Quatre petits carrés alignés.[/option]
[option]Une croix formée de quatre traits.[/option]
[option]Un carré entouré de quatre cercles.[/option]
[reponse statut="correct"]Tu as raison !
La boucle extérieure se répète $4$ fois. À chaque passage : la boucle intérieure trace un carré ($4$ côtés de $40$ pas, rotations de $90°$), puis le lutin se déplace de $60$ pas sans dessiner pour passer au carré suivant.[/reponse]
[reponse motif="Un grand carré."]Non.
La boucle extérieure ne trace pas un grand carré : à chaque passage, elle exécute la boucle intérieure (qui dessine un carré complet), puis avance sans dessiner.[/reponse]
[reponse motif="Une croix formée de quatre traits."]Non.
La boucle intérieure trace un polygone fermé (un carré, car $4$ côtés et $90°$), pas un simple trait.[/reponse]
[reponse motif="Un carré entouré de quatre cercles."]Non.
Aucun cercle n'est tracé : la boucle intérieure dessine un polygone à $4$ côtés, donc un carré.[/reponse]
[reponse statut="incorrect"]Non.
La boucle extérieure répète $4$ fois la séquence : tracer un carré, puis se déplacer sans dessiner. Le résultat est $4$ carrés alignés.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant :

Programme Scratch avec deux compteurs et boucles imbriquées

Que dit le lutin ?
[qcm]
[option]$2$[/option]
[option]$3$[/option]
[option correct="true"]$6$[/option]
[option]$5$[/option]
[reponse statut="correct"]Excellent !
A chaque passage de la boucle extérieure : $b$ est remis à $0$, puis la boucle intérieure ajoute $1$ deux fois, donc $b = 2$. Ensuite $a$ reçoit $a + b = a + 2$.
Après les $3$ passages : $a = 0 + 2 + 2 + 2 = 6$.[/reponse]
[reponse motif="$2$"]Non.
$2$ est la valeur finale de $b$ à chaque passage, mais $a$ accumule cette valeur sur $3$ passages. Il faut additionner.[/reponse]
[reponse motif="$3$"]Non.
$3$ correspond au nombre de passages de la boucle extérieure. Or à chaque passage, $a$ augmente de $b = 2$, pas de $1$.[/reponse]
[reponse motif="$5$"]Non.
Cette valeur correspondrait à $a = 0 + 1 + 2 + 2$. Il faut bien remarquer que $b$ est remis à $0$ à chaque passage, donc $b$ vaut toujours $2$ avant l'ajout.[/reponse]
[reponse statut="incorrect"]Non.
A chaque passage extérieur, $b = 2$ et $a$ reçoit $+2$. Total $a = 2 + 2 + 2 = 6$.[/reponse]
[/qcm]
[/etape]

[etape]
Que se passe-t-il si on oublie de remettre $b$ à $0$ au début de chaque passage de la boucle extérieure dans le programme précédent ?
[qcm]
[option]Le programme s'arrête avec une erreur.[/option]
[option]Le résultat est exactement le même qu'avec l'initialisation.[/option]
[option correct="true"]La variable $b$ accumule sur tous les passages : $b$ vaut $2$, puis $4$, puis $6$, et $a = 2 + 4 + 6 = 12$.[/option]
[option]La boucle intérieure n'est plus exécutée du tout.[/option]
[reponse statut="correct"]Bravo !
Sans réinitialisation, $b$ garde sa valeur précédente. Au passage 1, $b = 0 + 2 = 2$ ; au passage 2, $b = 2 + 2 = 4$ ; au passage 3, $b = 4 + 2 = 6$. Et $a = 2 + 4 + 6 = 12$. C'est pour cela qu'il faut toujours initialiser les variables d'accumulation au bon endroit.[/reponse]
[reponse motif="Le programme s'arrête avec une erreur."]Non.
Scratch ne signale pas d'erreur dans ce cas. Le programme tourne, mais le résultat est différent de celui prévu.[/reponse]
[reponse motif="Le résultat est exactement le même qu'avec l'initialisation."]Non.
Sans la remise à $0$, la valeur de $b$ s'accumule sur tous les passages au lieu de repartir de $0$. Le résultat change donc.[/reponse]
[reponse motif="La boucle intérieure n'est plus exécutée du tout."]Non.
La boucle intérieure s'exécute normalement : elle ajoute toujours $1$ deux fois. Ce qui change, c'est la valeur de départ de $b$ avant cette boucle.[/reponse]
[reponse statut="incorrect"]Non.
Sans réinitialisation, $b$ vaut $2$, $4$ puis $6$. La somme accumulée dans $a$ devient $2 + 4 + 6 = 12$, et non $6$.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant, qui dessine un motif :

Programme Scratch traçant trois lignes parallèles

Combien de segments visibles le lutin trace-t-il ?
[qcm]
[option]$1$ segment.[/option]
[option]$2$ segments.[/option]
[option correct="true"]$3$ segments.[/option]
[option]$6$ segments.[/option]
[reponse statut="correct"]C'est bien ça !
A chaque passage de la boucle, le lutin pose le stylo, avance de $100$ pas (ce qui crée un segment), puis relève le stylo et se déplace sans dessiner. La boucle se répète $3$ fois : $3$ segments visibles sont tracés.[/reponse]
[reponse motif="$1$ segment."]Non.
La boucle se répète $3$ fois, et chaque passage trace un segment de $100$ pas. Il faut compter tous les passages.[/reponse]
[reponse motif="$2$ segments."]Non.
Vérifier le nombre de passages de la boucle. Ici, « répéter $3$ fois » signifie $3$ exécutions complètes du bloc.[/reponse]
[reponse motif="$6$ segments."]Non.
Les déplacements stylo levé ne tracent rien : ils servent juste à repositionner le lutin. Seul le « avancer de $100$ pas » avec stylo posé trace un segment.[/reponse]
[reponse statut="incorrect"]Non.
Un seul segment est tracé par passage de boucle (avec stylo posé), et il y a $3$ passages : $3$ segments.[/reponse]
[/qcm]
[/etape]

QCM : Boucles avec accumulation et compteur

[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 :

Programme Scratch : somme par boucle répéter 4 fois

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 :

Programme Scratch : somme des entiers de 1 à 5

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 :

Programme Scratch : boucle répéter jusqu'à avec compteur

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 :

Programme Scratch : compteur de tours nécessaires

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]

QCM : Variables dans Scratch

[enonce]
Ce QCM porte sur l'utilisation des variables dans Scratch. Pour chaque question, choisir la bonne réponse parmi les 4 propositions.
[/enonce]

[etape]
Avant le programme, la variable $a$ vaut $7$. On exécute alors l'instruction « mettre $a$ à $3$ ».

Quelle est la valeur de $a$ après cette instruction ?
[qcm]
[option]$7$[/option]
[option correct="true"]$3$[/option]
[option]$10$[/option]
[option]$4$[/option]
[reponse statut="correct"]Exact !
L'instruction « mettre $a$ à $3$ » remplace la valeur précédente par $3$. L'ancienne valeur $7$ est effacée.[/reponse]
[reponse motif="$7$"]Non.
La valeur $7$ est l'ancienne valeur de $a$. Or l'instruction « mettre à » remplace cette ancienne valeur, qui est donc effacée.[/reponse]
[reponse motif="$10$"]Non.
Attention, ce résultat correspondrait à « ajouter $3$ à $a$ » (qui ferait $7 + 3 = 10$). L'instruction « mettre $a$ à $3$ » ne fait pas la même chose.[/reponse]
[reponse motif="$4$"]Non.
Ce résultat correspondrait à « retrancher $3$ à $a$ » ($7 - 3 = 4$). L'instruction « mettre $a$ à $3$ » écrase complètement l'ancienne valeur.[/reponse]
[reponse statut="incorrect"]Non.
« Mettre $a$ à $3$ » remplace la valeur précédente par $3$. Quelle que soit la valeur de départ, $a$ vaut maintenant $3$.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant :

Programme Scratch : initialisation et incrémentation d'une variable

Que dit le lutin à l'exécution ?
[qcm]
[option]$4$[/option]
[option]$6$[/option]
[option correct="true"]$10$[/option]
[option]$24$[/option]
[reponse statut="correct"]Bonne réponse !
Étape 1 : « mettre $n$ à $4$ » donne $n = 4$.
Étape 2 : « ajouter $6$ à $n$ » donne $n = 4 + 6 = 10$.
Étape 3 : le lutin affiche $10$.[/reponse]
[reponse motif="$4$"]Non.
La deuxième instruction modifie la valeur de $n$ avant l'affichage. Il faut suivre les instructions une par une dans l'ordre.[/reponse]
[reponse motif="$6$"]Non.
« Ajouter à $n$ $6$ » ne remplace pas $n$ par $6$ : cette instruction augmente $n$ de $6$. Il faut donc additionner avec la valeur actuelle de $n$.[/reponse]
[reponse motif="$24$"]Non.
Attention, « ajouter $6$ à $n$ » ne fait pas $4 \times 6$. Cette instruction ajoute $6$ à la valeur courante.[/reponse]
[reponse statut="incorrect"]Non.
On suit le programme : $n = 4$, puis $n = 4 + 6 = 10$. Le lutin dit $10$.[/reponse]
[/qcm]
[/etape]

[etape]
Quelle instruction Scratch utiliser pour augmenter de $5$ la valeur de la variable $\text{score}$ ?
[qcm]
[option]mettre $\text{score}$ à $5$[/option]
[option correct="true"]ajouter $5$ à $\text{score}$[/option]
[option]mettre $\text{score}$ à $\text{score}$[/option]
[option]dire $5$[/option]
[reponse statut="correct"]C'est bien ça !
Le bloc « ajouter ... à ... » augmente la variable de la quantité indiquée, sans effacer sa valeur précédente.[/reponse]
[reponse motif="mettre $\text{score}$ à $5$"]Non.
Cette instruction remplace $\text{score}$ par $5$, ce qui efface la valeur précédente. Pour augmenter $\text{score}$ de $5$, il faut une autre instruction.[/reponse]
[reponse motif="mettre $\text{score}$ à $\text{score}$"]Non.
Cette instruction recopierait $\text{score}$ dans lui-même : elle ne change rien. Pour augmenter de $5$, il faut une instruction explicite.[/reponse]
[reponse motif="dire $5$"]Non.
Le bloc « dire » est un bloc d'affichage : il fait apparaître un message dans une bulle, mais ne modifie aucune variable.[/reponse]
[reponse statut="incorrect"]Non.
Pour augmenter $\text{score}$ de $5$, on utilise le bloc « ajouter $5$ à $\text{score}$ ».[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant :

Programme Scratch : trois affectations successives sur deux variables

Que dit le lutin ?
[qcm]
[option]$6$[/option]
[option correct="true"]$8$[/option]
[option]$2$[/option]
[option]$12$[/option]
[reponse statut="correct"]Bravo !
On suit pas à pas : $a = 2$, puis $b = 6$, puis $a = a + b = 2 + 6 = 8$.
Le lutin affiche la valeur de $a$, soit $8$.[/reponse]
[reponse motif="$6$"]Non.
Le lutin affiche la variable $a$, pas $b$. Or $a$ a été modifiée par la troisième instruction.[/reponse]
[reponse motif="$2$"]Non.
La valeur initiale de $a$ est $2$, mais l'instruction « ajouter à $a$ ... $b$ » modifie ensuite $a$.[/reponse]
[reponse motif="$12$"]Non.
Attention, « ajouter à $a$ ... $b$ » signifie $a + b$, pas $a \times b$. Le résultat est $2 + 6 = 8$ et non $2 \times 6$.[/reponse]
[reponse statut="incorrect"]Non.
On déroule : $a = 2$, $b = 6$, puis $a = 2 + 6 = 8$. Le lutin dit $8$.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant :

Programme Scratch : deux affectations consécutives sur la même variable

Que dit le lutin ?
[qcm]
[option]$10$[/option]
[option]$13$[/option]
[option correct="true"]$3$[/option]
[option]$7$[/option]
[reponse statut="correct"]Tu as raison !
La deuxième instruction « mettre $x$ à $3$ » remplace l'ancienne valeur $10$ par $3$. C'est cette nouvelle valeur que le lutin affiche.[/reponse]
[reponse motif="$10$"]Non.
La première valeur de $x$ a été remplacée par la deuxième instruction. C'est la valeur la plus récente qui compte.[/reponse]
[reponse motif="$13$"]Non.
Attention, « mettre $x$ à $3$ » n'ajoute pas $3$ : cette instruction efface la valeur précédente. Pour ajouter, il faudrait « ajouter $3$ à $x$ ».[/reponse]
[reponse motif="$7$"]Non.
Cette instruction n'effectue pas une soustraction. Elle remplace simplement la valeur de $x$ par celle indiquée à droite du bloc.[/reponse]
[reponse statut="incorrect"]Non.
Chaque « mettre $x$ à ... » remplace l'ancienne valeur. Après les deux instructions, $x = 3$.[/reponse]
[/qcm]
[/etape]

[etape]
Le programme suivant utilise une variable :

Programme Scratch : saisie utilisateur et affichage du double

Si l'utilisateur entre $9$, que dit le lutin ?
[qcm]
[option]$9$[/option]
[option]$11$[/option]
[option]$4{,}5$[/option]
[option correct="true"]$18$[/option]
[reponse statut="correct"]Excellent !
On suit le programme : $n$ reçoit $9$, puis $n$ devient $9 \times 2 = 18$. Le lutin affiche $18$.[/reponse]
[reponse motif="$9$"]Non.
La troisième instruction modifie $n$ avant l'affichage. Il faut prendre en compte la multiplication par $2$.[/reponse]
[reponse motif="$11$"]Non.
L'instruction est $n \times 2$ et non $n + 2$. Il faut multiplier, pas ajouter.[/reponse]
[reponse motif="$4{,}5$"]Non.
L'instruction est $n \times 2$ et non $n \div 2$. Il faut multiplier par $2$, pas diviser.[/reponse]
[reponse statut="incorrect"]Non.
Le programme calcule le double : $9 \times 2 = 18$.[/reponse]
[/qcm]
[/etape]