APCS 程式識讀與實作題全方位解題技巧與備考攻略

在面對 APCS(大學程式設計先修檢測)以及各類程式線上評測系統(如 ZeroJudge 高中生解題系統、LeetCode、UVa、HackerRank 等)時,許多考生常卡在「寫不出程式」或「時間不夠」的窘境。本文將從 理解、分析、工具、實戰 四個維度,系統化解析如何有效提升 APCS 的程式識讀題與實作題分數。 一、 策略一:看懂題目,培養關鍵字敏銳度 「看不懂題目,就等於準備交白卷。」 > 這是許多初學者的痛點。APCS 的題目敘述往往結合了生活情境或數學模型,字數繁多。要克服這個障礙,秘訣在於 「多讀題、少動手」 的階段性訓練。 1. 如何訓練「看懂題目」的能力? 刻意練習「只讀不解」 :挑選 20 到 30 題歷屆試題或 ZeroJudge 基礎題, 限制自己只看題目與範例輸入輸出,先不寫程式 。嘗試在 3 分鐘內用自己的話解釋:「這題要我輸入什麼?經過什麼處理?最後輸出什麼?」 熟悉標準出題結構 :APCS 實作題通常包含四大區塊: 問題描述 (情境與規則) 輸入說明 (資料範圍、型態、資料筆數) 輸出說明 (格式要求,如空格、換行) 範例輸入/輸出 (驗證理解的最強工具) 2. 題型大解密 程式識讀題(選擇題) : 主要評量程式邏輯追蹤。核心考點包括 遞迴函式(Recursion) 、迴圈控制、條件判斷、二維陣列、以及基礎指標運算。考生必須具備「肉眼模擬 CPU」的能力。 實作題(程式撰寫) : 每場考試固定 4 題,難度由易入難(第一題通常為基本邏輯與陣列操作;第四題多為複雜圖論、動態規劃或高階演算法)。 實作題採「部分得分制」 ,每題都有明確的測資範圍(如 N <= 100  得 40 分, N <= 100000  得 100 分),作答時應優先搶下所有題目的基本分數。 二、 策略二:分析題目,用紙筆解構演算法 當讀懂題目後,不要立刻敲鍵盤,盲目寫程式只會讓邏輯陷入泥沼。 1. 用紙筆追蹤規律 面對複雜的觀念題或卡住的實作題, 紙與筆是你最好的武器 。 觀念題 :在紙上畫出變數的變更表格(Trace Table)或是遞迴樹(Recursion Tree),一步步記錄每行程式碼執行後的結果,通常就能看出數列或邏輯的「規律」。 實作題 :利用題目提供的「範例輸入」,手動模擬一次運算流程,確認自己的想法與「範例輸出...

Python 動手做「Micro:bit」Unit 2:按按看

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

本篇文章會使用Mu Code Editor來開發micro:bit的應用程式,Mu Code Editor是一個給Python初學者的撰寫Python程式碼的軟體工具,此軟體的操作方式可參考Mu Code Editor官方的教學文章:https://codewith.mu/en/tutorials/

此文的上一篇為 Python 動手做「Micro:bit」Unit 1:點亮 LED

按鈕(Buttons)的原理與應用(Behind the MakeCode Hardware - Buttons on micro:bit)


我們將要製作的功能如下:
1. 按下按鈕 A 時,顯示大寫的字母 A。
2. 按下按鈕 B 時,顯示大寫的字母 B。
3. 按下按鈕 A + B 時,顯示愛心(Heart)。

功能的結果如圖:
按下按鈕 A
按下按鈕 B
按下按鈕 A + B


https://makecode.microbit.org/ 上的Blockly設計程式如下:

那先來試試用 https://makecode.microbit.org/ 上所提供的Blockly程式轉換功能,請轉換成 Python:

將上圖的程式碼複製到Mu Code Editor

讀者可以試著將此程式燒錄到 Microbit 板子上,程式執行結果可能不如預期喔。參考 https://microbit.org/get-started/user-guide/python/#buttons 與 https://microbit-micropython.readthedocs.io/en/v2-docs/tutorials/buttons.html 後,請讀者試著執行下面程式碼:
1
2
3
4
5
6
7
8
9
from microbit import *

while True:
    if button_a.is_pressed() and button_b.is_pressed():
        display.show(Image.HEART)
    elif button_a.is_pressed():
        display.show("A")
    elif button_b.is_pressed():
        display.show("B")

此程式結果有沒有如預期呢?

留言

這個網誌中的熱門文章