
106年公務、關務人員升官等考試、106年交通
事業鐵路、公路、港務人員升資考試試題 代號:26250 全一頁
等級: 薦任
類科(別): 資訊處理
科目: 程式語言
考試時間 : 2 小時 座號:
※注意:
禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目得以本國文字或英文作答。
(請接背面)
一、一個小型程式語言的語法(grammar)定義如下:
這個語法描述的程式語言只有分配(assignment)這一種陳述式(statement)格式。
程式 program 包含了特別字(special word)begin,緊接著的是很多行的陳述式用分
號分隔開來,最後使用特別字 end 做結束。運算式(expression)可以是變數本身,
也可以是二個變數用+或−運算子(operator)分隔開來。這些變數用的名稱只有 A、
B和C,請把下列陳述式的演繹過程(derivation)寫下來:(20 分)
二、何謂靜態(static)變數、堆疊動態(stack-dynamic)變數、外顯堆積動態(explicit
heap-dynamic)變數及內隱堆積動態(implicit heap-dynamic)變數?並分別說明其優
點和缺點。(20 分)
三、請比較函數式程式設計(functional programming)和指令式程式設計(imperative
programming)的差別。(20 分)
四、一個簡單的分配陳述式(assignment statements)語法(grammar)如下:
上述的語法說明了分配陳述式的右邊是含有加法、乘法和小括弧的算數運算式(arithmetic
expressions),請使用最左演繹(leftmost derivation)完成下列的陳述式:(20 分)
A = B *(A + C)
五、請說明下列參數傳遞方法:pass-by-value、pass-by-result、pass-by-value-result 和
pass-by-reference 的優點和缺點。(20 分)
<assign> Æ <id> = <expr>
<id> Æ A | B | C
<expr> Æ <id> + <expr>
| <id> * <expr>
|(<expr>)
| <id>
begin
A = B + C;
B = C
end
<program> Æ begin <stmt_list> end
<stmt_list> Æ <stmt>
| <stmt> ; <stmt_list>
<stmt> Æ <var> = <expression>
<var> Æ A | B | C
<expression> Æ <var> + <var>
| <var> − <var>
| <var>