bug

Dans les programmes demandés en prépa, il est rare que la longueur dépasse 10 ou 12 lignes en tout, étant donné le nombre de méthodes pour raccourcir son script. Cependant, pour les autres personnes qui codent plutôt souvent, ces programmes peuvent atteindre plusieurs centaines ou milliers de lignes assez rapidement. Dans tous les cas, il faut savoir trouver les bugs dans son code, ses erreurs, afin d’avoir un résultat qui fonctionne, mais aussi pour gagner du temps. Les séances de TD ne sont pas, au grand soulagement de certains, éternelles…

 

L’ordre compte

La forme

Pour débugger un script, il est de bonne pratique de commencer par les petites erreurs et les détails. En effet, il faut commencer par les bases et s’assurer que tout est solide sur la forme, avant d’aller chercher des erreurs sur le fond. En effet, il arrive parfois que le fond soit bon et que seulement la forme pèche : il faut savoir s’y prendre.

Voici une petite liste des petites erreurs de forme à tester :

  • Les indentations

On parle ici des indentations qui ont strictement trait à la forme du programme, comme :

et

Ces deux cas de figure sont souvent les plus récurrents pour les erreurs.

  • Les deux points « : »

Les deux points sont présents après toutes les étapes majeures d’un script, ce qui rend leur correction rapide et efficace. Il faut simplement s’assurer qu’après chaque « for », « if », « while », « def », il y a un de ces symboles.

  • Les variables

Il faut s’assurer que toutes les variables répondent bien à une valeur qui leur a été assignée. Il est extrêmement fréquent de voir en TD des élèves qui écrivent ce type de scripts :

  • Les virgules

Les virgules dans les listes ou les autres environnements, comme les tuples ou les dictionnaires, sont essentielles pour la forme du code et pour pouvoir simplement compiler ledit code.

Évidemment, cela tourne vite à la catastrophe étant donné que l’élève altère la valeur de la variable k, mais utilise à sa place la variable i qui n’est donc pas définie…

 

Le fond

Les fautes de fond sont évidemment sujettes aux différents exercices entrepris par l’élève en question. Cependant, on peut relever des thématiques récurrentes :

  • Les boucles des suites

Pour coder une suite qui commence à un U0 donné et qui va jusqu’à Un, il faut savoir combien d’itérations avoir, soit n. En effet, de 0 à n+1, il y a n+1 termes et ainsi, il faut une boucle qui aille de 0 à n, ou bien de 1 à n+1 selon si la suite est définie explicitement ou non. Attention à cela !

  • Les fonctions « return »

Combien de fois aura-t-on vu des « return » en dehors des environnements « fonction » ? Voici désormais la règle d’or : pas de « return » en dehors d’une fonction et toujours des « return » dans une fonction.

  • Le parenthésage

Il est essentiel de parenthéser de façon adaptée et cela peut s’avérer compliqué, notamment avec des boucles de boucles définissant des listes par exemple. Pour garder une bonne vue de ce qui se passe, il est essentiel de savoir présenter son code de façon adaptée pour permettre une relecture efficace.

Ainsi, un script comme ceci :

Ce script sera évidemment plus lisible que sa contrepartie linéaire :

N.B. : ce code est extrait d’un programme personnel et utilise des éléments hors programme comme l’opérateur Walrus.

 

Rien ne marche, comment faire ?

Lire aussi : Commencer la première année de prépa sereinement en Python

Si rien ne semble fonctionner, il y a plusieurs pistes à explorer :

  • Utiliser la commande « print »

« Print » est un excellent moyen de se rendre compte, tout au long du programme, de tout ce qui se passe réellement. En effet, en affichant toutes les étapes, on se rend plus facilement compte de ce qui se passe réellement.

Cela est particulièrement utile dans la boucle « for » pour voir les premières valeurs qui s’affichent ou bien juste avant des conditions logiques, comme « if », afin de s’assurer de la validité des valeurs entrant dans un test logique.

  • Regarder ses boucles « while »

Les boucles « while » sont un des composants les plus difficiles à incorporer pour les élèves de prépa. En effet, souvent, ces boucles tournent indéfiniment. Cela revient non pas à une erreur d’implémentation, mais en général à un problème de rigueur mathématique.

Quelle solution ? Il faut repasser au papier et tenter de corriger cette erreur mathématique. Le papier, il faut s’en souvenir, est le moyen de ton expression le jour du concours et il n’y aura pas le droit à l’erreur. Autant commencer maintenant.

  • Appeler les professeurs

Si certains pensent qu’il ne faut pas déranger les professeurs, je suis du bord opposé. Il faut les ennuyer au maximum ! En réalité, ce sont eux qui corrigent des erreurs que, sans eux, nous aurions faites au concours.

N’hésite pas à demander à un camarade de travailler avec lui ou de t’expliquer non pas la solution, mais ce qui ne va pas avec ton programme. Différentes façons de penser sont essentielles pour réussir !

  • Coder petit à petit

Ne surtout pas coder tout d’un coup : cela est la recette du désastre le plus total et le plus cuisant ! Il faut y aller petit à petit, toujours en utilisant « print » afin de comprendre ce qui arrive et quand cela arrive. La temporalité des opérations est essentielle.

 

Conclusion

Bref, les bugs peuvent poser quelques soucis, mais heureusement pour nous, Python ne fait jamais d’erreurs et reste totalement logique. Suivre son raisonnement logique, étape par étape, est le moyen le plus sûr de comprendre les erreurs qui arrivent.