Tarif d’un musée avec instructions conditionnelles
Un musée applique la grille de tarifs suivante :
- entrée gratuite pour les enfants de moins de $ 8 $ ans ;
- tarif réduit de $ 6 $ € pour les visiteurs de $ 8 $ à $ 25 $ ans inclus ;
- tarif plein de $ 12 $ € au-delà de $ 25 $ ans.
Un programme Scratch indique à chaque visiteur, à partir de son âge, le tarif à payer.
Indiquer le message affiché par le lutin pour chacun des âges suivants :
- $ 6 $ ans ;
- $ 25 $ ans ;
- $ 40 $ ans ;
- $ 8 $ ans.
- La famille Martin est composée de deux parents âgés de $ 38 $ ans et $ 42 $ ans, et de deux enfants âgés de $ 6 $ ans et $ 12 $ ans. Calculer le coût total de la visite pour cette famille.
- Justifier le choix de la condition $ \text{age} < 26 $ (plutôt que $ \text{age} \leqslant 25 $) pour distinguer le tarif réduit du tarif plein, lorsque l'âge saisi est un nombre entier.
- Le musée décide d'instaurer un tarif senior de $ 8 $ € pour les visiteurs de $ 65 $ ans et plus. Décrire la modification à apporter au programme.
On compare $ \text{age} $ aux seuils $ 8 $ et $ 26 $.
- Pour $ 6 $ ans : $ 6 < 8 $, donc le lutin affiche « Entrée gratuite ».
- Pour $ 25 $ ans : $ 25 \geqslant 8 $ et $ 25 < 26 $, donc le lutin affiche « Tarif réduit : 6 € ».
- Pour $ 40 $ ans : $ 40 \geqslant 8 $ et $ 40 \geqslant 26 $, donc le lutin affiche « Tarif plein : 12 € ».
- Pour $ 8 $ ans : $ 8 \geqslant 8 $ (la première condition est fausse) et $ 8 < 26 $, donc le lutin affiche « Tarif réduit : 6 € ».
On applique la grille à chaque membre de la famille :
- enfant de $ 6 $ ans : gratuit, soit $ 0 $ € ;
- enfant de $ 12 $ ans : tarif réduit, soit $ 6 $ € ;
- parent de $ 38 $ ans : tarif plein, soit $ 12 $ € ;
- parent de $ 42 $ ans : tarif plein, soit $ 12 $ €.
Le coût total est :
$ 0 + 6 + 12 + 12 = 30 $
Le coût total de la visite est de $ 30 $ €.
- Pour des âges entiers, dire « strictement inférieur à $ 26 $ » et « inférieur ou égal à $ 25 $ » revient au même : les deux conditions sont vraies pour $ 8, 9, \ldots, 25 $ et fausses pour $ 26 $ et au-delà. Scratch ne propose pas de bloc de comparaison $ \leqslant $ : on utilise donc $ \text{age} < 26 $ pour exprimer $ \text{age} \leqslant 25 $.
- Il faut ajouter une condition supplémentaire avant le « sinon » correspondant au tarif plein : si $ \text{age} \geqslant 65 $, alors afficher « Tarif senior : $ 8 $ € » ; sinon, afficher « Tarif plein : $ 12 $ € ». On imbrique ainsi un nouveau bloc « si … alors … sinon » à la place du dernier bloc « dire ».
Pour réviser : Utiliser une instruction conditionnelle dans Scratch
Vrai/Faux : Instructions conditionnelles et raisonnement
[enonce]
Pour chaque affirmation suivante sur les instructions conditionnelles dans Scratch, indiquer si elle est Vraie ou Fausse.
[/enonce]
[etape]
Affirmation : Avec une structure « si ... alors » (sans sinon), il est possible que rien ne s'exécute si la condition est fausse.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Exact !
La structure « si ... alors » sans « sinon » exécute son contenu uniquement quand la condition est vraie. Si elle est fausse, rien ne se passe : aucun bloc alternatif n'est prévu.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : sans « sinon », il n'y a aucune action quand la condition est fausse. C'est précisément ce qui distingue « si ... alors » du « si ... alors ... sinon ».[/reponse]
[/qcm]
[solution]
Cette affirmation est vraie. Quand la condition d'un « si ... alors » est fausse et qu'il n'y a pas de bloc « sinon », rien ne s'exécute.
[/solution]
[/etape]
[etape]
Affirmation : Dans une structure « si ... alors ... sinon », les deux branches peuvent être exécutées en même temps si la condition est vraie.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Bonne réponse !
Les deux branches sont exclusives : soit la condition est vraie (on exécute la première), soit elle est fausse (on exécute la seconde). Jamais les deux à la fois.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Attention, dans un « si ... alors ... sinon », on n'exécute qu'une seule des deux branches : celle qui correspond à la valeur de vérité de la condition.[/reponse]
[/qcm]
[solution]
Cette affirmation est fausse. Une seule des deux branches s'exécute, selon que la condition est vraie ou fausse.
[/solution]
[/etape]
[etape]
Affirmation : La condition « $a > 0$ » est vraie pour $a = 0$.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Bravo !
Le symbole $>$ signifie « strictement supérieur ». $0$ n'est pas strictement supérieur à lui-même. La condition est donc fausse pour $a = 0$.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Le symbole $>$ est strict : il exclut l'égalité. Pour inclure le cas $a = 0$, il faudrait écrire $a \geqslant 0$.[/reponse]
[/qcm]
[solution]
Cette affirmation est fausse. Avec $a = 0$, la condition $a > 0$ est fausse car $>$ est une comparaison stricte.
[/solution]
[/etape]
[etape]
Affirmation : La condition « $x > 3$ ou $x < -3$ » est vraie pour $x = -5$.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]C'est bien ça !
Avec un « ou », il suffit qu'une des deux conditions soit vraie. Ici, $-5 > 3$ est faux, mais $-5 < -3$ est vrai. Donc la condition globale est vraie.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : avec un « ou » logique, l'une au moins des deux conditions doit être vraie. Ici, $-5 < -3$ est vrai, donc la condition globale l'est aussi.[/reponse]
[/qcm]
[solution]
Cette affirmation est vraie. $-5 < -3$ est vrai, donc la condition « $x > 3$ ou $x < -3$ » est vraie.
[/solution]
[/etape]
[etape]
On considère le programme suivant, où l'utilisateur entre la valeur $5$ :
Affirmation : Si l'utilisateur entre $5$, le lutin dit « Positif ».
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Tu as raison !
$5 > 0$ est vrai, donc le bloc « dire Positif » est exécuté.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : la condition $5 > 0$ est vraie. Le bloc situé dans le « si ... alors » est donc exécuté et le lutin dit « Positif ».[/reponse]
[/qcm]
[solution]
Cette affirmation est vraie. La condition $5 > 0$ est vraie, le bloc s'exécute et affiche « Positif ».
[/solution]
[/etape]
[etape]
Affirmation : La condition « $a$ et $b$ ont des signes différents » s'exprime par « $a < 0$ et $b > 0$ ».
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Excellent !
Cette formulation ne couvre que le cas où $a$ est négatif et $b$ positif. Elle oublie le cas inverse ($a > 0$ et $b < 0$). La bonne expression utilise un « ou » entre les deux cas.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Le piège ici est d'oublier un cas. « Signes différents » signifie soit $a < 0$ et $b > 0$, soit $a > 0$ et $b < 0$. Il faut un « ou » pour relier les deux situations.[/reponse]
[/qcm]
[solution]
Cette affirmation est fausse. La condition correcte est « ($a < 0$ et $b > 0$) ou ($a > 0$ et $b < 0$) ».
[/solution]
[/etape]
QCM : Instructions conditionnelles dans Scratch
[enonce]
Ce QCM porte sur les instructions conditionnelles dans Scratch. Pour chaque question, choisir la bonne réponse parmi les 4 propositions.
[/enonce]
[etape]
A quoi sert le bloc « si ... alors » dans Scratch ?
[qcm]
[option]A répéter une instruction plusieurs fois.[/option]
[option correct="true"]A exécuter une instruction uniquement si une condition est vraie.[/option]
[option]A donner une valeur à une variable.[/option]
[option]A déplacer le lutin sur la scène.[/option]
[reponse statut="correct"]Exact !
Le bloc « si ... alors » teste une condition : si elle est vraie, les instructions à l'intérieur du bloc s'exécutent ; sinon, elles sont ignorées.[/reponse]
[reponse motif="A répéter une instruction plusieurs fois."]Non.
Pour répéter, on utilise les blocs « répéter ... fois » ou « répéter jusqu'à ... » du menu Contrôle. Le bloc « si » sert à tester une condition.[/reponse]
[reponse motif="A donner une valeur à une variable."]Non.
Pour affecter une valeur à une variable, on utilise « mettre ... à ... » du menu Variables.[/reponse]
[reponse motif="A déplacer le lutin sur la scène."]Non.
Pour déplacer le lutin, on utilise les blocs du menu Mouvement (avancer, tourner...).[/reponse]
[reponse statut="incorrect"]Non.
Le bloc « si ... alors » exécute son contenu uniquement quand la condition est vraie.[/reponse]
[/qcm]
[/etape]
[etape]
On considère le programme suivant, où l'utilisateur entre la valeur $5$ :

Que se passe-t-il à l'exécution ?
[qcm]
[option]Le lutin dit « Grand ».[/option]
[option]Le lutin dit « Petit ».[/option]
[option correct="true"]Le lutin n'affiche rien.[/option]
[option]Le lutin dit $5$.[/option]
[reponse statut="correct"]C'est bien ça !
La condition $5 > 10$ est fausse. Comme il n'y a pas de « sinon », le bloc « dire » n'est jamais exécuté : aucun message ne s'affiche.[/reponse]
[reponse motif="Le lutin dit « Grand »."]Non.
La condition $5 > 10$ est fausse. Le bloc « dire Grand » se trouve dans le « si ... alors ... » et ne s'exécute donc pas.[/reponse]
[reponse motif="Le lutin dit « Petit »."]Non.
Le programme ne contient aucun bloc « sinon ». Si la condition est fausse, rien ne se passe : aucun message « Petit » n'est prévu.[/reponse]
[reponse motif="Le lutin dit $5$."]Non.
Le programme n'affiche pas la valeur de $n$. Il n'a qu'un bloc « dire Grand », et ce bloc dépend de la condition.[/reponse]
[reponse statut="incorrect"]Non.
$5 > 10$ est faux et il n'y a pas de bloc « sinon » : rien ne s'affiche.[/reponse]
[/qcm]
[/etape]
[etape]
On considère le programme suivant, où l'utilisateur entre la valeur $-2$ :

Si l'utilisateur entre $-2$, que dit le lutin ?
[qcm]
[option]« Positif »[/option]
[option correct="true"]« Négatif ou nul »[/option]
[option]« $-2$ »[/option]
[option]Rien n'est affiché.[/option]
[reponse statut="correct"]Bravo !
La condition « $n > 0$ » avec $n = -2$ est fausse. Le programme exécute donc le « sinon » et le lutin dit « Négatif ou nul ».[/reponse]
[reponse motif="« Positif »"]Non.
La condition $-2 > 0$ est fausse, car $-2$ est strictement plus petit que $0$. Le programme passe donc au bloc « sinon ».[/reponse]
[reponse motif="« $-2$ »"]Non.
Le programme n'affiche pas la valeur de $n$ : il dit l'un des deux messages prévus dans le « si ... alors ... sinon », selon que la condition est vraie ou fausse.[/reponse]
[reponse motif="Rien n'est affiché."]Non.
Avec un « si ... alors ... sinon », l'un des deux messages est toujours affiché : c'est ce qui distingue cette structure du simple « si ... alors ».[/reponse]
[reponse statut="incorrect"]Non.
$-2 > 0$ est faux : le bloc « sinon » s'exécute et le lutin dit « Négatif ou nul ».[/reponse]
[/qcm]
[/etape]
[etape]
La condition « $a > 5$ et $a < 10$ » est-elle vraie pour $a = 7$ ?
[qcm]
[option]Non, car $a$ ne peut pas être à la fois supérieur à 5 et inférieur à 10.[/option]
[option correct="true"]Oui, car $7 > 5$ et $7 < 10$ sont vrais en même temps.[/option]
[option]Non, car $7$ n'est ni $5$ ni $10$.[/option]
[option]Oui, mais seulement si $a > 5$ ou $a < 10$.[/option]
[reponse statut="correct"]Tu as raison !
Avec un « et » logique, les deux conditions doivent être vraies en même temps. Ici $7 > 5$ est vrai et $7 < 10$ est vrai, donc la condition globale est vraie.[/reponse]
[reponse motif="Non, car $a$ ne peut pas être à la fois supérieur à 5 et inférieur à 10."]Non.
$a$ peut tout à fait être à la fois supérieur à $5$ et inférieur à $10$ : c'est le cas pour tout nombre situé entre $5$ et $10$ (par exemple $6$, $7$, $8$, $9$).[/reponse]
[reponse motif="Non, car $7$ n'est ni $5$ ni $10$."]Non.
Les comparaisons sont strictes : $>$ ou $<$. La condition demande seulement que $a$ soit supérieur à $5$ et inférieur à $10$, pas que $a$ soit égal à l'une des deux bornes.[/reponse]
[reponse motif="Oui, mais seulement si $a > 5$ ou $a < 10$."]Non.
Attention, l'opérateur « et » et l'opérateur « ou » ne sont pas équivalents. La condition demande explicitement les deux à la fois (« et »).[/reponse]
[reponse statut="incorrect"]Non.
Pour $a = 7$ : $7 > 5$ est vrai et $7 < 10$ est vrai, donc l'ensemble est vrai.[/reponse]
[/qcm]
[/etape]
[etape]
On considère le programme suivant, où l'utilisateur entre la valeur $4$ :
Si l'utilisateur entre $4$, que dit le lutin ?
[qcm]
[option]« Zéro »[/option]
[option]$4$[/option]
[option correct="true"]$16$[/option]
[option]$8$[/option]
[reponse statut="correct"]Excellent !
La condition $4 = 0$ est fausse. Le bloc « sinon » s'exécute : $n$ devient $4 \times 4 = 16$, puis le lutin affiche $16$.[/reponse]
[reponse motif="« Zéro »"]Non.
Pour que le lutin dise « Zéro », il faudrait que la condition $n = 0$ soit vraie. Or l'utilisateur a entré $4$.[/reponse]
[reponse motif="$4$"]Non.
Avant l'affichage, l'instruction « mettre $n$ à $n \times n$ » modifie la variable $n$.[/reponse]
[reponse motif="$8$"]Non.
L'instruction est $n \times n$ et non $n + n$. Il faut multiplier $n$ par lui-même, pas l'ajouter.[/reponse]
[reponse statut="incorrect"]Non.
$n = 4$, la condition $4 = 0$ est fausse, donc on calcule $n = 4 \times 4 = 16$.[/reponse]
[/qcm]
[/etape]
[etape]
Quelle différence y a-t-il entre les structures « si ... alors » et « si ... alors ... sinon » ?
[qcm]
[option]Aucune : ces deux structures donnent toujours le même résultat.[/option]
[option]La structure « si ... alors » exécute toujours quelque chose, la structure « si ... alors ... sinon » jamais.[/option]
[option correct="true"]Avec « si ... alors », rien ne se passe quand la condition est fausse ; avec « si ... alors ... sinon », un autre bloc s'exécute.[/option]
[option]La structure « si ... alors ... sinon » répète les instructions plusieurs fois.[/option]
[reponse statut="correct"]Bonne réponse !
Le « si ... alors » seul ne fait quelque chose que dans un cas (condition vraie). Le « si ... alors ... sinon » couvre les deux cas en exécutant un bloc dans chaque situation.[/reponse]
[reponse motif="Aucune : ces deux structures donnent toujours le même résultat."]Non.
Quand la condition est fausse, le « si ... alors » seul ne fait rien, alors que le « si ... alors ... sinon » exécute le bloc « sinon ». Les comportements sont différents.[/reponse]
[reponse motif="La structure « si ... alors » exécute toujours quelque chose, la structure « si ... alors ... sinon » jamais."]Non.
C'est le contraire pour le premier cas : « si ... alors » seul n'exécute rien quand la condition est fausse. Et le « si ... alors ... sinon » exécute toujours l'un des deux blocs.[/reponse]
[reponse motif="La structure « si ... alors ... sinon » répète les instructions plusieurs fois."]Non.
Pour répéter, on utilise les blocs « répéter », pas les structures conditionnelles. Une structure conditionnelle ne fait pas de boucle.[/reponse]
[reponse statut="incorrect"]Non.
La différence porte sur le cas où la condition est fausse : « si ... alors » ne fait rien, « si ... alors ... sinon » exécute un autre bloc.[/reponse]
[/qcm]
[/etape]