阿摩線上測驗 登入

申論題資訊

試卷:94年 - 94 身心障礙特種考試_三等_資訊處理:程式語言#38566
科目:程式語言
年份:94年
排序:0

題組內容

四、有一個程式如下圖所示,請回答下列問題:(20 分) procedure Confuse is X : Integer; Y : Integer; Z : Integer; procedure Sub1 is Z : Integer; begin …X… …Y… …Z… end; procedure Sub2 is X : Integer; begin Sub1; end; begin Sub2; end;

申論題內容

⑴如果是使用 Static Scope,則 Sub1 內 X、Y、Z 這三個變數的範圍該如何處理?

詳解 (共 1 筆)

詳解 提供者:hchungw
procedure Confuse is X : Integer; Y : Integer; Z : Integer; procedure Sub1 is Z : Integer; begin …X… …Y… …Z… end; procedure Sub2 is X : Integer; begin Sub1; end; begin Sub2; end;

靜態作用域下的變數範圍

Sub1 內的 X、Y、Z 變數範圍處理

  • X:在 Sub1 中,X 的範圍是 Confuse 的變數 X。根據靜態作用域規則,Sub1 中的 X 尋找是在 Sub1 所嵌套的最近外部作用域中尋找,這裡是 Confuse 的變數 X。

  • Y:在 Sub1 中,Y 的範圍是 Confuse 的變數 Y。同理,根據靜態作用域規則,Y 尋找的是 Confuse 的變數 Y。

  • Z:在 Sub1 中,Z 是一個新的局部變數,覆蓋了外部 Confuse 的變數 Z。因此,Sub1 中的 Z 是 Sub1 自己的局部變數,而不是 Confuse 的變數 Z。

Sub2 內的變數範圍處理

  • X:在 Sub2 中,X 是 Sub2 的局部變數,覆蓋了外部 Confuse 的變數 X。

當 Sub2 調用 Sub1 時,Sub1 中的變數範圍是根據靜態作用域規則決定的,因此它們的範圍不會受到 Sub2 內部定義的影響。Sub1 中的 X 和 Y 是 Confuse 的變數,Z 是 Sub1 自己的局部變數。

總結

在 Sub1 中:

  • X:引用 Confuse 中的 X。
  • Y:引用 Confuse 中的 Y。
  • Z:引用 Sub1 自己的局部變數 Z,而不是 Confuse 中的 Z。

在 Sub2 中:

  • X:引用 Sub2 的局部變數 X。

調用 Sub2 時,Sub1 中的 X 和 Y 將引用 Confuse 中的 X 和 Y,而 Z 引用 Sub1 自己的局部變數 Z。