Ce document a pour seul objectif de donner quelques pistes lorsqu’un programme ne fonctionne pas. Il n’y a aucune recherche d’exhaustivité.
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.
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) :