XI - La gestion des erreurs
Cette partie liste les principales erreurs de programmation. Pour avoir la liste exhaustive des erreurs, consultez le manuel correspondant à votre calculatrice.
Syntaxe Error (erreur de syntaxe)
Comme dirait Pierrotll, « arrêtez de coder avec les pieds ».
Plus sérieusement, c'est l'erreur la plus récurrente. Vérifiez si vous n'avez pas oublié un Then après un If, ou de fermer par un IfEnd, WhileEnd, LpWhile ou Next.
Une autre raison peut que vous ayez oublié de fermer un guillemet en amont dans le programme. Ainsi, la calculatrice croit qu'une grande partie de votre code est du texte.
Le débuggeur en ligne permet de trouver rapidement les erreurs récurrentes.
Math Error (erreur de mathématique)
Le calcul est impossible (division par 0...) ou dépasse la plage de calcul (résultat supérieur à 10100 ou inférieur à -10100). Vérifiez les ensembles de définition de vos calculs (cours de mathématiques, wikipédia, google...).
Go Error ou Erreur Saut
Il n'y a pas de Lbl qui correspond au Goto. Ou alors, Prog appelle un programme qui n'existe pas. Dans les deux cas, vérifiez le label ou le nom du programme.
Entre outre, un programme classique ne peut pas appeler un programme base. Le programme base permet des calculs et des conversions en binaire, octal, décimal et héxadécimal. Les fonctions base sont inutilisables dans les programmes classiques et inversement.
Branch Error (erreur de branchement)
Vous avez dépassé les 10 niveaux de programmes. Pour revenir au programme de niveau supérieur, utilisez la fonction Return (ne l'appelez pas avec Prog).
Si vous ne voyez pas de quoi je parle, je vous invite à relire la partie sur Prog.
//Programme de niveau 1 "PROG1"
Prog "PROG2"
//Programme de niveau 2 "PROG2"
Return //Pour revenir au programme de niveau 1
Dim Error (erreur de dimension)
La dimension renseignée pour la liste, la matrice ou le vecteur est incorrecte. Elle est inférieure ou égale à 0 ou dépasse la limite de la liste, de la matrice ou du vecteur. Vérifiez les dimensions et corrigez les valeurs.
Memory Error (erreur de mémoire)
Vous avez saturé la mémoire principale de la calculatrice. Allez dans MEMORY puis Mémoire principale. Supprimez les données que vous n'utilisez plus. En général, prévoyez un minimum de 2000 octets pour la bonne exécution des programmes Basic.
Avec les Graph 100(+), cette erreur survient aussi lorsqu'on tente de créer une très grande matrice qui occupe plus de 65 536 octets.
Corriger les résultats inattendus
Fréquemment, le programme ne fonctionne pas comme on s'y attendait. Pourtant, on pensait avoir tout prévu.
Tester les variables et les calculs
Il est important de déterminer où le programme commence à partir en vrille, à quel moment où un calcul ou une variable prend une valeur supposée impossible.
Tout d'abord, avez-vous correctement initialisé vos variables ? Si ce n'est pas le cas, je vous conseille de mettre ce code au démarrage du programme, qui initialisera toutes les variables de A à Z avec la valeur 0.
0->A~Z
Si le problème persiste, déterminez visuellement (dans la tête) une zone potentielle où le problème peut se produire et testez soigneusement chaque calcul et variable par ◢ ou par Locate.
◢ a l'avantage d'être plus facile à mettre en place et permet de connaitre rapidement la valeur d'une variable ou d'un calcul, mais oblige à interrompre régulièrement le programme.
A◢
2A-4◢
Or, en mode texte, si on débuggue un jeu de plate-formes par exemple, cette fonction va provoquer un décalage à l'affichage du niveau. Le debuggage ne serait alors que plus difficile. La deuxième astuce est d'utiliser Locate ou Text selon le mode d'affichage utilisé (texte ou graphique), et d'afficher à l'aide de ces fonctions les valeurs des variables et calculs. Plus long à mettre en place, il facilite néanmoins le travail quand on veut voir en temps réel ce qui se passe. N'hésitez pas à placer une boucle de pause pour prendre le temps d'analyse les valeurs :
Locate 20,1,A
Locate 20,2,2A-4
Do:LpWhile Getkey!=79 //met en pause le jeu tant qu'on n'appuie pas sur [F1], idéal pour prendre le temps de visualiser les valeurs
Maintenant, vous savez comment débugguer vos programmes. Passons à la dernière partie sur l'optimisation :)
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France.
|