- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.假设以下的叙述为一未提供捷径计算能力的程式段,试.ppt
1. 假設以下的敘述為一未提供“捷徑計算”能力的程式段,試用程式設計的技巧,使此敘述經此改寫的動作後,具有與“捷徑計算”之處理方法相同之處理模式。 if A and B then E1 else E2 endif if A then if B then E1 else E2 endifelse E2endif (1) 寫出兩種布耳表式(boolean expression)之AND與OR兩運算子(operator)運算方式並比較兩方法之主要優缺點。 (2) 比較ADA,C,Pascal等三種程式語言對布耳表式運算方式所提供的機制。 (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. 捷徑計算與完全計算之比較:捷徑計算效率較佳,但可能較容易使程式設計師犯下難以除錯之邏輯錯誤;而完全計算則是效率較差,但較不容易使程式設計師犯下難以除錯之邏輯錯誤。 (2) a. ADA利用不同的運算子代表不同之計算,如and與or代表完全計算而and then與or else則代表捷徑計算。 b. C採用捷徑計算。 c. Pascal採用完全計算。 試問在C語言中,最佳化編譯程式(optimization compiler)是否可以將二元布林運算子(boolean operator)前後的兩項子陳式(sub-expression)互相對調?其理由為何? 因為C語言採用捷徑計算,所以最佳化編譯程式不可以將二元布林運算子前後的兩項子陳式互相對調,否則可能會使得執行結果不唯一。 試說明何以動態儲存區配置允許程式中使用遞迴呼叫(recursive call),而靜態儲存區配置則不允許? 因為若使用靜態儲存區配置則在編譯時就已將記憶體配置好,但是遞迴呼叫則是在執行時才知道會呼叫幾次,因為呼叫次數未定故無法事先配置記憶體空間,所以靜態儲存區配置不允許程式中使用遞迴呼叫,而動態儲存區配置則是執行時才分配記憶體空間,所以允許使用遞迴呼叫。 試指出下列各種語言中何者使用靜態儲存區配置?何者使用動態儲存區配置?SNOBOL,APL,LISP,Pascal的區域變數及全域變數,FORTRAN,COBOL。 (1) 靜態儲存區配置:FORTRAN、Pascal的全域變數與COBOL。 (2) 動態儲存區配置:SNOBOL、APL、LISP及Pascal的區域變數。 (1) 試定義何謂靜態資料型態繫結(static type binding),及動態資料型態繫結(dynamic type binding)。 (2) 試說明下列的語言,各主要採取何種型態繫結方式:Fortran,Pascal,Lisp,APL,Smalltalk。 (1) 靜態資料型態繫結:在編譯時,指定變數的型態。例:Fortran,Pascal。 (2) 動態資料型態繫結:在執行時,指定變數的型態。例:Lisp,APL及Smalltalk。 在一個程式中,一個變數(variable)是一個5-tuplename、scope、type、l-value、r-value,請逐一解釋這些tuples。 (1) name:代表名稱。 (2) scope:代表變數可被引用的空間。詳細內容請參考第六章。 (3) type:代表型態。 (4) l-value:代表位址。 (5) r-value:代表值。 1. 把資料的屬性(attribute)繫於(binding)資料名稱之時機若是在執行程式時為之,此種方式稱為:(A)動態繫法(dynamic binding) (B)靜態繫法(static binding) (C)早期繫法(early binding) (D)隨機繫法(random binding)。 2. 把資料的屬性(Attribute)繫於(binding)資料名稱之時機若是在執行前為之,此種方式稱為:(A)動態繫法(dynamic binding) (B)靜態繫法(static bindin
文档评论(0)