Skip to content

模組二:構築核心結構

學習目標

目標級分: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 (先加後乘與函數)


🎯 學習建議

學習順序

  1. B1 → B2 → B3:按照順序學習
  2. 每個單元都包含:概念講解 → 範例程式 → Quiz → 推薦習題
  3. 務必完成每個單元的推薦習題

時間分配

  • B1 字串操作:1-2 週
  • B2 二維陣列:2 週(前綴和與差分陣列需要時間消化)
  • B3 函式:1-2 週

學習重點

重點提示

  1. B1 的字串處理:熟記常用方法,理解不可變性
  2. B2 的預處理技巧:前綴和與差分陣列是從 3 級分邁向 4 級分的關鍵
  3. B3 的模組化思維:學會將問題分解為函式

🆚 模組一 vs 模組二

面向模組一(地基)模組二(核心結構)
資料類型數字、一維陣列字串、二維陣列
程式結構線性、循序模組化、分層
解題策略暴力模擬預處理優化
APCS 級分1-2 級分3 級分
時間複雜度O(N)、O(N²)理解並優化

📊 完成檢查表

在進入模組三之前,請確認你已經:

知識掌握

  • [ ] 能夠熟練處理字串操作
  • [ ] 理解並能實作前綴和與差分陣列
  • [ ] 能夠將問題分解為多個函式
  • [ ] 理解參數傳遞機制與作用域

實戰能力

  • [ ] 完成所有推薦習題
  • [ ] 能在 10 分鐘內寫出基本的字串處理程式
  • [ ] 能正確創建與遍歷二維陣列
  • [ ] 能撰寫簡單的遞迴函式

效能意識

  • [ ] 知道何時使用前綴和優化區間查詢
  • [ ] 知道何時使用差分陣列優化區間更新
  • [ ] 理解字串拼接的效能問題

準備好了嗎?

如果以上檢查表都完成了,恭喜你!你已經建構好核心結構,可以進入模組三:安裝高速電梯了。

💡 學習心得分享

常見困難與解決方法

困難 1:字串不可變性難以理解

  • 解決:多做實驗,觀察字串操作的結果
  • 記住:每次「修改」都是創建新字串

困難 2:二維陣列索引混淆

  • 解決:記住 matrix[row][col] 的順序
  • 用紙筆畫出矩陣,標註索引

困難 3:函式的參數傳遞機制

  • 解決:理解「物件參考傳遞」的概念
  • 記住:可變物件(如 list)在函式內修改會影響外部

困難 4:前綴和與差分陣列的使用時機

  • 解決:記住口訣
    • 多次查詢區間和 → 前綴和
    • 多次更新區間 → 差分陣列

🎓 給老師與家長

教學建議

  1. B1 字串:可以結合實際應用(如密碼強度檢查)來教學
  2. B2 二維陣列:使用視覺化工具展示矩陣操作
  3. B3 函式:強調「單一職責原則」,每個函式只做一件事

評量方式

  • B1:給定字串處理任務,檢查能否正確使用方法
  • B2:給定矩陣操作題目,檢查索引使用是否正確
  • B3:給定複雜問題,檢查能否分解為多個函式

🚀 開始學習

Released under the MIT License.