Contenu

mathématiques

Recherche simple Vous recherchez ...

espace pédagogique > disciplines du second degré > mathématiques > enseignement > groupes de recherche > TraAM > actions nationales 2017-2018

comment deboguer

mis à jour le 27/03/2018


reflexions.png

Ce document a pour seul objectif de donner quelques pistes lorsqu’un programme ne fonctionne pas. Il n’y a aucune recherche d’exhaustivité.

mots clés : algorithmique, scratch, collège vers python


Quelques précautions élémentaires


Précaution n°1

Toujours démarrer un programme par le drapeau vert :
 
Les autres possibilités correspondent à des interactions clavier une fois le programme démarré. La différence, minime, peut générer un bug :
La variable  est réinitialisée à « vide » en démarrant au drapeau vert mais n’est pas réinitialisée sinon.
Cela permet aussi de repérer rapidement où est le début du programme !

Précaution n°2

Ne mettre qu’un seul drapeau vert par lutin : lorsqu’il y a plusieurs drapeaux verts, le démarrage ne se fera pas exactement en même temps, il y en aura nécessairement un qui commencera son exécution avant l’autre. Et cela peut créer des conflits, par exemple sur des variables.

Précaution n°3

En lien avec la précédente, l’initialisation des variables peut s’avérer essentielle !
Ce programme va compter de 0 à 10.
Ce programme va compter de 1 à 10.
 
 

Pour aller un peu plus loin…


Structurer : les sous-programmes (ou blocs)

Structurer un programme permet de mieux le comprendre, de l’analyser plus rapidement lorsqu’il y a une erreur.
   Ce premier programme, quoique simple, est plus difficile à appréhender que le suivant alors qu’ils réalisent tous les deux la même chose.
 

La structuration en sous-programmes aide à la lecture du programme principal (sous le drapeau vert) : on initialise puis on trace un carré en le faisant tourner 36 fois.

On va à l’essentiel d’abord, puis dans les sous-programmes, on peut aller étudier les différents éléments.

Faire attention aux nuances de certains blocs…

Examinons ce programme, avec la scène associée :
 
À la lecture de ce programme, dès que le lutin va avancer, il rencontrera rapidement la barre de couleur noire : il devra donc dire « touché ! » et arrêter le programme. Pourtant si on lance avec le drapeau vert, rien de tout cela ne se passe.

Cela signifie que l’instruction  n’est pas conçue comme un déplacement continu comme notre persistance rétinienne pourrait le croire mais comme ‘un saut’ de la position initiale, ici (-150 ; 0), à la position finale, ici (150 ; 0).

 
Cette nouvelle version fera le lutin s’arrêter et le programme aussi. Modifier le temps du message « dire… » ou le nombre de répétitions de la boucle
 
est très instructif pour mieux appréhender le fonctionnement de ces instructions avec Scratch.

Voir aussi le document : gérer la temporalité sur Scratch
Une autre variante :
 

L’ordre des instructions

Cela peut apparaître comme évident avec ces deux programmes mis côte à côte :
         
L’un va compter jusqu’à 100, l’autre va compter jusqu’à 1.

Ce principe de mauvais positionnement d’une instruction peut générer pas mal d’erreurs dans des programmes.

Voir aussi le document : la boucle répéter, et le document importance de bien lire un programme.

Une mauvaise utilisation de blocs ou d’éléments

1)    Les opérateurs

L’usage des opérateurs dans le cadre des priorités de calculs nécessite une manipulation fine, voire très fine :
signifie 3×(4+5) et donnera 27 avec l’affichage final   
signifie 3×4+5 et donnera 17 avec l’affichage final   
 
La nuance sur l’affichage final n’est pas évidente à repérer : il faut souvent déplacer un peu un élément pour s’assurer de sa bonne disposition.

2)    Ajouter ou regrouper


Il y a là une difficulté liée au fait que Scratch ne prévoit pas de typage des variables. De ce fait, un programme comme celui-ci :

ne renvoie pas de message d’erreur : il laisse la variable « prénom+nom » à zéro.

Ce programme en revanche respectera bien la demande (à un espace près) :

Voir le document : conjuguer des verbes en ER
 
auteur(s) :

Damien Rivière, Enseignant au collège Pierre Dubois - Laval (53)
Yannick Danard, Enseignant au collège Clément Janequin - Avrillé (49)

information(s) pédagogique(s)

niveau : tous niveaux

type pédagogique :

public visé : non précisé

contexte d'usage :

référence aux programmes :

ressources associées

reflexions.png gérer la temporalité sur scratch 27/03/2018
Une difficulté fréquemment rencontrée est celle de la temporalité.
algorithmique, scratch, python Yannick Danard; Damien Rivière
reflexions.png la boucle "répéter n fois" 26/03/2018
Et si on réfléchissait à la boucle "répéter n fois".
algorithmique, scratch, collège vers python Yannick Danard; Damien Rivière
reflexions.png de l'importance de lire 28/03/2018
Quelques pistes pour remédier à la lecture trop superficielle des élèves.
algorithmique, scratch, collège vers python Damien Rivière; Grégory Maupu
vignette.png conjuguer des verbes en ER 06/02/2018
Comment utiliser scratch et le français pour créer un programme complexe étape après étape ?
algorithmique, français Emmanuel Malgras

documents complémentaires

La fiche
PDF la présente réflexion agrémentée de travaux d'élèves.

haut de page

mathématiques - Rectorat de l'Académie de Nantes