什麼是追蹤表
假設逐行執行程式,把變數值的變化寫成表格的東西。用來確認重複次數與最終的值,或找出錯誤的位置。因為是在紙上進行,也稱為桌上追蹤。
日文名稱: トレース表
「追蹤表」出現在1領域的1道練習題中(程式設計基礎(虛擬碼追蹤)等)。
這個名詞所屬的領域: 程式設計基礎(虛擬碼追蹤)
假設逐行執行程式,把變數值的變化寫成表格的東西。用來確認重複次數與最終的值,或找出錯誤的位置。因為是在紙上進行,也稱為桌上追蹤。
日文名稱: トレース表
「追蹤表」出現在1領域的1道練習題中(程式設計基礎(虛擬碼追蹤)等)。
這個名詞所屬的領域: 程式設計基礎(虛擬碼追蹤)
以變數與條件式的真偽作為各欄,依執行的順序逐列填入值。例如從 x ← 1 開始、在 x < 100 期間重複 x ← x × 3 的程式,x 欄會依序變為 1、3、9、27、81、243,第6次判斷時條件為偽。只填入值有改變的變數,表格會比較容易閱讀。
追蹤時容易疏忽的是迴圈的第一次與最後一次。要確認 for 是否包含終值、while 的條件在何時判斷,以及陣列的元素編號從1還是從0開始。指派是由上而下依序執行,因此也要注意在 x ← y 之後執行 y ← x 時,x 原本的值已經遺失。
遞迴呼叫時,每次呼叫都會建立各自的一組引數與區域變數。把呼叫畫成樹狀,並在各節點寫上該次呼叫的引數與回傳值,就容易計算呼叫次數與回傳值。輸出值是在遞迴呼叫之前還是之後,會使輸出的順序不同,這也可以用樹來確認。
兩者都是逐行追蹤動作,但追蹤表是由人在紙上進行,除錯器則是實際一邊暫停一邊執行程式。考試中沒有執行環境,因此需要以追蹤表確認的能力。
追蹤最初幾次、找出值變化的規律後,剩下的部分大多可以用計算求得。但為了避免差一錯誤,最後一次與結束條件一定要確認。
把 x 與 n 的值寫成追蹤表,可以看出每次重複時 x 依序變為 3、9、27、81、243,n 每次加1。
下列程式反覆將 x 乘以3。執行後 n 的值為下列何者?