Ressources · 4ᵉ · Mathématiques
Programmation : tests, variables et boucles
Rappels de 5e et de 6e (blocs, directions, coordonnées du lutin, blocs opérateurs, boucle « répéter n fois », polygones réguliers), conditions et instructions conditionnelles « si … alors … sinon », variables (mettre à, ajouter à, compteur, somme), programmes de calcul avec des variables et expression littérale, événements, écrire, modifier et corriger un programme.
À propos de cette page
Rappels de 5e et de 6e : blocs, coordonnées, calculs et boucle
• Direction (6e) : 90 = vers la droite, 0 = vers le haut, 180 = vers le bas, −90 = vers la gauche. « tourner ↻ de … degrés » (sens des aiguilles d’une montre) ou « tourner ↺ de … degrés » change la direction sans déplacer le lutin ; « avancer de … pas » le déplace dans sa direction ; stylo en position d’écriture, il trace.
• Coordonnées (5e) : la scène est un repère d’origine (0 ; 0) au centre, x va de −240 à 240 et y de −180 à 180. « aller à x: … y: … » et « mettre x à … » recopient un nombre ; « ajouter … à x » (ou « à y ») ajoute un nombre à la coordonnée.
• Entrée et sortie (5e) : « demander … et attendre » range le nombre tapé dans « réponse » ; « dire … » l’affiche. Dans des blocs opérateurs emboîtés (écrits entre parenthèses dans le texte de cette page), le bloc le plus à l’intérieur est calculé en premier ; × s’écrit * et ÷ s’écrit /.
• Boucle (5e) : « répéter n fois » exécute n fois les blocs qu’elle contient. Un polygone régulier à n côtés se referme quand le lutin tourne de 360 ÷ n degrés à chaque coin.
| départ | après le 1ᵉʳ tour | après le 2ᵉ tour | après le 3ᵉ tour | |
|---|---|---|---|---|
| x | −150 | −70 | 10 | 90 |
| y | −40 | −15 | 10 | 35 |
On tape 40 : « réponse » vaut 40 et le bloc « réponse * 2 » vaut 40 × 2 = 80. Chaque tour ajoute 80 à x et 25 à y.
Après 3 tours : x = −150 + 3 × 80 = 90 et y = −40 + 3 × 25 = 35. Le lutin finit en (90 ; 35).
Directions, calculs et polygones
Le lutin est orienté à 180 (vers le bas). Après « tourner ↻ de 90 degrés », il regarde vers la gauche : direction −90.
On tape 7. « dire ((réponse - 3) * réponse) » : le bloc intérieur donne 7 − 3 = 4, puis 4 × 7 = 28. Le lutin dit 28.
« répéter 6 fois [ avancer de 35 pas ; tourner ↺ de 60 degrés ] », stylo en position d’écriture : 6 × 60 = 360, le lutin fait un tour complet et la figure se referme. C’est un hexagone régulier : 6 × 35 = 210 pas de trait, et 6 × 2 = 12 blocs exécutés dans la boucle.
Réflexe — je lis le script de haut en bas et je note dans un tableau pas à pas ce qui change (direction, x, y, trait) ; pour une boucle, je calcule ce que fait un tour, puis je multiplie par le nombre de tours.
Attention — « ajouter 50 à x » n’est pas « mettre x à 50 » ; « tourner » ne fait pas avancer ; et pour un polygone régulier, l’angle dont tourne le lutin n’est pas l’angle du polygone : pour un hexagone régulier, le lutin tourne de 60 degrés alors que les angles de l’hexagone mesurent 120 degrés.
1 / 5
Conditions et instructions conditionnelles
• « si condition alors [ A ] » : les blocs A sont exécutés seulement si la condition est vraie ; si elle est fausse, il ne se passe rien.
• « si condition alors [ A ] sinon [ B ] » : A si la condition est vraie, B si elle est fausse. Une seule des deux branches est exécutée, jamais les deux.
• Dans les deux cas, le script continue ensuite avec le bloc placé sous le « si ». La condition est évaluée avec les valeurs du moment où le bloc s’exécute.
| nombre tapé | réponse < 10 | le lutin dit |
|---|---|---|
| 14 | 14 < 10 : fausse | Moyenne atteinte |
| 10 | 10 < 10 : fausse | Moyenne atteinte |
| 7,5 (Scratch : 7.5) | 7,5 < 10 : vraie | Sous la moyenne |
Avec 10, la condition est fausse car « < » est strict : c’est la branche « sinon » qui est exécutée, et une note de 10 est bien comptée comme « moyenne atteinte ».
Une condition dans un déplacement
Le lutin est en (215 ; 30) : 215 > 200 est vraie, il passe en (−200 ; 30) : il ressort du côté gauche de la scène.
Le lutin est en (180 ; 30) : 180 > 200 est fausse, rien ne se passe : il reste en (180 ; 30).
Écrire la bonne condition
Scratch n’a pas de bloc « ⩾ ». Pour « au moins 10 », on écrit la condition contraire, « réponse < 10 », et on place le message « au moins 10 » dans la branche « sinon », comme dans le script ci-dessus.
Si l’on ne tape que des nombres entiers, « réponse > 9 » convient aussi pour « au moins 10 » : un entier plus grand que 9 vaut 10 ou plus.
« si réponse < 14 alors dire 5 € sinon dire 8 € » (tarif réduit avant 14 ans) : pour 13, 13 < 14 est vraie, le lutin dit 5 € ; pour 14, 14 < 14 est fausse, il dit 8 €.
La condition peut contenir un calcul : « (réponse * 4) > 50 » est fausse pour 12 (48 > 50 est faux) et vraie pour 13 (52 > 50).
Avec des relatifs : pour −0,5, « réponse < 0 » est vraie ; pour 0, elle est fausse, car 0 n’est pas strictement inférieur à 0.
Réflexe — je remplace dans la condition chaque nom par sa valeur du moment, je décide « vraie » ou « fausse », puis j’exécute une seule branche et je continue sous le bloc « si ».
Attention — « < » et « > » sont stricts : 10 < 10 est fausse. Avec un « si … alors » sans « sinon », une condition fausse ne déclenche rien : ce n’est pas une erreur du programme.
2 / 5
Les variables : mettre à, ajouter à, compteur
• « mettre jetons à 20 » : la variable prend la valeur 20 ; l’ancienne valeur est effacée. Au début d’un script, on initialise ainsi chaque variable.
• « ajouter 5 à jetons » : la nouvelle valeur est l’ancienne plus 5 ; « ajouter −3 à jetons » enlève 3.
• Le bloc rond « jetons » donne la valeur du moment : on peut l’utiliser dans un calcul, une condition, un déplacement ou « dire ». « mettre jetons à (jetons * 2) » double la valeur.
• Une variable qui augmente de 1 à chaque fois qu’un événement se produit est un compteur. « réponse » est une variable particulière, remplie par « demander ».
| après le bloc | jetons |
|---|---|
| mettre jetons à 20 | 20 |
| 1ᵉʳ tour : ajouter −3 | 17 |
| 2ᵉ tour | 14 |
| 3ᵉ tour | 11 |
| 4ᵉ tour | 8 |
| mettre jetons à (jetons * 2) | 16 |
La boucle enlève 4 × 3 = 12 jetons : 20 − 12 = 8. Puis le dernier « mettre » remplace 8 par 8 × 2 = 16. Le lutin dit 16.
Une somme calculée dans une boucle
| départ | 1ᵉʳ tour | 2ᵉ tour | 3ᵉ tour | 4ᵉ tour | |
|---|---|---|---|---|---|
| somme | 0 | 0 + 5 = 5 | 5 + 10 = 15 | 15 + 15 = 30 | 30 + 20 = 50 |
| n | 5 | 10 | 15 | 20 | 25 |
À chaque tour, on ajoute d’abord la valeur de n à somme, puis on augmente n de 5. Le lutin dit 50 (5 + 10 + 15 + 20).
Si l’on échange les deux blocs de la boucle, n augmente avant d’être ajouté : somme = 10 + 15 + 20 + 25 = 70.
Copier une valeur
« mettre a à 8 ; mettre b à a ; ajouter 3 à a » : b reçoit la valeur 8 au moment du deuxième bloc ; ensuite a passe à 11, mais b reste 8. Une variable ne « suit » pas celle dont elle a copié la valeur.
Réflexe — je fais un tableau d’état : une colonne par variable, une ligne par bloc (ou par tour de boucle), et je n’écris la nouvelle valeur qu’après avoir fait le calcul avec l’ancienne.
Attention — « mettre … à » remplace, « ajouter … à » cumule. Une variable qu’on oublie d’initialiser garde la valeur laissée par l’exécution précédente. Et dans une boucle, l’ordre des blocs change le résultat (50 ou 70 ci-dessus).
3 / 5
Programmes de calcul avec des variables
• Avec un nombre : on déroule le script dans un tableau d’état et on obtient ce que dit le lutin.
• Avec une lettre : on déroule le script en gardant la lettre n ; on obtient une expression littérale, que l’on peut réduire. « mettre r à (r * 3) » multiplie toute la valeur de r : on écrit des parenthèses.
• Retrouver le nombre choisi : on écrit que l’expression est égale au résultat annoncé, et on résout l’équation.
• Deux scripts qui donnent la même expression réduite donnent le même résultat pour tous les nombres choisis.
| bloc | avec 5 | avec −4 | avec la lettre n |
|---|---|---|---|
| mettre n à réponse | 5 | −4 | n |
| mettre r à (n + 6) | 11 | 2 | n + 6 |
| mettre r à (r * 3) | 33 | 6 | 3(n + 6) |
| mettre r à (r - n) | 28 | 10 | 3(n + 6) − n |
3(n + 6) − n = 3n + 18 − n = 2n + 18. Vérification avec 5 : 2 × 5 + 18 = 28, comme dans le tableau.
Retrouver le nombre choisi
Le lutin a dit 40. Il faut 2n + 18 = 40, donc 2n = 22 et n = 11. Vérification : 11 + 6 = 17, 17 × 3 = 51, 51 − 11 = 40.
Deux scripts équivalents
Ce script calcule 2n + 18 directement : « mettre r à (n * 2) » puis « ajouter 18 à r ».
Les deux scripts ont la même expression réduite, 2n + 18 : ils disent le même nombre, quel que soit le nombre choisi.
Réflexe — pour trouver l’expression, je déroule le script avec la lettre n, puis je la vérifie avec une valeur simple ; pour retrouver le nombre choisi, je résous une équation et je vérifie en relançant le script à la main.
Attention — « mettre r à (r * 3) » après « mettre r à (n + 6) » donne 3(n + 6) = 3n + 18, pas 3n + 6. Et la variable n ne change pas quand r change : dans le dernier bloc, n vaut toujours le nombre choisi.
4 / 5
Écrire et modifier un programme : événements, déplacements et figures
• Pour écrire un programme : je découpe l’objectif en étapes ; ce qui se répète va dans une boucle, ce qui dépend d’une situation dans un « si », ce qui change ou se compte dans une variable ; puis je teste à la main avec des valeurs.
• Pour modifier un programme : je change un paramètre, ou je remplace un nombre par une variable (par exemple le nombre de côtés tapé par l’utilisateur).
• « nombre aléatoire entre 1 et 6 » (bloc vert) donne un entier au hasard de 1 à 6 : on simule ainsi le lancer d’un dé.
• Corriger (déboguer) un programme : je le déroule à la main pour trouver le bloc mal placé ou le mauvais nombre.
| appui sur la flèche droite | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| x | −20 | 20 | 60 | 100 | 140 | 180 | −200 |
| appuis | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Au 7ᵉ appui, x passe de 180 à 220 ; 220 > 200 est vraie, donc x est remis à −200. Le compteur « appuis » vaut 7.
Un polygone choisi par l’utilisateur
On tape 8 : n vaut 8, le lutin tourne de 360 ÷ 8 = 45 degrés à chaque coin et trace un octogone régulier : 8 × 40 = 320 pas de trait.
On tape 3 : 360 ÷ 3 = 120 degrés, un triangle équilatéral de 3 × 40 = 120 pas de trait. Le même script trace tous les polygones réguliers.
Trouver et corriger une erreur
On veut ajouter 2 points cinq fois, donc obtenir 10. Mais « mettre points à 0 » est dans la boucle : à chaque tour, points repart de 0 et vaut 2. Le lutin dit 2.
Correction : placer « mettre points à 0 » avant la boucle. Le lutin dit alors 5 × 2 = 10.
Réflexe — boucle pour ce qui se répète, « si » pour un choix, variable pour ce qui change ou se compte ; je teste mon programme à la main, appui par appui ou tour par tour.
Attention — un bloc « mettre … à » placé dans une boucle remet la variable à sa valeur de départ à chaque tour ; et un script lancé par une touche s’exécute à chaque appui, pas une seule fois.
5 / 5
Pour aller plus loin
Avant et après ce chapitre — multiplier des nombres relatifs (« réponse * réponse » avec un nombre négatif) : Relatifs : multiplier, diviser, enchaîner les opérations ; développer et réduire l’expression d’un programme de calcul : Calcul littéral : développer, factoriser, réduire ; retrouver le nombre choisi : Équations : résoudre une équation du premier degré ; simuler une expérience aléatoire : Probabilités : événement contraire et issues non équiprobables.
Se verra en 3e — les conditions composées : « (x > 0) et (x < 10) » est vraie seulement si les deux conditions le sont ; « (C1) ou (C2) » est vraie dès qu’au moins une l’est ; « non (x < 5) » est vraie quand x < 5 est fausse (pour x = 5 par exemple). La boucle « répéter jusqu’à ce que … » recommence tant que sa condition est fausse et s’arrête dès qu’elle devient vraie : « mettre n à 1 ; répéter jusqu’à ce que n > 50 [ mettre n à (n * 2) ] » s’arrête avec n = 64 ; si la condition ne devient jamais vraie, la boucle ne s’arrête pas. La boucle « répéter indéfiniment » sert aux jeux. On y place aussi une boucle dans une autre pour répéter un motif (une rosace de carrés), et l’on crée ses propres blocs pour découper un problème.
- Un script s’exécute bloc par bloc, de haut en bas, à partir d’un événement ; pour une boucle « répéter n fois », on calcule un tour puis on multiplie. Polygone régulier à n côtés : 360 ÷ n degrés à chaque coin.
- Une condition est vraie ou fausse ; « < » et « > » sont stricts. « si … alors … sinon » exécute une seule des deux branches.
- Une variable porte un nom et une valeur : « mettre … à » remplace, « ajouter … à » cumule. On initialise ses variables au début du script.
- Un programme de calcul déroulé avec la lettre n donne une expression littérale ; on retrouve le nombre choisi en résolvant une équation.
- Pour écrire un programme : boucle pour ce qui se répète, « si » pour un choix, variable pour ce qui change ou se compte ; on le teste à la main pour le corriger.
Questions fréquentes
Comment prévoir ce que fait un script Scratch sans l’exécuter ?
On le lit de haut en bas et on note dans un tableau pas à pas ce qui change : direction, coordonnées du lutin, valeurs des variables. Pour une boucle « répéter n fois », on calcule ce que fait un tour, puis on multiplie : « répéter 4 fois [ ajouter 15 à x ] » ajoute 4 × 15 = 60 à l’abscisse.
Comment fonctionne le bloc « si … alors … sinon » dans Scratch ?
Il évalue une condition, c’est-à-dire une affirmation vraie ou fausse comme « réponse > 15 ». Si elle est vraie, Scratch exécute les blocs de « alors » ; si elle est fausse, ceux de « sinon » : jamais les deux. Les signes sont stricts : pour 15, « réponse > 15 » est fausse.
Quelle est la différence entre « mettre score à 0 » et « ajouter 1 à score » ?
« mettre score à 0 » remplace la valeur de la variable par 0 : on l’utilise au début du script pour l’initialiser. « ajouter 1 à score » part de la valeur du moment : si score vaut 7, il passe à 8. Une variable qui augmente de 1 à chaque événement est un compteur.
Comment trouver l’expression littérale d’un programme de calcul écrit en Scratch ?
On déroule le script avec une lettre n à la place du nombre choisi : « mettre r à (n - 2) » puis « mettre r à (r * 5) » donne r = 5(n − 2) = 5n − 10. On vérifie avec une valeur : pour 4, le script donne (4 − 2) × 5 = 10, et 5 × 4 − 10 = 10.
Comment écrire ou corriger un programme Scratch ?
On découpe l’objectif en étapes : une boucle pour ce qui se répète, un « si » pour un choix, une variable pour ce qui change ou se compte. On le teste à la main avec des valeurs. Une erreur fréquente : un « mettre … à 0 » placé dans la boucle, qui remet la variable à 0 à chaque tour.
Moi c'est Ben, j'ai créé ce site pour aider le plus d'élèves possible, partout en France. Je peux aussi reprendre avec toi ce qui coince en cours particulier : en visio, ou à domicile si tu es à Marseille.
Prof de maths à Marseille · Cours particuliers au collège · Aide aux devoirs