Rosace de carrés avec des boucles imbriquées

On considère le programme Scratch suivant, qui utilise deux boucles imbriquées :

Programme Scratch dessinant une rosace de carrés avec deux boucles imbriquées
  1. Identifier la figure dessinée par la boucle intérieure (« répéter $ 4 $ fois ») seule. Justifier.
  2. Combien de fois la boucle intérieure est-elle exécutée au total lors d'un lancement du programme ? Combien d'instructions « avancer » sont effectuées ?
  3. À la fin de la boucle intérieure, le lutin a tourné $ 4 $ fois de $ 90° $. Quel est l'angle total de rotation effectué par la boucle intérieure ? En déduire que le lutin retrouve son orientation initiale après chaque carré.
  4. Vérifier qu'à la fin du programme, le lutin a effectué un tour complet d'orientation grâce à la boucle extérieure. Combien de carrés au total sont tracés sur la scène ?
  5. Le programme dessine la figure ci-dessous : une rosace formée de plusieurs carrés tournés autour d'un même point.

    Rosace de 6 carrés tournés autour d'un point central

    Modifier le programme pour obtenir une rosace formée de $ 8 $ carrés (et non $ 6 $) tournés régulièrement autour du point de départ. Préciser les nouvelles valeurs à utiliser dans les deux boucles.

Corrigé

  1. La boucle intérieure répète $ 4 $ fois la séquence « avancer de $ 80 $ pas, tourner de $ 90° $ ». Le lutin trace donc $ 4 $ côtés égaux séparés par des angles de rotation de $ 90° $. La figure obtenue est un carré de $ 80 $ pas de côté.
  2. La boucle extérieure s'exécute $ 6 $ fois et la boucle intérieure $ 4 $ fois à chaque passage. Le nombre total d'exécutions de la boucle intérieure est :
    $ 6 \times 4 = 24 $

    Une instruction « avancer » est effectuée à chaque passage, soit $\mathbf{24}$ instructions « avancer » au total.

  3. À chaque passage de la boucle intérieure, le lutin tourne de :
    $ 4 \times 90 = 360 $

    L'angle total est $\mathbf{360°}$, qui correspond à un tour complet. Le lutin retrouve donc bien son orientation initiale après le tracé de chaque carré.

  4. Après chaque carré, le lutin a la même orientation qu'au début ; puis l'instruction « tourner de $ 60° $ » de la boucle extérieure le fait pivoter avant le carré suivant. Au total, ces rotations supplémentaires valent :
    $ 6 \times 60 = 360 $

    Le lutin a donc bien effectué un tour complet grâce à la boucle extérieure. Comme la boucle extérieure se répète $ 6 $ fois, $ 6 $ carrés au total sont tracés sur la scène.

  5. Pour obtenir $ 8 $ carrés régulièrement répartis autour du point de départ, la boucle extérieure doit se répéter $ 8 $ fois. L'angle de rotation à la fin de chaque carré devient :
    $ 360 \div 8 = 45 $

    Il faut donc remplacer « répéter $ 6 $ fois » par répéter $ 8 $ fois et « tourner de $ 60° $ » par tourner de $ 45° $. La boucle intérieure (qui trace un carré) reste inchangée.

Pour réviser : Utiliser une boucle dans Scratch

Vrai/Faux : Boucles et tracé de figures

[enonce]
Pour chaque affirmation suivante sur les boucles et le tracé de figures géométriques dans Scratch, indiquer si elle est Vraie ou Fausse.
[/enonce]

[etape]
Affirmation : Le bloc « répéter $5$ fois » exécute son contenu exactement $5$ fois.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Exact !
La boucle « répéter $N$ fois » fait $N$ passages, ni plus ni moins. C'est une boucle à nombre de répétitions fixé.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : « répéter $N$ fois » exécute le bloc d'instructions $N$ fois, dans tous les cas. C'est une boucle simple à nombre fixé.[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. La boucle « répéter $5$ fois » fait $5$ passages.
[/solution]
[/etape]

[etape]
Affirmation : Pour tracer un carré avec une boucle, l'angle de rotation est de $90°$.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Bonne réponse !
Pour un polygone régulier à $n$ côtés, l'angle de rotation extérieur est $\dfrac{360}{n}$. Pour un carré, $\dfrac{360}{4} = 90°$.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : dans Scratch, le lutin tourne de l'angle extérieur de la figure, qui vaut $\dfrac{360}{n}$ pour un polygone régulier à $n$ côtés. Pour un carré, c'est bien $90°$.[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. Pour un carré, l'angle de rotation est $\dfrac{360}{4} = 90°$.
[/solution]
[/etape]

[etape]
Affirmation : Pour tracer un triangle équilatéral, le lutin doit tourner de $60°$ après chaque côté.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Bravo !
$60°$ est l'angle intérieur d'un triangle équilatéral. Or le lutin tourne de l'angle extérieur, qui vaut $180° - 60° = 120°$ (ou $\dfrac{360}{3}$).[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Le piège ici est de confondre angle intérieur et angle extérieur. Le lutin tourne de l'angle extérieur : $\dfrac{360}{3} = 120°$, pas $60°$.[/reponse]
[/qcm]

[solution]
Cette affirmation est fausse. Le lutin tourne de l'angle extérieur, qui vaut $120°$ pour un triangle équilatéral.
[/solution]
[/etape]

[etape]
On considère le programme suivant :

Programme Scratch traçage avec angle de 30 degrés

Affirmation : Le lutin trace un polygone régulier à $12$ côtés.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]C'est bien ça !
La boucle se répète $12$ fois et la rotation totale est $12 \times 30 = 360°$ : le lutin retrouve son orientation de départ et ferme la figure. C'est un dodécagone régulier (polygone à $12$ côtés).[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : pour qu'une figure tracée par boucle soit un polygone régulier fermé, il faut (nombre de tours) × (angle) = $360°$. Ici $12 \times 30 = 360$, donc $12$ côtés réguliers.[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. La rotation totale est $12 \times 30 = 360°$ : c'est un polygone régulier à $12$ côtés.
[/solution]
[/etape]

[etape]
Affirmation : Une boucle « répéter $0$ fois » exécute une fois son contenu.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Tu as raison !
« Répéter $0$ fois » signifie ne pas exécuter du tout le contenu de la boucle. Le programme passe directement à l'instruction suivante.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Attention, « répéter $N$ fois » avec $N = 0$ ignore complètement le bloc d'instructions : aucune exécution n'a lieu.[/reponse]
[/qcm]

[solution]
Cette affirmation est fausse. « Répéter $0$ fois » n'exécute pas du tout le contenu de la boucle.
[/solution]
[/etape]

[etape]
Affirmation : Avec deux boucles imbriquées « répéter $a$ fois » à l'extérieur et « répéter $b$ fois » à l'intérieur, le bloc le plus interne est exécuté $a + b$ fois au total.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Excellent !
À chacun des $a$ passages de la boucle extérieure, la boucle intérieure exécute son contenu $b$ fois. Le total est donc $a \times b$ exécutions, et non $a + b$.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Le piège est d'additionner au lieu de multiplier. Avec deux boucles imbriquées, le bloc interne s'exécute (nombre extérieur) × (nombre intérieur) = $a \times b$ fois.[/reponse]
[/qcm]

[solution]
Cette affirmation est fausse. Le bloc le plus interne est exécuté $a \times b$ fois (le produit, pas la somme).
[/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 : Boucles répéter et tracé de figures

[enonce]
Ce QCM porte sur les boucles « répéter ... fois » et le tracé de figures géométriques avec Scratch. Pour chaque question, choisir la bonne réponse parmi les 4 propositions.
[/enonce]

[etape]
A quoi sert le bloc répéter ... fois dans Scratch ?
[qcm]
[option]A créer une variable.[/option]
[option]A tester une condition.[/option]
[option correct="true"]A exécuter plusieurs fois un même groupe d'instructions.[/option]
[option]A déplacer le lutin de plusieurs pas d'un coup.[/option]
[reponse statut="correct"]Exact !
Le bloc « répéter ... fois » est une boucle : il exécute les instructions placées à l'intérieur le nombre de fois indiqué.[/reponse]
[reponse motif="A créer une variable."]Non.
Pour créer une variable, on utilise le menu Variables. Le bloc « répéter ... fois » fait partie du menu Contrôle.[/reponse]
[reponse motif="A tester une condition."]Non.
Pour tester une condition, on utilise « si ... alors » ou « si ... alors ... sinon ». Le bloc « répéter ... fois » sert à répéter un nombre fixé d'instructions.[/reponse]
[reponse motif="A déplacer le lutin de plusieurs pas d'un coup."]Non.
Pour déplacer le lutin, on utilise « avancer de ... pas ». Le bloc « répéter » sert à répéter un groupe d'instructions, qui peut contenir des déplacements ou non.[/reponse]
[reponse statut="incorrect"]Non.
Le bloc « répéter ... fois » exécute plusieurs fois les instructions qu'il contient.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant :

Programme Scratch traçant un polygone régulier

Quelle figure le lutin trace-t-il ?
[qcm]
[option]Un carré.[/option]
[option]Un pentagone régulier (5 côtés).[/option]
[option correct="true"]Un hexagone régulier (6 côtés).[/option]
[option]Un cercle.[/option]
[reponse statut="correct"]Bonne réponse !
La boucle se répète $6$ fois et l'angle de rotation est $60°$. On vérifie : $\dfrac{360}{60} = 6$, donc le lutin revient au point de départ après $6$ côtés. C'est un hexagone régulier.[/reponse]
[reponse motif="Un carré."]Non.
Un carré aurait $4$ côtés et un angle de rotation de $90°$. Ici, la boucle se répète $6$ fois et l'angle est $60°$.[/reponse]
[reponse motif="Un pentagone régulier (5 côtés)."]Non.
Un pentagone régulier nécessiterait $5$ côtés et un angle de $\dfrac{360}{5} = 72°$. Ici, on a $6$ côtés et $60°$.[/reponse]
[reponse motif="Un cercle."]Non.
Un cercle s'obtient avec un très grand nombre de côtés très courts (par exemple $360$ fois avec un angle de $1°$). Ici, le lutin trace un polygone à $6$ côtés visibles.[/reponse]
[reponse statut="incorrect"]Non.
$\dfrac{360}{60} = 6$ : le lutin trace un hexagone régulier.[/reponse]
[/qcm]
[/etape]

[etape]
On veut tracer un pentagone régulier (5 côtés) avec une boucle « répéter $5$ fois ». Quel angle de rotation faut-il choisir ?
[qcm]
[option]$60°$[/option]
[option correct="true"]$72°$[/option]
[option]$108°$[/option]
[option]$45°$[/option]
[reponse statut="correct"]Bravo !
Pour un polygone régulier à $n$ côtés, l'angle de rotation extérieur est $\dfrac{360}{n}$. Ici $\dfrac{360}{5} = 72°$.[/reponse]
[reponse motif="$60°$"]Non.
$60°$ correspondrait à $\dfrac{360}{60} = 6$ côtés, donc à un hexagone. Pour un pentagone, il faut diviser $360$ par $5$.[/reponse]
[reponse motif="$108°$"]Non.
Attention, $108°$ est l'angle intérieur d'un pentagone régulier. Dans Scratch, le lutin tourne de l'angle extérieur, qui vaut $180° - 108° = 72°$.[/reponse]
[reponse motif="$45°$"]Non.
$45°$ correspondrait à $\dfrac{360}{45} = 8$ côtés (un octogone). Pour un pentagone, l'angle est différent.[/reponse]
[reponse statut="incorrect"]Non.
L'angle de rotation pour un pentagone régulier est $\dfrac{360}{5} = 72°$.[/reponse]
[/qcm]
[/etape]

[etape]
On veut tracer un triangle équilatéral. La boucle est « répéter $3$ fois ». Que doit contenir cette boucle pour que le tracé soit correct ?
[qcm]
[option]avancer de 100 pas, puis tourner de 60 degrés[/option]
[option correct="true"]avancer de 100 pas, puis tourner de 120 degrés[/option]
[option]avancer de 100 pas, puis tourner de 90 degrés[/option]
[option]avancer de 100 pas, puis tourner de 180 degrés[/option]
[reponse statut="correct"]C'est bien ça !
Pour un polygone régulier à $n$ côtés, le lutin tourne d'un angle $\dfrac{360}{n}$ après chaque côté. Pour un triangle équilatéral, $n = 3$, donc l'angle est $\dfrac{360}{3} = 120°$.[/reponse]
[reponse motif="avancer de 100 pas, puis tourner de 60 degrés"]Non.
$60°$ est l'angle intérieur d'un triangle équilatéral. Le lutin tourne de l'angle extérieur, qui vaut $180° - 60° = 120°$.[/reponse]
[reponse motif="avancer de 100 pas, puis tourner de 90 degrés"]Non.
Avec un angle de $90°$, on tracerait un carré ($\dfrac{360}{90} = 4$ côtés). Pour un triangle, il faut un autre angle.[/reponse]
[reponse motif="avancer de 100 pas, puis tourner de 180 degrés"]Non.
Avec une rotation de $180°$, le lutin ferait demi-tour à chaque pas et resterait sur la même droite : aucun triangle ne serait tracé.[/reponse]
[reponse statut="incorrect"]Non.
Pour un triangle équilatéral, l'angle de rotation est $\dfrac{360}{3} = 120°$.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme suivant :

Programme Scratch traçant un polygone à 12 côtés

Combien de fois le lutin tourne-t-il, et quel angle total parcourt-il ?
[qcm]
[option]$12$ fois, $30°$ au total.[/option]
[option correct="true"]$12$ fois, $360°$ au total.[/option]
[option]$1$ fois, $30°$ au total.[/option]
[option]$30$ fois, $12°$ au total.[/option]
[reponse statut="correct"]Tu as raison !
La boucle se répète $12$ fois et chaque tour fait pivoter le lutin de $30°$. L'angle total est $12 \times 30 = 360°$ : le lutin revient à son orientation de départ.[/reponse]
[reponse motif="$12$ fois, $30°$ au total."]Non.
Le lutin tourne de $30°$ à chaque passage de la boucle, mais il y a $12$ passages. Il faut multiplier : $12 \times 30 = 360°$.[/reponse]
[reponse motif="$1$ fois, $30°$ au total."]Non.
La boucle « répéter $12$ fois » exécute son contenu $12$ fois, pas une seule. Le bloc « tourner » est donc utilisé $12$ fois.[/reponse]
[reponse motif="$30$ fois, $12°$ au total."]Non.
Attention à ne pas inverser le nombre de répétitions et l'angle. Ici, la boucle se répète $12$ fois et chaque rotation fait $30°$.[/reponse]
[reponse statut="incorrect"]Non.
Le lutin tourne $12$ fois (une fois par tour de boucle) avec un angle de $30°$ : total $12 \times 30 = 360°$.[/reponse]
[/qcm]
[/etape]

[etape]
On veut tracer un carré de côté $80$ pas en utilisant une boucle « répéter $4$ fois ». Le programmeur a écrit le programme suivant :

Programme Scratch incorrect tentant de tracer un carré

Le programme trace-t-il correctement un carré ?
[qcm]
[option]Non, l'angle devrait être $60°$ pour un carré.[/option]
[option correct="true"]Oui : la boucle est correcte, peu importe l'ordre des deux instructions à l'intérieur.[/option]
[option]Non, il faut « avancer » avant « tourner » pour obtenir un carré.[/option]
[option]Non, il manque une cinquième répétition pour fermer la figure.[/option]
[reponse statut="correct"]Excellent !
Que l'on tourne avant ou après avoir avancé, le lutin parcourt bien $4$ côtés de $80$ pas et tourne $4$ fois de $90°$ : la figure tracée est un carré (orienté différemment selon l'ordre, mais carré).[/reponse]
[reponse motif="Non, l'angle devrait être $60°$ pour un carré."]Non.
Pour un carré, l'angle de rotation est $\dfrac{360}{4} = 90°$. C'est bien la valeur utilisée dans le programme.[/reponse]
[reponse motif="Non, il faut « avancer » avant « tourner » pour obtenir un carré."]Non.
L'ordre change uniquement l'orientation initiale du carré tracé, mais la figure obtenue est toujours un carré. La boucle exécute fidèlement les deux blocs $4$ fois.[/reponse]
[reponse motif="Non, il manque une cinquième répétition pour fermer la figure."]Non.
Avec $4$ côtés et $4$ rotations de $90°$, l'angle total est $4 \times 90 = 360°$ : le lutin revient à son orientation initiale et la figure est bien fermée.[/reponse]
[reponse statut="incorrect"]Non.
La boucle est correcte. L'ordre interne (tourner / avancer) modifie seulement l'orientation du carré, pas la figure obtenue.[/reponse]
[/qcm]
[/etape]