Suivre une boucle Scratch pas à pas

[enonce]
On considère le programme Scratch suivant, qui utilise une variable appelée cagnotte :

Programme Scratch : variable cagnotte initialisée à 0 puis boucle répéter 4 fois ajoutant 25

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$.

Programme Scratch modifié : variable cagnotte initialisée à 30 puis boucle répéter 4 fois ajoutant 25

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]

Simuler des lancers de dé avec Scratch

On veut simuler le lancer d'un dé équilibré à $ 6 $ faces et compter le nombre de fois où on obtient un $ 6 $. Voici le programme Scratch utilisé :

Programme Scratch simulant 60 lancers de dé et comptant le nombre de 6 obtenus
  1. Indiquer la valeur de la variable nb6 juste avant l'entrée dans la boucle, puis expliquer en une phrase ce que représente cette variable à la fin du programme.
  2. Combien de lancers de dé sont simulés au total ?
  3. Lors d'un essai, le programme affiche $ 8 $. Calculer la fréquence d'apparition du $ 6 $ pour cet essai. Donner le résultat sous forme de fraction simplifiée, puis sous forme décimale arrondie au centième.
  4. En théorie, on obtient un $ 6 $ environ une fois sur six. Combien de $ 6 $ peut-on espérer en moyenne sur $ 60 $ lancers ?
  5. On souhaite maintenant compter le nombre de fois où le dé donne un nombre pair ($ 2 $, $ 4 $ ou $ 6 $). Indiquer les modifications à apporter au programme. Sur $ 60 $ lancers, combien de nombres pairs peut-on espérer en moyenne ?

Corrigé

  1. Le bloc « mettre nb6 à $ 0 $ » placé avant la boucle initialise la variable : nb6 $ = 0 $. À l'intérieur de la boucle, on lui ajoute $ 1 $ uniquement quand le dé tombe sur $ 6 $. À la fin du programme, nb6 représente donc le nombre de fois où le $ 6 $ est sorti au cours des lancers simulés.
  2. La boucle « répéter $ 60 $ fois » exécute le tirage du dé une fois par tour. Le programme simule $ 60 $ lancers.
  3. La fréquence d'apparition du $ 6 $ est le quotient du nombre de $ 6 $ obtenus par le nombre total de lancers :
    $ f = \dfrac{8}{60} $

    On simplifie la fraction par $ 4 $ :
    $ f = \dfrac{8}{60} = \dfrac{2}{15} $

    Sous forme décimale :
    $ \dfrac{2}{15} \approx 0{,}13 $

    La fréquence vaut donc $\mathbf{\dfrac{2}{15} \approx 0{,}13}$, soit environ $ 13 $ %.

  4. En moyenne, on obtient un $ 6 $ une fois sur six. Sur $ 60 $ lancers :
    $ 60 \times \dfrac{1}{6} = \dfrac{60}{6} = 10 $

    On peut donc espérer environ $ 10 $ apparitions du $ 6 $ sur $ 60 $ lancers.

  5. Pour compter les nombres pairs, on remplace la condition « de $ = 6 $ » par une condition qui teste si le dé est égal à $ 2 $, $ 4 $ ou $ 6 $. On utilise pour cela l'opérateur ou qui combine deux conditions :

    Programme Scratch comptant les nombres pairs obtenus sur 60 lancers de dé

    Sur les six faces du dé, trois sont paires ($ 2 $, $ 4 $, $ 6 $). La probabilité d'obtenir un nombre pair vaut donc $ \dfrac{3}{6} = \dfrac{1}{2} $. Sur $ 60 $ lancers, on peut espérer en moyenne :
    $ 60 \times \dfrac{1}{2} = 30 $

    Le programme devrait afficher en moyenne $ 30 $ nombres pairs.

Remarque

Lorsqu'on relance plusieurs fois la simulation, les valeurs affichées varient autour de $ 10 $ et $ 30 $, mais ne tombent presque jamais exactement dessus : c'est le rôle des simulations de mettre en évidence cet écart entre fréquence observée et probabilité théorique.

Suivre une boucle Scratch avec deux variables

On exécute le programme Scratch suivant :

Programme Scratch utilisant deux variables somme et nombre dans une boucle répéter 5 fois
  1. Donner les valeurs des variables somme et nombre juste avant l'entrée dans la boucle.
  2. Recopier et compléter le tableau de valeurs ci-dessous, qui indique la valeur des deux variables à la fin de chaque tour de boucle :

    Tour somme nombre
    1 ... ...
    2 ... ...
    3 ... ...
    4 ... ...
    5 ... ...
  3. Quelle valeur le lutin affiche-t-il à la fin du programme ?
  4. Quels nombres ont été ajoutés successivement à la variable somme ? Que représente alors la valeur affichée ?
  5. On remplace « répéter $ 5 $ fois » par « répéter $ 8 $ fois ». Quelle valeur le lutin affiche-t-il alors ?

Corrigé

  1. Les deux blocs « mettre ... à ... » placés avant la boucle initialisent les variables. Avant le premier tour, somme $ = 0 $ et nombre $ = 1 $.
  2. À chaque tour, on ajoute d'abord la valeur de nombre à somme, puis on augmente nombre de $ 2 $.

    Tour somme nombre
    1 $ 0 + 1 = 1 $ $ 1 + 2 = 3 $
    2 $ 1 + 3 = 4 $ $ 3 + 2 = 5 $
    3 $ 4 + 5 = 9 $ $ 5 + 2 = 7 $
    4 $ 9 + 7 = 16 $ $ 7 + 2 = 9 $
    5 $ 16 + 9 = 25 $ $ 9 + 2 = 11 $
  3. À la fin de la boucle, la variable somme vaut $ 25 $. Le lutin affiche donc $\mathbf{25}$.
  4. Les nombres ajoutés successivement sont $ 1 $, $ 3 $, $ 5 $, $ 7 $ et $ 9 $ : ce sont les cinq premiers nombres impairs. La valeur affichée représente leur somme :
    $ 1 + 3 + 5 + 7 + 9 = 25 $
  5. On prolonge le tableau pour les tours $ 6 $, $ 7 $ et $ 8 $ :

    Tour somme nombre
    6 $ 25 + 11 = 36 $ $ 11 + 2 = 13 $
    7 $ 36 + 13 = 49 $ $ 13 + 2 = 15 $
    8 $ 49 + 15 = 64 $ $ 15 + 2 = 17 $

    Le lutin affiche alors $\mathbf{64}$. On remarque que $ 25 = 5^2 $ et $ 64 = 8^2 $ : la somme des $ n $ premiers nombres impairs vaut $ n \times n $.

Pour réviser : Utiliser une variable dans Scratch

QCM Bilan : Scratch et algorithmes

[enonce]
Ce QCM bilan couvre l'ensemble du chapitre : boucles, conditions, variables et nombres aléatoires. Pour chaque question, choisir la bonne réponse parmi les 4 propositions.
[/enonce]

[etape]
Le bloc Scratch « nombre aléatoire entre $1$ et $6$ » sert à simuler le lancer d'un dé. À chaque exécution, ce bloc retourne...
[qcm]
[option]toujours le nombre $3$ (la moyenne).[/option]
[option]toujours le même nombre, choisi une fois pour toutes au démarrage du programme.[/option]
[option correct="true"]un entier choisi au hasard parmi $1$, $2$, $3$, $4$, $5$ et $6$, à chaque appel.[/option]
[option]une valeur décimale comprise entre $1$ et $6$.[/option]
[reponse statut="correct"]Bonne réponse !
Le bloc « nombre aléatoire entre $1$ et $6$ » retourne, à chaque appel, un entier tiré au hasard entre $1$ et $6$, comme le résultat d'un lancer de dé.[/reponse]
[reponse motif="toujours le nombre $3$ (la moyenne)."]Non.
Un tirage aléatoire ne donne pas un résultat fixe. Sinon, il ne servirait à rien de l'utiliser pour simuler un dé.[/reponse]
[reponse motif="toujours le même nombre, choisi une fois pour toutes au démarrage du programme."]Non.
Chaque appel du bloc effectue un nouveau tirage indépendant. Deux appels successifs peuvent donner des valeurs différentes.[/reponse]
[reponse motif="une valeur décimale comprise entre $1$ et $6$."]Non.
Sous Scratch, le bloc « nombre aléatoire entre $1$ et $6$ » donne par défaut un entier (puisque les bornes sont entières), pas un décimal.[/reponse]
[reponse statut="incorrect"]Non.
Ce bloc retourne, à chaque appel, un entier choisi au hasard entre $1$ et $6$.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme :

Programme Scratch : compteur initialisé à 0, boucle 4 fois ajout 5

Que dit le lutin à la fin ?
[qcm]
[option]$5$[/option]
[option]$9$[/option]
[option correct="true"]$20$[/option]
[option]$0$[/option]
[reponse statut="correct"]Bravo !
La boucle ajoute $5$ à la variable $4$ fois de suite, à partir de $0$ : $0 + 5 + 5 + 5 + 5 = 4 \times 5 = 20$.[/reponse]
[reponse motif="$5$"]Non.
La boucle exécute son contenu plusieurs fois, pas une seule fois. Il faut compter les ajouts successifs.[/reponse]
[reponse motif="$9$"]Non.
$4 + 5 = 9$ : il s'agit d'une seule addition entre le nombre de répétitions et la quantité ajoutée. Or la boucle additionne $5$ à chaque tour, et non $4 + 5$.[/reponse]
[reponse motif="$0$"]Non.
La boucle modifie bien la variable. Sa valeur finale n'est pas $0$.[/reponse]
[reponse statut="incorrect"]Non.
La variable $compteur$ s'incrémente $4$ fois de $5$ : la valeur finale est $4 \times 5 = 20$.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme :

Programme Scratch : boucle 3 fois avec test si i pair dire pair sinon impair

Quelle est la valeur finale de $n$ affichée à la toute fin ?
[qcm]
[option]$3$[/option]
[option]$13$[/option]
[option correct="true"]$23$[/option]
[option]$30$[/option]
[reponse statut="correct"]Excellent !
Tour 1 : $n = 0 + 1 = 1$. Le test $1 > 1$ est faux, le lutin dit « Premier tour ».
Tour 2 : $n = 1 + 1 = 2$. Le test $2 > 1$ est vrai, donc $n = 2 + 10 = 12$.
Tour 3 : $n = 12 + 1 = 13$. Le test $13 > 1$ est vrai, donc $n = 13 + 10 = 23$.
La valeur finale affichée est $23$.[/reponse]
[reponse motif="$3$"]Non.
La boucle ne se contente pas d'ajouter $1$ trois fois : à partir du deuxième tour, le test ajoute aussi $10$.[/reponse]
[reponse motif="$13$"]Non.
Il manque le dernier ajout de $10$ effectué au troisième tour, lorsque la condition $n > 1$ est encore vraie.[/reponse]
[reponse motif="$30$"]Non.
Au premier tour, la condition $n > 1$ est fausse (car $n = 1$), donc le bloc « ajouter $10$ » n'est pas exécuté ce tour-là.[/reponse]
[reponse statut="incorrect"]Non.
On déroule pas à pas : tour 1, $n$ passe à $1$ ; tour 2, $n$ passe à $2$ puis à $12$ ; tour 3, $n$ passe à $13$ puis à $23$.[/reponse]
[/qcm]
[/etape]

[etape]
Pour simuler $100$ lancers d'un dé à $6$ faces et compter le nombre de fois où l'on obtient un $6$, quelle structure de programme convient ?
[qcm]
[option]Une seule instruction conditionnelle, sans boucle.[/option]
[option correct="true"]Une boucle « répéter $100$ fois » contenant un tirage aléatoire et un test si le résultat vaut $6$.[/option]
[option]Une boucle « répéter $6$ fois » contenant un tirage aléatoire entre $1$ et $100$.[/option]
[option]Aucune boucle, juste $100$ blocs « tirer un nombre aléatoire » à la suite.[/option]
[reponse statut="correct"]Tu as raison !
Pour faire $100$ lancers, on utilise une boucle « répéter $100$ fois ». À chaque tour, on tire un nombre aléatoire entre $1$ et $6$, et on incrémente un compteur si le résultat vaut $6$.[/reponse]
[reponse motif="Une seule instruction conditionnelle, sans boucle."]Non.
Sans boucle, on ne peut faire qu'un seul lancer. Pour $100$ lancers, il faut répéter l'instruction.[/reponse]
[reponse motif="Une boucle « répéter $6$ fois » contenant un tirage aléatoire entre $1$ et $100$."]Non.
Les rôles sont inversés : on veut $100$ lancers d'un dé à $6$ faces, donc une boucle qui se répète $100$ fois et un tirage entre $1$ et $6$.[/reponse]
[reponse motif="Aucune boucle, juste $100$ blocs « tirer un nombre aléatoire » à la suite."]Non.
Cette solution fonctionnerait, mais elle est inutilement longue. Le but d'une boucle est précisément d'éviter de recopier $100$ fois la même instruction.[/reponse]
[reponse statut="incorrect"]Non.
Il faut une boucle « répéter $100$ fois » qui contient un tirage entre $1$ et $6$ et un test sur la valeur obtenue.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant, qui simule des lancers de dé :

Programme Scratch : boucle 5 fois tirer aléatoire 1 à 6 si résultat = 6 ajouter 1 à six

Quelle valeur peut être affichée à la fin ?
[qcm]
[option]$10$[/option]
[option correct="true"]$2$[/option]
[option]$-1$[/option]
[option]$6$ exactement, à chaque exécution.[/option]
[reponse statut="correct"]C'est bien ça !
La variable $six$ compte combien de fois on a obtenu $6$ sur $5$ lancers. Sa valeur est forcément un entier compris entre $0$ et $5$. La valeur $2$ (deux $6$ sur $5$ lancers) est plausible.[/reponse]
[reponse motif="$10$"]Non.
La boucle ne fait que $5$ tours : la variable $six$ ne peut pas dépasser $5$.[/reponse]
[reponse motif="$-1$"]Non.
La variable $six$ part de $0$ et seuls des « ajouter $1$ » la modifient. Elle ne peut donc jamais devenir négative.[/reponse]
[reponse motif="$6$ exactement, à chaque exécution."]Non.
Le résultat dépend des tirages aléatoires : il varie d'une exécution à l'autre. De plus, $six$ ne peut pas dépasser $5$.[/reponse]
[reponse statut="incorrect"]Non.
La variable $six$ compte le nombre de $6$ obtenus sur $5$ lancers : c'est un entier entre $0$ et $5$, donc $2$ est plausible.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme :

Programme Scratch : boucle 4 fois somme nombre aléatoire entre 1 et 10

Quel est l'ensemble des valeurs possibles affichées par le lutin ?
[qcm]
[option]Toutes les valeurs entre $0$ et $10$.[/option]
[option correct="true"]Tous les entiers entre $4$ et $40$.[/option]
[option]Toutes les valeurs entre $1$ et $10$.[/option]
[option]Une seule valeur, qui sera $\dfrac{1 + 10}{2} = 5{,}5$.[/option]
[reponse statut="correct"]Excellent !
À chaque tour, on ajoute un entier compris entre $1$ et $10$. Sur $4$ tours, la somme minimale est $4 \times 1 = 4$ et la somme maximale est $4 \times 10 = 40$. Le résultat est un entier de cet intervalle.[/reponse]
[reponse motif="Toutes les valeurs entre $0$ et $10$."]Non.
$0$ est impossible : on ajoute au moins $1$ quatre fois. La valeur minimale possible est plus grande.[/reponse]
[reponse motif="Toutes les valeurs entre $1$ et $10$."]Non.
Cet intervalle correspond à un seul tirage. Or la boucle exécute $4$ tirages, dont les valeurs s'accumulent dans la somme.[/reponse]
[reponse motif="Une seule valeur, qui sera $\dfrac{1 + 10}{2} = 5{,}5$."]Non.
Le programme fait un calcul aléatoire : la valeur affichée n'est pas la moyenne théorique, et elle change d'une exécution à l'autre.[/reponse]
[reponse statut="incorrect"]Non.
Avec $4$ tirages d'un entier entre $1$ et $10$, la somme est un entier compris entre $4$ et $40$.[/reponse]
[/qcm]
[/etape]

QCM : Suivre une variable Scratch pas à pas

[enonce]
Ce QCM porte sur le suivi pas à pas d'une variable dans un programme Scratch (initialisation, affectation, accumulation). Pour chaque question, choisir la bonne réponse parmi les 4 propositions.
[/enonce]

[etape]
On considère le programme suivant :

Programme Scratch : trois affectations sur a et b

Que dit le lutin à l'exécution ?
[qcm]
[option]$9$[/option]
[option correct="true"]$13$[/option]
[option]$4$[/option]
[option]$36$[/option]
[reponse statut="correct"]Bonne réponse !
On suit pas à pas : $a = 4$, puis $b = 9$, puis « ajouter à $a$ la valeur de $b$ » donne $a = 4 + 9 = 13$. Le lutin affiche $13$.[/reponse]
[reponse motif="$9$"]Non.
Le lutin affiche la variable $a$, pas $b$. Or $a$ a été modifiée par la troisième instruction.[/reponse]
[reponse motif="$4$"]Non.
La valeur initiale de $a$ est $4$, mais elle est modifiée par l'instruction « ajouter à $a$ ... $b$ ». Il faut suivre le programme jusqu'au bout.[/reponse]
[reponse motif="$36$"]Non.
Attention : « ajouter à $a$ la valeur de $b$ » signifie $a + b$, pas $a \times b$. Le bloc « ajouter à » fait une addition.[/reponse]
[reponse statut="incorrect"]Non.
On déroule : $a = 4$, $b = 9$, puis $a = 4 + 9 = 13$. Le lutin dit $13$.[/reponse]
[/qcm]
[/etape]

[etape]
Le programme suivant accumule des valeurs dans une variable :

Programme Scratch : variable somme initialisée à 0 puis trois ajouts

Quelle est la valeur affichée ?
[qcm]
[option]$0$[/option]
[option correct="true"]$12$[/option]
[option]$2$[/option]
[option]$42$[/option]
[reponse statut="correct"]Bravo !
On part de $0$ et on ajoute successivement $3$, $7$ et $2$ : $0 + 3 + 7 + 2 = 12$.[/reponse]
[reponse motif="$0$"]Non.
La variable est ensuite modifiée par les blocs « ajouter à ... ». Sa valeur finale n'est pas $0$.[/reponse]
[reponse motif="$2$"]Non.
$2$ est seulement la dernière valeur ajoutée. Or les ajouts précédents ne sont pas effacés : ils s'accumulent dans la variable.[/reponse]
[reponse motif="$42$"]Non.
Le calcul $3 \times 7 \times 2 = 42$ utilise des multiplications. Or le bloc « ajouter à » fait des additions, pas des multiplications.[/reponse]
[reponse statut="incorrect"]Non.
La variable accumule chaque ajout : $0 + 3 + 7 + 2 = 12$.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme :

Programme Scratch sans initialisation : ajouter à compteur

La variable compteur valait $5$ avant l'exécution. Que dit le lutin ?
[qcm]
[option]$1$[/option]
[option correct="true"]$6$[/option]
[option]$5$[/option]
[option]$0$[/option]
[reponse statut="correct"]Exact !
La variable n'est pas réinitialisée à $0$ avant l'exécution. Elle conserve donc sa valeur précédente $5$, à laquelle on ajoute $1$ : $5 + 1 = 6$.[/reponse]
[reponse motif="$1$"]Non.
La variable n'est pas remise à $0$ avant l'ajout. Elle garde sa valeur précédente, à laquelle on ajoute $1$.[/reponse]
[reponse motif="$5$"]Non.
La valeur $5$ est la valeur avant l'instruction. Or « ajouter $1$ à compteur » modifie la variable.[/reponse]
[reponse motif="$0$"]Non.
Aucun bloc « mettre compteur à $0$ » n'apparaît dans ce programme : la variable n'est pas remise à zéro.[/reponse]
[reponse statut="incorrect"]Non.
Sans initialisation, la variable conserve son ancienne valeur $5$. Après « ajouter $1$ », elle vaut $5 + 1 = 6$.[/reponse]
[/qcm]
[/etape]

[etape]
Voici un programme Scratch et un tableau de valeurs partiellement rempli :

Programme Scratch : trois affectations utilisant une autre variable
Instruction $x$ $y$
mettre $x$ à $2$ $2$ ?
mettre $y$ à $5$ $2$ $5$
mettre $x$ à $y$ ? $5$

Que valent $x$ et $y$ après la dernière instruction ?
[qcm]
[option]$x = 2$ et $y = 5$[/option]
[option correct="true"]$x = 5$ et $y = 5$[/option]
[option]$x = 5$ et $y = 2$[/option]
[option]$x = 7$ et $y = 5$[/option]
[reponse statut="correct"]C'est bien ça !
L'instruction « mettre $x$ à $y$ » remplace la valeur de $x$ par celle de $y$. Or $y$ vaut $5$, donc $x$ devient $5$. La valeur de $y$ n'est pas modifiée.[/reponse]
[reponse motif="$x = 2$ et $y = 5$"]Non.
L'instruction « mettre $x$ à $y$ » modifie bien la valeur de $x$. Elle ne la laisse pas inchangée.[/reponse]
[reponse motif="$x = 5$ et $y = 2$"]Non.
Cette réponse correspondrait à un échange entre $x$ et $y$. Or « mettre $x$ à $y$ » ne touche pas à $y$ : seule la valeur de $x$ change.[/reponse]
[reponse motif="$x = 7$ et $y = 5$"]Non.
$2 + 5 = 7$ est une addition. Or « mettre $x$ à $y$ » ne fait pas une addition : elle remplace $x$ par la valeur de $y$.[/reponse]
[reponse statut="incorrect"]Non.
« Mettre $x$ à $y$ » copie la valeur de $y$ dans $x$. Donc $x = 5$ et $y$ reste à $5$.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme :

Programme Scratch : variable n auto-modifiée

Que dit le lutin ?
[qcm]
[option]$4$[/option]
[option correct="true"]$5$[/option]
[option]$1$[/option]
[option]$41$[/option]
[reponse statut="correct"]Tu as raison !
L'instruction « mettre $n$ à $n + 1$ » se lit ainsi : Scratch calcule d'abord $n + 1 = 4 + 1 = 5$, puis range cette nouvelle valeur dans $n$. La variable vaut alors $5$.[/reponse]
[reponse motif="$4$"]Non.
L'instruction « mettre $n$ à $n + 1$ » modifie bien la variable. Sa valeur ne reste pas à $4$.[/reponse]
[reponse motif="$1$"]Non.
La valeur de droite est $n + 1$, pas $1$ tout seul. Le calcul utilise la valeur courante de $n$.[/reponse]
[reponse motif="$41$"]Non.
Scratch n'écrit pas le chiffre $1$ à droite de $4$ pour former $41$. Le bloc « ... + ... » est une addition mathématique.[/reponse]
[reponse statut="incorrect"]Non.
Scratch calcule d'abord la valeur de $n + 1$ (qui vaut $5$), puis l'affecte à $n$. La variable vaut $5$.[/reponse]
[/qcm]
[/etape]

[etape]
Le programme suivant cherche à échanger les valeurs de $a$ et $b$ :

Programme Scratch : tentative d'échange a et b sans variable temporaire

Quelles sont les valeurs finales de $a$ et $b$ ?
[qcm]
[option]$a = 3$ et $b = 7$[/option]
[option]$a = 7$ et $b = 3$[/option]
[option correct="true"]$a = 7$ et $b = 7$[/option]
[option]$a = 3$ et $b = 3$[/option]
[reponse statut="correct"]Excellent !
Étape par étape : après « mettre $a$ à $b$ », la variable $a$ vaut $7$ (la valeur précédente $3$ est perdue). Ensuite, « mettre $b$ à $a$ » donne $b = 7$. Les deux variables valent $7$ : l'échange a échoué.[/reponse]
[reponse motif="$a = 3$ et $b = 7$"]Non.
Les deux dernières instructions modifient les variables. Les valeurs initiales ne sont pas conservées.[/reponse]
[reponse motif="$a = 7$ et $b = 3$"]Non.
C'est ce que le programme cherche à faire, mais l'échange ne fonctionne pas tel quel : la valeur initiale de $a$ est écrasée par la première instruction et ne peut plus être copiée dans $b$.[/reponse]
[reponse motif="$a = 3$ et $b = 3$"]Non.
La première instruction d'échange remplace $a$ par la valeur de $b$, donc $a$ ne vaut plus $3$ ensuite.[/reponse]
[reponse statut="incorrect"]Non.
Après « mettre $a$ à $b$ », $a$ vaut $7$ : la valeur $3$ est perdue. La copie suivante donne $b = 7$.[/reponse]
[/qcm]
[/etape]