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.

Une conditionnelle pour le tarif de la piscine

La piscine municipale propose deux tarifs d'entrée :

  • $ 2 $ € pour les enfants de moins de $ 12 $ ans (donc d'âge strictement inférieur à $ 12 $) ;
  • $ 5 $ € pour toute personne âgée de $ 12 $ ans ou plus.

On souhaite écrire un programme Scratch qui demande l'âge de la personne, puis affiche le tarif à payer.

  1. Quel tarif paye un enfant âgé de $ 8 $ ans ? Et un adulte de $ 30 $ ans ? Et une personne ayant exactement $ 12 $ ans ?
  2. Recopier et compléter le programme Scratch ci-dessous en remplaçant les pointillés :

    Programme Scratch à compléter avec une instruction conditionnelle si alors sinon
  3. Pour fidéliser les familles, la piscine ajoute un troisième tarif : l'entrée est gratuite (tarif $ 0 $ €) pour les enfants de moins de $ 5 $ ans. Décrire la modification à apporter au programme. On pourra écrire le nouveau programme.

Corrigé

  1. On compare l'âge à $ 12 $ :

    • $ 8 < 12 $ : l'enfant paye $ 2 $ € ;
    • $ 30 \geqslant 12 $ : l'adulte paye $ 5 $ € ;
    • $ 12 \geqslant 12 $ : une personne de $ 12 $ ans n'est plus dans la tranche des « moins de $ 12 $ ans », elle paye $ 5 $ €.
  2. La condition « moins de $ 12 $ ans » se traduit par « age $ < 12 $ ». Si elle est vraie, le tarif vaut $ 2 $ ; sinon il vaut $ 5 $. Le programme complété est :

    Programme Scratch complet calculant le tarif de la piscine selon l'âge
  3. Pour gérer trois tarifs, on imbrique une seconde instruction conditionnelle à l'intérieur du « si » : on teste d'abord si l'âge est inférieur à $ 5 $ ans (gratuit), puis, sinon, s'il est inférieur à $ 12 $ (tarif réduit), sinon plein tarif. Le programme devient :

    Programme Scratch avec trois tarifs gérés par des conditionnelles imbriquées

    Vérification : un enfant de $ 3 $ ans tombe dans la première branche (gratuit), un enfant de $ 8 $ ans tombe dans la deuxième ($ 2 $ €), un adulte de $ 30 $ ans dans la dernière ($ 5 $ €).

Pour réviser : Utiliser une instruction conditionnelle 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 : Instructions conditionnelles dans Scratch

[enonce]
Ce QCM porte sur les instructions conditionnelles dans Scratch (« si ... alors » et « si ... alors ... sinon »). Pour chaque question, choisir la bonne réponse parmi les 4 propositions.
[/enonce]

[etape]
Une instruction « si ... alors ... sinon » est exécutée alors que la condition placée dans le test est vraie.

Quel bloc d'instructions est alors exécuté ?
[qcm]
[option correct="true"]Le bloc placé après « alors ».[/option]
[option]Le bloc placé après « sinon ».[/option]
[option]Les deux blocs (alors et sinon) à la suite.[/option]
[option]Aucun des deux : le programme s'arrête.[/option]
[reponse statut="correct"]Bonne réponse !
Quand la condition est vraie, Scratch exécute uniquement le bloc situé après « alors ». Le bloc « sinon » est ignoré.[/reponse]
[reponse motif="Le bloc placé après « sinon »."]Non.
Le bloc « sinon » est exécuté seulement quand la condition est fausse. Ici, la condition est vraie.[/reponse]
[reponse motif="Les deux blocs (alors et sinon) à la suite."]Non.
Les deux blocs ne s'exécutent jamais ensemble : la condition étant vraie, seul le bloc « alors » s'exécute.[/reponse]
[reponse motif="Aucun des deux : le programme s'arrête."]Non.
Le bloc « si ... alors ... sinon » exécute toujours l'un des deux blocs, selon le résultat du test.[/reponse]
[reponse statut="incorrect"]Non.
Quand la condition est vraie, c'est le bloc « alors » qui s'exécute.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme :

Programme Scratch : si nombre > 0 dire positif sinon dire négatif ou nul

L'utilisateur saisit $-4$. Que dit le lutin ?
[qcm]
[option]Positif[/option]
[option correct="true"]Négatif ou nul[/option]
[option]Le lutin n'affiche rien.[/option]
[option]Il dit successivement « Positif » puis « Négatif ou nul ».[/option]
[reponse statut="correct"]Exact !
La condition $-4 > 0$ est fausse. Le bloc « sinon » est donc exécuté : le lutin affiche « Négatif ou nul ».[/reponse]
[reponse motif="Positif"]Non.
La condition à tester est « le nombre est-il strictement positif ? ». Or $-4$ est négatif, donc la condition est fausse.[/reponse]
[reponse motif="Le lutin n'affiche rien."]Non.
Le bloc « si ... alors ... sinon » exécute toujours l'une des deux branches : l'une ou l'autre, jamais aucune.[/reponse]
[reponse motif="Il dit successivement « Positif » puis « Négatif ou nul »."]Non.
Une instruction conditionnelle exécute exactement une seule des deux branches, jamais les deux.[/reponse]
[reponse statut="incorrect"]Non.
Comme $-4$ n'est pas strictement positif, la condition est fausse et le lutin dit « Négatif ou nul ».[/reponse]
[/qcm]
[/etape]

[etape]
Voici un programme qui utilise un test simple sans « sinon » :

Programme Scratch : si n = 10 alors dire bingo

Que se passe-t-il quand l'utilisateur saisit $7$ ?
[qcm]
[option]Le lutin dit « Bingo ! ».[/option]
[option]Le lutin dit « Pas bingo ».[/option]
[option correct="true"]Le lutin n'affiche rien et le programme se termine.[/option]
[option]Le lutin redemande un nombre jusqu'à obtenir $10$.[/option]
[reponse statut="correct"]Bravo !
La condition $n = 10$ est fausse car $n = 7$. Comme il n'y a pas de bloc « sinon », rien ne s'affiche : le programme passe directement à la suite (qui ici n'existe pas).[/reponse]
[reponse motif="Le lutin dit « Bingo ! »."]Non.
Le message « Bingo ! » s'affiche seulement si la condition $n = 10$ est vraie. Or $7 \neq 10$.[/reponse]
[reponse motif="Le lutin dit « Pas bingo »."]Non.
Aucun bloc « sinon » n'est présent. Quand la condition est fausse, Scratch ne dit rien.[/reponse]
[reponse motif="Le lutin redemande un nombre jusqu'à obtenir $10$."]Non.
Le programme ne contient pas de boucle « répéter jusqu'à ... ». Il n'effectue qu'une seule fois la demande puis s'arrête.[/reponse]
[reponse statut="incorrect"]Non.
Avec $n = 7$, la condition $n = 10$ est fausse. Comme il n'y a pas de « sinon », rien ne s'affiche.[/reponse]
[/qcm]
[/etape]

[etape]
La variable $age$ vaut $13$. On évalue la condition $age \geqslant 12$.

Cette condition est-elle vraie ou fausse ?
[qcm]
[option correct="true"]Vraie.[/option]
[option]Fausse.[/option]
[option]La condition n'a pas de sens.[/option]
[option]Cela dépend du programme dans lequel elle apparaît.[/option]
[reponse statut="correct"]Tu as raison !
La condition $age \geqslant 12$ se lit « $age$ est supérieur ou égal à $12$ ». Comme $13 \geqslant 12$, la condition est vraie.[/reponse]
[reponse motif="Fausse."]Non.
$13$ est bien supérieur à $12$. Le symbole $\geqslant$ inclut aussi l'égalité, mais ici l'inégalité stricte suffit déjà.[/reponse]
[reponse motif="La condition n'a pas de sens."]Non.
Une condition compare deux nombres avec un opérateur ($=$, $<$, $>$, $\leqslant$, $\geqslant$). Elle a toujours un sens et donne soit vrai, soit faux.[/reponse]
[reponse motif="Cela dépend du programme dans lequel elle apparaît."]Non.
La valeur de la condition dépend uniquement de la valeur de $age$, pas du contexte du programme. Une comparaison numérique a une seule valeur de vérité.[/reponse]
[reponse statut="incorrect"]Non.
Comme $13 \geqslant 12$, la condition est vraie.[/reponse]
[/qcm]
[/etape]

[etape]
On considère le programme :

Programme Scratch : si n est pair alors moitié sinon triple

L'utilisateur saisit $3$. Que dit le lutin ?
[qcm]
[option]$13$[/option]
[option correct="true"]$6$[/option]
[option]$3$[/option]
[option]$8$[/option]
[reponse statut="correct"]C'est bien ça !
La condition $3 > 5$ est fausse. Le bloc « sinon » est exécuté : $n = 3 \times 2 = 6$. Le lutin dit $6$.[/reponse]
[reponse motif="$13$"]Non.
$13 = 3 + 10$ correspond au bloc « alors ». Or la condition $3 > 5$ est fausse, donc c'est le bloc « sinon » qui est exécuté.[/reponse]
[reponse motif="$3$"]Non.
La variable $n$ est modifiée par le bloc « sinon » avant l'affichage. Elle ne reste pas à $3$.[/reponse]
[reponse motif="$8$"]Non.
$8 = 3 + 5$ : ce calcul n'apparaît dans aucun des deux blocs du test. Lire les blocs « alors » et « sinon ».[/reponse]
[reponse statut="incorrect"]Non.
La condition $3 > 5$ est fausse, donc Scratch exécute « mettre $n$ à $n \times 2$ » : $n = 3 \times 2 = 6$.[/reponse]
[/qcm]
[/etape]

[etape]
On veut écrire un test qui affiche « Égalité » si deux variables $a$ et $b$ ont la même valeur, et « Différents » sinon.

Quelle condition placer dans le test ?
[qcm]
[option]$a + b$[/option]
[option correct="true"]$a = b$[/option]
[option]$a > b$[/option]
[option]mettre $a$ à $b$[/option]
[reponse statut="correct"]Excellent !
Une condition compare deux valeurs avec un opérateur de comparaison. Pour tester l'égalité, on utilise l'opérateur $=$ : la condition s'écrit $a = b$.[/reponse]
[reponse motif="$a + b$"]Non.
$a + b$ est un calcul, pas une condition : son résultat est un nombre, pas une valeur de vérité (vrai ou faux).[/reponse]
[reponse motif="$a > b$"]Non.
Cette condition teste la stricte supériorité, pas l'égalité. Si $a$ et $b$ sont égaux, $a > b$ est faux.[/reponse]
[reponse motif="mettre $a$ à $b$"]Non.
« Mettre $a$ à $b$ » est une instruction d'affectation, qui modifie une variable. Ce n'est pas un test : ce bloc n'a pas de valeur vrai/faux.[/reponse]
[reponse statut="incorrect"]Non.
Pour tester si deux variables ont la même valeur, on utilise la condition $a = b$.[/reponse]
[/qcm]
[/etape]