2025年10月14日 星期二

最大化最小距離(牛棚放牛問題)

# 例題 : # 題目: # 有 N 個牛棚位置(已排序),要放 K 頭牛, # 希望「任意兩頭牛之間的最小距離」最大化。 # 輸入: # ``` # 位置 = [1, 2, 8, 12, 17] # K = 3 # ``` # 期望輸出: # ``` # 最大化後的最小距離 = 7 # # 放在位置 1, 8, 17 # ``` # 思路: # 設最小距離為 d, # 若能成功放完 K 頭牛,代表 d 可行; # 否則 d 太大,需縮小。 # 用二分搜尋尋找最大的可行距離。 def can_place(a, k, d): count = 1 last = a[0] for x in a[1:]: if x-last >=d: count+=1 last=x if count==k: return True return False def max_min_d(a, k): a.sort() lo,hi = 0,a[-1]-a[0] while lo<=hi: m = (lo+hi)//2 if can_place(a,k,m): ans = m lo = m+1 else: hi = m-1 return ans print(max_min_d([1, 2, 8, 12, 17], 3)) # 7 # 重點概念: # 「距離越大越難放下」具有單調性 → 二分搜尋最大可行距離。

二分搜簡例

# 題目: # 某公司每天能完成 x 單位工作量,共有 n 項工作要完成。 # 請問至少要幾天才能做完? # 例如: # 每天完成量 = 3 # 總量 = 17 # 則答案為 6 天(因為 3×5=15 <17,3×6=18 ≥17)。 # 思路: # 天數越多 → 工作越可能完成, # 這是一個「單調可行性」問題。 def min_days(w,ws): lo,hi = 0,ws ans = hi while lo<=hi: m = (lo+hi)//2 if m * w ==ws: ans = m return ans elif m*w>ws: ans = m hi = m -1 else: lo = m +1 return ans print(min_days(3, 17)) # 6 print(min_days(5, 25)) # 5 print(min_days(15, 150)) # 10 print(min_days(105, 150000000000000000150000000000000)) # Output: # 6 # 5 # 10 # 1428571428571428572857142857143

最小可能的「最大段和」-- 二分搜應用

題目(Problem) 給定一個長度為 n 的正整數陣列 A[0..n-1],你要把它切成 恰好 k 段連續子陣列(k ≤ n)。定義每段的「段和」為該段元素總和。目標是最小化所有段和中的最大值。 必須保持原來順序、只能切割、段與段不可交錯(連續切段)。 回傳(或輸出)。 def can_split(A, k, cap): """在每段和 ≤ cap 的限制下,最少需要幾段;是否 ≤ k。""" segments = 1 cur = 0 for x in A: if cur + x <= cap: cur += x else: segments += 1 cur = x if segments > k: # 及早停止 return False return True # 需要的段數 ≤ k def minimize_largest_sum(A, k): lo, hi = max(A), sum(A) # 下界:至少要容得下最大元素;上界:全部一段 ans = hi while lo <= hi: mid = (lo + hi) // 2 if can_split(A, k, mid): # mid 可行 → 嘗試更小 ans = mid hi = mid - 1 else: # mid 不可行 → 增大容量 lo = mid + 1 return ans A ,k = [7, 2, 5, 10, 8], 2 print(minimize_largest_sum(A, k)) A ,k = [7, 2, 5, 10, 8], 3 print(minimize_largest_sum(A, k)) # Output: # 18 # 14

最小可能的「最大段和」暴力解

題目(Problem) 給定一個長度為 n 的正整數陣列 A[0..n-1],你要把它切成 恰好 k 段連續子陣列(k ≤ n)。定義每段的「段和」為該段元素總和。目標是最小化所有段和中的最大值。 必須保持原來順序、只能切割、段與段不可交錯(連續切段)。 回傳(或輸出)最小可能的「最大段和」。 例子 A = [7, 2, 5, 10, 8], k = 2 最佳切法是 [7, 2, 5] | [10, 8],兩段和分別為 14 與 18,最大為 18;證明不存在更小的可能,答案是 18。 a = [7, 2, 5, 10, 8] k = 2 minmax = float('inf') for i in range(0,5-1): left = a[:i+1] right = a[i+1:] print(left,right) if max(sum(left),sum(right))

二分搜應用簡例-求根號2

lo,hi = 0,2 m = (lo+hi)/2 while abs(m*m-2)>0.0000001: if m*m > 2: hi = m else: lo = m m = (lo+hi)/2 print(m) # Output: # 1.4142135381698608

2025年10月7日 星期二

適合初學者的暴力法-背包

import itertools weights = [2, 3, 4, 5] values = [3, 4, 5, 6] capacity = 8 vmax = 0 smax = [] for s in range(len(weights)+1): for c in itertools.combinations(weights, s): if sum(c)<=capacity: # print(c) v = 0 for j in c: v =v+ values[weights.index(j)] # print(v) if v > vmax: vmax = v smax = c print(vmax,smax) # Output: # 10 (3, 5)

2025年9月17日 星期三

使用深津式 框架 Prompt 範例

提示詞:

#Instructions
你是一位英文老師,負責解釋文法並設計練習題。

#Constraints
文章限制 200 字
使用繁體中文
每個例句附上翻譯

#Input
主題:被動語態(Passive Voice)的用法

#Output
簡單定義
三個例句(英文 + 中文翻譯)
兩題練習題(附答案)

AI輸出的示範結果

簡單定義
被動語態(Passive Voice)強調「動作的接受者」。
句型結構為:主詞 + be 動詞 + 過去分詞 (p.p.) + (by + 動作者)。
若動作者不重要,可省略 by 片語。

例句
The homework was finished by Tom.(這份作業被湯姆完成了。)
English is spoken in many countries.(英文在許多國家被使用。)
The window has been broken.(這扇窗戶已經被打破了。)

練習題
改寫成被動語態:The teacher teaches math.
答案:Math is taught by the teacher.

翻譯成英文:這本書是昨天出版的。
答案:The book was published yesterday.

使用 CO-STAR 框架的 Prompt 範例

提示詞:
 #Context(情境) 我正在準備英文考試,常常在作文中錯用被動語態,需要更清楚的解釋與練習。
 #Role(角色) 你是一位英文老師,專長是高中英文文法教學。 
 #Specific Question(具體問題) 請解釋「被動語態」的用法,並提供例句與練習題。
 #Format(格式) 
 	輸出需包含三部分: 
       1. 簡單定義 
       2. 三個例句(英文 + 中文翻譯) 
       3. 兩題練習題(附答案) 
 #Style(風格) 簡單、淺顯易懂,適合高中生。
 #Tone(語氣) 親切、鼓勵,像家教老師一樣。
 #Example(範例) 
   定義:現在完成式表示過去到現在的經驗。 
   例句:I have visited Japan twice.(我去過日本兩次。) 
   練習題:造 3 句現在完成式句子。 

 #Multi-step(多步驟)
   1. 先解釋文法規則
   2. 接著舉例句 
   3. 最後設計練習題


AI:
被動語態(Passive Voice)
簡單定義
  ● 結構:主詞 + be(依時態/人稱變化)+ 過去分詞 p.p.(+ by + 動作者)
  ● 功能:突出「動作的承受者」或「結果」,當動作者未知/不重要可省略 by + 人。
  ● 主動→被動三步驟:把受詞變主詞 → 動詞改 be + p.p. → 原主詞放 by 字片語或省略。

例句(英文 + 中文)
The bike was fixed (by the mechanic).
● 這台腳踏車被修好了(由技師)。

English is taught at our school.
● 我們學校有教授英文(英文被教授)。

The package has been delivered.
● 這個包裹已經被送達。

練習題(附答案)
改寫成被動:Someone stole my wallet yesterday.
● 答案:My wallet was stolen yesterday.

翻成英文(用被動):這座橋是 1990 年建成的。
● 答案:The bridge was built in 1990.

● 小提醒:
  ● 只能及物動詞可做被動(有受詞)。
  ● 時態由 be 動詞承擔(如 is/was/has been/will be),p.p. 不變。
  ● 若想更口語或不強調動作者,直接省略 by + 人。

CO-STAR 框架

CO-STAR Prompt 框架八大元素
Context(情境)
● 提供任務背景,讓 AI 知道「為什麼要做這件事」。
● 範例:你正在準備英文考試,需要針對文法弱點進行加強。

Role(角色)
● 指定 AI 扮演的身份,影響其專業角度。
● 範例:你是一位英文老師,專長是高中英文文法教學。

Specific Question(具體問題)
● 清楚寫出任務或問題,避免籠統。
● 範例:請解釋現在完成式與過去完成式的差異。

Format(格式)
● 規定輸出結構(清單、表格、段落等)。
● 範例:請以「定義、例句、練習題」三部分呈現。

Style(風格)
● 控制輸出的表達方式。
● 範例:簡單、淺顯易懂,適合高中生。

Tone(語氣)
● 決定回答的態度與氛圍。
● 範例:鼓勵式、親切、像家教老師一樣。

Example(範例)
● 提供參考輸出,讓 AI 模仿格式與風格。
● 範例:
  定義:現在完成式表示過去到現在的經驗。  
  例句:I have visited Japan twice.(我去過日本兩次。)  
  練習題:造 3 句現在完成式句子。  
Multi-step(多步驟)
● 要求 AI 先思考步驟,再生成答案,避免跳過推理。
● 範例:
  第一步:列出文法規則
  第二步:舉例句
  第三步:設計練習題

小結
深津式 Prompt 側重結構簡單、好記,快速清楚。
CO-STAR Prompt 更完整,適合複雜任務或需要一致風格的場景。
建議:教學場合用深津式方便學生上手,專業產出(教材、文章、專案)則可採用 CO-STAR。

深津式 Prompt 例

深津式 Prompt 例

Prompt:
#Instructions 你是一位程式設計老師,負責解釋程式並設計練習題。 

#Constraints - 文章限制 200 字 - 使用繁體中文 - 每個程式碼附上解釋 

#Input 主題:二分搜尋與線性搜尋的差異 

#Output 1. 簡單定義 2. 三個例子(程長碼 + 中文解釋) 3. 練習題與答案


ChatGPT:

二分搜尋與線性搜尋的差異

簡單定義
線性搜尋:從頭到尾逐一比對,適用於未排序的資料,時間複雜度 O(n)。
二分搜尋:針對排序好的資料,透過中點切分逐步縮小範圍,時間複雜度 O(log n)。

例子
線性搜尋
def linear_search(arr, target):
    for i, v in enumerate(arr):
        if v == target:
            return i
    return -1

中文解釋:逐一比對陣列中的元素,直到找到目標或遍歷結束。

二分搜尋
def binary_search(arr, target):
    left, right = 0, len(arr)-1
    while left <= right:
        mid = (left + right)//2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

中文解釋:每次取中點,比大小後縮小搜尋範圍。


比較範例

輸入 arr = [2,4,6,8,10], target=8

線性搜尋:第 4 次找到

二分搜尋:第 2 次找到


練習題

題目:給一個排序好的陣列 [1,3,5,7,9,11],用二分搜尋法找數字 7,過程中比較了幾次?

答案:2 次(第一次檢查 5,第二次檢查 7)。

英文學習 Prompt 句型整理

 

英文學習 Prompt 句型整理

一、單字與片語

造句練習
「請用單字__造 5 個句子,並提供中文翻譯。」

同義詞/反義詞
「請給我單字__的同義詞與反義詞,並各造一句例句。」

情境應用
「請幫我設計一段對話,情境是__,並用到單字__。」


二、文法學習

解釋文法
「請用簡單方式解釋__文法,並舉例。」

造句練習
「請給我 5 個使用__文法的句子,並翻譯成中文。」

文法比較
「請比較__與__兩種文法的差異,並各提供例句。」

糾錯練習
「我寫了一句話:__。請幫我找出錯誤,修改並解釋原因。」


三、閱讀理解

段落翻譯
「請將以下英文翻譯成中文,並逐句標註文法重點:__。」

文章摘要
「請將以下文章濃縮成 100 字摘要,並用中文解釋生字:__。」

閱讀問答
「請根據以下文章,設計 5 個理解問題,並提供答案:__。」


四、寫作訓練

基本寫作
「請幫我寫一篇 150 字的作文,主題是__,並提供修改後的版本。」

句型改寫
「請將這句話改寫成三種不同表達方式:__。」

段落優化
「請幫我將以下段落改寫,使語氣更正式,並保持意思不變:__。」


五、口說與對話

角色扮演
「請模擬一位英文老師,和我進行關於__的對話,並糾正我的錯誤。」

口語練習
「請給我 10 個常用在__場合的口語表達,並附中文解釋。」

即時糾錯
「在我們的對話過程中,請即時指出我的文法錯誤並給出正確說法。」


六、考試準備

題目練習
「請幫我設計 10 題關於__文法的選擇題,並提供答案解析。」

寫作模考
「我正在準備__考試,請出一題寫作題目,並提供範文與批改重點。」

模擬測驗
「請幫我做一份 20 分鐘的英文模擬測驗,包含文法題、閱讀題與寫作題。

Prompt 句型整理

Prompt 句型整理

一、學習類

解釋用
「請用簡單的方式解釋__,並舉例說明。」
(用途:學習文法、單字、概念)

練習用
「請設計 5 題關於__的練習題,並附上解答。」
(用途:自我練習)

糾錯用
「我寫了一句話:__。請幫我找出錯誤,並提供修改建議與原因。」
(用途:英文/程式寫作改錯)


二、寫作類

生成初稿
「請幫我寫一篇__字的文章,主題是__,語氣__,讀者對象是__。」

重寫優化
「請幫我把這段文字改寫成__風格,並保持原本的意思。」

摘要整理
「請將以下文章濃縮為__字的摘要,保留重點與關鍵詞。」


三、程式類

程式解釋
「請逐行解釋以下程式碼,並說明它的功能:__。」

除錯提示
「這段程式有錯誤:__。請指出錯誤原因並提供正確寫法。」

程式生成
「請用__語言,寫一個__功能的程式,程式碼需附註解。」


四、工作類

任務規劃
「請幫我規劃一個__計畫,包含__步驟與時程建議。」

文件撰寫
「請幫我寫一封__用途的 Email,收件人是__,語氣__。」

會議整理
「請將以下會議紀錄整理成三大重點與後續行動清單。」

2025年9月3日 星期三

python 學習參考:線上教材、線上解題

線上教材

1.介紹

https://ai4kids.ai/blogs/blog/introduction-to-python


2.彭彭的 Python 入門教學課程

https://www.youtube.com/playlist?list=PL-g0fdC5RMboYEyt6QS2iLb_1m7QcgfHk


3. python 18 小時教材

https://lt945935.blogspot.com/2025/03/python-18_37.html


4.python 官網

https://docs.python.org/zh-tw/3.13/tutorial/index.html


線上解題

1.台中女中 前30題

https://web.archive.org/web/20210919055337/http://www.tcgs.tc.edu.tw:1218/Problems?&page=1


2.中華開放教育平台 挑100題

https://oj.openedu.tw/problem


3. 瘋狂程設 挑100題

http://mcu01.arping.me/


4.zero judge  挑100題

https://zerojudge.tw/


5.LeetCode 

https://leetcode.com/

2025年7月11日 星期五

Pandoc

 Pandoc 是一個強大的 Haskell 程式庫與命令列工具,用於在多種標記語言格式之間進行文件轉換,例如 Markdown、HTML、LaTeX 和 Word docx 等。它的設計是模組化的,透過「讀取器」(readers)將文本解析為抽象語法樹(AST),再由「寫入器」(writers)將 AST 轉換為目標格式

基本轉換
pandoc [options] [input-file]...
若未指定輸入檔案,Pandoc 將從標準輸入 (stdin) 讀取;預設輸出到標準輸出 (stdout)
範例pandoc -o output.html input.txt 會將 input.txt 轉換為 output.html

2025年7月10日 星期四

robocopy

robocopy 是 Windows 內建的高效能檔案拷貝工具,全名為 Robust File Copy,適用於大量資料搬移與同步用途,特別在處理:

  1. 大量小檔案

  2. 巨大資料夾

  3. 網路傳輸

  4. 自動化備份

      robocopy %SRC% %DEST% /E /Z /W:1 /R:3 /LOG:log.txt

參數 中文說明 用途
%SRC% 資料來源路徑變數 例如:D:\MyData
%DEST% 資料目的地路徑變數 例如:\\192.168.0.2\SharedFolder
/MIR Mirror(鏡像)同步 將目的地變成跟來源一模一樣❗會刪除目的地中多餘檔案
/Z 可中斷續傳 傳輸中斷(如網路掉線)可恢復接續拷貝
/W:1 每次失敗後等待 1 秒 遇錯重試前的等待秒數
/R:3 最多重試 3 次 檔案讀寫錯誤時最多嘗試幾次
/LOG:log.txt 將日誌寫入 log.txt 檔案 可追蹤哪個檔案有成功/失敗

2025年6月25日 星期三

python 縮格練習

 n =int(input())

s = list(range(n))

f = [int(i) for i in input().split()]


print(s)

print(f)

print()


print('正確')

v = []

for i in s:

  if i not in v:

    cur =i

    g = []

    while cur not in g:

      v.append(cur)

      g.append(cur)

      cur = f[cur]

  

    print(g)


print('錯誤1')

v = []

for i in s:

  if i not in v:

    cur =i

    g = []

    while cur not in g:

      v.append(cur)

      g.append(cur)

      cur = f[cur]

  

      print(g)


print('錯誤2')

v = []

for i in s:

  if i not in v:

    cur =i

    g = []

    while cur not in g:

      v.append(cur)

      g.append(cur)

      cur = f[cur]

  

  print(g)


print('錯誤3')

v = []

for i in s:

  if i not in v:

    cur =i

    g = []

    while cur not in g:

      v.append(cur)

      g.append(cur)

      cur = f[cur]


print(g)


10

4 7 2 9 6 0 8 1 5 3


STDIN

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[4, 7, 2, 9, 6, 0, 8, 1, 5, 3]


Output:

正確

[0, 4, 6, 8, 5]

[1, 7]

[2]

[3, 9]

錯誤1

[0]

[0, 4]

[0, 4, 6]

[0, 4, 6, 8]

[0, 4, 6, 8, 5]

[1]

[1, 7]

[2]

[3]

[3, 9]

錯誤2

[0, 4, 6, 8, 5]

[1, 7]

[2]

[3, 9]

[3, 9]

[3, 9]

[3, 9]

[3, 9]

[3, 9]

[3, 9]

錯誤3

[3, 9]


2025年6月24日 星期二

小群體-拆解逐步完成版

 ss = [0,1,2,3,4,5,6,7,8,9]

f = [4, 7, 2, 9, 6, 0, 8, 1, 5, 3]


# 1:找到第一群'

# g = []

# cur = 0

# while cur not in g:

#   g.append(cur)

#   cur = f[cur]

# print(g)


# 2:'找到每一群'

# for s in ss:

#   g = []

#   cur = s

#   while cur not in g:

#     g.append(cur)

#     cur = f[cur]

#   print(g)


# 3: '找到每一群,去重覆群'

# v = []

# for s in ss:

#   g = []

#   cur = s

#   if s not in v:

#     while cur not in g:

#       g.append(cur)

#       v.append(cur)

#       cur = f[cur]

#     print(g)

    

# 4: '找到每一群,去重覆群,算出共幾群'

v = []

gs = []

for s in ss:

  g = []

  cur = s

  if s not in v:

    while cur not in g:

      g.append(cur)

      v.append(cur)

      cur = f[cur]

    print(g)

    gs.append(g)

print('共',len(gs),'群')


Output:


[0, 4, 6, 8, 5]

[1, 7]

[2]

[3, 9]

共 4 群

2025年6月20日 星期五

高中一年級新生準備 APCS準備計畫

 1. 了解 APCS 的重要性與目標設定

  • 升學優勢:APCS 成績已被多所大學(包含臺灣大學、清華大學、陽明交通大學、成功大學等頂尖大學的資工系)納入入學審查與甄選加分依據。參與 APCS 檢測並取得成績,能為學生在大學個人申請中,透過 APCS 組、資安組或特殊選才,大大增加進入理想資訊相關科系(如資工系、資管系)的競爭力與選擇。
  • 目標設定:若以大學升學為導向,建議至少考取 APCS 實作三級,這在特殊選才中已有機會申請上國立後段資工系。若能達到實作四級,更有機會透過特殊選才錄取中字輩資工系。考量到大學資訊系課程的嚴謹度(例如,有教授可能當掉70%的學生),提前準備 APCS 有助於銜接大學課程。

2. 基礎程式能力建立(高中一年級上學期)

  • 程式語言選擇Python 是最推薦的入門語言。Python 語法簡潔、易讀性高,且是全球最受歡迎的程式語言,特別在人工智慧和資料科學領域廣泛應用。從 2025 年起,APCS 的「程式識讀」和「程式實作」都新增了 Python 語言選項,這意味著考生若熟悉 Python,便能應付所有模組的測驗。
  • 學習內容
    • Python 基礎語法與觀念:學習變數、資料型態、運算子、輸入/輸出、條件判斷(選擇)和迴圈(重複)等程式流程控制。
    • 常用容器:掌握列表(list)等資料結構的基本使用。
    • 函式:了解函式的定義與呼叫,初步建立模組化概念。

3. 進階程式能力與解題思維(高中一年級下學期至二年級)

  • 強化邏輯與問題解決能力:APCS 檢測旨在訓練學生的邏輯思維與問題解決能力。課程應培養學生「從拆解、分析,到解決複雜問題」的能力。
  • 擴展程式語言能力:雖然主要學習 Python,但觀念題可能涉及 C/C++。因此,建議花時間學習「讀懂」C 語言,這有助於應對觀念題型。有些培訓課程會提供程式語法轉換的教學。
  • 學習進階資料結構與演算法:這是 APCS 的核心考點。
    • 基礎資料結構:深入學習佇列(queue)、堆疊(stack)、陣列(array)、字元(character)、字串(string)等。
    • 基礎演算法:學習排序(sorting)、搜尋(searching,如二分搜尋 binary search、深度優先搜尋 DFS)等。
    • 進階概念:函式、遞迴、樹狀圖(tree,如二元樹)、圖形(graph,如網格)、枚舉(enumeration)、資料遍歷(traversal)等。
    • 高階演算法:對於目標高級的學生,還需學習動態規劃(dynamic programming)、分治法(divide and conquer)、貪心法則(greedy method)等。

4. 實戰演練與應試技巧(高中二年級至三年級)

  • 考古題練習:充分利用 APCS 歷屆考古題庫進行實作練習,例如 Yui Huang 筆記中提供了從 2016 年到 2025 年的考古題。
  • 模擬測驗:透過實作模擬檢定當時的狀況,加強學生記憶與應試能力。
  • 題型分析與解題技巧:針對「程式識讀」的程式運行追蹤、填空、測試除錯、效能分析、計算邏輯解析,以及「程式實作」的撰寫完整程式或副程式等題型進行專項訓練,從技巧觀念、例題實作到挑戰題,由簡入難提升解題策略。
  • 理解新制實作分級與報名策略
    • 從 2025 年起,「程式實作」改採等級制檢定,分為初級、中級、中高級、高級四個等級。
    • 學生需根據自身目標級分,選擇對應的檢測等級報名。例如,若目標為三級分,可報考中高級(100-149 分)或中級(150-300 分)。若報考的測驗等級錯誤,即使獲得滿分也無法得到理想級分,因此務必注意選測等級的重要性。

5. APCS 考試時程規劃

  • 考試頻率增加:自 2025 年起,APCS 檢定次數增加至每年 6 次,分別於 1 月、3 月、6 月、7 月、10 月、11 月舉辦,這提供了學生更大的考試彈性,可以根據學習進度安排應試時間。
  • 科目報考時間
    • 程式識讀:每次檢測月份皆可報考,並有 C/C++ 或 Python 程式語言的檢測題目供選擇。
    • 程式實作:不同等級舉辦月份不同,其中初級與中級舉辦月份較多(5 次),中高級為 3 次,高級為 2 次。

6. 綜合能力與視野提升

  • 拓展科技視野:除了程式技術,應積極了解人工智慧、區塊鏈、5G、VR、AR、駭客思維、創新創業等最新的科技趨勢與思維模式。這不僅能開拓視野,也能在大學面試時與教授進行深入交流。
  • 培養軟實力:除了學業,也建議高中生多探索不同科系領域,並參與球隊、興趣性社團等,培養運動習慣、社交能力和興趣。這些多元發展對於長遠人生和解決問題的能力都有助益。

2025 新制 APCS 重點整理

APCS(大學程式設計先修檢測)是由教育部指導、臺師大資工系執行的全國性程式設計檢定,主要評量高中職學生在邏輯推理、演算法思維與程式撰寫能力的表現,並成為各大學資訊相關科系參採的重要升學依據。目前已有超過 30 所大學、80 多個科系納入 APCS 成績,包括台大、清大、交大與成大等頂尖學校。

APCS 分為兩部分:程式識讀(筆試)與 程式實作(電腦上機)。2025 年起的新制 APCS有三大關鍵改變:

  1. 考試次數加倍:由原本每年 3 次(1月、6月、10月)調整為 每年 6 次(新增 3月、7月、11月),提供學生更高的彈性安排,並降低單次壓力。

  2. 語言選擇與實作分級

    • 程式識讀新增 Python 語言,讓初學者有更親切的選擇。

    • 程式實作改採 等級制檢定,分為初級、中級、中高級與高級。考生須依照目標級分選擇相應等級,若報考較低等級,即使拿滿分也無法獲得高級分。

  3. 成績更具辨識力:程式實作除了 1~5 級分外,還會列出原始分數與報考等級,使大學更能掌握學生的實際能力,有利於備審資料與面試表現。

準備建議

  1. 建議考生可專注學習 Python,並搭配資料結構(陣列、堆疊、佇列、樹、圖)與演算法(排序、搜尋、遞迴、動態規劃等)系統訓練。
  2. 配合歷屆題型、模擬練習及錯題整理,有助於提升解題技巧與應試信心。


APCS 7級必勝秘笈:學習、練習、突破|觀念題C+實作題Python


https://www.books.com.tw/products/0011004302?sloc=main

APCS 7級必勝秘笈:學習、練習、突破|觀念題C+實作題Python

AI 提問 X 學習 X 應用

 https://www.books.com.tw/products/0011022505?sloc=main


AI 提問 X 學習 X 應用:ChatGPT、NotebookLM、Gemini、GitHub Copilot從零到完全實戰

目標設為 APCS 「程式識讀」4級分、「程式實作」3級分

 目標設定為 APCS 「程式識讀」4級分及「程式實作」3級分,主要是基於大學入學的實質需求、考試的策略性考量以及學習的可達成性

以下是詳細的解釋:

  1. 對應大學校系的錄取門檻

    • 根據來源資料,許多大學資訊相關科系在採計 APCS 成績時,觀念題和實作題會設有不同的級分門檻。
    • 「程式識讀」4級分(分數範圍 70-89 分)搭配「程式實作」3級分(報考中級檢定並獲得 150-300 分,或報考中高級檢定並獲得 100-149 分),這個組合是許多國立大學資訊相關科系的篩選標準
    • 具體來說,國立中山大學電機工程學系、國立中興大學資訊工程學系、國立彰化師範大學資訊工程學系、國立成功大學工業與資訊管理學系、國立政治大學資訊科學系、國立臺北大學資訊工程學系,以及國立臺灣師範大學資訊工程學系等,都將「程式識讀」4級分和「程式實作」3級分納為其 APCS 組的篩選門檻。這表示達成這個目標,能大幅增加進入這些大學的機會。
  2. 提升升學競爭力與入學選擇

    • 擁有 APCS 成績能「大大增加孩子的競爭力與入學選擇」,讓學生「不用在一般的入學管道裡和他人擠破頭,而是靠 APCS 成績脫穎而出」。
    • 透過 APCS 成績申請大學資訊科系,甚至可能讓學測成績最多可差到 8 級分,有助於學生「前進理想大學」。
    • 達到「程式實作」三級分,對於一般組的第二階段甄試有「絕對優勢,幾乎是保證錄取」,即便不是透過 APCS 組入學,也能在備審資料和面試中展現程式能力。
    • APCS 成績也為學生開啟了更多升學管道,如 APCS 組、資安組或特殊選才。
  3. 務實且可達成的目標

    • 從歷屆成績統計來看,「程式實作」三級分的人數比例約為 20.5%。相較於四級分(2.7%)和五級分(0.8%)的比例,三級分是一個相對較易達成但仍具備競爭力的目標
    • 「APCS實作三級難度不高」。這在系統學習下是可實現的。
    • 設定觀念題4級、實作題3級,可以讓學生在學習上更有方向性,避免好高騖遠,同時又能符合多數採計校系的需求,是一個策略性的分數組合。

總結來說,觀念題4級、實作題3級是一個兼具競爭力與可達成性的目標,它直接對應了國內許多資訊相關學系的入學門檻,並能顯著提升學生在大學申請過程中的優勢,尤其對於希望進入國立大學的相關科系而言,是個極具價值的目標。

APCS「程式實作」三級分準備要領

 您好!針對 APCS「程式實作」取得三級分的準備要領,以下將根據提供的資料為您詳細說明:

1. 了解「程式實作」三級分的定義與要求

自 114 學年度(2025 年)起,APCS 檢定「程式實作」科目引入了分級選擇。若您的目標是「程式實作」三級分,您可以透過以下兩種方式達成:

  • 報考中級檢定,並獲得 150-300 分的成績。
  • 報考中高級檢定,並獲得 100-149 分的成績。

這表示您需要對中級或中高級所涵蓋的程式設計能力有紮實的掌握。值得注意的是,如果選擇了不符合自己程度的等級,即使取得高分也可能無法獲得理想的級分,例如報考中級並獲得滿分 300 分,也只能得到三級分。

2. 「程式實作」中級與中高級的檢測範圍

「程式實作」主要檢測考生撰寫完整程式或副程式的能力。針對三級分的目標,您需要掌握中級與中高級所要求的內容:

  • 中級檢測範圍
    • 基礎程式設計能力:能使用變數儲存與操作資料,利用選擇控制進行選輯判斷,並透過迴圈控制處理重複性任務。
    • 序列型資料結構運用能力:能夠以序列型資料結構(如陣列列表)來儲存與處理資料,並進行文字處理流程模擬
    • 具體內容包括:輸入與輸出、算術運算、邏輯運算、位元運算、條件判斷與迴圈、陣列、字元、字串。
  • 中高級檢測範圍
    • 基礎資料結構運用能力:能夠利用基礎資料結構與演算思維來解決問題。
    • 具體內容包括:函式遞迴佇列 (queues)堆疊 (stacks)
    • 簡單結構的樹狀圖 (tree)(例如:二元樹)以及簡單結構的圖 (graph)(例如:網格)。
    • 枚舉 (enumeration)資料遍歷 (traversal)搜尋 (search)(例如:二分搜尋 (binary search)深度優先搜尋 (depth-first search, DFS))。

3. 準備要領

要有效準備「程式實作」三級分,建議採取以下策略:

  • 選擇主要學習語言
    • 自 114 學年度(2025 年)起,「程式實作」除了 C/C++,也提供了 Java 和 Python 程式語言供選擇。
    • Python 語法簡潔、易讀性高,且更符合學界與程式設計的學習趨勢,尤其在 AI 和資料科學領域受到重視,非常適合初學者。橘子蘋果學苑和愷哥程式都主要以 Python 進行教學。
  • 紮實掌握基礎程式語法與邏輯
    • 透徹理解變數、資料型態、運算子、條件判斷(選擇)、迴圈(重複)、函式、遞迴、陣列和字串等核心概念。這是所有程式解題的基礎。
  • 學習並應用基礎資料結構
    • 重點學習堆疊 (stack)佇列 (queue) 的原理與操作,並練習如何應用它們來解決問題。
  • 理解基礎演算法
    • 熟練排序 (sorting)搜尋 (searching) 的基本演算法。二分搜尋和深度優先搜尋 (DFS) 是中高級的重要考點。
    • Yui Huang 演算法學習筆記也提供了排序和搜尋的相關筆記。
  • 大量練習歷屆考古題與模擬試題
    • APCS 歷屆考古題是準備的黃金資源。Yui Huang 演算法學習筆記提供了從 2016 年 3 月到 2025 年 6 月的歷屆考古題,包含題目、題解和命題範圍,並連結至 ZeroJudge 測試平台供練習。
    • 練習時,應注重培養問題分析與解題思維,學會如何拆解問題、分析程式邏輯、判斷效能並找出錯誤.
  • 善用學習資源與培訓課程
    • Yui Huang 演算法學習筆記:提供了詳細的命題範圍筆記和推薦學習教材,例如吳邦一教授的「PythAPCS123-Python 程式設計從 APCS 實作 1 級到 3 級」。

透過上述準備要領,並善用這些豐富的學習資源,您將能有效提升「程式實作」的能力,並達成三級分的目標。

「程式識讀」四級分準備要領

 程式識讀的四級分對應的分數範圍是 70-89 分

以下是針對 APCS「程式識讀」取得四級分的準備要領:
1. 了解「程式識讀」的考試內容與評量重點
「程式識讀」主要檢測考生的運算思維、程式設計解析與問題解決能力。考試時間為90 分鐘,以選擇題方式命題
檢測範圍涵蓋以下內容
基礎語法與概念
資料型態 (data types)、常數 (constants)、變數 (variables)、指定 (assignment)、表達式 (expressions)
控制結構 (control structures):循序 (sequence)、選擇 (selection) 及重複 (repetition)
函式與模組化 (functions and modularity)
遞迴 (recursion)
陣列與串列 (arrays and lists)
基礎資料結構
佇列 (queues)
堆疊 (stacks)
自訂資料型態
基礎演算法
排序 (sorting)
搜尋 (searching)
檢測題型包括
程式運行追蹤 (code tracing)
程式填空 (code completion)
程式測試與除錯 (code testing and debugging)
程式效能分析 (code performance analysis)
解析計算邏輯 (computational logic analysis)
自 114 學年度(2025 年)起,「程式識讀」的檢測語言除了 C/C++ 外,也新增了 Python 程式語言供考生選擇
2. 準備要領
為了在「程式識讀」中取得四級分,以下是具體的準備策略:
選擇主要學習語言並兼顧閱讀能力
雖然您可以選擇 C/C++ 或 Python 題本,但 Python 因其語法簡潔、易讀性高,更適合初學者
即使選擇 Python,部分培訓課程(例如橘子蘋果和愷哥程式)仍會提供程式語法轉換課程,教導學生閱讀 C/C++ 的題目,以應對觀念題的潛在需求
紮實掌握基礎程式語法與邏輯概念
務必透徹理解變數、資料型態、運算子、條件判斷、迴圈、函式、遞迴、陣列與字串等核心概念.。
這些是程式設計的基石,也是「程式識讀」中程式運行追蹤、填空等題型的基礎
深入學習基礎資料結構與演算法
熟練堆疊 (stack) 和佇列 (queue) 的操作與應用
掌握排序 (sorting) 和搜尋 (searching) 的基本演算法,例如二分搜尋 (binary search) 等
大量練習歷屆考古題與模擬試題
APCS 歷屆考古題是最佳的練習資源。Yui Huang 演算法學習筆記網站提供了從 2016 年 3 月到 2025 年 6 月的歷屆考古題,包含題目、題解和命題範圍
透過練習,熟悉題型(如程式運行追蹤、除錯等)並掌握解題技巧
練習在 ZeroJudge 等線上解題平台提交程式碼,熟悉評測系統
培養問題分析與解題思維
「程式識讀」著重於運算思維、程式設計解析與問題解決能力
練習拆解問題、分析程式邏輯、判斷程式效能,並找出潛在錯誤
3. 參考學習資源與培訓課程
Yui Huang 演算法學習筆記
提供 APCS 命題範圍的詳細內容,包括 C++ 基礎語法、基礎資料結構(佇列、堆疊、樹狀圖、圖形)、基礎演算法(排序、搜尋、貪心法則、動態規劃)等筆記
提供 APCS 歷屆考古題庫,並連結至 ZeroJudge 測試平台
推薦多本優質學習教材,如吳邦一教授的「PythAPCS123-Python 程式設計從 APCS 實作 1 級到 3 級」和「AP325-從 APCS 實作題檢測三級到五級」

「演算實作」部分則涵蓋演算法與資料結構概論、陣列、鏈結串列、堆疊、佇列、排序、搜尋、枚舉、分治、樹結構、圖形結構、貪婪演算法與動態規劃
善用這些學習資源,將能有效提升「程式識讀」的能力,並達到四級分的目標。