免費開始練習
高考申論題 110年 [資訊處理] 程式語言

第 一 題

📖 題組:
一、語意分析(Semantics Analysis)對於程式語言的正確執行非常重要。 (一)以下是 Java 和 C++程式,請說明程式編譯、執行結果與其原因,以及程式指令之意義或影響。(18 分) (1)Java 程式 static void test1(){ int n; int [] x = new int[n]; } (2)Java 程式 static void test2(){ int n=0; int [] x = new int[n]; } (3)Java 程式 static void test3(){ int n=0; int [] x = new int[n]; x[0]=0; } (4)C++程式 void test4(){ int n; int x[n]; } (5)C++程式 void test5(){ int n=0; int x[n]; x[0] =0; } (6)C++程式 void test6(){ int n=0; int *x = new int[n]; x[0] =0; } (二)請說明 Java 與 C++語言在陣列宣告上的語意分析的方法,與其優缺點。(7 分)
📝 此題為申論題,共 2 小題

小題 (一)

以下是 Java 和 C++程式,請說明程式編譯、執行結果與其原因,以及程式指令之意義或影響。(18 分) (1)Java 程式 static void test1(){ int n; int [] x = new int[n]; } (2)Java 程式 static void test2(){ int n=0; int [] x = new int[n]; } (3)Java 程式 static void test3(){ int n=0; int [] x = new int[n]; x[0]=0; } (4)C++程式 void test4(){ int n; int x[n]; } (5)C++程式 void test5(){ int n=0; int x[n]; x[0] =0; } (6)C++程式 void test6(){ int n=0; int *x = new int[n]; x[0] =0; }

思路引導 VIP

本題考驗考生對於 Java 與 C++ 兩大主流語言在變數初始化、陣列動態分配、以及記憶體邊界檢查上的語意差異。分析時應專注於:1. 局部變數是否強制初始化。2. 陣列大小為 0 時的合法性。3. 陣列索引越界(Index Out of Bounds)的行為。4. 靜態 vs 動態記憶體分配。建議逐一列點說明每個程式碼片段的行為。

🤖
AI 詳解
AI 專屬家教

【考點分析】 涉及局部變數初始化規則(Uninitialized variables)、陣列動態分配、負值或零值陣列長度處理、以及陣列邊界檢查(Bounds checking)。 【理論/法規依據】

小題 (二)

請說明 Java 與 C++語言在陣列宣告上的語意分析的方法,與其優缺點。(7 分)

思路引導 VIP

此題要求從「語意分析方法」的角度來比較。核心概念在於「靜態語意分析(Static Semantics)」與「動態語意分析(Dynamic Semantics)」。思考 Java 如何透過編譯器檢查與 JVM 執行期檢查來達成安全;而 C++ 如何追求極致效能而放棄部分檢查。

🤖
AI 詳解
AI 專屬家教

【考點分析】 靜態語意檢查(Static Semantic Checking)與動態語意檢查(Dynamic Semantic Checking)的權衡。 【理論/法規依據】

📝 同份考卷的其他題目

查看 110年[資訊處理] 程式語言 全題

升級 VIP 解鎖