Ressources · 3ᵉ · Mathématiques
Programmation : variables, conditions et boucles
Rappels de 4e et de 5e (blocs, déplacements, boucle « répéter n fois », conditions simples, variables, programme de calcul), conditions composées avec et, ou, non, boucle conditionnelle « répéter jusqu’à ce que », variables approfondies (compteur, échange, modulo, simulation d’une expérience aléatoire), boucles imbriquées, blocs personnalisés et scripts en parallèle.
À propos de cette page
Rappels de 4e et de 5e : script, boucle, condition, variable
• Déplacements (6e et 5e) : la scène est un repère d’origine (0 ; 0) au centre ; x va de −240 à 240, y de −180 à 180. « aller à x: … y: … » place le lutin (position absolue) ; « ajouter … à x » ajoute un nombre à l’abscisse (déplacement relatif). Direction : 90 = droite, 0 = haut, 180 = bas, −90 = gauche ; « avancer de … pas » suit la direction.
• 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.
• Condition (4e) : affirmation vraie ou fausse ; « < » et « > » sont stricts. « si … alors … sinon » exécute une seule des deux branches.
• Variable (4e) : une case qui porte un nom et contient une valeur. « mettre … à » remplace la valeur, « ajouter … à » cumule (ajouter un nombre négatif diminue). On suit les valeurs dans un tableau de suivi.
• Programme de calcul (4e) : déroulé avec une lettre, il donne une expression littérale.
| Famille | Exemples de blocs |
|---|---|
| Mouvement | avancer de 10 pas ; tourner ↻ de 90 degrés ; aller à x: 0 y: 0 ; ajouter 10 à x |
| Apparence, Stylo | dire Bonjour ; stylo en position d’écriture ; relever le stylo |
| Événements | quand le drapeau vert est cliqué ; envoyer à tous message1 |
| Contrôle | répéter 10 fois ; répéter jusqu’à ce que ; répéter indéfiniment ; si … alors … sinon |
| Capteurs, Opérateurs | demander … et attendre ; + − * / ; nombre aléatoire entre 1 et 6 ; < > = ; et ; ou ; non |
| Variables, Mes blocs | mettre score à 0 ; ajouter 1 à score ; blocs personnalisés (« définir … ») |
| départ | 1ᵉʳ tour | 2ᵉ tour | 3ᵉ tour | |
|---|---|---|---|---|
| x | 80 | 30 | −20 | −70 |
| y | −40 | −10 | 20 | 50 |
Chaque tour ajoute −50 à x et 30 à y : après 3 tours, x = 80 − 150 = −70 et y = −40 + 90 = 50. Le lutin est en (−70 ; 50).
Puis −70 < 0 est vraie : branche « alors », le lutin dit « Côté gauche ». Avec 7 tours, il arriverait à x = 80 − 350 = −270 : il sortirait de la scène.
Variables et programme de calcul
« mettre n à 3 ; ajouter 6 à n ; mettre n à (n * 4) » : n vaut successivement 3, puis 9, puis 36.
« mettre x à (x + 1) » n’est pas une équation impossible : la machine calcule x + 1 avec la valeur du moment, puis range le résultat dans x. Si x valait 7, il vaut maintenant 8.
« mettre n à réponse ; mettre r à (n * n) ; ajouter (5 * n) à r ; ajouter −6 à r ; dire r ». On tape 4 : r vaut 16, puis 16 + 20 = 36, puis 30. Le lutin dit 30. Avec la lettre n : r = n² + 5n − 6.
« répéter 8 fois [ avancer de 50 pas ; tourner ↻ de 45 degrés ] » trace un octogone régulier : 8 × 45 = 360 degrés, et 8 × 50 = 400 pas de trait.
Réflexe — je lis le script de haut en bas avec un tableau de suivi (une colonne par variable ou coordonnée) ; pour une boucle, je calcule ce que fait un tour ; pour un test, je remplace chaque nom par sa valeur du moment.
Attention — « aller à x: … » ne dépend pas de la position de départ, « ajouter … à x » si. « score > 30 » est fausse pour score = 30. Et l’angle dont tourne le lutin n’est pas l’angle du polygone (45 degrés pour l’octogone, dont les angles mesurent 135 degrés).
1 / 5
Conditions composées : et, ou, non
• « C1 et C2 » est vraie seulement si les deux conditions sont vraies.
• « C1 ou C2 » est vraie dès qu’au moins une des deux est vraie (et donc aussi quand les deux le sont).
• « non C » est vraie quand C est fausse, et fausse quand C est vraie.
• Encadrer un nombre : « (x > 2) et (x < 9) » est vraie quand x est strictement compris entre 2 et 9. Être en dehors : « (x < 2) ou (x > 9) ».
• Scratch n’a pas de bloc « ⩾ » : « au moins 10 » s’écrit « non (réponse < 10) » ou « (réponse > 10) ou (réponse = 10) ».
| C1 | C2 | C1 et C2 | C1 ou C2 |
|---|---|---|---|
| vraie | vraie | vraie | vraie |
| vraie | fausse | fausse | vraie |
| fausse | vraie | fausse | vraie |
| fausse | fausse | fausse | fausse |
| âge tapé | réponse > 10 | réponse < 16 | le lutin dit |
|---|---|---|---|
| 10 | fausse | vraie | Autre tarif |
| 11 | vraie | vraie | Tarif collège |
| 15 | vraie | vraie | Tarif collège |
| 16 | vraie | fausse | Autre tarif |
Pour 10, la première condition est fausse : avec « et », cela suffit pour que la condition composée soit fausse. Les âges entiers qui donnent « Tarif collège » sont 11, 12, 13, 14 et 15.
« ou » et « non »
Le lutin est en (0 ; 190) : 190 > 180 est vraie, la condition composée est vraie, il dit « Hors de la scène ».
Le lutin est en (0 ; −180) : −180 > 180 est fausse et −180 < −180 est fausse (inégalité stricte) : les deux sont fausses, il ne dit rien. Il est sur le bord, pas en dehors.
On tape 4 : « réponse = 0 » est fausse, donc « non (réponse = 0) » est vraie. Le lutin dit 60 ÷ 4 = 15.
On tape −5 : il dit 60 ÷ (−5) = −12. On tape 0 : « réponse = 0 » est vraie, donc « non (réponse = 0) » est fausse : il dit « Division impossible ».
Deux « si » emboîtés peuvent se remplacer par un « et » : « si (vies > 0) alors [ si (score > 100) alors dire Niveau suivant ] » fait la même chose que « si ((vies > 0) et (score > 100)) alors dire Niveau suivant ».
Pour une note entière de 8 à 12, bornes comprises : « (note > 7) et (note < 13) ».
Réflexe — j’évalue chaque petite condition séparément (vraie ou fausse), puis je conclus : « et » demande deux « vraie », « ou » en demande une seule, « non » inverse.
Attention — « (x > 9) et (x < 2) » n’est jamais vraie, et « (x > 2) ou (x < 9) » l’est toujours : on se trompe souvent de mot. Et « non (x < 5) » est vraie pour x = 5 : ce n’est pas « x > 5 ».
2 / 5
La boucle conditionnelle « répéter jusqu’à ce que »
• Si elle est fausse, il exécute les blocs de la boucle, puis teste de nouveau.
• Dès qu’elle est vraie, la boucle s’arrête et le script continue avec le bloc placé dessous.
• Le nombre de tours n’est pas connu à l’avance : une variable compteur (« ajouter 1 à k ») permet de le connaître.
• Si la condition est vraie dès le départ, la boucle fait 0 tour. Si elle ne devient jamais vraie, la boucle ne s’arrête pas : c’est une boucle infinie.
• « répéter n fois » : nombre de tours fixé ; « répéter jusqu’à ce que » : condition d’arrêt ; « répéter indéfiniment » : ne s’arrête jamais (jeux, animations).
| départ | 1ᵉʳ tour | 2ᵉ tour | 3ᵉ tour | 4ᵉ tour | |
|---|---|---|---|---|---|
| n | 1 | 3 | 9 | 27 | 81 |
| k | 0 | 1 | 2 | 3 | 4 |
| n > 50 ? | fausse | fausse | fausse | fausse | vraie |
n triple à chaque tour. Après le 3ᵉ tour, 27 > 50 est fausse : on refait un tour. Après le 4ᵉ, 81 > 50 est vraie : la boucle s’arrête avec n = 81 = 3⁴ et k = 4. Le lutin dit 4.
Se déplacer jusqu’à une limite, diviser par soustractions
Après k tours, l’abscisse vaut −200 + 45 × k. Elle vaut 115 après 7 tours (115 > 150 est fausse) et 160 après 8 tours (vraie) : 8 tours, le lutin s’arrête en x = 160.
On enlève 6 tant que a n’est pas inférieur à 6 : a vaut 47, 41, 35, 29, 23, 17, 11, 5. Après 7 tours, 5 < 6 est vraie.
Le lutin dit 7 puis 5 : c’est le quotient et le reste de la division euclidienne de 47 par 6, car 47 = 6 × 7 + 5.
« mettre n à 60 ; répéter jusqu’à ce que n > 50 [ ajouter 5 à n ] » : 60 > 50 est déjà vraie, la boucle fait 0 tour et n reste 60.
« mettre n à 1 ; répéter jusqu’à ce que n = 50 [ ajouter 2 à n ] » : n vaut 1, 3, 5… 49, 51… toujours impair, jamais 50. La boucle ne s’arrête pas. Avec « n > 50 », elle s’arrêterait à 51.
Réflexe — je fais un tableau de suivi avec une ligne « condition » : je teste avant chaque tour, je fais le tour si elle est fausse, je m’arrête dès qu’elle est vraie ; le compteur donne le nombre de tours.
Attention — la boucle tourne tant que la condition est fausse (c’est l’inverse du « si »). Une condition avec « = » risque de ne jamais devenir vraie : on préfère souvent « > » ou « < ».
3 / 5
Approfondir les variables : compteur, échange, modulo, simulation
• Un compteur augmente de 1 chaque fois qu’une condition est vraie ; un accumulateur (une somme) reçoit une valeur à chaque tour. On les initialise avant la boucle.
• « a modulo b » (bloc vert) donne le reste de la division euclidienne de a par b (nombres entiers positifs) : « (n modulo 2) = 0 » est vraie quand n est pair, « (n modulo 7) = 0 » quand n est un multiple de 7.
• Pour échanger les valeurs de deux variables, il faut une troisième variable qui garde l’une d’elles : « mettre c à a ; mettre a à b ; mettre b à c ».
• « nombre aléatoire entre 1 et 6 » donne un nombre entier au hasard de 1 à 6, bornes comprises : il simule un dé. Une simulation = boucle + nombre aléatoire + compteur. Sur un grand nombre d’essais, la fréquence (compteur ÷ nombre d’essais) est proche de la probabilité, sans lui être forcément égale.
| k | 1 | 2 | 3 | 4 | … | 8 | … | 28 | 29 | 30 |
|---|---|---|---|---|---|---|---|---|---|---|
| k modulo 4 | 1 | 2 | 3 | 0 | … | 0 | … | 0 | 1 | 2 |
| compte | 0 | 0 | 0 | 1 | … | 2 | … | 7 | 7 | 7 |
k parcourt les entiers de 1 à 30 ; compte augmente quand le reste de k par 4 est nul, c’est-à-dire pour 4, 8, 12, 16, 20, 24 et 28. Le lutin dit 7. À la fin, k vaut 31.
Échanger deux variables
a = 12 et b = 5. « mettre a à b ; mettre b à a » : a prend 5, puis b prend la valeur de a… qui vaut déjà 5. On obtient a = 5 et b = 5 : la valeur 12 est perdue.
« mettre c à a ; mettre a à b ; mettre b à c » : c garde 12, a prend 5, b prend 12. Les valeurs sont bien échangées : a = 5 et b = 12.
Simuler une expérience aléatoire
À chaque tour, d est un entier au hasard de 1 à 6 (un lancer de dé) ; c compte les 6. La probabilité d’obtenir 6 est 1/6, donc on attend environ 300 × 1/6 = 50 six.
Un essai donne c = 47 : la fréquence 47 ÷ 300 ≈ 0,157 est proche de 1/6 ≈ 0,167. Un autre essai donnera sans doute un autre nombre.
Réflexe — pour une variable de boucle, j’écris sa valeur à chaque tour ; pour un compteur, je compte les tours où la condition est vraie ; pour une simulation, nombre attendu ≈ nombre d’essais × probabilité.
Attention — un compteur initialisé dans la boucle repart de 0 à chaque tour. « nombre aléatoire entre 1 et 6 » peut donner 1 et 6. Et une fréquence n’est pas la probabilité : 47 six sur 300 lancers n’est pas une erreur.
4 / 5
Structurer un programme : boucles imbriquées, blocs personnalisés, messages
• Boucles imbriquées : une boucle placée dans une autre. Avec « répéter 6 fois [ répéter 3 fois [ … ] ] », les blocs intérieurs sont exécutés 6 × 3 = 18 fois.
• Motif et boucle : on trace un motif, puis on tourne (rosace : 360 ÷ nombre de motifs) ou on se déplace (frise), et on répète.
• Bloc personnalisé (catégorie « Mes blocs », en rose) : sous le chapeau « définir triangle (c) », on range les blocs d’un sous-problème. Chaque appel « triangle (40) » exécute ces blocs, le paramètre c prenant la valeur 40. On décompose ainsi un problème en sous-problèmes.
• Scripts en parallèle : plusieurs scripts, d’un ou de plusieurs lutins, peuvent tourner en même temps. « envoyer à tous message » déclenche tous les scripts « quand je reçois message » : c’est ainsi que les lutins d’un jeu communiquent.
« triangle (40) » trace un triangle équilatéral de côté 40 pas : 3 × 120 = 360 degrés, le lutin revient au départ avec sa direction de départ.
La boucle principale trace 6 triangles en tournant de 360 ÷ 6 = 60 degrés entre deux : une rosace. Segments : 6 × 3 = 18 ; longueur du trait : 18 × 40 = 720 pas ; le lutin tourne en tout de 6 × (360 + 60) = 2 520 degrés.
Une frise avec un bloc personnalisé
Chaque tour trace un carré de côté 20 (80 pas de trait), puis avance de 30 pas stylo relevé : la frise compte 4 carrés espacés de 10 pas.
Trait : 4 × 80 = 320 pas. Le lutin part de x = −60 et avance de 30 à chaque tour : il finit en x = −60 + 4 × 30 = 60.
Deux lutins qui communiquent
Le premier script commande le chat : 16 tours de 20 pas l’amènent de x = −200 à x = 120, la première abscisse supérieure à 100. Il envoie alors le message « arrivé ».
Le second script, celui d’un autre lutin, attend ce message : dès qu’il le reçoit, ce lutin dit « Bravo ! ».
Réflexe — pour des boucles imbriquées, je multiplie les nombres de tours ; pour un bloc personnalisé, je remplace le paramètre par la valeur de l’appel ; pour une rosace de n motifs, je tourne de 360 ÷ n entre deux motifs.
Attention — un motif doit ramener le lutin à sa direction de départ, sinon la rosace se décale. Dans « définir carré (côté) », côté n’a de valeur que pendant un appel. Et « envoyer à tous » ne fait rien si aucun script « quand je reçois » n’attend ce message.
5 / 5
Pour aller plus loin
Avec les autres chapitres de 3e — un programme de calcul donne une expression qu’on développe : Calcul littéral : double distributivité et identités remarquables ; chercher le nombre qui donne 0 mène à une équation produit nul : Équations : produit nul et x² = a ; la division euclidienne et les multiples reviennent en Arithmétique : nombres premiers et fraction irréductible ; fréquence et probabilité d’une simulation : Probabilités : expériences à deux épreuves.
Au lycée — en seconde, on programme en Python : on retrouve les variables, les tests (if … else), la boucle conditionnelle (while, qui tourne tant que sa condition est vraie, à l’inverse de « répéter jusqu’à ce que ») et les blocs personnalisés, qui deviennent des fonctions.
- Un script s’exécute de haut en bas ; « mettre … à » remplace, « ajouter … à » cumule ; un tableau de suivi permet de prévoir chaque valeur.
- « C1 et C2 » est vraie si les deux le sont, « C1 ou C2 » si au moins une l’est, « non C » si C est fausse ; « < » et « > » sont stricts.
- « répéter jusqu’à ce que » teste la condition avant chaque tour et s’arrête dès qu’elle est vraie : 0 tour si elle l’est au départ, boucle infinie si elle ne l’est jamais.
- Un compteur s’initialise avant la boucle ; « a modulo b » donne le reste ; pour échanger deux variables, il faut une troisième variable ; en simulation, la fréquence approche la probabilité.
- Boucles imbriquées : on multiplie les nombres de tours ; un bloc personnalisé « définir motif (paramètre) » découpe le problème, et une rosace de n motifs tourne de 360 ÷ n.
Questions fréquentes
Que faut-il savoir de 4e et de 5e en programmation Scratch ?
Lire un script de haut en bas : déplacements (aller à x: y:, ajouter à x), boucle « répéter n fois » (polygone régulier : tourner de 360 ÷ n), conditions simples avec « si … alors … sinon » (« < » et « > » sont stricts), variables (« mettre … à » remplace, « ajouter … à » cumule) et programmes de calcul traduits en expression littérale.
Que veulent dire « et », « ou » et « non » dans une condition ?
« C1 et C2 » est vraie seulement si les deux sont vraies ; « C1 ou C2 » dès qu’une des deux l’est ; « non C » est vraie quand C est fausse. Ainsi « (x > 2) et (x < 9) » encadre x entre 2 et 9, et « non (réponse < 10) » veut dire « au moins 10 ».
Comment fonctionne la boucle « répéter jusqu’à ce que » ?
Avant chaque tour, Scratch teste la condition : si elle est fausse, il fait le tour ; dès qu’elle est vraie, il sort. Avec n = 1 et « mettre n à (n * 3) » jusqu’à ce que n > 50, n vaut 3, 9, 27 puis 81 : 4 tours. Si la condition est vraie au départ, 0 tour ; si elle ne devient jamais vraie, la boucle ne s’arrête pas.
Comment simuler une expérience aléatoire avec Scratch ?
On répète un grand nombre de fois un tirage « nombre aléatoire entre 1 et 6 » (un entier, bornes comprises) et on compte avec une variable les issues voulues. Sur 300 lancers, on attend environ 300 × 1/6 = 50 six : la fréquence obtenue est proche de la probabilité, sans lui être égale.
À quoi sert un bloc personnalisé ?
Il range sous un chapeau « définir » les blocs d’un sous-problème, par exemple « définir carré (côté) ». Chaque appel « carré (30) » exécute ces blocs avec côté = 30. Avec une boucle, on reproduit le motif pour tracer une rosace ou une frise.
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