免費開始練習
地特三等申論題 107年 [資訊處理] 程式語言

第 一 題

📖 題組:
三、(一)請解釋程式語言中之變數動態範圍(Dynamic Scope)與語句參考環境(Referencing Environment)。(6 分) (二)以下為一動態範圍之程式,請分別列出 a, b, c 三點之參考環境。(9 分) void subprogram1( ) { int X, Y; . . . <----------------- a } /* end of subprogram1 void subprogram2( ) { int Y, Z; . . . <----------------- b } /* end of subprogram2 void main( ) { int W, Z; . . . <----------------- c } /* end of main
📝 此題為申論題,共 2 小題

小題 (一)

請解釋程式語言中之變數動態範圍(Dynamic Scope)與語句參考環境(Referencing Environment)。

思路引導 VIP

看到此題,首先需精確定義「動態範圍」是依賴「執行期呼叫順序(Call Stack)」而非程式碼靜態結構。其次,「參考環境」是特定語句當下「所有可存取變數的集合」。處理程式追蹤時,若題目未給定呼叫順序,務必「主動假設呼叫順序(例如 main -> sub2 -> sub1)」再進行追蹤,並特別留意同名變數造成的遮蔽(Shadowing)效應,這是閱卷給分的關鍵。

🤖
AI 詳解
AI 專屬家教

【破題】 程式語言中的變數範圍規則(Scope Rules)決定了變數的可見度。動態範圍高度依賴程式執行時的呼叫堆疊(Call Stack),而參考環境則是特定語句在執行當下,所有可合法存取之變數的總集合。 【論述】

小題 (二)

以下為一動態範圍之程式,請分別列出 a, b, c 三點之參考環境。

思路引導 VIP

解答本題的關鍵在於深刻理解「動態範圍」的定義:變數的繫結取決於執行時期的「呼叫順序(Calling sequence)」而非程式碼的靜態結構。看到這題,首先要警覺題目並未給定呼叫順序,因此必須在作答時「主動假設」一個合理的呼叫鏈(如 main -> subprogram2 -> subprogram1),接著沿著呼叫鏈由下往上找尋變數,並特別注意同名變數造成的「遮蔽(Shadowing)效應」。

🤖
AI 詳解
AI 專屬家教

【破題】 動態範圍(Dynamic Scope)的變數繫結依賴於執行時期的呼叫堆疊(Call Stack),而非靜態原始碼結構。由於題目未明示呼叫順序,推導參考環境前必須先定義合理的執行鏈。 【論述】

📝 同份考卷的其他題目

查看 107年[資訊處理] 程式語言 全題

升級 VIP 解鎖