程式語言 申論題歷屆試題與參考架構
地方特考三等,民國 102~108 年共 7 份試卷、41 題,其中 39 題附參考答題架構。考這一科的類科:資訊處理。本頁列出歷年全部題目,參考架構只列開頭的「破題」,完整的答題架構、關鍵字與作答提醒請到站內查看。
108 年(考試時間 120 分鐘) 原卷 PDF
- 1
有一函式如下,試問其平均時間複雜度為何?(25 分)Function A(n) { int a = 0; int b = 0; for (int i = 0; i < n; i++) { a++; } printf("Hello"); for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { b++; } } printf("World"); }
(25 分)
參考架構・破題
本題考時間複雜度分析:將函式拆成循序的程式區段,分別計算各段執行次數後相加,再取最高次項,答案為 O(n²)。題目雖問「平均」時間複雜度,但迴圈次數與輸入內容無關,最佳、平均、最差情況皆相同。
完整答題架構與關鍵字:到站內看全文
- 2
請指出下列程式碼不合理之處。(25 分)#include<stdio.h> #include<stdlib.h> int main() { int s ,t; scanf("%d%d", &s,&t); while (s < 30) { if (s < 100 || s >50) { t++; } else if (s > 60 && s<-1) { t++; } else if (s > 10 && s < 100) { t--; } else t++; } system("pause"); return 0; }
(25 分)
參考架構・破題
本題考程式邏輯與流程控制的檢查能力:此程式有無窮迴圈、恆真條件、永遠不成立的條件與不可達程式碼(dead code)等問題,應逐行指出並說明原因與修正方式。
完整答題架構與關鍵字:到站內看全文
- 3
試問下列程式碼的輸出為何?(25 分)#include <iostream> using namespace std; class A { public: int testa; A() :testa(100) { } virtual void f() { cout << "apple" << endl; } void g() { cout << "banana" << endl; } }; class B : public A { public: B() :testb(300) {} void f() { cout << "cat" << endl; } void g() { cout << "dog" << endl; } int testb; }; int main() { B b; A *a = &b; a->g(); a->f(); cout << a->testa << endl; cout << b.testb << endl; system("pause"); return 0; }
(25 分)
參考架構・破題
本題考 C++ 繼承中的虛擬函式(動態繫結)與非虛擬函式(靜態繫結)差異,以及建構子初始化列表。輸出依序為 banana、cat、100、300,各占一行。
完整答題架構與關鍵字:到站內看全文
- 4
試問下列程式碼的輸出為何?(25 分)#include<stdio.h> #include<stdlib.h> int main() { int i, k1 = 0, k2 = 0, k3 = 0; char a[] = "aA123bd45YH*#*"; for (i = 0; a[i] != '\0'; i++) if ((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z')) k1++; else if ((a[i] >= '0') && (a[i] <= '9')) k2++; else k3++; printf("%d,%d,%d\n", k1, k2, k3); system("pause"); return 0; }
(25 分)
107 年(考試時間 120 分鐘) 原卷 PDF
- 1
Java 與 Python 是目前被廣泛使用的程式語言,試就下列特性比較它們之間的不同,包括 Typing、Coding(撰寫程式之難易)、執行環境、程式執行效能、開發 App 的難易度。(15 分)
(15 分)
參考架構・破題
Java 與 Python 都是高階、物件導向且跨平台的語言,但設計哲學不同:Java 強調靜態型別與效能、Python 強調簡潔與開發速度。宜用表格逐項比較五個面向,再做小結。
完整答題架構與關鍵字:到站內看全文
- 2
諾姆·荷姆斯基(Noam Chomosky)定義了 type-0、type-1、type-2、type-3四種語法類型,請說明各類型可接受之語言(Language Accepted)是什麼?相對應之自動機(Automaton)是什麼?(20 分)
(20 分)
參考架構・破題
Chomsky 階層依文法產生規則的限制強弱,把形式語言分為四類,限制愈少、表達能力愈強,所需的自動機也愈強,四類之間是包含關係:type-3 ⊂ type-2 ⊂ type-1 ⊂ type-0。
完整答題架構與關鍵字:到站內看全文
- 3
(一)請解釋程式語言中之變數動態範圍(Dynamic Scope)與語句參考環境(Referencing Environment)。(6 分)
(二)以下為一動態範圍之程式,請分別列出 a, b, c 三點之參考環境。 (9 分)void subprogram1( ) { int X, Y; ... <----------------- a } /* end of subprogram1 void subprogram2( ) { int Y, Z; ... <----------------- b } /* end of subprogram2 void main( ) { int W, Z; ... <----------------- c } /* end of main
(15 分)
參考架構・破題
本題考名稱繫結的範圍規則:動態範圍依「執行期呼叫順序」決定非區域變數的繫結,參考環境則是某敘述處所有可見變數的集合。第二小題須先假設呼叫順序(題目未列出時,依 Sebesta 教科書經典範例:main 呼叫 subprogram2,subprogram2 呼叫 subprogram1),再寫出各點可見變數。
完整答題架構與關鍵字:到站內看全文
- 4
在一 concurrent 環境下,有一共享變數 X 其初始值為 1,程序(process)A 必須加 2 到 X,程序 B 必須將 X 乘以 4。A 與 B 都要執行三個動作1.讀取 X;2.進行算數運算;3.將算好的值寫回 X。試列出最後可能得到的 X 值。(20 分)
(20 分)
參考架構・破題
本題考並行程式的競爭情況(race condition):讀取—運算—寫回三步驟不是原子操作,A、B 交錯執行時可能發生更新遺失(lost update),因此最後的 X 值可能為 12、6、3、4 四種。
完整答題架構與關鍵字:到站內看全文
- 5
假設有一 C++中的 namespace,稱之為 MyStack,該 namespace 中有一變數 topPtr,試列出參考該變數的三種方式。 (15 分)
(15 分)
- 6
試說明 SQL 與 NoSQL,包括資料庫結構、資料庫可擴展性。並列舉它們的優點各三項。(15 分)
(15 分)
參考架構・破題
SQL 資料庫指以關聯模型為基礎、用 SQL 查詢的關聯式資料庫(RDBMS);NoSQL 泛指非關聯式資料庫。兩者在資料結構、擴展方式與一致性取捨上不同,應先比較結構與可擴展性,再各列三項優點。
完整答題架構與關鍵字:到站內看全文
106 年(考試時間 120 分鐘) 原卷 PDF
- 1
試問下列 C++程式碼執行後,其值為多少?(25 分)#include <iostream> using std::cout; using std::endl; int a(int i) { static int v=1; int t=v; v+=i; return t; } int b(int i) { int v=1; int t=v; v+=i; return t; } static int v; int c(int i) { int t=v; v+=i; return t; } int main() { int i; for (i=1; i<=10; i<<=1) { a(i); b(i); c(i); } cout<<"a="<<a(i)<<endl; cout<<"b="<<b(i)<<endl; cout<<"c="<<c(i)<<endl; return 0; }全一張(背面)等 別:三等考試
(25 分)
參考架構・破題
本題考 C++ 變數的儲存期與範圍:函式內 static 區域變數只初始化一次並保留值、一般區域變數每次呼叫重新建立、檔案範圍 static 全域變數預設初始化為 0。輸出為 a=16、b=1、c=15。
完整答題架構與關鍵字:到站內看全文
- 2
下表是一個名為 company 的資料庫裡面 user 的表格username email password creat_time請使用 SQL 語法加入三筆資料,如下表。(25 分)username email password creat_time John [email protected] john 2017-01-01 03:26:30 Marry [email protected] marry 2017-10-10 20:15:56 Stephen [email protected] stephen 2017-12-25 23:59:59
(25 分)
本題含圖表或公式,請對照原卷 PDF。
- 3
試問下列程式碼執行後,其值為多少?(25 分)#include <stdio.h> #include <stdlib.h> int main(void) { int x = 5, y = 7; if(x=6){ printf("%d\n", x*y); } else { printf("%d\n", x+y); } if (x == 8) { printf("%d\n", x*(x+y)); } else { printf("%d\n", x - y); } printf("%d\n", x); printf("%d\n", y); system("pause"); return 0; }
(25 分)
參考架構・破題
本題考 C 語言中指定運算子 = 與相等運算子 == 的差異:if (x=6) 是把 6 指定給 x,運算式值為 6(非零即真),因此 x 被改成 6。輸出依序為 42、-1、6、7。
完整答題架構與關鍵字:到站內看全文
- 4
寫出一 BNF 文法,產生符合以下條件的數字 N:N 為一個二進位數字。(25 分)
(25 分)
參考架構・破題
本題考 BNF(Backus-Naur Form)的定義與遞迴產生規則。二進位數字是由 0、1 組成、長度至少 1 的字串,關鍵在用「遞迴」表達任意長度,並說明起始符號、終端與非終端符號。
完整答題架構與關鍵字:到站內看全文
105 年(考試時間 120 分鐘) 原卷 PDF
- 1
請試述下列名詞之意涵:(每小題 3 分,共 9 分)
(一) Dead lock
(二) NP-Complete Problem
(三) Cookie
(9 分)
- 2
AlphaGo 擊敗人類高段的職業圍棋棋士,主要是利用深度學習技巧,也讓深度學習已成為臺灣未來科技重要產業,請回答下列問題: (每小題 4 分,共 20 分)
(一)何謂神經網路?
(二)何謂深度學習(deep learning)?
(三)神經網路因為架構問題無法做到很多層,為何 Deep learning 可以做到很多層?
(四)何謂 CNN(convolutional neural network)?
(五)在深度學習裡,除了 C 以外,另一種常用的語言為 Python,請試述 Python 跟 C 有何差別?
(20 分)
參考架構・破題
本題以 AlphaGo 為引子,考類神經網路到深度學習的基本概念,五小題各 4 分,每題寫定義+2~3 個重點即可,第三小題是鑑別度所在(為何以前做不深、現在做得深)。
完整答題架構與關鍵字:到站內看全文
- 3
利用二分法搜尋(binary search),從 100000 筆資料中,搜尋某一特定資料,最多會比對幾次?(5 分)
(5 分)
參考架構・破題
二分搜尋每比對一次就把搜尋範圍砍半,最多比對次數為 ⌈log2(n+1)⌉,也就是找最小的 k 使 2^k − 1 ≥ n。本題 n = 100000,答案為 17 次。
完整答題架構與關鍵字:到站內看全文
- 4
試就 Object Oriented language 與 Functional language,回答下列問題:
(一)比較兩種語言之不同與優缺點。 (5 分)
(二)續題(一),請對下列五種語言做歸類:C、Java、C++、Lisp、Prolog,並以下表作答於試卷上(如果不屬於這兩類語言,請在 None 打勾)。 (10 分)語言 Object Oriented language Functional language None C Java C++ Lisp Prolog
(15 分)
本題含圖表或公式,請對照原卷 PDF。
- 5
C 語言宣告一陣列如 int *x[5]={“BENZ”, “AUDI”, “LEXUS”, “APPLE”, “BMW”};試說明下列指標運算的結果為何?(每小題 3 分,共 9 分)
(一)*(x+1)
(二)*(x+1)+1
(三)**(x+1)全一張(背面)等 別:三等考試
(9 分)
參考架構・破題
本題考指標陣列與指標運算。x 是含 5 個元素的指標陣列,每個元素指向一個字串常值的第一個字元;x+1 指向第 2 個元素,再依解參考層數得到字串位址或字元。
完整答題架構與關鍵字:到站內看全文
- 6
在程式語言中變數可歸類成下列幾種:static variable、stack-dynamic variable、explicit heap-dynamic variable、implicit heap-dynamic variable。
(一)請比較上述變數的差異。 (12 分)
(二)在 C++語言裡,如果有變數定義如下 int *data; data=new int; delete data; 請問“data”屬於那一種變數?試說明之。(3 分)
(15 分)
參考架構・破題
本題出自 Sebesta 依「生命期(lifetime)與儲存繫結」對變數的四種分類,要比較配置時機、配置位置、存取方式與優缺點,再判斷 C++ new 產生的變數類別。
完整答題架構與關鍵字:到站內看全文
- 7
請回答下列問題:(每小題 5 分,共 10 分)
(一)給定一個整數陣列 S[n],請寫出一個副程式 int SelectionK(int *S, int n),此函數可以回傳(return)第 K 大的數值。
(二)給定一個陣列 S[n],請寫出一個演算法,此演算法可以用平均時間複雜度為 O(n)的效率,回傳(return)第 K 大的數值。
(10 分)
參考架構・破題
本題考「選擇問題(selection problem)」。第一小題寫出正確可執行的副程式即可,第二小題要寫出平均 O(n) 的 Quickselect(以分割為基礎的隨機選擇),並說明為何平均是線性時間。
完整答題架構與關鍵字:到站內看全文
- 8
假設類別 A、B、C、D 的繼承關係如下:class A; class B; class C: B; class D: C { A object;} main() {D objectD; },程式執行後,請寫出解構函式的呼叫順序。(5 分)
(5 分)
- 9
考慮下列文法:S -> SS |(S)|()(每小題 4 分,共 12 分)
(一)請指出此文法的 terminal symbol、non-terminal symbol 及 start symbol。
(二)針對()()()字串,推導出 left-most derivation sequence。
(三)針對((( )))()字串,推導出 right-most derivation sequence。
(12 分)
參考架構・破題
本題考 Context-Free Grammar 的組成與最左、最右推導。文法 S → SS | (S) | () 產生所有配對正確的非空括號字串;推導時每一步都要寫出套用哪條規則。
完整答題架構與關鍵字:到站內看全文
104 年(考試時間 120 分鐘) 原卷 PDF
- 1
請試述下列名詞之意涵:(每小題 3 分,共 15 分)
(一) Context-Free Grammar
(二) LR parser
(三) Binding time
(四) Turing Machine
(五) Dynamic Programming
(15 分)
- 2
10 TBytes 換算為多少 bits?(5 分)
(5 分)
參考架構・破題
本題考資料單位換算:1 Byte = 8 bits,T(Tera)在電腦儲存領域通常採二進位 2^40,但國際單位制為 10^12。答案應以二進位為主,並補充十進位結果。
完整答題架構與關鍵字:到站內看全文
- 3
關於副程式中參數的 binding 可分為 shallow binding、deep binding 和 ad hoc binding等方法:
(一)請解釋上述三種 binding 的差別與優缺點。(9 分)
(二)下列為 Java Script 的 syntax codes,請問執行 sub1 之後,最後 x 的輸出(在 sub2)為多少?請根據上述三種 binding 分別作答。(6 分)function sub1() { var x; function sub2() {altert(x);} // 輸出x function sub3() { var x; x=3; sub4(sub2);} function sub4(subx) { var x; x=4; subx();} x=1; sub3();};
(15 分)
參考架構・破題
本題出自 Sebesta 對「以副程式作為參數傳遞時,其參考環境(referencing environment)該如何決定」的討論。三種方法差在取用哪一個呼叫點或定義點的環境,代入程式即可得到 4、1、3 三個不同答案。
完整答題架構與關鍵字:到站內看全文
- 4
函數 f(n)定義如下:f(1) = 1, f(0) = 0, f(n) = f(n-2) + 2f(n-1),請問 f(5)等於多少?(5 分)
(5 分)
- 5
對於字串的長度,不同的語言有不同的設計方式,包括 static length string、limited(每小題 6 分,共 12 分)dynamic length string、dynamic length string:
(一)請解釋上述三種不同設計方式。
(二)對於 Java、C 和 C++這三種語言,它們對字串長度設計的方式各採取那種方式或混和?全一張(背面)等 別:三等考試
(12 分)
參考架構・破題
本題出自程式語言概念中「字串型別的長度設計」(Sebesta 教科書的分類),先分別定義三種長度設計,再對照 Java、C、C++ 的實作說明各屬哪一種或混用。
完整答題架構與關鍵字:到站內看全文
- 6
給定下列的文法(Grammar):<assign>Æ<id> = <expr> <id>=A|B|C <expr>Æ<expr>+<id> | <expr>*<id> | (<expr>) | <id>請畫出右列字串:A = ((A*B)+C*A),所對應 right-most derivation sequence 與對應的分析樹(parse tree)。(5 分)
(5 分)
參考架構・破題
本題考 BNF 文法的最右推導(rightmost derivation)與剖析樹。題目中的 Æ 是轉檔後的箭頭(→)。關鍵是每一步都展開「最右邊」的非終端符號,並正確拆解括號結構。
完整答題架構與關鍵字:到站內看全文
- 7
請計算下列式子最後的 y 值:(每小題 3 分,共 15 分)
(一) int x=3, y=2; y *= ++x + 3;
(二) int x=3, y=2; y /= x++;
(三) int x=10, y=1; y = x++ + --y;
(四) int x=10, y=1; y /= ++x + y--;
(五) int y=0; for(int k=0; k < 10; y+=k) { if(++k == 6) continue; k++;}
(15 分)
- 8
若採取二種不同參數傳遞的方法:pass by reference、pass by value result,執行下列程式,則 x 與 y 的值各為多少?(8 分)int x=1, y=3; void fun(int a, int b); void main() { int x=2; fun(x, y); printf("x=%d, y=%d", x, y); } void fun(int a, int b) {a=b+x; b=a+y;}
(8 分)
參考架構・破題
本題考參數傳遞方式與變數範圍(scope)的交互作用。須先釐清 fun 內的 x、y 指的是哪一個變數:在 C 類語言的靜態範圍(static scoping)下,fun 內的 x、y 都是全域變數,main 中的區域 x 只透過參數傳入。
完整答題架構與關鍵字:到站內看全文
- 9
(一)如果有兩個整數 x, y,請寫出相對應的副程式碼,使得這兩數可以做交換。 (5 分)
(二) T c[10]; int m=3, n=2;(T 為某種 type,可能為 int、float、double 等),請寫出相對應的副程式碼 swap,當呼叫形式為 swap(c, m, n),可讓 c[m]跟 c[n]的值做交換,即使 T 的型態不同,此程式一樣可以正確處理。 (5 分)
(10 分)
參考架構・破題
本題考參數傳遞與泛型。第(一)小題要點出傳值無法交換,必須用指標或參考;第(二)小題要讓同一份程式處理不同型別,最直接是 C++ 的 template(亦可用 C 的 void* 加 memcpy)。
完整答題架構與關鍵字:到站內看全文
- 10
利用 template 的概念,寫出一個函數 power(x, n)可以計算 xn,不管 x 為實數、整數或自然數,但假設 n 為整數。 (10 分)
(10 分)
103 年(考試時間 120 分鐘) 原卷 PDF
- 1
定義下述文法(grammar):expression → expression + expression | expression - expression | type type → int | double根據上面之文法,請畫出 int + int + int 兩個不同的剖析樹(parsing tree)。(10 分)根 據 上 面 之 文 法 , 請 導 出 所 有 只 包 含 2 個 type 之 expression 的 結 果 。 該expression 一個 type 為 int,另一 type 為 double。(10 分)請說明何謂模稜兩可的文法(ambiguous grammar)。(5 分)
(25 分)
參考架構・破題
本題考文法的推導、剖析樹與模稜兩可文法。給定文法對 + 與 - 未規定結合性,所以 int + int + int 可產生兩棵不同的剖析樹,這正是 ambiguous grammar 的典型例子。
完整答題架構與關鍵字:到站內看全文
- 2
網際網路程式與應用的發展,結合了許多技術與分析方法,請用數行文字,說明下列幾個網際網路應用技術的專有名詞:說明 HDFS 英文全名,其架構元素與基本運作特性。(8 分)說明 MapReduce 的特性及 Map 和 Reduce 的運作方式。(8 分)說明 NO SQL 的英文全名及其特性。(9 分)
(25 分)
參考架構・破題
本題考巨量資料處理的三項核心技術:Hadoop 的分散式檔案系統 HDFS、分散式運算模型 MapReduce,以及非關聯式資料庫 NoSQL。每小題都要寫出英文全名、架構與特性。
完整答題架構與關鍵字:到站內看全文
- 3
請以物件導向,多型(polymorphism)的技術,改寫下列計算薪水的程式,其中經理(manager)薪水是 40000,工程師(engineer)薪水是 35000。int getPay(String employeeType) { if (employeeType ==“manager”) { return 40000; else if (employeeType == “engineer”) return 35000; }設計 Employee, Manager, Engineer 等三個類別及其屬性(attribute)與方法(method),方法包括建構子(constructor)。其中 Employee 是抽象類別,有一個保護(protected)屬性薪水(salary);Manager 和 Engineer 是 Employee 的子類別。(18 分)畫出 UML 類別圖。(7 分)(背面)等 別: 三等考試
(25 分)
參考架構・破題
本題要以多型取代 if-else 型別判斷:把「依員工類型決定薪水」的責任交給各子類別,由抽象類別 Employee 定義共同介面,Manager、Engineer 覆寫(override),呼叫端只需 emp.getPay(),新增職務時不必修改既有判斷式(符合開放封閉原則)。
完整答題架構與關鍵字:到站內看全文
- 4
例外(exception)處理的應用:試說明 Java 對於例外處理的抓取或宣告規則(catch or declare rule)。(7 分)填寫下列空格,完成以下 inputScore 方法。該程式要求使用者輸入成績,若輸入為非數字,則拋出例外(exception)警示,迴圈繼續,直到使用者輸入合理的數字成績。若輸入的成績沒有介於 0-100 間,則把例外向上拋給呼叫的方法。(18 分)public static void inputScore () (1) { String str; boolean valid; double score = 0; Scanner sc = new Scanner(System.in); do { valid = true; System.out.println("Input the score"); str = sc.next(); try { score = Double.parseDouble(str); } catch ( (2) ){ System.out.println(e); valid = false; } } while ( (3) ); if (score >100 || score <0) throw (4) ("分數未介於 0-100 間"); System.out.println(score); }
(25 分)
參考架構・破題
本題考 Java 例外處理:先說明 checked exception 必須「捕捉或宣告」的規則,再依題意完成程式——非數字輸入由 try-catch 就地處理並重新輸入,分數超出範圍則拋出例外交給呼叫者。
完整答題架構與關鍵字:到站內看全文
102 年(考試時間 120 分鐘) 原卷 PDF
- 1
A 君寫了以下的物件導向程式碼:class employee : public listcontainer { public: string getName(); Address GetAddress(); PhoneNumber getWorkPhone() ; bool isZipCodeValid(Addrss address); // given an address, this function check if the address’s zip // code is valid or not bool isPhonenumberValid(PhoneNumber phone); // given a phone number, this function check if the phone no. // is valid or not. public: static string _name ; static Address addr ; static PhoneNumber phoneno ; } A 君寫程式的思維是這樣子的,他想要用 linked list 來儲存姓名、住址以及電話。尤其是住址的部分,由於需要切割住址內容然後儲存到 linked list 中,所以他繼承了 listcontainer(系統提供的 list library)。另外 A 君實做了幾個 method 來幫忙判定住址與電話號碼的格式是否合法。請問上述的物件導向程式碼,犯了那一些違反物件導向原則的錯誤?(25 分)
(25 分)
參考架構・破題
本題是物件導向設計的診斷題:逐一指出程式碼違反的原則(封裝、繼承的正確使用、單一職責、高內聚低耦合),並對每一點提出改正方式。答題時「指出問題 → 說明違反哪個原則 → 提出改法」三段式最清楚。
完整答題架構與關鍵字:到站內看全文
- 2
以下的 C 程式碼需要實作一個 SwapAndAdd function。SwapAndAdd()要達成的功能是交換兩個變數,然後建立一個新的整數變數,將兩個變數相加存在該變數之後,回傳新的變數位址讓呼叫端來使用。以下的 main()顯示如何使用這個SwapAndAdd() function。int main() { int x, y, *result ; x = 100 ; y = 50 ; result= SwapAndAdd(......); // 請填寫參數 x,y 應如何傳遞來使用 SwapAndAdd printf(“%d %d %d”, x, y,(*result)); }在這個 main()中,我們會將 x,y 變數作為參數傳到 SwapAndAdd()。如果SwapAndAdd()實作正確,這個 main()會印出50 100 150請以 C 語言完成 SwapAndAdd()的程式碼,並且將 main()當中的呼叫參數填入。(25 分)全一張(背面)等 別: 三等考試類 科: 資訊處理
(25 分)
參考架構・破題
本題考 C 語言的傳址呼叫(call by reference)與動態記憶體配置:要在函式內交換呼叫端的 x、y,必須傳入位址(&x, &y);要回傳「新建立的變數位址」給呼叫端使用,必須用 malloc 在堆積(heap)配置,不能回傳區域變數的位址。
完整答題架構與關鍵字:到站內看全文
- 3
以下的語法是 ambiguous string → string + string | string – string |0|1|2|3|4|5|6|7|8|9
(一)這個文法針對 9-5+2 可以產生兩個剖析樹(parsing tree),請畫出這兩個剖析樹。(10 分)
(二)為了糾正這樣的問題,請將上述的語法改寫成左結合(Left Associativity)來產生單一的剖析樹。以 9-5+2 為例,你的左結合語法所產生的剖析樹,將可以單一的解釋 9-5+2 為((9-5)+2)。(15 分)
(25 分)
參考架構・破題
本題考文法歧義(ambiguity)與運算子結合性。原文法 string → string + string | string - string | digit 允許同一字串有兩棵剖析樹,因減法不具結合律,(9-5)+2=6 與 9-(5+2)=2 結果不同;改寫成左遞迴文法即可強制左結合。
完整答題架構與關鍵字:到站內看全文
- 4
Internet and web programming 其實結合了許多的技術與標準,請解釋下列幾個 web programming 常用到的縮寫專有名詞。請寫出完整的英文名詞,然後請用數行文字解釋這個專有名詞所代表的實質意義與技術內容。
(一)CSS(6 分)
(二)AJAX(6 分)
(三)XML DOM(6 分)
(四)SOAP(7 分)
(25 分)
其他等別的「程式語言」
- 程式語言(高考三級)(41 題)
題目來源:考選部考畢試題查詢平臺(政府資訊公開資料);參考架構為本站自撰,僅供準備方向參考,非官方標準答案。最後更新:。