Presentation is loading. Please wait.

Presentation is loading. Please wait.

第三章 變數與繫結 陳維魁 博士 儒林圖書公司. 2 大綱  變數的定義  變數元件  儲存區配置問題  參考的透明性  完全計算  捷徑計算  繫結 (binding)  繫結時間  精選習題.

Similar presentations


Presentation on theme: "第三章 變數與繫結 陳維魁 博士 儒林圖書公司. 2 大綱  變數的定義  變數元件  儲存區配置問題  參考的透明性  完全計算  捷徑計算  繫結 (binding)  繫結時間  精選習題."— Presentation transcript:

1 第三章 變數與繫結 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司

2 2 大綱  變數的定義  變數元件  儲存區配置問題  參考的透明性  完全計算  捷徑計算  繫結 (binding)  繫結時間  精選習題

3 3 變數的定義  變數是由四個元件所組成 名稱 (name) 屬性 (attribute) 引用 (reference) 值 (value)

4 4 變數元件  名稱 變數的名字 並非所有的變數都是有名稱的,有的變數是沒 有名稱的,如指標變數 (pointer variable) 的名稱 僅是引用 (reference) 該變數的方式,並非真正 的名稱,此類變數稱為不具名變數 (anonymous variable) 。

5 5 變數元件  屬性 屬性即為型態,代表變數的性質 如整數、實數、字元、字串及布林值等等 變數的屬性有的程式語言是在設計程式時決定, 如 Pascal ;有些則是在執行的時候決定,如 SNOBOL

6 6 變數元件  引用 即指變數的儲存位址 詳細內容請見第二節之內容

7 7 變數元件  值 變數的值 以 C 語言的 “int x = 1;” 敘述來作為範例,此敘述 表示宣告一個名稱為 x 的變數,其屬性為整數 而值為 1 ,但其在記憶體中的位址則需視系統 是利用靜態儲存區配置或動態儲存區配置才能 決定系統會於何時配置記憶體空間給變數 x 使 用

8 8 儲存區配置問題  靜態儲存區配置 (static storage allocation) 代表程式執行前,配置記憶體空間給變數 如 Fortran , Cobol , Pascal 的全域變數與 PL/1 的 static 記 憶指令 可加速執行的速度。  動態儲存區配置 (dynamic storage allocation) 代表程式執行時,配置記憶體空間給變數 如 Algol 60 , APL , LISP , Snobol 與 Pascal 的區域變數 可增加執行時的彈性,但執行速度較慢

9 9 參考的透明性  referential transparency  意義 程式執行的過程中, 計算運算式 (expression) 後, 應 只能得到一個值, 不能更改或破壞原來執行的環 境這種現象便是參考的透明性

10 10 完全計算  complete circuit evaluation  指對運算式作求值動作時,必需做完整個 運算式才可得出最後的結果,如此的計算 方式便稱為完全計算

11 11 捷徑計算  short circuit evaluation  short cut evaluation  指對運算式 ( 通常是指布林運算式 ) 作求值 動作時,無需做完整個運算式即可得出最 後的結果

12 12 捷徑計算範例  A1×A2×A3×……×A100 若 A1 為 0 ,則 A1×A2×A3×……×A100 之結果為 0 ,不需將整個運算式計算完畢再決定最後的 結果值  A and B and C 若 A 為 false 則運算式的結果為 false ,不需將整 個運算式計算完畢再決定最後的結果值  A or B or C 只要 A 為 true 則整個運算式的結果就為 true ,不 需將整個運算式計算完畢再決定最後的結果值

13 13 捷徑計算  各種語言對 “ 捷徑計算 ” 的處理方式  內定 (default) 法 PASCAL 內定採用完全計算  若在程式段中加入 “{$B-}” 敘述,則在該敘述後之所有布林 運算式將採用捷徑計算  若利用 “{$B+}” 則可恢復完全計算 C 與 C++ 則內定採用捷徑計算  運算子 (operator) 法 ADA 利用 AND THEN 及 OR ELSE 代表採用捷徑計算  A OR ELSE B OR ELSE C 及 A AND THEN B AND THEN C  AND 及 OR 則是代表採用完全計算 JAVA 利用 || 及 && 代表採用捷徑計算,而 | 及 & 則是代表採 用完全計算。

14 14 繫結 (binding)  意義 繫結是指變數的名稱與其位址, 屬性或值相結合 的動作

15 15 繫結時間  程式語言設計時的繫結 程式語言所提供的所有可能資料型態 所有符號的意義等等  程式語言製作時的繫結 所有跟機器相關的特性及變數可能的值 在不同計算機中即使相同的數學運算式,亦可 能得到不同的結果

16 16 繫結時間  翻譯時的繫結 變數的位址 ( 若採靜態儲存區配置法 ) 變數真正的型態 ( 若採外顯式 —explicit 型態法 ) 。  執行時的繫結 變數的位址 ( 若採動態儲存區配置法 ) 變數真正的型態 ( 若採內隱式 —implicit 型態法 ) 變數真正的值

17 17 範例 假設 “y = x+100;” 為一個 C 語言的敘述 (statement) ,若 a. 以 “=” 為指定運算子 (assignment operator) b. 以 “+” 為加法符號 c.“+” 表示整數加法 d.“100” 表示十進位的一百 e. 整數 100 的內部表示法 (internal representation) f.100 為整數 g.x, y 的型態 (type) h.x, y 的值 i.x, y 的位址 (address) j.x, y 可以宣告的型態

18 18 精選習題  假設以下的敘述為一未提供 “ 捷徑計算 ” 能 力的程式段,請利用程式設計的技巧,使 此敘述經此改寫的動作後,具有與 “ 捷徑計 算 ” 之處理方法相同之處理模式 。 if and then E1 else E2

19 19 精選習題  試問在 C 語言中,最佳化編譯程式 (optimization compiler) 是否可以將二元布 林運算子 (boolean operator) 前後的兩項子敘 述 (sub-expression) 互相對調?其理由為何

20 20 精選習題  試說明何以動態儲存區配置允許程式中使 用遞迴呼叫 (recursive call) ,而靜態儲存區 配置則不允許?

21 21 精選習題  試定義何謂靜態型態繫結 (static type binding) 及動態型態繫結 (dynamic type binding)


Download ppt "第三章 變數與繫結 陳維魁 博士 儒林圖書公司. 2 大綱  變數的定義  變數元件  儲存區配置問題  參考的透明性  完全計算  捷徑計算  繫結 (binding)  繫結時間  精選習題."

Similar presentations


Ads by Google