高普考題庫
93 年 093年公務人員高等考試三級考試暨普通考試第二試

程式語言

本卷皆為申論題,點「看答案與解析」查看擬答。

申論 1保護機制(protection mechanism)是物件導向程式語言的重點之一。在物件導向程式語言(如Smalltalk、C++、Java 等)會採用一些機制,如class、public、protected、private 等來達成保護作用。請問object-based protection 與class-based protection 有何區別?請舉例說明。(20 分)
申論 2我們定義一套算術式語言(expression language),其中包括變數與五種運算子:+(加法)、-(減法)、*(乘法)、/(除法)、^(指數)。^(指數)為向右結合性(rightassociative or associative to the right),其餘四種運算子為向左結合性(left associativeor associative to the left)。例如a-b-c 代表(a-b)-c 而a ^ b ^ c 代表a ^(b ^ c)。當一算術式中包含數個運算子時,我們優先計算^(指數),其次計算*(乘法)與/(除法),最後才計算+(加法)與-(減法)。我們並且可以用習見的括號( 與 )來改變計算順序。例如 a + b *(c + d)/ e ^ f 代表a +((b *(c + d))/(e ^ f))。請用巴納記法(Backus-Naur notation)來表示此算術式語言(expression language)。請特別注意運算子的結合性與計算順序。(20 分)
申論 3請用Java 或C++ 或其他類似的物件導向程式語言,來解釋何謂動態配置(dynamicdispatching)及其優、缺點。註:C++ 的虛擬函數(virtual functions)即採用動態配置。(20 分)
申論 4在函數式程式語言(functional programming language)中,我們經常使用多重型態函數(polymorphic functions)與高階函數(higher-order functions)。假設我們有一個樹狀資料結構,其中每一個葉結點(leaf node)包含一項資料。並且每一個葉結點所包含的資料,必須是相同的資料型態。例如圖中的樹狀資料結構,每一個葉結點包含一項整數型態資料。(20 分)請設計一個函數,將樹狀資料結構壓扁成一序列結構。例如圖中的樹狀資料結構經過壓扁後會變成以下序列結構:(12 27 37 42 52 15 22)。你可以使用Scheme 或ML 或其他類似的函數式程式語言來表示此函數。為求答題方便,你可以適度簡化你所採用的函數式程式語言。請用你所設計的函數來解釋何謂多重型態函數與高階函數及其優點。
申論 5請用C++ 或Java 或ML 或其他類似的程式語言來解釋如何定義與處理執行程式時發生的例外狀況(exception handling)。(20 分)