Débogueur#

Vous avez eu une introduction à l’utilisation du débogueur dans les exercices Laby. Nous allons à présent en voir des applications plus concrètes et plus utiles en programmation. Pour revoir comment l’activer, ajouter un point d’arrêt et exécuter un programme pas à pas, retournez consulter la feuille Laby.

Observation des variables#

Activez le débogueur, ajoutez un point d’arrêt sur la première ligne de la cellule suivante, et exécutez-la :

n = 5
n += 1
n = 10
a = 5

Avec le débogueur, il est possible de suivre l’évolution de vos variables : nous allons nous intéresser à la zone « VARIABLES » de la palette à droite, au dessus de la « PILE DES APPELS ». Si elle n’est pas dépliée, cliquez sur le triangle ► à gauche de « VARIABLES ». Exécutez pas à pas la cellule avec la touche F10, et observez l’évolution des valeurs des variables dans la zone « VARIABLES ».

A la fin de l’exécution, vous devriez obtenir a: 5 et n: 10.

⚠️ Vous remarquerez que la valeur des variables est celle de la ligne précédente : le débogueur s’arrête sur la ligne avant son exécution. ⚠️

Par exemple, lorsque la ligne n+=1 est surlignée, n a toujours la valeur \(5\), et l’instruction n+=1 sera exécutée lorsque vous passerez au pas suivant.

Si vous exécutez un deuxième fois la cellule pas à pas, les variables a et n seront présentes dans la liste dès la première ligne : une variable reste enregistrée dans l’environnement du noyau Python jusqu’à ce que le noyau soit redémarré, et elle contient la dernière valeur que vous lui avez affectée.

Vérification des flux de contrôle#

En suivant un programme pas à pas, vous pouvez vérifier si votre flux de contrôle (l’ordre dans lequel les instructions d’un programme sont exécutées) fonctionne comme prévu.

Testez le débogueur sur cette boucle for en mettant un point d’arrêt sur la première ligne.

for i in range(5):
    print(i)
0
1
2
3
4

La fonction suivante renvoie le minimum entre deux nombres a et b. Testez-la pour différentes valeurs de a et b, et observez le cheminement des instructions à l’aide du débogueur. Attention : le point d’arrêt doit être mis sur la première ligne après la déclaration de la fonction (ici, la deuxième ligne de la cellule) pour que l’intérieur de la fonction soit exécuté pas à pas.

def minimum(a, b):
    if ( a < b ):
        return a
    else:
        return b


minimum(4, 2)
2

Exercices#

  • Devinez ce que devrait faire le code suivant, puis exécutez pas à pas les instructions en vous aidant du débogueur, et corrigez-le.

x = 5
y = 4
resultat = ""
if ( x >= y ):
    if ( x == y ):
        resultat = "égalité"
else:
    resultat = "x est plus petit que y";


resultat
''
### BEGIN SOLUTION
x = 5
y = 4
resultat = ""
if ( x >= y ):
    if ( x == y ):
        resultat = "égalité"
    else:
        resultat = "x est plus petit que y";


resultat
### END SOLUTION
'x est plus petit que y'
  • La fonction suivante est censée prendre en entrée un entier n et renvoyer la somme de tous les entiers pairs jusqu’à n inclus. Par exemple, pour n=10, elle doit renvoyer \(30\) \((2+4+6+8+10)\). Utilisez le débogueur pour observer les variables et corrigez le code. Vérifiez que les tests passent.

def somme_entiers_pairs(n):
    i = 2
    somme = 0
    while i < n:
        if i % 2 == 0:
            somme = somme + n
        i = i + 1

    return somme

somme_entiers_pairs(10)
40
### BEGIN SOLUTION
def somme_entiers_pairs(n):
    i = 2
    somme = 0
    while i <= n:
        if i % 2 == 0:
            somme = somme + i
        i = i + 1

    return somme

somme_entiers_pairs(9)
### END SOLUTION
20
assert somme_entiers_pairs(10) ==  30
assert somme_entiers_pairs(9) ==  20
assert somme_entiers_pairs(1) ==  0

Bilan#

Le débogueur aide à comprendre un code – et notamment à localiser des erreurs – en permettant de l’exécuter pas à pas en observant la valeur des variables.

Pour la suite, vous êtes encouragés à vous servir du débogueur autant que possible pour suivre le déroulement de vos programmes, et éviter ainsi le recours excessif aux instructions d’impression print dispersées dans votre code.

Retourner à l’index