Je réserve ici
Mathématiques 3ᵉ

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
Ce cours de programmation Scratch de 3e reprend les acquis de 4e et de 5e (déplacements, boucle « répéter n fois », conditions, variables, programme de calcul), puis présente les conditions composées avec et, ou, non, la boucle conditionnelle « répéter jusqu’à ce que », les compteurs, l’échange de variables, le modulo et la simulation d’une expérience aléatoire, et enfin les boucles imbriquées, les blocs personnalisés et les messages entre lutins.
1

Rappels de 4e et de 5e : script, boucle, condition, variable

Ce qu’il faut savoir Un algorithme est une suite finie d’instructions ordonnées et précises qui permet de résoudre un problème ; écrit dans un langage compris par une machine, il devient un programme. Dans Scratch, les blocs emboîtés forment un script, qui commande un lutin sur la scène. Un script démarre à son bloc-chapeau (« quand le drapeau vert est cliqué », « quand la touche … est pressée ») et s’exécute bloc par bloc, de haut en bas : l’ordre compte.
• 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.
FamilleExemples de blocs
Mouvementavancer de 10 pas ; tourner ↻ de 90 degrés ; aller à x: 0 y: 0 ; ajouter 10 à x
Apparence, Stylodire Bonjour ; stylo en position d’écriture ; relever le stylo
Événementsquand le drapeau vert est cliqué ; envoyer à tous message1
Contrôlerépéter 10 fois ; répéter jusqu’à ce que ; répéter indéfiniment ; si … alors … sinon
Capteurs, Opérateursdemander … et attendre ; + − * / ; nombre aléatoire entre 1 et 6 ; < > = ; et ; ou ; non
Variables, Mes blocsmettre score à 0 ; ajouter 1 à score ; blocs personnalisés (« définir … »)
quand le drapeau vert est cliquéaller à x: 80 y: −40répéter 3 foisajouter −50 à xajouter 30 à ysi abscisse x < 0 alorsdire Côté gauchesinondire Côté droit
Exemples
départ1ᵉʳ tour2ᵉ tour3ᵉ tour
x8030−20−70
y−40−102050

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

Exemples

« 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

2

Conditions composées : et, ou, non

Ce qu’il faut savoir Une condition composée réunit des conditions avec les blocs verts 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) ».
C1C2C1 et C2C1 ou C2
vraievraievraievraie
vraiefaussefaussevraie
faussevraiefaussevraie
faussefaussefaussefausse
quand le drapeau vert est cliquédemander Ton âge ? et attendresi réponse > 10 et réponse < 16 alorsdire Tarif collègesinondire Autre tarif
Exemples
âge tapéréponse > 10réponse < 16le lutin dit
10faussevraieAutre tarif
11vraievraieTarif collège
15vraievraieTarif collège
16vraiefausseAutre 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 »

si ordonnée y > 180 ou ordonnée y < −180 alorsdire Hors de la scène
Exemples

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.

quand le drapeau vert est cliquédemander Un nombre ? et attendresi non réponse = 0 alorsdire 60 / réponsesinondire Division impossible
Exemples

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 ».

Exemples

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

3

La boucle conditionnelle « répéter jusqu’à ce que »

Ce qu’il faut savoir La boucle « répéter jusqu’à ce que condition » est une boucle conditionnelle : avant chaque tour, Scratch teste la condition.
• 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).
quand le drapeau vert est cliquémettre n ▾ à 1mettre k ▾ à 0répéter jusqu’à ce que n > 50mettre n ▾ à 3 * najouter 1 à k ▾dire k
Exemples
départ1ᵉʳ tour2ᵉ tour3ᵉ tour4ᵉ tour
n1392781
k01234
n > 50 ?faussefaussefaussefaussevraie

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

quand le drapeau vert est cliquéaller à x: −200 y: 0répéter jusqu’à ce que abscisse x > 150ajouter 45 à x
Exemples

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.

quand le drapeau vert est cliquémettre a ▾ à 47mettre q ▾ à 0répéter jusqu’à ce que a < 6ajouter −6 à a ▾ajouter 1 à q ▾dire qdire a
Exemples

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.

Exemples

« 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

4

Approfondir les variables : compteur, échange, modulo, simulation

Ce qu’il faut savoir • Une variable de boucle k (« mettre k à 1 » avant la boucle, « ajouter 1 à k » dans la boucle) vaut 1, 2, 3… au fil des tours : on s’en sert dans les calculs et les tests.
• 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.
quand le drapeau vert est cliquémettre k ▾ à 1mettre compte ▾ à 0répéter 30 foissi k modulo 4 = 0 alorsajouter 1 à compte ▾ajouter 1 à k ▾dire compte
Exemples
k1234…8…282930
k modulo 41230…0…012
compte0001…2…777

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

Exemples

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

quand le drapeau vert est cliquémettre c ▾ à 0répéter 300 foismettre d ▾ à nombre aléatoire entre 1 et 6si d = 6 alorsajouter 1 à c ▾dire c
Exemples

À 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

5

Structurer un programme : boucles imbriquées, blocs personnalisés, messages

Ce qu’il faut savoir Structurer un programme, c’est le découper en morceaux simples.
• 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.
définir triangle crépéter 3 foisavancer de c pastourner de 120 degrésquand le drapeau vert est cliquéstylo en position d’écriturerépéter 6 foistriangle 40tourner de 60 degrés
Exemples

« 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é

définir carré côtérépéter 4 foisavancer de côté pastourner de 90 degrésquand le drapeau vert est cliquéaller à x: −60 y: 0s’orienter à 90répéter 4 foisstylo en position d’écriturecarré 20relever le styloavancer de 30 pas
Exemples

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

quand le drapeau vert est cliquéaller à x: −200 y: 0répéter jusqu’à ce que abscisse x > 100ajouter 20 à xenvoyer à tous arrivé ▾quand je reçois arrivé ▾dire Bravo !
Exemples

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.

À retenir
  • 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.

Bloqué sur ce chapitre ?

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