Algorithmique et programmation Scratch
Maîtrise les bases de l'algorithmique avec Scratch : variables, boucles, conditions, événements, blocs personnalisés, scripts en parallèle, simulation d'expérience aléatoire, programmes de calcul et tracés géométriques — tout le programme du Brevet.
Définitions
Définition 1 — algorithme et programme. Un algorithme est une méthode composée d’étapes précises et sans ambiguïté qui permet d’aboutir à un résultat déterminé : chaque étape peut être exécutée mécaniquement. Un programme est la traduction d’un algorithme dans un langage compréhensible par la machine ; dans Scratch, on empile des blocs colorés qui s’exécutent de haut en bas. Exemple : préparer un chocolat chaud — 1. verser 25 cL de lait ; 2. chauffer 2 minutes ; 3. ajouter 2 carrés de chocolat, remuer ; 4. si le chocolat est fondu alors servir, sinon continuer à remuer. On y retrouve des données en entrée, des instructions ordonnées et un test.
Définition 2 — variable et affectation. Une variable est une case mémoire à laquelle on donne un nom : on peut y stocker un nombre ou un texte, puis lire ou modifier son contenu au fil du programme. L’affectation range une valeur dans la variable.
| Bloc Scratch | Effet | Écriture mathématique |
|---|---|---|
mettre [x] à (10) | place la valeur 10 dans | |
ajouter (4) à [x] | augmente de 4 | |
demander [...] et attendre | attend une saisie, rangée dans réponse | saisie clavier |
Exemple : après mettre [x] à (10) puis ajouter (4) à [x], la variable contient .
Définition 3 — les deux boucles. La boucle « Répéter fois » exécute un groupe d’instructions exactement fois (boucle bornée). La boucle « Répéter jusqu’à (condition) » recommence tant que la condition est fausse et s’arrête dès qu’elle devient vraie (boucle conditionnelle) : on ne sait pas d’avance combien de tours seront faits. Exemple : « Répéter (4) fois : avancer de (80) ; tourner de (90)° » fait exactement 4 tours ; « Répéter jusqu’à (k × k > 200) : ajouter (1) à [k] » s’arrête dès que dépasse 200.
Définition 4 — instruction conditionnelle. Le bloc « Si … alors » exécute des instructions seulement quand le test est vérifié ; sinon, le programme saute à la suite. Le bloc « Si … alors … sinon » propose deux chemins : un si le test réussit, un autre s’il échoue. Exemple : « Si (score ≥ 10) alors dire « Admis » sinon dire « Recalé » ».
Définition 5 — événement et scripts en parallèle. Un script commence toujours par un bloc événement (en jaune dans Scratch) qui indique quand il démarre. Plusieurs scripts peuvent partir du même événement : ils s’exécutent alors en parallèle, en même temps.
| Bloc | Déclenchement |
|---|---|
quand le drapeau vert est cliqué | au lancement du programme |
quand la touche [espace] est pressée | quand l’utilisateur appuie sur la touche |
quand ce lutin est cliqué | quand on clique sur le lutin |
Exemple : le lutin A avance en boucle, le lutin B surveille en permanence « touche le lutin A ? » et dit « touché ! » dès le contact — les deux scripts, lancés par le même drapeau vert, tournent en même temps : c’est ainsi qu’on programme un jeu.
Définition 6 — bloc personnalisé. Un bloc personnalisé (catégorie « Mes blocs ») regroupe une suite d’instructions sous un nom choisi, éventuellement avec un paramètre. On le définit une fois, on l’appelle autant de fois qu’on veut : c’est la façon de découper un problème en sous-problèmes et de structurer un programme. Exemple : « définir carré (côté) : Répéter (4) fois : avancer de (côté) ; tourner de (90)° » ; ensuite carré (30) puis carré (60) tracent deux carrés de tailles différentes.
Propriétés
Propriété 1 — « mettre à » remplace, « ajouter à » conserve. mettre [x] à (…) remplace tout ce que contenait : l’ancienne valeur disparaît. ajouter (k) à [x] conserve la valeur existante et lui ajoute (qui peut être négatif). Exemple résolu, trace d’exécution : mettre [a] à (3) → ; mettre [a] à (a + 7) → ; ajouter (-2) à [a] → .
Propriété 2 — arrêt d’une boucle « répéter jusqu’à ». La boucle « Répéter jusqu’à (condition) » teste la condition avant chaque tour : elle tourne tant que le test est faux et s’interrompt dès qu’il devient vrai. Les instructions placées après la boucle s’exécutent alors avec les valeurs finales des variables. Exemple : « mettre [k] à (1) ; Répéter jusqu’à (k × k > 200) : ajouter (1) à [k] ; dire (k × k) » affiche , le premier carré parfait strictement supérieur à 200 ( ne suffit pas, convient).
Propriété 3 — modulo et divisibilité. Le modulo est le reste de la division entière de par . Si , alors est divisible par . En particulier, signifie que est pair.
| Opération | Résultat | Pourquoi ? |
|---|---|---|
| se divise exactement par | ||
Propriété 4 — angle de rotation d’un polygone régulier. Pour tracer un polygone régulier à côtés, le lutin tourne à chaque sommet de
C’est l’angle extérieur (celui dont tourne le lutin), pas l’angle intérieur de la figure ; la somme des rotations fait un tour complet.
| Figure | Angle de rotation | |
|---|---|---|
| Triangle équilatéral | 3 | |
| Carré | 4 | |
| Pentagone régulier | 5 | |
| Hexagone régulier | 6 | |
| Octogone régulier | 8 |
Propriété 5 — conditions composées. Les tests peuvent être combinés avec et, ou, non :
| Bloc | Vrai lorsque… |
|---|---|
(x > 10) et (x modulo 2 = 0) | les deux tests sont vrais : dépasse 10 et est pair |
(x < 0) ou (x > 100) | au moins un des deux tests est vrai |
non (x = 5) | le test est faux : |
Exemple : pour , (x > 10) et (x modulo 2 = 0) est vrai ; pour , c’est faux (15 est impair).
Propriété 6 — fréquence et probabilité dans une simulation. Le bloc nombre aléatoire entre (a) et (b) renvoie un entier au hasard entre et inclus, toutes les valeurs étant équiprobables. Quand on répète un grand nombre de tirages, la fréquence d’un résultat se stabilise vers sa probabilité : le compteur est proche du nombre attendu, sans lui être exactement égal. Exemple : sur 600 tirages de « nombre aléatoire entre (1) et (6) », on attend environ fois le 6.
Méthodes
Méthode 1 — suivre un script pas à pas.
- Noter la valeur de chaque variable au départ.
- Exécuter les instructions une par une, dans l’ordre, en mettant à jour les valeurs (trace d’exécution).
- Pour une boucle, faire un tableau tour par tour : valeur au début du tour, affichage éventuel, valeur à la fin.
Exemple résolu : « mettre [t] à (2) ; Répéter (4) fois : dire (t) ; mettre [t] à (t × 3) » :
| Tour | au début | Affiche | à la fin |
|---|---|---|---|
| 1 | 2 | 2 | 6 |
| 2 | 6 | 6 | 18 |
| 3 | 18 | 18 | 54 |
| 4 | 54 | 54 | 162 |
Le dernier nombre dit est : la valeur est calculée au dernier tour mais jamais affichée, car « dire » précède la multiplication.
Méthode 2 — traduire un programme de calcul en expression littérale.
- Appeler le nombre de départ (la « réponse »).
- Suivre chaque bloc dans l’ordre en remplaçant par des expressions en .
- Le dernier « dire » donne la formule ; vérifier avec une valeur numérique.
Exemple résolu : « mettre [r] à (réponse) → ; mettre [r] à (r + 4) → ; mettre [r] à (r × 2) → ». Vérification pour : le programme donne et la formule . Autre exemple : « r × r » puis « ajouter (−4) » puis « ajouter (réponse) » donne , et pour : .
Méthode 3 — prévoir l’arrêt d’une boucle « répéter jusqu’à ».
- Écrire la liste des valeurs successives de la variable, tour après tour.
- Tester la condition avant chaque tour : tant qu’elle est fausse, on continue (Propriété 2).
- La première valeur qui rend la condition vraie est la valeur finale.
Exemple résolu : « mettre [n] à (1) ; Répéter jusqu’à (n > 100) : mettre [n] à (n × 2) ; dire (n) » : — on double tant que , et arrête la boucle : le lutin dit .
Méthode 4 — tracer une figure avec le stylo.
- Mettre le stylo en position d’écriture (il trace le chemin du lutin).
- Pour un polygone régulier à côtés : « Répéter () fois : avancer de (longueur du côté) ; tourner de () degrés » (Propriété 4).
- Pour lire un script de tracé : compter les répétitions (nombre de côtés) et l’angle (type de polygone).
Exemple résolu : carré de côté 80 : « Répéter (4) fois : avancer de (80) ; tourner de (90)° ». Hexagone régulier de côté 60 : « Répéter (6) fois : avancer de (60) ; tourner de (60)° ». Inversement, « Répéter (5) fois : avancer de (50) ; tourner de (72)° » trace un pentagone régulier car .
Méthode 5 — définir et utiliser un bloc personnalisé.
- Définir le bloc une fois (avec un paramètre si besoin) : il regroupe les instructions d’un sous-problème.
- L’appeler dans le script principal, autant de fois que nécessaire.
- Pour compter les exécutions d’une instruction : (répétitions dans le bloc) × (nombre d’appels).
Exemple résolu : « définir motif : carré (40) ; relever le stylo ; avancer de (50) ; stylo en position d’écriture », puis script principal « Répéter (3) fois : motif » : on obtient une frise de 3 carrés espacés, et l’instruction « avancer de (40) » (dans carré) est exécutée fois.
Méthode 6 — simuler une expérience aléatoire.
- Ranger
nombre aléatoire entre (1) et (6)dans une variable, à l’intérieur d’une boucle « Répéter fois ». - Compter les succès avec « si … alors ajouter (1) à [compteur] ».
- La fréquence se rapproche de la probabilité quand est grand (Propriété 6).
Exemple résolu : compter les 6 sur 600 lancers : « mettre [compteur] à (0) ; Répéter (600) fois : mettre [dé] à (nombre aléatoire entre (1) et (6)) ; si (dé = 6) alors ajouter (1) à [compteur] ; dire (compteur / 600) » : le lutin affiche une fréquence proche de (compteur proche de 100). Même principe pour une pièce avec « nombre aléatoire entre (0) et (1) ».
Méthode 7 — analyser un script conditionnel (exercice type brevet).
- Évaluer le test avec la valeur d’entrée (souvent un modulo, Propriété 3).
- N’exécuter que la branche correspondante du « si … alors … sinon » (Définition 4).
- Pour la question inverse (« quel nombre entrer pour afficher … ? ») : résoudre l’équation de la branche visée, puis vérifier que l’entrée passe bien par cette branche.
Exemple résolu : « si (n modulo 5 = 0) alors mettre [n] à (n / 5) sinon mettre [n] à (n × 3 − 2) ; dire (n) ». Pour : , le programme affiche . Pour : , branche « sinon » : . Pour afficher via la première branche : donne , et : cohérent.
Récapitulatif des blocs essentiels
| Bloc Scratch | Signification |
|---|---|
mettre [v] à (…) | Affectation : |
ajouter (k) à [v] | Incrémentation : |
dire (…) | Affichage du résultat |
Répéter (n) fois | Boucle bornée : passages |
Répéter jusqu'à (…) | Boucle conditionnelle : s’arrête quand le test devient vrai |
Si (…) alors … sinon | Branchement selon un test |
… modulo … | Reste de la division entière |
(…) et (…), (…) ou (…) | Conditions composées |
quand le drapeau vert est cliqué | Événement qui lance le script |
définir [nom] | Bloc personnalisé (sous-programme) |
nombre aléatoire entre (a) et (b) | Simulation d’une expérience aléatoire |
Pièges classiques
- « Mettre à » n’est pas « ajouter à » : le premier écrase la valeur, le second la conserve et l’augmente (Propriété 1).
- « Dire » affiche la valeur du moment : dans une boucle, une valeur calculée après le dernier « dire » n’est jamais affichée (Méthode 1).
- Angle extérieur, pas intérieur : pour un polygone régulier, le lutin tourne de , qui n’est pas l’angle intérieur de la figure (Propriété 4) — pour le triangle équilatéral, on tourne de , pas de .
- « Répéter jusqu’à » s’arrête quand le test devient vrai, pas quand il est faux (Propriété 2) : toujours dérouler les valeurs tour par tour.
Quiz — Algorithmique
10 questions · correction immédiate · sans inscription