我相信所有在看這篇的人
也許是緊張的父母、也許是身為高中生的你
回頭看看我自己的升學路程,我是多麼希望當時有 APCS
在繼續往下之前,不論你有沒有學過程式
我希望你先試著回答以下三個的題目
int a = 1;
printf("%d\n", a);
int sum = 0;
sum = 1 + 2;
sum = sum + 3;
printf("%d\n", sum);
int sum = 0;
for(int i=0; i<10; i = i+2){
sum = sum + i;
}
printf("%d", sum);
ok,如果看完這三個問題,你心裡面有種~恩~我不確定,但我好像知道怎麼改的感覺的話;恭喜你,你可能屬於對程式碼有感覺、對不懂的東西不害怕的那種人,這樣你會在學習的路上比別人輕鬆一點點點點
你如果看完的感覺是:『乾!我又沒學過,我怎麼可能會?!』那...ok...這是正常的反應,但是代表你可能需要比別人努力多一點點點點
------------------------------------------------------------------------------------------
即便過了將近有十年了
我其實多多少少還記得自己高二、高三時寫程式的能力
然後再看看 APCS 的題目,無論是觀念題還是實作題
平心而論...APCS 是給你展現誠意的考題、而非展現實力的地方
對!我沒說錯,它的程度真的只是在展現你有念資工系的誠意
這同時代表,他不難、而且很好準備
先看看觀念題:
首先,我們要注意到,他通篇是用 C 語言考試
這代表,不用想了,要考 APCS 請熟讀 C 語言
我們再看他幾屆的考題我們也可以發現
所謂的觀念題,其實是 C 語言閱測+填空題
真正考到資訊科學的其他題目的機率是少之又少的
在此補充一下,資訊科學不等於C語言
資訊科學裡面還包含了硬體設計、系統設計、編譯器設計...等等
但是我們可以看到 APCS 並不考這些東西,或者所佔比例很小
這又再次說明了花時間練 C 語言的效益會比讀其他東西來的高
關於觀念題的部分,我想再提一個想法:
只要你夠會寫程式、基本上就一定會寫題目
再來看看實作題:
說到實作,其實最重要的是環境跟語言
所謂環境是指現場它提供什麼作業系統、什麼IDE、什麼 Compiler 等等
在訓練的過程中如果可以與考試環境越一致越好
之前在玩程式競技的時候(類似 APCS 實作)
我一犯再犯的錯就是用自己的電腦練習、然後到那邊各種不習慣...
希望有心要把 APCS 的各位務必先暸解 APCS 實作當天的操作環境
如果周遭沒有人可以問,不妨先把第一次當作試水溫去了解一下細節
二來是語言,APCS 允許使用 C/C++, Java, Python
我自己的建議是,請使用C,尤其如果你是剛接觸程式而且天賦普通的高中生
如果你在閱讀這篇文章,你有80%的機會是天賦普通的高中生所以請使用C
我的原因是,其實不同語言有許多不同細節
但觀念題的語法和答案都是基於C得到的,所以如果你實作寫 Python
而觀念題要用 C 的想法去解題,其實有點拿石頭砸自己的腳
這時你可以會說 Python 比較方便或者它比較好用、比較好寫等等的
但是:
所以,以考試準備的策略而言,我會說...ㄣˋ...請乖乖學 C 語言
至於要去哪裡練手感呢?不妨去試試看 leetcode 之類的網站
回到我說 APCS 是一個展現誠意的考試這件事上
我為什麼會這樣說呢?我大概在國三升高一的暑假學會了基本的C
當時兩個月大概會寫各種質數判斷,能做一點自己覺得有趣的應用~
然後雖然我當時沒有練 Leetcode 但我很確定如果你能練 100-125 題 leetcode
不論簡單或難,你基本上就可以輕鬆拿下 APCS 這個考試
練100-125題要多少時間呢?快的話3-4個月;慢的話4-6個月
所以再加上我前面兩個月的時間,大概就是 5-8個月
而且這不是全力喔,上學期間我還是有跟著高一準備段考、資優班考試等等的
所以我才會說 APCS 是一個展現誠意的東西,因為正常人只要有心基本上可以在一個學期內拿下他
未來我會繼續寫 APCS 的準備方法,編輯一些講義跟題型,也會以 C 為主要的教學語言,如果覺得我寫得不錯,歡迎訂閱 APCS 文章