102年公務人員高等考試三級考試試題 代號:36240 全一張
類 科:資訊處理
科 目:程式語言
考試時間:2小時 座號:_____________
※注意:(一)禁止使用電子計算器。
(二)不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
一、請回答下列程式語言的問題:
(一)就程式語言來說,什麼是 Object-Oriented languages?Functional languages?Logic languages?Script languages?(12分)
(二)從上述(一)的四種語言中,除 Logic languages 外,每種語言各舉兩個現存的語言。(6分)
(三)最近語言的發展中,像 Functional languages 與 Script languages,都逐漸引進物件導向性質 (OO),就這兩類語言,各舉一個近來發展出且具有 OO 性質的語言。(2分)
二、考慮下述用類似 C 語言的語法寫出的程式:
void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;}
void main() {
int value = 1, list[4] = {2, 3, 4, 5} // Array list is list[1..4]
swap(value, list[1]);
swap(list[1], list[2]);
swap(value, list[value])}
根據以下的參數傳遞 (parameter passings) 模式,逐一列出在程式執行完畢之後的 value 與 list 值:
(一)Passed by value?(5分)
(二)Passed by reference?(5分)
(三)Passed by name?(5分)
三、根據每一個元素 (element) 包含16個英文字母的 circular queue,當用長度m 的陣列 (array) 來實作使用 JAVA 語言寫出下列兩個方法的完整定義:
(一)Enqueue(10分)
(二)Dequeue(10分)
四、對 C# 與 JAVA 的 concurrency 而言:
(一)C# 的 thread 可以是 actor thread 嗎?JAVA 的呢?(5分)
(二)C# 的 thread 可以被非同步呼叫嗎?JAVA 的呢?(5分)
(三)C# 的 sleep method 與 JAVA 的 sleep method 有何不同?(5分)
五、考慮下述 Prolog 程式:
ancestor (x, x).
ancestor(x, y) :- ancestor(z, y), parent(x, z)
parent(Allen, John).
用一個 subgoal 的搜尋樹 (search tree),描述此 Prolog 程式在執行查詢:
ancestor(Allen, X) 時的執行步驟。(10分)
六、考慮下述的 Scheme 程式:
(define A
(lambda ()
(let* ((x 2)
(C (lambda (P)
(let ((x 4))
(P))))
( D (lambda ()
x))
(B (lambda ()
(let ((x3))
(C D)))))
(B))))
(一)這程式列印什麼東西?(10分)
(二)如果Scheme 使用 dynamic scoping 和 shallow binding,它會印出什麼?(10分)