Penso che quello che stai cercando sia un diagramma di sequenza . Questi ti permettono di visualizzare l'ordine in cui i vari moduli si chiamano tramite l'uso delle frecce.
Costruire uno è semplice:
- Disegna la tua classe di partenza con una linea tratteggiata sotto di essa.
- Disegna la prossima classe / metodo nella traccia chiamata con una linea tratteggiata sotto quella
- Collega le linee con una freccia, posizionata verticalmente sotto l'ultima freccia disegnata
- Ripeti i passaggi 2-3 per tutte le chiamate nella traccia
Esempio
Supponiamo di avere il seguente codice che 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 questo crea una casella in long_division, che indica l'ambito della chiamata al 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 da eseguire.
Orachiamiamofind_largest_fit
pertrovareilmultiplopiùgrandecherientranelnostronumerodilavoroecelorestituisce.Disegniamounalineadalong_division
afind_largest_fit
conun'altracasellaperindicarel'ambitodellachiamatadifunzione.Notacomefiniscelascatolaquandovienerestituitoilmoltiplicatore;questaèlafinediquestoambitodifunzioni!
Ripetialcunevolteperunnumeromaggioreeiltuograficodovrebbeavereunaspettosimileaquesto:
Note
Puoi scegliere se etichettare le chiamate con i nomi delle variabili passati, o i loro valori se vuoi solo documentare un caso specifico. Puoi anche mostrare la ricorsione con una funzione che chiama se stessa.
Inoltre, puoi mostrare gli utenti qui e richiamarli e mostrare il loro input nel sistema abbastanza facilmente. È un sistema abbastanza flessibile che penso che troverai piuttosto utile!