如何直觀地理解程序的運行過程?

瞭解代碼的執行過程是編程的基本要求。一個熟練的編程老手只須要用肉眼看着代碼,就能對其運行的過程有所瞭解。然而對於剛接觸編程不久的新手來講,這種事情就沒那麼顯而易見了。因而在編寫代碼和調試代碼時,一旦程序的邏輯有些複雜,就像掉進代碼的迷宮,徹底不知道東南西北。html

因此,每當有人對本身的代碼沒有給出預想結果而百思不得其解,無奈尋求幫助時,我都會建議在程序中增長輸出,一方面是根據不一樣輸出的前後順序來判斷程序的運行路徑,另外一方面則是觀察各變量在運行過程當中的實際數值,確認是在哪裏發生了錯誤。 python

還有種方法就是使用 IDE 提供的調試功能,經過添加斷點和單步運行,瞭解程序的運行狀態。Visual Studio、Eclipse、xCode 等常見的 IDE 幾乎都提供了調試工具。對於 Python,也可使用 pdb 庫來實現斷點調試。 程序員

上述兩種途徑應該是大部分程序員 debug 時候的基本套路。但一樣的,對於新手來講,即便這樣的工具,用起來仍然有些費力。 算法

有時我會選擇在紙上畫出一些流程和圖形來向人解釋程序,雖然效果會好些,但顯然不是一種能夠普遍推廣的方式。後來意外發現有一款工具知足了此類需求,很是適合新手,可讓你直觀地「看」出程序是怎麼運行的。對於初學編程,難以理解程序運行過程的苦手來講,絕對可稱之爲「神器」。 編程

這就是 Online Python Tutor 。一款免費的在線代碼運行及演示工具。 瀏覽器

項目地址:pythontutor.com 網絡

關於此項目的介紹(摘自網絡,出處未知):app

Online Python Tutor 是由 Philip Guo 開發的一個免費教育工具,可幫助學生攻克編程學習中的基礎障礙,理解每一行源代碼在程序執行時在計算機中的過程。經過這個工具,教師或學生能夠直接在 Web 瀏覽器中編寫 Python 代碼,並一步一步可視化地執行程序。

截至 2013 年 12 月,來自 165 個國家和地區共 50 萬多人使用了這個在線工具,一般是用做教材、講義或在線編程指南的補充。天天共執行和演示超過 6,000 段 Python 程序。除了自學的初學者,Online Python Tutor 的用戶還包括了那些參加 Coursera、edX 和 Udacity 等在線課程的學生,還有諸如 MIT、UC 伯克利等高校的教師。dom

  • Python Tutor 支持 2.7 和 3.3 兩個版本的 Python。
  • 除了 Python 外,還可運行 Java、JavaScript、TypeScript、Ruby,另外也有支持 C、C++ 的版本。
  • 能夠經過一行 JS 代碼,把此工具嵌入到你本身的頁面中。
  • 也能夠生成連接,把你的代碼直接分享給別人。
  • 附帶單元測試功能。
  • 網站上還提供了不少的實例,其中包括一些比較經典的算法。

再來體驗一下其使用過程:編輯器

在編輯器裏輸入代碼,點擊 「Visualize Execution」 便可運行並演示。

import random

def fn(x):
    return x**2

result = []
for i in range(3):
    t = random.randint(1, 10)
    print t
    r = fn(t)
    result.append(r)
print result

我用了段包含循環、列表、函數、模塊的代碼片斷。看看效果如何:

左上是代碼,箭頭表示當前運行到的位置。

經過下面的按鈕和進度條能夠直接控制程序的進行。

左下是輸出。

右邊就是程序的可視化模擬。在這個例子裏,能夠清楚地看到過程當中變量的變化,什麼時候調用了函數等信息。

不過同不少在線運行環境同樣,Python Tutor 不支持運行過程當中的輸入功能。因此無法把咱們的猜數字或是罰點球的小遊戲直接放上去運行。但願之後可以增長此功能。

藉助 Python Tutor,能夠更輕鬆地理解一些算法。最後放一個冒泡排序的實現,[](http://crossin-forum.b0.upaiy...

-------------------------------------------------

其餘文章及回答:
編程初學者如何使用搜索引擎
[](http://crossin-forum.b0.upaiy...

相關文章
相關標籤/搜索