Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif."— Presentation transcript:

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

2 if then if then E1 else E2 endif else E2 endif

3 (1) 寫出兩種布耳表式 (boolean expression) 之 AND 與 OR 兩運算子 (operator) 運算方式 並比較兩方法之主要優缺點。 (2) 比較 ADA , C , Pascal 等三種程式語言 對布耳表式運算方式所提供的機制。

4 (1) 二種作法: a. 捷徑計算 (short circuit evaluation) 的意義: 對運算式作求值動作時,無需做完整個運算式即可得出最後的結果, 如此的計算方式便稱為捷徑計算。 範例: –(a)A and B 當 A 為 false 時, A and B 之結果即為 false 。 –(b)A or B 當 A 為 true 時, A or B 之結果即為 true 。 b. 完全計算 (complete circuit evaluation) 的意義: 對運算式作求值動作時,必需做完整個運算式,可得出最後的結果, 如此的計算方式便稱為完全計算。 範例: –(a)A and B 當 A 為 false 時,仍然必須處理 B 之值,但結果依然為 false 。 –(b)A or B 當 A 為 true 時,仍然必須處理 B 之值,但結果依然為 true 。 c. 捷徑計算與完全計算之比較: 捷徑計算效率較佳,但可能較容易使程式設計師犯下難以除錯之邏輯 錯誤;而完全計算則是效率較差,但較不容易使程式設計師犯下難以 除錯之邏輯錯誤。

5 (2) a.ADA 利用不同的運算子代表不同之計算, 如 and 與 or 代表完全計算而 and then 與 or else 則代表捷徑計算。 b.C 採用捷徑計算。 c.Pascal 採用完全計算。

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

7 因為 C 語言採用捷徑計算,所以最佳化 編譯程式不可以將二元布林運算子前後的 兩項子陳式互相對調,否則可能會使得執 行結果不唯一。

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

9 因為若使用靜態儲存區配置則在編譯時 就已將記憶體配置好,但是遞迴呼叫則是 在執行時才知道會呼叫幾次,因為呼叫次 數未定故無法事先配置記憶體空間,所以 靜態儲存區配置不允許程式中使用遞迴呼 叫,而動態儲存區配置則是執行時才分配 記憶體空間,所以允許使用遞迴呼叫。

10 試指出下列各種語言中何者使用靜態儲存 區配置?何者使用動態儲存區配置? SNOBOL , APL , LISP , Pascal 的區域變 數及全域變數, FORTRAN , COBOL 。

11 (1) 靜態儲存區配置: FORTRAN 、 Pascal 的全域變數與 COBOL 。 (2) 動態儲存區配置: SNOBOL 、 APL 、 LISP 及 Pascal 的區域變數。

12 (1) 試定義何謂靜態資料型態繫結 (static type binding) ,及動態資料型態繫結 (dynamic type binding) 。 (2) 試說明下列的語言,各主要採取何種型 態繫結方式: Fortran , Pascal , Lisp , APL , Smalltalk 。

13 (1) 靜態資料型態繫結:在編譯時,指定變 數的型態。例: Fortran , Pascal 。 (2) 動態資料型態繫結:在執行時,指定變 數的型態。例: Lisp , APL 及 Smalltalk 。

14 在一個程式中,一個變數 (variable) 是一個 5-tuple ,請逐一解釋這些 tuples 。

15 (1)name :代表名稱。 (2)scope :代表變數可被引用的空間。詳 細內容請參考第六章。 (3)type :代表型態。 (4)l-value :代表位址。 (5)r-value :代表值。

16 1. 把資料的屬性 (attribute) 繫於 (binding) 資 料名稱之時機若是在執行程式時為之,此 種方式稱為: (A) 動態繫法 (dynamic binding) (B) 靜態繫法 (static binding) (C) 早期繫法 (early binding) (D) 隨機繫法 (random binding) 。

17 2. 把資料的屬性 (Attribute) 繫於 (binding) 資 料名稱之時機若是在執行前為之,此種方 式稱為: (A) 動態繫法 (dynamic binding) (B) 靜態繫法 (static binding) (C) 早期繫法 (early binding) (D) 隨機繫法 (random binding) 。

18 3. 程式語言中對變數 (variables) 之描述不 包含 (A) 名稱 (name) (B) 數值 (value) (C) 錯 誤訊息 (error message) (D) 屬性 (attribute) 。

19 4. 那一種程式語言的原始設計中,變數名 稱與記憶體位置的連結一資料結合 (data binding) 在編譯器處理時 (compile time) 決定? (A)LISP (B)PROLOG (C)Pascal (D)APL 。

20 5. 以下語言在資料類型及儲存的處理上 何 者與另三者不同?請選擇。 (A)APL (B)BASIC (C)C (D)PL/1 。 6. 以下語言中,有幾種語言之變數採用動 態繫合型態 (dynamic binding type) : Lisp 、 Scheme 、 C++ 、 Java ? (A)1 (B)2 (C)3 (D)4 。

21 7. 陣列 (array) 的設定採用堆積動態 (heap dynamic) 者的語言為何? (A)FORTRAN 77 (B)Pascal (C)Ada (D)FORTRAN 9O 。 8. 在 APL 中可寫指令 L1,2,3,4,5,6 ;其後又寫 L38 , 就儲存繫合 (storage binding) 方式而言,應屬那一 個變數? (A) 靜態 (static) 變數 (B) 堆疊動態 (static dynamic) 變數 (C) 明示堆積動態變數 (explicit- dynamic variable) (D) 內隱堆積動態變數 (implicit- dynamic variable) 。

22 9. 在以下語言中,指出有幾種語言其變數 採用靜態型態繫合 (static binding type) : ADA , C , FORTRAN , APL (A)1 (B)2 (C)3 (D)4 。 10. 在處理式子 (expression) 時,多數語言均 做強制型態檢查 (type checking) ,而接受合 理的混合式子,做強制轉換 (coercion) ,以 下語言何者不做強制轉換。 (A)ADA (B)C (C)C++ (D)FORTRAN 。


Download ppt "1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif."

Similar presentations


Ads by Google