Algorithmique / Scratch

Boucles • conditions • variables • algorithmes • simulations aléatoires • débogage.


Cours PREMIUM — Algorithmique / Scratch (3e • Brevet)

Objectif : savoir écrire et lire un algorithme, manipuler variables, conditions, boucles, faire des simulations aléatoires et déboguer efficacement.

Variables Si / Sinon Boucles Aléatoire Débogage
0) Vocabulaire essentiel (à connaître)
Algorithme

Suite finie d’instructions qui transforme des entrées (données) en sorties (résultats).

Programme / Script (Scratch)

Traduction de l’algorithme en blocs Scratch. On y retrouve : événements, variables, tests, boucles.

Variable

Boîte qui stocke une valeur (nombre, texte…). Sa valeur peut changer pendant l’exécution.

Condition

Test logique : vrai ou faux. Exemple : \(x \ge 10\).

Astuce Brevet : toujours distinguer “entrée” (ce qu’on demande à l’utilisateur) de “sortie” (ce qu’on affiche).
1) Schéma : structure типique d’un algorithme

Beaucoup d’exercices se résument à : InitialiserRépéterTesterMettre à jourAfficher.

Diagramme (flowchart)
Début Lire les données (entrées) Initialiser variables Répéter / Boucle tant que… / pour… Test ? Mettre à jour variables Afficher résultat Fin Oui Non
Lecture : un exercice peut demander de compléter le test, l’initialisation (valeurs de départ) ou la mise à jour (ce qui change à chaque tour).
2) Variables : affectation, incrément, échange
2.1 Affectation (mettre une valeur dans une variable)
\[ x \leftarrow 7 \qquad\text{(on met 7 dans la variable \(x\))} \]

En Scratch : mettre x à 7.

2.2 Incrément (ajouter 1, 2, …)
\[ x \leftarrow x + 1 \]

Sens : “on augmente \(x\) de 1”. En Scratch : ajouter 1 à x.

2.3 Accumulateur (sommes, scores)

Pour additionner une série de valeurs, on utilise souvent :

\[ S \leftarrow 0,\quad \text{puis}\quad S \leftarrow S + \text{(nouvelle valeur)} \]
2.4 Piège classique : échange de deux variables

On veut échanger \(a\) et \(b\). Si on fait : \(a \leftarrow b\) puis \(b \leftarrow a\), on perd une valeur.

\[ \text{temp} \leftarrow a,\quad a \leftarrow b,\quad b \leftarrow \text{temp} \]
Brevet : l’échange avec variable temporaire tombe souvent en “débogage”.
3) Conditions : comparaisons et branchements
3.1 Comparaisons
  • \(=\) (égalité), \(\ne\) (différent)
  • \(<\), \(\le\), \(>\), \(\ge\)
  • Logique : ET, OU, NON
Scratch : les blocs “et” / “ou” / “non” combinent des tests.
3.2 Structure “Si… Sinon…”
\[ \text{Si }(x \ge 10)\text{ alors afficher "OK" sinon afficher "Non"} \]

Un test décide quelle branche exécuter.

3.3 Exemple Brevet : valeur absolue (version algorithmique)

Écrire un algorithme qui renvoie \(|x|\).

\[ \begin{array}{l} \text{Lire } x\\ \text{Si } x \ge 0 \text{ alors } y \leftarrow x \\ \text{Sinon } y \leftarrow -x \\ \text{Afficher } y \end{array} \]
Contrôle : tester avec un \(x\) positif et un \(x\) négatif.
4) Boucles : répéter efficacement
4.1 Boucle “pour” (compteur)

On sait combien de fois on répète (ex : 10 fois).

\[ \begin{array}{l} S \leftarrow 0 \\ \text{Pour } i \text{ allant de } 1 \text{ à } 10 \\ \quad S \leftarrow S + i \\ \text{Afficher } S \end{array} \]

Ici, \(S = 1+2+\cdots+10\).

4.2 Boucle “tant que” (arrêt conditionnel)

On ne sait pas à l’avance combien de tours, on s’arrête quand le test devient faux.

\[ \begin{array}{l} x \leftarrow 1 \\ \text{Tant que } x < 100 \\ \quad x \leftarrow 2x \\ \text{Afficher } x \end{array} \]
Piège : si on oublie la mise à jour de \(x\), la boucle peut devenir infinie.
4.3 Schéma “compteur” vs “accumulateur”
Compteur

Mesure le nombre de tours / d’objets.

\[ c \leftarrow c + 1 \]
Accumulateur

Cumule une somme / un score.

\[ S \leftarrow S + \text{valeur} \]
5) Simulations aléatoires (Scratch)
5.1 Générer un nombre aléatoire

En Scratch : bloc nombre aléatoire entre A et B (inclus).

\[ r \in \{1,2,3,4,5,6\} \quad \text{(dé)} \]
5.2 Exemple Brevet : estimer une probabilité par simulation

On lance un dé 1000 fois. On compte la fréquence d’obtenir un 6.

\[ \begin{array}{l} N \leftarrow 1000 \\ c \leftarrow 0 \\ \text{Répéter } N \text{ fois :}\\ \quad r \leftarrow \text{aléatoire}(1,6) \\ \quad \text{Si } r = 6 \text{ alors } c \leftarrow c + 1 \\ f \leftarrow \dfrac{c}{N} \\ \text{Afficher } f \end{array} \]
Interprétation : plus \(N\) est grand, plus la fréquence \(f\) se rapproche de \( \frac{1}{6}\).
Mini-diagramme : “simulation = compteur + boucle + condition”
Boucle (N fois) répéter / pour Tirer aléatoire r ex : 1..6 r = 6 ? c++ Oui Non → tour suivant
6) Débogage (très demandé au Brevet)
6.1 Erreurs fréquentes
  • Oubli d’initialisation : compteur non mis à 0.
  • Test inversé : \(\le\) au lieu de \(<\).
  • Mise à jour manquante dans une boucle (“tant que” infini).
  • Confusion entre “mettre à” et “ajouter à” (Scratch).
6.2 Méthode rapide (pro)
  1. Choisir une valeur test simple.
  2. Faire un tableau de traces (valeurs des variables à chaque étape).
  3. Vérifier l’invariant (ce qui doit rester vrai).
  4. Comparer le résultat attendu et obtenu.
6.3 Exemple de débogage (classique)

Objectif : compter le nombre de valeurs positives parmi 5 nombres saisis. L’algorithme ci-dessous est faux. Trouver l’erreur.

\[ \begin{array}{l} c \leftarrow 0 \\ \text{Répéter 5 fois :}\\ \quad \text{Lire } x \\ \quad \text{Si } x > 0 \text{ alors } c \leftarrow 1 \\ \text{Afficher } c \end{array} \]
Bug : on fait \(c \leftarrow 1\) au lieu de \(c \leftarrow c+1\). Résultat : dès qu’un positif apparaît, \(c\) vaut 1, même s’il y en a plusieurs.
Version corrigée
\[ \begin{array}{l} c \leftarrow 0 \\ \text{Répéter 5 fois :}\\ \quad \text{Lire } x \\ \quad \text{Si } x > 0 \text{ alors } c \leftarrow c+1 \\ \text{Afficher } c \end{array} \]
7) À retenir (résumé premium)
Structures
  • Séquence : instructions l’une après l’autre.
  • Condition : si / sinon.
  • Boucle : répéter (N fois) ou tant que (condition).
Outils Brevet
  • Compteur : \(c \leftarrow c+1\)
  • Accumulateur : \(S \leftarrow S + \text{valeur}\)
  • Trace : tableau des variables étape par étape
Checklist : initialisation ✅ / mise à jour ✅ / test correct ✅ / sorties attendues ✅