\documentclass[a4paper,11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[a4paper,top=3.2cm,bottom=2cm,left=2cm,right=2cm]{geometry}
\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage{qrcode}
\usepackage[table]{xcolor}
\usepackage{amsmath,amssymb}
\usepackage{enumitem}
\usepackage{tikz}
\usetikzlibrary{decorations.text,calc,positioning}
\usepackage{scratch3}

\pagestyle{fancy}
\fancyhf{}
\setlength{\headheight}{68pt}
\setlength{\headsep}{10pt}

% -------- PARAMÈTRES --------
\newcommand{\titre}{Mathématiques}
\newcommand{\soustitre}{3ème / Scratch -- préparation au brevet}
\newcommand{\monurl}{https://site2wouf.fr}
\newcommand{\duree}{1 h 30}
\newcommand{\bareme}{/20}
\newcommand{\logowouf}{%
\begin{tikzpicture}[baseline={(0,-0.25)}, x=0.55cm, y=0.66cm]
    \path[
        decorate,
        decoration={
            text along path,
            text={|\sffamily\bfseries\scriptsize|site2wouf.fr},
            text align=center
        }
    ] (-1.3,0.66) arc[start angle=160,end angle=20,radius=1.38];
    \fill (0,-0.28) ellipse[x radius=0.48,y radius=0.42];
    \fill (-0.64,0.42) ellipse[x radius=0.22,y radius=0.31];
    \fill (-0.22,0.68) ellipse[x radius=0.22,y radius=0.35];
    \fill (0.22,0.68) ellipse[x radius=0.22,y radius=0.35];
    \fill (0.64,0.42) ellipse[x radius=0.22,y radius=0.31];
\end{tikzpicture}%
}

\newcommand{\bloc}[2]{\fcolorbox{black}{#1}{\parbox{0.82\textwidth}{#2}}}
\newcommand{\blocsmall}[2]{\fcolorbox{black}{#1}{\parbox{0.58\textwidth}{#2}}}

% -------- HEADER --------
\fancyhead[C]{%
\raisebox{4pt}{%
\begin{minipage}[c]{0.15\textwidth}
    \centering
    \logowouf
\end{minipage}
\begin{minipage}[c]{0.65\textwidth}
    \centering
    {\Large\bfseries \titre\par}
    {\small\color{gray} \soustitre}
\end{minipage}
\begin{minipage}[c]{0.18\textwidth}
    \centering
    \qrcode[height=1.7cm]{\monurl}
\end{minipage}%
}
}

\begin{document}

\begin{center}
    \small Sujet original de préparation au DNB. Compétences visées : lire un script Scratch, suivre l'évolution de variables, comprendre une boucle, traduire un algorithme en expression mathématique, tester une condition et repérer une erreur de programmation.
\end{center}

\vspace{0.5em}

\section*{Exercice 1}

On considère le script Scratch suivant.

\begin{center}
\begin{scratch}[scale=0.78]
\blockinit{quand \greenflag est cliqué}
\blocksensing{demander \ovalnum{Choisis un nombre} et attendre}
\blockvariable{mettre \ovalvariable{nombre} à \ovalsensing{réponse}}
\blockvariable{mettre \ovalvariable{résultat} à \ovaloperator{\ovalnum{2} * \ovalvariable{nombre} + \ovalnum{5}}}
\blocklook{dire \ovalvariable{résultat} pendant \ovalnum{2} secondes}
\end{scratch}
\end{center}

\begin{enumerate}[label=\arabic*)]
    \item Quel résultat le lutin annonce-t-il si l'utilisateur choisit $4$ ?
    \item Quel résultat le lutin annonce-t-il si l'utilisateur choisit $-3$ ?
    \item On note $x$ le nombre choisi. Donner l'expression du résultat en fonction de $x$.
    \item Quel nombre faut-il choisir pour que le lutin annonce $21$ ?
\end{enumerate}

\vspace{1em}

\section*{Exercice 2}

Voici un programme de calcul écrit sous forme de script.

\begin{center}
\begin{scratch}[scale=0.78]
\blocksensing{demander \ovalnum{Nombre de départ ?} et attendre}
\blockvariable{mettre \ovalvariable{x} à \ovalsensing{réponse}}
\blockvariable{mettre \ovalvariable{x} à \ovaloperator{\ovalvariable{x} + \ovalnum{7}}}
\blockvariable{mettre \ovalvariable{x} à \ovaloperator{\ovalnum{3} * \ovalvariable{x}}}
\blocklook{dire \ovalvariable{x}}
\end{scratch}
\end{center}

\begin{enumerate}[label=\arabic*)]
    \item Compléter le tableau suivant.
\end{enumerate}

\begin{center}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{|c|c|c|c|c|}
\hline
Nombre de départ & $0$ & $2$ & $-5$ & $10$ \\
\hline
Nombre annoncé & & & & \\
\hline
\end{tabular}
\end{center}

\begin{enumerate}[label=\arabic*),resume]
    \item Si le nombre de départ est $n$, exprimer le nombre annoncé en fonction de $n$.
    \item Léa affirme que le résultat est toujours un multiple de $3$. A-t-elle raison ? Justifier.
    \item Quel nombre de départ permet d'obtenir $0$ ?
\end{enumerate}

\newpage

\section*{Exercice 3}

On exécute le script ci-dessous.

\begin{center}
\begin{scratch}[scale=0.78]
\blockvariable{mettre \ovalvariable{somme} à \ovalnum{0}}
\blockrepeat{répéter \ovalnum{5} fois}{%
    \blockvariable{ajouter \ovalnum{4} à \ovalvariable{somme}}
}
\blocklook{dire \ovalvariable{somme}}
\end{scratch}
\end{center}

\begin{enumerate}[label=\arabic*)]
    \item Quelle est la valeur de la variable \texttt{somme} au départ ?
    \item Compléter le tableau d'évolution de la variable.
\end{enumerate}

\begin{center}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{|c|c|c|c|c|c|}
\hline
Après le passage numéro & 1 & 2 & 3 & 4 & 5 \\
\hline
Valeur de \texttt{somme} & & & & & \\
\hline
\end{tabular}
\end{center}

\begin{enumerate}[label=\arabic*),resume]
    \item Quelle valeur est annoncée à la fin ?
    \item Si on remplace « Répéter 5 fois » par « Répéter 12 fois », quelle valeur serait annoncée ?
\end{enumerate}

\vspace{1em}

\section*{Exercice 4}

Un lutin trace une figure avec le script suivant.

\begin{center}
\begin{scratch}[scale=0.78]
\blockpen{effacer tout}
\blockpen{stylo en position d'écriture}
\blockrepeat{répéter \ovalnum{4} fois}{%
    \blockmove{avancer de \ovalnum{80} pas}
    \blockmove{tourner \turnright{} de \ovalnum{90} degrés}
}
\blockpen{relever le stylo}
\end{scratch}
\end{center}

\begin{enumerate}[label=\arabic*)]
    \item Quelle figure est tracée ?
    \item Quelle est la longueur d'un côté de cette figure ?
    \item Quel est son périmètre ?
    \item Quelle instruction faudrait-il modifier pour tracer un triangle équilatéral de côté 80 pas ? Donner la nouvelle boucle.
\end{enumerate}

\newpage

\section*{Exercice 5}

On considère le script suivant, dans lequel la variable \texttt{score} est un nombre entier.

\begin{center}
\begin{scratch}[scale=0.78]
\blocksensing{demander \ovalnum{Quel est ton score ?} et attendre}
\blockvariable{mettre \ovalvariable{score} à \ovalsensing{réponse}}
\blockifelse{si \booloperator{\ovalvariable{score} > \ovalnum{49}} alors}{%
    \blocklook{dire \ovalnum{Niveau validé}}
}{%
    \blocklook{dire \ovalnum{Essaie encore}}
}
\end{scratch}
\end{center}

\begin{enumerate}[label=\arabic*)]
    \item Que dit le lutin si le score vaut $72$ ?
    \item Que dit le lutin si le score vaut $49$ ?
    \item Que dit le lutin si le score vaut $50$ ?
    \item Pour quelles valeurs entières du score le niveau est-il validé ?
\end{enumerate}

\vspace{1em}

\section*{Exercice 6}

Un script permet de calculer le prix d'une sortie au cinéma.

\begin{center}
\begin{scratch}[scale=0.78]
\blocksensing{demander \ovalnum{Nombre de places ?} et attendre}
\blockvariable{mettre \ovalvariable{places} à \ovalsensing{réponse}}
\blockvariable{mettre \ovalvariable{prix} à \ovaloperator{\ovalnum{8} * \ovalvariable{places}}}
\blockif{si \booloperator{\ovalvariable{places} > \ovalnum{4}} alors}{%
    \blockvariable{mettre \ovalvariable{prix} à \ovaloperator{\ovalvariable{prix} - \ovalnum{10}}}
}
\blocklook{dire \ovalvariable{prix}}
\end{scratch}
\end{center}

\begin{enumerate}[label=\arabic*)]
    \item Quel prix est annoncé pour $3$ places ?
    \item Quel prix est annoncé pour $5$ places ?
    \item Quel prix est annoncé pour $8$ places ?
    \item Écrire une formule donnant le prix $P(n)$ en fonction du nombre de places $n$, en distinguant deux cas.
\end{enumerate}

\newpage

\section*{Exercice 7}

Voici un script de déplacement. Au départ, le lutin est en $(0;0)$, orienté vers la droite.

\begin{center}
\begin{scratch}[scale=0.78]
\blockmove{aller à x: \ovalnum{0} y: \ovalnum{0}}
\blockmove{s'orienter à \ovalnum{90} degrés}
\blockmove{avancer de \ovalnum{60} pas}
\blockmove{tourner \turnleft{} de \ovalnum{90} degrés}
\blockmove{avancer de \ovalnum{40} pas}
\blockmove{tourner \turnleft{} de \ovalnum{90} degrés}
\blockmove{avancer de \ovalnum{60} pas}
\end{scratch}
\end{center}

\begin{enumerate}[label=\arabic*)]
    \item Donner les coordonnées du lutin après la première instruction « Avancer de 60 pas ».
    \item Donner les coordonnées du lutin à la fin du script.
    \item Quelle distance sépare le point de départ et le point d'arrivée ?
    \item Quelle instruction ajouter pour revenir au point de départ par le chemin le plus court ?
\end{enumerate}

\vspace{1em}

\section*{Exercice 8}

On souhaite écrire un script qui calcule la moyenne de trois notes. Un élève propose le script suivant.

\begin{center}
\begin{scratch}[scale=0.72]
\blocksensing{demander \ovalnum{Note 1 ?} et attendre}
\blockvariable{mettre \ovalvariable{a} à \ovalsensing{réponse}}
\blocksensing{demander \ovalnum{Note 2 ?} et attendre}
\blockvariable{mettre \ovalvariable{b} à \ovalsensing{réponse}}
\blocksensing{demander \ovalnum{Note 3 ?} et attendre}
\blockvariable{mettre \ovalvariable{c} à \ovalsensing{réponse}}
\blockvariable{mettre \ovalvariable{moyenne} à \ovaloperator{\ovalvariable{a} + \ovalvariable{b} + \ovalvariable{c} / \ovalnum{3}}}
\blocklook{dire \ovalvariable{moyenne}}
\end{scratch}
\end{center}

\begin{enumerate}[label=\arabic*)]
    \item En respectant les priorités opératoires, quelle valeur annonce ce script pour les notes $12$, $15$ et $18$ ?
    \item Quelle devrait être la moyenne correcte de ces trois notes ?
    \item Expliquer l'erreur dans le script.
    \item Écrire l'instruction correcte pour calculer la moyenne.
\end{enumerate}

\newpage

\section*{Exercice 9}

Un jeu utilise une variable \texttt{vie}. Le script suivant est exécuté.

\begin{center}
\begin{scratch}[scale=0.78]
\blockvariable{mettre \ovalvariable{vie} à \ovalnum{20}}
\blockrepeat{répéter jusqu'à ce que \booloperator{\ovalvariable{vie} < \ovalnum{1}}}{%
    \blockvariable{ajouter \ovalnum{-3} à \ovalvariable{vie}}
}
\blocklook{dire \ovalnum{Perdu}}
\end{scratch}
\end{center}

\begin{enumerate}[label=\arabic*)]
    \item Compléter les premières valeurs prises par \texttt{vie} après chaque passage dans la boucle.
\end{enumerate}

\begin{center}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{|c|c|c|c|c|c|c|c|}
\hline
Passage & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\
\hline
\texttt{vie} & & & & & & & \\
\hline
\end{tabular}
\end{center}

\begin{enumerate}[label=\arabic*),resume]
    \item Combien de passages dans la boucle sont nécessaires avant que le script s'arrête ?
    \item Quelle est la valeur de \texttt{vie} quand le lutin dit « Perdu » ?
    \item Pourquoi la valeur finale n'est-elle pas forcément égale à $0$ ?
\end{enumerate}

\vspace{1em}

\section*{Exercice 10}

On veut programmer le calcul suivant : choisir un nombre, le multiplier par lui-même, puis soustraire le double du nombre de départ.

\begin{enumerate}[label=\arabic*)]
    \item Si le nombre choisi est $5$, quel résultat doit-on obtenir ?
    \item Si le nombre choisi est $-4$, quel résultat doit-on obtenir ?
    \item On note $x$ le nombre choisi. Écrire l'expression mathématique correspondant au programme.
    \item Compléter le script suivant avec les variables \texttt{x} et \texttt{résultat}.
\end{enumerate}

\begin{center}
\begin{scratch}[scale=0.78]
\blocksensing{demander \ovalnum{Choisis un nombre} et attendre}
\blockvariable{mettre \ovalvariable{x} à \ovalnum{\dotfill}}
\blockvariable{mettre \ovalvariable{résultat} à \ovalnum{\dotfill}}
\blocklook{dire \ovalvariable{résultat}}
\end{scratch}
\end{center}

\vfill
\begin{center}
    \textit{Fin du sujet}
\end{center}

\newpage

\section*{Correction}

\subsection*{Exercice 1}

\begin{enumerate}[label=\arabic*)]
    \item Pour $4$, le résultat est $2\times4+5=13$.
    \item Pour $-3$, le résultat est $2\times(-3)+5=-1$.
    \item L'expression est $2x+5$.
    \item On résout $2x+5=21$, donc $2x=16$ et $x=8$.
\end{enumerate}

\subsection*{Exercice 2}

\begin{enumerate}[label=\arabic*)]
    \item Pour $0$, $2$, $-5$ et $10$, les nombres annoncés sont $21$, $27$, $6$ et $51$.
    \item Le programme ajoute $7$ puis multiplie par $3$, donc le résultat est $3(n+7)$, c'est-à-dire $3n+21$.
    \item Oui, car le résultat est $3(n+7)$ : il est donc égal à $3$ fois un nombre.
    \item $3(n+7)=0$, donc $n+7=0$ et $n=-7$.
\end{enumerate}

\subsection*{Exercice 3}

\begin{enumerate}[label=\arabic*)]
    \item La valeur de départ est $0$.
    \item Après les passages 1 à 5, la variable vaut $4$, $8$, $12$, $16$ et $20$.
    \item La valeur annoncée à la fin est $20$.
    \item Avec $12$ répétitions, on obtiendrait $12\times4=48$.
\end{enumerate}

\subsection*{Exercice 4}

\begin{enumerate}[label=\arabic*)]
    \item La figure tracée est un carré.
    \item Un côté mesure $80$ pas.
    \item Le périmètre vaut $4\times80=320$ pas.
    \item Pour un triangle équilatéral, il faut répéter 3 fois : avancer de 80 pas puis tourner de 120 degrés.
\end{enumerate}

\subsection*{Exercice 5}

\begin{enumerate}[label=\arabic*)]
    \item Pour $72$, le lutin dit « Niveau validé ».
    \item Pour $49$, le lutin dit « Essaie encore ».
    \item Pour $50$, le lutin dit « Niveau validé » car la condition est $\texttt{score}\geq50$.
    \item Le niveau est validé pour tous les scores entiers supérieurs ou égaux à $50$.
\end{enumerate}

\subsection*{Exercice 6}

\begin{enumerate}[label=\arabic*)]
    \item Pour $3$ places, le prix annoncé est $8\times3=24$ euros.
    \item Pour $5$ places, le prix annoncé est $8\times5-10=30$ euros.
    \item Pour $8$ places, le prix annoncé est $8\times8-10=54$ euros.
    \item Si $n<5$, alors $P(n)=8n$. Si $n\geq5$, alors $P(n)=8n-10$.
\end{enumerate}

\subsection*{Exercice 7}

\begin{enumerate}[label=\arabic*)]
    \item Après avoir avancé de $60$ pas vers la droite, le lutin est en $(60;0)$.
    \item Il monte ensuite de $40$ pas, puis revient de $60$ pas vers la gauche : il arrive en $(0;40)$.
    \item La distance entre $(0;0)$ et $(0;40)$ est $40$ pas.
    \item Il faut s'orienter vers le bas puis avancer de $40$ pas, ou simplement aller à $x=0$, $y=0$ si on autorise le déplacement direct.
\end{enumerate}

\subsection*{Exercice 8}

\begin{enumerate}[label=\arabic*)]
    \item Le script calcule $12+15+18/3=12+15+6=33$.
    \item La moyenne correcte est $\dfrac{12+15+18}{3}=15$.
    \item L'erreur vient de l'absence de parenthèses : seule la troisième note est divisée par $3$.
    \item L'instruction correcte est : mettre \texttt{moyenne} à $(\texttt{a}+\texttt{b}+\texttt{c})/3$.
\end{enumerate}

\subsection*{Exercice 9}

\begin{enumerate}[label=\arabic*)]
    \item Après les passages 1 à 7, \texttt{vie} vaut $17$, $14$, $11$, $8$, $5$, $2$ et $-1$.
    \item Il faut $7$ passages dans la boucle.
    \item Quand le lutin dit « Perdu », \texttt{vie} vaut $-1$.
    \item La boucle enlève $3$ à chaque passage : on peut passer directement d'une valeur positive à une valeur négative sans tomber exactement sur $0$.
\end{enumerate}

\subsection*{Exercice 10}

\begin{enumerate}[label=\arabic*)]
    \item Pour $5$, on obtient $5^2-2\times5=25-10=15$.
    \item Pour $-4$, on obtient $(-4)^2-2\times(-4)=16+8=24$.
    \item L'expression est $x^2-2x$.
    \item Il faut mettre \texttt{x} à la réponse, puis mettre \texttt{résultat} à $\texttt{x}\times\texttt{x}-2\times\texttt{x}$.
\end{enumerate}

\end{document}