Je pense que ce que vous cherchez ici est un diagramme de séquence . Ceux-ci vous permettent de visualiser l'ordre dans lequel les différents modules s'appellent via l'utilisation de flèches.
En construire un est simple:
- Dessinez votre classe de départ avec une ligne pointillée en dessous.
- Dessinez la classe / méthode suivante dans la trace d'appel avec une ligne pointillée en dessous
- Reliez les lignes avec une flèche, positionnée verticalement sous la dernière flèche que vous avez dessinée
- Répétez les étapes 2-3 pour tous les appels de votre trace
Exemple
Supposons que nous ayons le code suivant pour lequel nous voulons créer un diagramme de séquence:
def long_division(quotient, divisor):
solution = ""
remainder = quotient
working = ""
while len(remainder) > 0:
working += remainder[0]
remainder = remainder[1:]
multiplier = find_largest_fit(working, divisor)
solution += multiplier
working = calculate_remainder(working, multiplier, divisor)
print solution
def calculate_remainder(working, multiplier, divisor):
cur_len = len(working)
int_rem = int(working) - (int(multiplier) * int (divisor))
return "%*d" % (cur_len, int_rem)
def find_largest_fit(quotient, divisor):
if int(divisor) == 0:
return "0"
i = 0
while i <= 10:
if (int(divisor) * i) > int(quotient):
return str(i - 1)
else:
i += 1
if __name__ == "__main__":
long_division("645", "5")
La première chose que nous allons dessiner est le point d'entrée ( main
) se connectant à la méthode long_division
. Notez que cela crée une boîte dans long_division, signifiant la portée de l'appel de méthode. Pour cet exemple simple, la boîte sera la hauteur totale de notre diagramme de séquence car c'est la seule chose exécutée.
Maintenant, nous appelons find_largest_fit
pour trouver le plus grand multiple qui correspond à notre numéro de travail et nous le renvoie. Nous dessinons une ligne de long_division
à find_largest_fit
avec une autre case pour indiquer la portée de l'appel de fonction. Notez comment la boîte se termine lorsque le multiplicateur est renvoyé; c'est la fin de cette portée de fonctions!
Répétez plusieurs fois pour un plus grand nombre et votre graphique devrait ressembler à ceci:
Remarques
Vous pouvez choisir si vous souhaitez étiqueter les appels avec les noms de variable transmis ou leurs valeurs si vous ne souhaitez documenter qu'un cas spécifique. Vous pouvez également afficher la récursivité avec une fonction qui s'appelle elle-même.
De plus, vous pouvez montrer aux utilisateurs ici et les inviter et afficher leur entrée dans le système assez facilement. C'est un système assez flexible que je pense que vous trouverez plutôt utile!