Qu'est-ce que Table de trace (trace manuelle) ?

Table qui consigne l'évolution des valeurs des variables lorsqu'on exécute à la main un programme ligne par ligne. Elle sert à vérifier le nombre d'itérations et les valeurs finales, et à localiser les erreurs. Comme elle se fait sur papier, on parle aussi de trace manuelle (desk checking).

Nom japonais: トレース表

« Table de trace (trace manuelle) » apparaît dans 1 questions d'entraînement réparties sur 1 thèmes, dont Bases de la programmation (trace de pseudo-code).

Domaine: Bases de la programmation (trace de pseudo-code)

Construire une table de trace

On place en colonnes chaque variable et la valeur de vérité des conditions, puis on inscrit les valeurs une ligne à la fois, dans l'ordre d'exécution. Pour un programme qui part de x ← 1 et répète x ← x × 3 tant que x < 100, la colonne de x prend les valeurs 1, 3, 9, 27, 81, 243, et la condition devient fausse au sixième test. N'inscrire que les variables dont la valeur change rend la table plus lisible.

Là où se glissent les erreurs

La première et la dernière itération sont les plus faciles à rater dans une trace. On vérifie si la valeur finale d'une boucle for est incluse, à quel moment la condition du while est testée, et si les indices du tableau commencent à 1 ou à 0. Les affectations s'exécutent dans l'ordre, de haut en bas : il faut se rappeler qu'après x ← y, la valeur d'origine de x a disparu quand y ← x s'exécute.

Tracer des appels récursifs

Avec la récursion, chaque appel dispose de sa propre valeur pour chaque argument et chaque variable locale. Dessiner les appels sous forme d'arbre en inscrivant à chaque nœud les arguments et la valeur de retour de l'appel permet de compter facilement les appels et les valeurs renvoyées. L'arbre montre aussi comment l'ordre d'affichage change selon qu'une valeur est affichée avant ou après les appels récursifs.

Questions fréquentes

En quoi la trace diffère-t-elle de l'exécution pas à pas dans un débogueur ?

Les deux suivent le comportement ligne par ligne, mais une table de trace est remplie par une personne sur papier, tandis qu'un débogueur exécute réellement le programme en le mettant en pause au fur et à mesure. Lors d'un examen, on ne dispose d'aucun environnement d'exécution : savoir vérifier avec une table de trace est donc indispensable.

Faut-il tracer entièrement une longue boucle ?

Tracer les premières itérations pour trouver la règle d'évolution des valeurs permet souvent de calculer le reste. Il faut cependant toujours vérifier la dernière itération et la condition de sortie, pour éviter les erreurs off-by-one.

« Table de trace (trace manuelle) » dans les explications

Questions mentionnant « Table de trace (trace manuelle) » (1)

  1. Le programme suivant multiplie x par 3 de façon répétée. Quelle est la valeur de n après son exécution ?

Termes associés

Argument Division entière Erreur d'arrondi Erreur off-by-one (erreur de décalage d'une unité) Évaluation en court-circuit Opération bit à bit Opération modulo Programmation orientée objet Pseudo-code (pseudo-langage) Structure de contrôle

Retour au glossaire