Algorithmique et Scratch 4ème : conditions, variables et débogage

En algorithmique et Scratch en 4ème, savoir assembler des blocs ne suffit plus. Il faut prévoir ce que fait le programme, expliquer pourquoi une condition est vraie ou fausse et corriger une procédure qui produit parfois un résultat inattendu.

La meilleure méthode consiste à suivre l'état du programme instruction après instruction. Une variable possède une valeur à un instant donné ; une condition choisit une branche ; une boucle répète un traitement. Cette lecture rend le code aussi vérifiable qu'un calcul écrit.

Distinguer algorithme, programme et exécution

Trois niveaux

Un algorithme est une suite finie d'instructions destinée à résoudre un problème. Un programme traduit cet algorithme dans un langage. Une exécution est un passage concret du programme avec des données précises.

Organigramme conditionnel d'un programme Scratch
Entrée, traitement conditionnel et sortie : le chemin dépend de la réponse à la condition.

Le même programme peut donc produire des chemins différents selon l'entrée. Pour savoir s'il est juste, on ne le teste pas seulement avec une valeur facile : on choisit des valeurs qui activent chacune des branches.

Créer, initialiser et modifier une variable

Une variable associe un nom à une valeur modifiable. L'instruction « mettre score à 0 » remplace la valeur précédente ; « ajouter 3 à score » conserve la valeur et lui ajoute 3.

InstructionValeur de xx après exécution si x=5x=5
mettre xx à 1212
ajouter 4 à xx9
mettre xx à 2x12x-19
Erreur fréquente : le signe égal d'une affectation ne décrit pas une égalité valable avant et après. « mettre x à x + 1 » signifie calculer l'ancienne valeur plus un, puis remplacer x.

Traduire une condition logique

Condition

Une condition est une proposition dont la valeur est vraie ou fausse. Le bloc « si... alors... sinon... » exécute exactement une des deux branches.

Pour tester si un entier nn est pair, on peut vérifier si le reste de sa division par 2 vaut 0. Pour déterminer si une note atteint 10, on teste note10note\geq10. Les opérateurs « et », « ou » et « non » permettent de combiner ou de renverser les tests.

ConditionSens
x>0x>0 et x<5x<5xx appartient à l'intervalle ouvert entre 0 et 5
x0x\leq0 ou x5x\geq5xx est à l'extérieur de cet intervalle
non x=3x=3xx est différent de 3

Choisir entre répéter un nombre de fois et répéter jusqu’à

Deux types de boucles

La boucle « répéter nn fois » convient lorsque le nombre d'itérations est connu. La boucle « répéter jusqu'à condition » convient lorsque l'arrêt dépend de l'évolution des données.

Pour tracer un carré, quatre répétitions suffisent. Pour soustraire 7 tant qu'un nombre reste supérieur ou égal à 7, le nombre d'itérations dépend de la valeur initiale. Dans ce second cas, la variable qui contrôle l'arrêt doit être modifiée dans la boucle.

Erreur fréquente : si la condition d'arrêt ne peut jamais devenir vraie, la boucle ne termine pas. Avant l'exécution, identifier l'instruction qui rapproche effectivement de l'arrêt.

Construire une table de trace

Une table de trace consigne les valeurs après chaque instruction. Considérons un programme qui choisit x=4x=4, met yy à 2x+32x+3, puis remplace xx par (y-x).

Étapexxyy
départ4non défini
y2x+3y\leftarrow2x+3411
xyxx\leftarrow y-x711

Cette trace relie Scratch au calcul littéral : une expression utilise toujours les valeurs disponibles au moment où elle est évaluée.

Déboguer par hypothèse et test ciblé

  1. Décrire précisément le résultat attendu.
  2. Choisir une entrée minimale qui reproduit l'erreur.
  3. Suivre les variables jusqu'à la première divergence.
  4. Formuler une cause avant de modifier un bloc.
  5. Retester le cas fautif, puis d'autres cas, notamment les limites.

Si un programme classe une note de 10 comme « insuffisante », la question n'est pas « quel bloc changer au hasard ? », mais « la frontière doit-elle utiliser >> ou \geq ? ». Une correction ciblée est plus fiable qu'une succession d'essais.

Astuce : faire dire temporairement les valeurs importantes par le lutin. Cette instrumentation simple montre le contenu réel des variables sans modifier l'algorithme.

Modéliser un programme de calcul

Un programme de calcul demande un nombre, le transforme puis affiche le résultat. Par exemple : choisir xx, ajouter 3, multiplier par 2 et soustraire 6 donne :

2(x+3)6=2x.2(x+3)-6=2x.

Cette égalité explique pourquoi le programme double toujours le nombre choisi. Elle peut ensuite être vérifiée avec plusieurs entrées. Les tableaux et graphiques du cours sur les fonctions en 4ème permettent de représenter le lien entre entrée et sortie.

Le cours d'algorithmique et Scratch en 5ème fournit les bases de séquence et de boucle ; la 4ème ajoute le raisonnement sur les branches et le diagnostic.

Valider un programme avec des cas bien choisis

Tester seulement une valeur ne prouve rien. Pour une condition x0x\geq0, il faut au minimum tester une valeur négative, zéro et une valeur positive. Pour une boucle, on teste aussi le cas où elle ne s'exécute aucune fois et le cas où elle s'exécute plusieurs fois.

Type de casBut
cas courantvérifier le fonctionnement normal
valeur frontièrecontrôler <<, \leq, >> ou \geq
valeur extrêmedéceler une répétition trop longue ou une hypothèse cachée
chaque branches'assurer que tout le code est exercé

Écrire une condition qui couvre tous les cas

Pour classer une température, on peut tester d'abord t<0t\lt 0, puis t25t\leq25, puis traiter le reste. L'ordre compte : si l'on teste d'abord t25t\leq25, les températures négatives entreront déjà dans cette branche et le test suivant ne sera jamais atteint.

Des intervalles bien construits ne doivent laisser ni trou ni chevauchement involontaire. Les valeurs frontières 0 et 25 sont donc les meilleurs tests pour décider où placer les signes stricts ou larges.

Erreur fréquente : deux blocs « si » indépendants peuvent s'exécuter tous les deux. Un bloc « si, sinon si, sinon » choisit une seule branche.

Déboguer un compteur dans une boucle

Un programme doit afficher les cinq premiers multiples de 4. Il met nn à 1, puis répète cinq fois : afficher 4n4n. Si nn n'est jamais augmenté, il affiche cinq fois 4. La boucle fonctionne, mais son état ne progresse pas.

Il faut ajouter « ajouter 1 à n » après l'affichage. La trace devient 4, 8, 12, 16, 20. Placer l'incrément avant l'affichage produirait 8, 12, 16, 20, 24 : le nombre d'itérations serait correct, mais le décalage d'une position signalerait une erreur d'ordre. La table de trace identifie précisément la première étape divergente.

Itérationn avant affichagevaleur affichée
114
228
5520

Pour rendre le programme réutilisable, on peut demander le multiple recherché et le nombre de valeurs à afficher. Les constantes 4 et 5 deviennent alors des variables d'entrée. Le même algorithme produit une table de 7 ou les dix premiers multiples de 3, sans dupliquer les blocs. Généraliser vient après avoir validé le cas simple.

Algorithmique et Scratch 4ème : l’essentiel à retenir

En algorithmique et Scratch en 4ème, une variable se suit dans le temps, une condition sélectionne une branche et une boucle doit progresser vers son arrêt. La table de trace transforme un programme opaque en suite d'étapes contrôlables.

Le programme officiel de mathématiques du cycle 4 place la programmation au service de la résolution de problèmes : prévoir, tester et expliquer sont aussi essentiels que faire fonctionner les blocs.