模組二:構築核心結構
學習目標
目標級分:APCS 3 級分
預計學習時間:4-5 週
前置要求:完成模組一
📖 模組介紹
在穩固的地基之上,我們開始建構大樓的主體結構。
本模組將帶你從處理簡單的數字序列,進階到處理更複雜的資料類型——字串與二維陣列。同時,你將學習程式設計中極為重要的「抽象化」與「模組化」概念——函式(Function)。
這標誌著從撰寫零散腳本到建構系統化解決方案的轉變。
🏢 從地基到核心結構
為什麼需要更複雜的資料處理?
APCS 的題目不會永遠只有簡單的數字:
- 需要處理文字資料(密碼學、字串匹配)
- 需要處理表格資料(矩陣運算、地圖網格)
- 需要重用程式碼(避免重複撰寫相同邏輯)
本模組將建立的能力
- ✅ 字串處理:解析文本、字元運算、格式化輸出
- ✅ 二維思維:處理矩陣、網格、表格資料
- ✅ 模組化思維:將問題分解為可重用的函式
- ✅ 效能優化:學習前綴和、差分陣列等進階技巧
📚 單元內容
B1: 解構文本:進階字串與字元操作
核心概念:
- 字串的不可變性(Immutability)
- 字元編碼與
ord()、chr()函式 - 字串方法:
split()、join()、replace() - 字串格式化與 f-string
為什麼這很重要?
字串是程式設計中無處不在的資料類型。APCS 實作題中頻繁出現需要解析和處理文字資料的場景,如密碼轉換、文本分析等。
APCS 應用:
- 字串解碼與加密
- 文本解析與處理
- 格式化輸出
推薦習題:i400 (字串解碼)、c462 (交錯字串)
B2: 超越線性:進階陣列技巧與模擬
核心概念:
- 二維列表(矩陣/網格)的創建與遍歷
- 前綴和(Prefix Sum):O(1) 區間查詢
- 差分陣列(Difference Array):O(1) 區間更新
- 流程模擬技巧
為什麼這很重要?
許多現實問題的資料結構並非簡單的一維線性序列。掌握二維陣列和預處理技巧,能讓你高效解決特定類型的「流程模擬」問題。
APCS 應用:
- 矩陣操作與轉換
- 網格路徑問題
- 區間求和與更新
推薦習題:b965 (矩陣轉換)、h027 (矩陣總和)
B3: 複雜工程學:函式、模組化與作用域
核心概念:
- 函式定義與呼叫
- 參數傳遞:Call by Object Reference
- 作用域:區域變數 vs 全域變數
- 遞迴(Recursion)初探
為什麼這很重要?
當問題變得複雜時,將所有邏輯都寫在單一程式碼塊中會導致混亂、難以除錯和無法重用。函式是解決這一問題的根本工具,讓你能夠將大型問題分解為一系列定義良好的小型任務。
APCS 應用:
- 問題分解
- 程式碼重用
- 提高可讀性與可維護性
推薦習題:f640 (函數運算式求值)、j607 (先加後乘與函數)
🎯 學習建議
學習順序
- B1 → B2 → B3:按照順序學習
- 每個單元都包含:概念講解 → 範例程式 → Quiz → 推薦習題
- 務必完成每個單元的推薦習題
時間分配
- B1 字串操作:1-2 週
- B2 二維陣列:2 週(前綴和與差分陣列需要時間消化)
- B3 函式:1-2 週
學習重點
重點提示
- B1 的字串處理:熟記常用方法,理解不可變性
- B2 的預處理技巧:前綴和與差分陣列是從 3 級分邁向 4 級分的關鍵
- B3 的模組化思維:學會將問題分解為函式
🆚 模組一 vs 模組二
| 面向 | 模組一(地基) | 模組二(核心結構) |
|---|---|---|
| 資料類型 | 數字、一維陣列 | 字串、二維陣列 |
| 程式結構 | 線性、循序 | 模組化、分層 |
| 解題策略 | 暴力模擬 | 預處理優化 |
| APCS 級分 | 1-2 級分 | 3 級分 |
| 時間複雜度 | O(N)、O(N²) | 理解並優化 |
📊 完成檢查表
在進入模組三之前,請確認你已經:
知識掌握
- [ ] 能夠熟練處理字串操作
- [ ] 理解並能實作前綴和與差分陣列
- [ ] 能夠將問題分解為多個函式
- [ ] 理解參數傳遞機制與作用域
實戰能力
- [ ] 完成所有推薦習題
- [ ] 能在 10 分鐘內寫出基本的字串處理程式
- [ ] 能正確創建與遍歷二維陣列
- [ ] 能撰寫簡單的遞迴函式
效能意識
- [ ] 知道何時使用前綴和優化區間查詢
- [ ] 知道何時使用差分陣列優化區間更新
- [ ] 理解字串拼接的效能問題
準備好了嗎?
如果以上檢查表都完成了,恭喜你!你已經建構好核心結構,可以進入模組三:安裝高速電梯了。
💡 學習心得分享
常見困難與解決方法
困難 1:字串不可變性難以理解
- 解決:多做實驗,觀察字串操作的結果
- 記住:每次「修改」都是創建新字串
困難 2:二維陣列索引混淆
- 解決:記住
matrix[row][col]的順序 - 用紙筆畫出矩陣,標註索引
困難 3:函式的參數傳遞機制
- 解決:理解「物件參考傳遞」的概念
- 記住:可變物件(如 list)在函式內修改會影響外部
困難 4:前綴和與差分陣列的使用時機
- 解決:記住口訣
- 多次查詢區間和 → 前綴和
- 多次更新區間 → 差分陣列
🎓 給老師與家長
教學建議
- B1 字串:可以結合實際應用(如密碼強度檢查)來教學
- B2 二維陣列:使用視覺化工具展示矩陣操作
- B3 函式:強調「單一職責原則」,每個函式只做一件事
評量方式
- B1:給定字串處理任務,檢查能否正確使用方法
- B2:給定矩陣操作題目,檢查索引使用是否正確
- B3:給定複雜問題,檢查能否分解為多個函式