lawpalyer logo

資訊處理 101 年程式語言考古題

民國 101 年(2012)資訊處理「程式語言」考試題目,共 15 題 | 資料來源:考選部

0 題選擇題 + 15 題申論題

舉出2 種影響程式語言設計之重要因素,並各舉一例說明之。(10 分)
請解釋何謂dangling else 問題?(5 分)一般的高階程式語言是如何解決這個問 題?(5 分)
給定下列的BNF 語法規則(小寫字母x, y, z 為終端符號,大寫字母為非終端符號, S 為起始符號,ε代表空字串): S → AB | CD | E A → xAy | ε B → zB | ε C → xC | ε D → yDz | ε E → xEz | F F → yF | ε 我們可以使用以上語法規則,推導出字串xyz,但推導過程不唯一。請畫出三棵 可推導出xyz 的剖析樹(parse tree)。(9 分) 請列出所有長度為6,且可由以上語法規則推導出的字串。(10 分)
執行下列C++程式,如果有錯誤,寫出所犯之錯誤,如果沒錯誤,寫出所列印之結 果:(15 分) C++測試程式: #include "stdafx.h" // VisualC 所需要 #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) // VisualC 所需要之main() { int mdata[] = {5,2,8,0,10,-8,3,7,18,-4}; int i = 11, j = 10, k = 0, s = 0, a = 0; for (int i = 1; i < j-- - k; ) { if (j > k++ * 3 && (a = mdata[i++]) > 0) s += i++; cout<<" i="<<i<<" j="<<j<<" k="<<k<<" s="<<s <<" a="<<a<< endl; }; cout<<"* i="<<i<<" j="<<j<<" k="<<k<<" s="<<s <<" a="<<a<< endl; for (int s = 0; i <= 12; i++) { s += i; }; cout<<"* i="<<i<<" j="<<j<<" k="<<k<<" s="<<s <<" a="<<a<< endl; return 0; }
請將下列運算指令依所提供之BNF Grammer 轉換成剖析樹(Parsing tree)。(20 分) 運算指令 A := B DIV 10 + C x D BNF Grammer <assign>::=id:=<exp> <exp>::=<term>∣<exp>+<term>∣<exp>-<term> <term>::=<factor>∣<term>×<factor>∣<term> DIV <factor> <factor>::=id∣int∣(<exp>) 須寫出推導過程。
考慮下列C 程式: #include<stdio.h> int f(void) { static int x = 10; //第小題 x++; return x; } int main(void) { int j; for (j = 0; j < 5; j++) { printf("Value of f(): %d\n", f()); } return 0; } 上列程式的執行結果為何?(10 分) C 語言中,一個變數的領域(scope)與生命期(lifetime)可以是不同的,請以 上列函數f 中的變數x,來解釋這句話。(10 分) (請接第二頁) 101年公務人員高等考試三級考試試題 類 科: 資訊處理 全四頁 第 頁 二
簡釋何謂例外處理(Exception handling),提供例外處理對程式語言有何重大益處? 就例外處理程式(Exception handler)之程式結構與繫合例外至例外處理程式 (Binding exceptions to handler)兩議題,比較C++與Java 兩程式語言之設計。(15 分)
以下是以C-like 的語言編寫的一段程式碼,請用以分別解釋如以靜態領域法(Static scoping)與動態領域法(Dynamic scoping)處理變數範圍的話,程式執行結果分別 為何?(應加以解釋)(10 分) int x; Sub1(void) { /* start of Sub1 function */ printf('x = %d', x); } /* end of Sub1 */ Sub2 (void) { /* start of Sub2 function */ int x; x:= 10; Sub1(); } /* end of Sub2 */ main() { /* begin of main function */ x = 15; Sub2(); } /* end of main */ 101年公務人員特種考試警察人員考試、 101年公務人員特種考試一般警察人員考試及 101年特種考試交通事業鐵路人員考試試題 類 科: 資訊處理 全一張 (背面)
以下Java 程式片段試圖定義兩個有繼承關係的類別(classes),Parent 與Child,以 及5 個print 方法(註解中標示的A, B, C, D, E): class Parent { public void print() { // A System.out.println( "In Parent" ); } public void print( String message ) { // B System.out.println( "In Parent" + '\t' + message ); } } class Child extends Parent { public void print( int value ) { // C System.out.println( "In Child" + '\t' + value ); } public void print( String message ) { // D System.out.println( "In Child" + '\t' + message ); } public int print() { // E System.out.println( "In Child" ); return 5; } } 多載(overloading)與覆寫(overriding)是關於print 方法的兩個不同的機制,請 以上列程式中定義的5 個print 方法,說明那幾個是覆寫?那幾個是多載?為什 麼?(請以A, B, C, D, E 方式作答)(15 分) 上列程式定義的2 個類別的5 個print 方法中,那一個的型態部分會造成編譯錯誤? 為什麼?(6 分) (請接第三頁) 101年公務人員高等考試三級考試試題 類 科: 資訊處理 全四頁 第 頁 三
就下列BNF 文法,寫出下列敘述(Statement)以最左推導法(Leftmost derivation) 之詳細推導過程,以及繪出其剖析樹(Parse tree)。(20 分) BNF: <exp> -> <id> + <exp> | <id> * <exp> | ( <exp>) | <id> <id> -> w | x | y | z 敘述: w + x * ( y + z ) 101年特種考試地方政府公務人員考試試題 代號: 類 科: 資訊處理 全一張 (背面) 34460
請試以那些功能是C++允許(支援),而JAVA 卻不允許(不支援)的項目來比較 二種語言的差異。(15 分)
請回答下列關於例外處理(exception handling)的問題: 許多程式語言(例如:C++、Java 與JavaScript)都有例外處理機制:try-catch 敘 述與throw 敘述。請簡述這兩個敘述的差別。(8 分) 下列Java 程式的執行結果為何?(12 分) class FooException extends Exception {} class ExceptionQuestion { public void aMethod() throws FooException { try { System.out.println( "In aMethod" ); throw new FooException(); } catch ( FooException error ) { System.out.println( "in first catch" ); throw new FooException(); } finally { System.out.println( "Finally" ); } } public static void main( String[] args ) { try { System.out.println( "Start" ); ExceptionQuestion x = new ExceptionQuestion(); x.aMethod(); System.out.println( "After method" ); } catch ( FooException e1 ) { System.out.println( "In handler 1" ); } catch ( Exception e2 ) { System.out.println( "In handler 2" ); } System.out.println( "End" ); } } (請接第四頁) 101年公務人員高等考試三級考試試題 類 科: 資訊處理 全四頁 第 頁 四
何謂動態繫合(Dynamic binding)?比較C++與Java 對動態繫合之設計。(20 分) 客戶 業務員 訂單 PK PK 業務員編號 客戶編號 名稱 電話 地址 姓名 地址 電話 PK 訂單編號 FK1 客戶編號 FK2 業務員編號 訂購日期 金額 六、瞭解「結構化查詢語言」(SQL: Structural Query Language)是開發網際網路資料庫 系統必備的技能,假設一個資料庫系統中有三個資料表,資料表的實體關係圖 (Entity-Relationship Diagram)如下圖所示,其中PK 表示為主索引鍵,FK 表示為 外來鍵: 請依序寫出下列各種查詢對應的SQL 敘述:(20 分) 請列出姓名為「甲乙科技」的客戶所有資料。 請列出所有姓「王」的業務員姓名。 請列出訂單金額曾大於一百萬的客戶名稱。 請列出有經手過「甲乙科技」這位客戶訂單的所有業務員的編號與姓名(業務員 的資料不可重複列出)。 客戶編號 訂單編號 K 業務員編號 PK PK P
Java 定義了類別成員的四種存取是那四種權限與意義。(8 分) 六、請解釋副程式參數傳遞方法Call by Value 與Call by Reference 的差異?(10 分) 並請說明C 語言及C++語言所採用的方式為何?(4 分) 七、假設每一個整數陣列的每個元素是占4 個Bytes 的記憶體空間,而陣列A 在記憶體 的起始位址A[0][0][0]是500,陣列維度大小為A[6][4][5],請分別以Row-Major 及 Column-Major 回答A[4][3][2]所在的記憶體位址。(10 分) 八、已知有一個資料庫檔案,稱為Sales_Information,其Attribtes 與儲存內容如下,請 寫出一個SQL 指令要從表格中選出所有Sales 高於$1,000(不含)或是Sales 在$700 (含)及$320(含)之間的商店與售出金額表列,並請寫出執行結果。(13 分) Store_name Sales Date Boston $800 Jan-06-2012 Los Angeles $1500 Jan-05-2012 New York $320 Jan-03-2012 San Diego $250 Jan-07-2012 San Francisco $300 Jan-08-2012 Boston $700 Feb-08-2012 Los Angeles $680 Feb-03-2012 San Francisco $1350 Feb-16-2012 New York $310 Feb-10-2012 San Diego $1000 Mar-06-2012
請回答下列Web 網頁應用的問題: 下列網頁除內容外,也包含CSS(cascading style sheet)指令與JavaScript 程式碼。 請說明此網頁在瀏覽器的呈現效果(可繪圖說明),並解釋當按下網頁內的按鈕 (Add)時,網頁會有什麼變化。(10 分) <html> <head> <title>Foo</title> <style type="text/css"> li { color : red } </style> <script> function exec() { var ul = document.getElementById("list"); var li = document.createElement("li"); var txt = document.createTextNode("Second"); li.appendChild(txt); ul.appendChild(li); } </script> </head> <body > <ul id="list"> <li>First </ul> <input type="button" name="Add" value="second" onclick="exec()"> </body> </html> 我們在製作網頁時,除了HTML 外,我們也可同時使用CSS、DOM(domain object model)與JavaScript。請說明四者所扮演的角色(彼此如何搭配與運作), 可以用上列網頁為例來說明。(10 分)