Burada aradığınızın bir Dizi Diyagramı olduğunu düşünüyorum . Bunlar, çeşitli modüllerin okları kullanarak birbirlerini arama sırasını görselleştirmenizi sağlar.
Birini inşa etmek basittir:
- Başlangıç sınıfınızı altında noktalı bir çizgi ile çizin.
- Arama izlemesindeki bir sonraki sınıfı / yöntemi, bunun altında noktalı bir çizgi ile çizin
- Çizgileri, çizdiğiniz son okun altına dikey olarak konumlandırılmış bir okla bağlayın
- İzinizdeki tüm aramalar için 2-3. Adımları tekrarlayın
Misal
Diyelim ki aşağıdaki kod için bir dizi diyagramı oluşturmak istiyoruz:
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")
Çizeceğimiz ilk şey main
, yönteme bağlanan giriş noktası ( ) long_division
. Bunun, yöntem çağrısının kapsamını belirten long_division'da bir kutu oluşturduğunu unutmayın. Bu basit örnek için, kutu, çalıştırılan tek şey olması nedeniyle dizi şemamızın tüm yüksekliği olacaktır.
Şimdi find_largest_fit
çalışma numaramıza uyan ve bize geri dönen en büyük katıyı bulmaya çağırıyoruz . Biz bir çizgi çizmek long_division
için find_largest_fit
işlev çağrısı için kapsamını belirtmek için başka bir kutu ile. Çarpan döndürüldüğünde kutunun nasıl bittiğine dikkat edin; bu fonksiyonların kapsamının sonu!
Daha büyük bir sayı için birkaç kez tekrarlayın ve grafiğiniz aşağıdaki gibi görünmelidir:
notlar
Çağrıları değişken adları geçirilmiş olarak mı yoksa yalnızca belirli bir vakayı belgelemek istiyorsanız değerleriyle mi etiketlemek istediğinizi seçebilirsiniz. Kendini çağıran bir işlevle özyineleme de gösterebilirsiniz.
Ayrıca, kullanıcıları burada gösterebilir ve onlara bilgi verebilir ve sisteme girdilerini yeterince kolayca gösterebilirsiniz. Oldukça esnek bir sistem olduğunu düşünüyorum.