申論 1使用下列的BNF 語法,繪出A = A * (B + C * B)的剖析樹(parsing tree)。(16 分)<assign> -> <id> = <expr><id> -> A | B | C<expr> -> <expr> + <term> | <term><term> -> <term> * <factor> | <factor><factor> -> (<expr>) | <id>
本卷皆為申論題,點「看答案與解析」查看擬答。
弱點分析
未作答的題目不計分。看我的紀錄
申論 2考慮下面的C 語言程式片段,並回答下列問題。(每小題10 分,共20 分)int abc(int *k) {*k +=4;return 3 * (*k) - 1; }void main(){inti = 10, j = 10, result1, result2;result1=(i / 2) + abc(&i);result2=abc(&j) + (j / 2); }㈠如果在運算式中的運算元估算的順序是由左到右,則result1 及result2 的值為何?㈡如果在運算式中的運算元估算的順序是由右到左,則result1 及result2 的值為何?
申論 3XML 是經常用在網路資料交換之語言,程式設計師經常使用DOM 或SAX 二種應用程式介面(Application Programming Interface)來存取及處理XML 的資料,請說明這二種應用程式介面之全名、主要特性及比較此二種應用程式介面(在何種狀況下使用會較好)。(24 分)
申論 4下列有關物件導向程式設計的試題。㈠何謂晚期捆束(Late Binding),與虛擬函數(virtual function)及多形(polymorphism)有何關聯?(10 分)㈡何謂函數樣板(Function Template)?有何作用或好處?(8 分)㈢以C++語言寫一個可以將二個值交換的函數樣板;函數名稱為swapValues,二個參數名稱分別為variable1 及variable2。(8 分)
申論 5㈠評估程式語言的優劣,一般可以分為那四種?(4 分)㈡一般程式語言從撰寫到執行,可以分成三種方式,其中一種為編譯,即程式寫好後經過編譯程式(compiler)編譯成執行檔後再執行。請問另外二種是什麼?請說明這二種的作法為何?(10 分)