Programmes, variables et boucles
Lucas veut programmer un jeu où son lutin dessine une étoile, compte ses points et lance un dé. Pour y arriver, il doit savoir lire un script, c'est-à-dire suivre ce que fait l'ordinateur instruction après instruction. À la fin de la page, tu sauras prédire ce que fait n'importe quel script de ce type, comme dans les exercices du brevet.
Variables et affectations
Une variable est une « boîte » qui porte un nom (par exemple $x$) et qui contient une valeur. Le script peut changer cette valeur à tout moment.
Deux instructions à bien distinguer :
-
« mettre $x$ à $5$ » : on écrase l'ancienne valeur par $5$ ;
-
« ajouter $3$ à $x$ » : la nouvelle valeur est l'ancienne valeur $+\,3$.
Les instructions s'exécutent dans l'ordre, de haut en bas.
Un programme peut aussi demander un nombre à l'utilisateur et afficher un résultat : c'est un programme de calcul. Par exemple, « demander $n$ ; calculer $2n+1$ ; afficher le résultat » affiche $11$ pour $n=5$.
Un script Scratch effectue : « mettre $x$ à $5$ », « ajouter $3$ à $x$ », « mettre $x$ à $x\times2$ ». Quelle est la valeur finale de $x$ ?
Un script Scratch effectue : « mettre $x$ à $5$ », « ajouter $3$ à $x$ », « mettre $x$ à $x\times2$ ».
Quelle est la valeur finale de $x$ ?
Un programme demande un nombre $n$, puis calcule $3n-4$ et affiche le résultat. a) Que s'affiche-t-il pour $n=6$ ? b) Pour quelle valeur de $n$ s'affiche-t-il $23$ ?
Un programme demande un nombre $n$, puis calcule $3n-4$ et affiche le résultat.
- a) Que s'affiche-t-il pour $n=6$ ?
- b) Pour quelle valeur de $n$ s'affiche-t-il $23$ ?
Boucles « répéter » et dessins
Quand une suite d'instructions se répète, on utilise une boucle. « Répéter $4$ fois » exécute $4$ fois de suite les instructions qu'elle contient.
Le lutin de Scratch se déplace avec « avancer de … pas » et « tourner de … degrés ». Voici un carré de côté $50$ pas :
« répéter $4$ fois : avancer de $50$ pas, tourner à droite de $90°$ ».
Pourquoi $90°$ ? Après $4$ virages identiques, le lutin doit avoir fait un tour complet, soit $360°$ : $360\div4=90$.
Pour un triangle équilatéral : $\dfrac{360}{3}=120°$. Attention : l'angle du triangle est $60°$, mais le lutin tourne de $120°$ (angle extérieur).
Pour une rosace, on répète une figure en tournant entre chaque copie : avec $6$ triangles, on tourne de $\dfrac{360}{6}=60°$ entre deux triangles. Chaque triangle est l'image du précédent par une rotation d'angle $60°$ autour d'un même centre, le centre de la rosace (le point autour duquel on fait tourner les triangles), comme dans le cours de géométrie.
Un lutin se trouve en $(0\,;\,0)$ orienté à $90°$ (vers la droite). Le script est : « répéter $4$ fois : avancer de $50$ pas, tourner à droite de $90°$ ». a) Quelle…
Un lutin se trouve en $(0\,;\,0)$ orienté à $90°$ (vers la droite). Le script est : « répéter $4$ fois : avancer de $50$ pas, tourner à droite de $90°$ ».
- a) Quelle figure le lutin trace-t-il ?
- b) Quel est le périmètre de cette figure, en pas ?
On souhaite tracer un triangle équilatéral de côté $80$ pas avec un lutin, puis le répéter pour dessiner une rosace de $6$ triangles. a) De quel angle faut-il tourner…
On souhaite tracer un triangle équilatéral de côté $80$ pas avec un lutin, puis le répéter pour dessiner une rosace de $6$ triangles.
- a) De quel angle faut-il tourner entre deux côtés d'un triangle ?
- b) Écrire le script de la figure complète en précisant l'angle de rotation entre deux triangles.
Boucles avec compteur et blocs personnalisés
Une boucle « pour $i$ allant de $1$ à $5$ » exécute ses instructions $5$ fois, avec $i=1$, puis $2$, $3$, $4$, $5$. On peut utiliser $i$ dans les calculs.
Un bloc personnalisé est un mini-programme auquel on donne un nom, avec éventuellement un paramètre. Par exemple, « carré(c) » :
« définir carré(c) : répéter $4$ fois : avancer de $c$ pas, tourner à droite de $90°$ ».
Ensuite, « carré($20$) » trace un carré de côté $20$, « carré($40$) » un carré de côté $40$. On écrit le bloc une fois et on le réutilise : c'est plus court et moins risqué.
Script : « mettre $s$ à $0$ ; pour $i$ allant de $1$ à $5$ : ajouter $i\times i$ à $s$ ; afficher $s$ ». a) Détailler la valeur de $s$ après chaque tour de boucle. b)…
Script : « mettre $s$ à $0$ ; pour $i$ allant de $1$ à $5$ : ajouter $i\times i$ à $s$ ; afficher $s$ ».
- a) Détailler la valeur de $s$ après chaque tour de boucle.
- b) Quelle valeur est affichée ?
Un bloc personnalisé « carré(c) » trace un carré de côté $c$ pas. a) Écrire le script du bloc « carré(c) ». b) Écrire un script qui utilise ce bloc pour tracer trois…
Un bloc personnalisé « carré(c) » trace un carré de côté $c$ pas.
- a) Écrire le script du bloc « carré(c) ».
- b) Écrire un script qui utilise ce bloc pour tracer trois carrés de côtés $20$, $40$ et $60$ pas ayant un même coin de départ.
- c) Quelle est la somme des périmètres des trois carrés ?
« Tant que » et conditions
Quand on ne sait pas à l'avance combien de fois répéter, on utilise « tant que (condition) ». On teste la condition avant chaque tour ; dès qu'elle est fausse, la boucle s'arrête.
L'instruction conditionnelle « si (condition) alors … sinon … » choisit entre deux actions. Exemple avec la réciproque du théorème de Pythagore : si $c$ est le plus grand côté et que $a^2+b^2=c^2$, alors le triangle est rectangle.
« demander $a$, $b$, $c$ ; si $a\times a+b\times b=c\times c$ alors dire "rectangle" sinon dire "pas rectangle" ».
Pour $(3\,;4\,;5)$ : $9+16=25=5^2$, donc « rectangle ».
Un programme : « mettre $a$ à $1$ ; mettre $n$ à $0$ ; tant que $a<100$ : mettre $a$ à $a\times2$ ; ajouter $1$ à $n$ ; fin ; afficher $n$ ». a) Dérouler le programme en…
Un programme : « mettre $a$ à $1$ ; mettre $n$ à $0$ ; tant que $a<100$ : mettre $a$ à $a\times2$ ; ajouter $1$ à $n$ ; fin ; afficher $n$ ».
- a) Dérouler le programme en donnant les valeurs de $a$ et $n$ à chaque étape.
- b) Que représente $n$ ?
- c) Que s'afficherait-il si l'on remplaçait $100$ par $1\,000$ ?
Un programme demande trois nombres positifs $a$, $b$, $c$ avec $c$ le plus grand, et affiche « rectangle » si $a^2+b^2=c^2$, sinon « pas rectangle ». a) Écrire le script…
Un programme demande trois nombres positifs $a$, $b$, $c$ avec $c$ le plus grand, et affiche « rectangle » si $a^2+b^2=c^2$, sinon « pas rectangle ».
- a) Écrire le script avec une instruction conditionnelle.
- b) Qu'affiche-t-il pour $(a,b,c)=(9,12,15)$ ? et pour $(5,6,8)$ ?
- c) Quelle propriété du cours le programme utilise-t-il ? L'énoncer.
Simuler le hasard
Le bloc « nombre aléatoire entre $1$ et $6$ » simule un dé. Pour estimer une probabilité, on répète l'expérience un grand nombre de fois et on compte :
« mettre $c$ à $0$ ; répéter $1\,000$ fois : mettre $d$ à nombre aléatoire entre $1$ et $6$ ; si $d\geqslant5$ alors ajouter $1$ à $c$ ».
La fréquence observée est $\dfrac{c}{1\,000}$. Quand le nombre d'essais augmente, elle se rapproche de la probabilité théorique (stabilisation des fréquences). Ici, il y a $2$ issues favorables (5 et 6) sur $6$ : $P=\dfrac{2}{6}=\dfrac13\approx0{,}333$. On attend donc $c$ proche de $333$.
On simule le lancer d'un dé équilibré à six faces avec le bloc « nombre aléatoire entre $1$ et $6$ ». Un script répète $1\,000$ fois le lancer et compte le nombre $c$ de…
On simule le lancer d'un dé équilibré à six faces avec le bloc « nombre aléatoire entre $1$ et $6$ ». Un script répète $1\,000$ fois le lancer et compte le nombre $c$ de fois où le résultat est supérieur ou égal à $5$.
- a) Écrire le script.
- b) Quelle valeur approximative de $c$ peut-on attendre ? Justifier avec la probabilité théorique.
- c) Après une exécution, on obtient $c=348$. Calculer la fréquence observée et la comparer à la probabilité théorique.
Retour au début : pour que le lutin de Lucas dessine, compte et lance un dé, il suffit de combiner variables, boucles, conditions et blocs, en suivant les instructions dans l'ordre.
L'essentiel
-
Une variable contient une valeur ; « mettre à » remplace, « ajouter à » modifie. Les instructions s'exécutent dans l'ordre.
-
Pour comprendre un script, on le déroule avec un tableau de suivi (valeur de chaque variable à chaque tour).
-
« Répéter $n$ fois » : pour un polygone régulier à $n$ côtés, on tourne de $\dfrac{360}{n}\,°$.
-
Un bloc personnalisé avec paramètre évite de recopier un script.
-
« Tant que » s'arrête quand la condition devient fausse ; « si … alors … sinon » choisit entre deux actions.
-
Une simulation aléatoire donne une fréquence proche de la probabilité théorique.