Penso che quello che stai cercando qui sia un diagramma di sequenza . Questi consentono di visualizzare l'ordine in cui i vari moduli si chiamano tramite le frecce.
Costruire uno è semplice:
- Disegna la tua classe iniziale con una linea tratteggiata sotto di essa.
- Disegna la successiva classe / metodo nella traccia della chiamata con una linea tratteggiata al di sotto di essa
- Collega le linee con una freccia, posizionata verticalmente sotto l'ultima freccia che hai disegnato
- Ripeti i passaggi 2-3 per tutte le chiamate nella tua traccia
Esempio
Supponiamo di avere il seguente codice per cui vogliamo creare un diagramma di sequenza per:
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 prima cosa che disegneremo è il punto di ingresso ( main
) che si collega al metodo long_division
. Si noti che ciò crea una casella in long_division, che indica l'ambito della chiamata del metodo. Per questo semplice esempio, la casella sarà l'intera altezza del nostro diagramma di sequenza a causa del fatto che questa è l'unica cosa eseguita.
Ora chiamiamo find_largest_fit
per trovare il più grande multiplo che si adatta al nostro numero di lavoro e ce lo restituisce. Tracciamo una linea da long_division
a find_largest_fit
con un'altra casella per indicare l'ambito per la chiamata di funzione. Nota come termina la casella quando viene restituito il moltiplicatore; questa è la fine di quell'ambito di funzioni!
Ripeti alcune volte per un numero maggiore e il tuo grafico dovrebbe assomigliare a questo:
Appunti
È possibile scegliere se si desidera etichettare le chiamate con i nomi delle variabili passati o i loro valori se si desidera documentare solo un caso specifico. Puoi anche mostrare la ricorsione con una funzione che si chiama da sola.
Inoltre, puoi mostrare agli utenti qui e chiedere loro e mostrare i loro input nel sistema abbastanza facilmente. È un sistema abbastanza flessibile che penso che troverai piuttosto utile!