2020年10月31日 星期六

APCS準備

 7月28日開始在台南應用大學
修資訊二專的程式設計。
這門課老師教得是C++,
老師教得十分清楚,
也有線上教學影片分享。
但是這門課最大的瓶頸就是
APCS要考到六級分以上。
考試時間是10月17日星期六,
我只有不到12個星期的準備時間。

第一個月的準備(8月)
一邊上老師的課堂教學,一邊自己自學。
我每天回家都是讀8小時以上的線上課程。

自學主要是以下網址:
C 語言入門影片Feis Studio
(這個在一個月內讀到第24章結束)

C++與演算法
(這個我也全部看完,講得很基礎)

程式設計老師也有線上教學
有時會兩邊聽,聽聽不一樣老師的解釋,
有時會好懂許多,也可以試著畫圖來懂。

刷題則是
高中生程式解題系統:https://zerojudge.tw/
一直都刷得很辛苦,刷到懷疑自己智力。
但是能慢慢地理解學習流程:
看懂題目-->資料輸入-->資料處理-->資料輸出。
就是慢慢地從學會指令使用,
到能寫幾段程式碼的過程,
並能debug排除有問題的部份。
(從中cout結果,可以看到資料處理
的過程是否有問題)

第二個月準備(9月)
開學了,每天能讀程式的時間大概是4小時。
主要是以下網站,這位高中生真的不簡單,
也是去年(2019)8月才開始學,卻能一路成長,
這真的是激勵我,讓我覺得我也可以做到。

https://yuihuang.com/apcs/
(這是準備APCS的相關內容)
https://yuihuang.com/e-portfolio-2/
(這是高中生的學習歷程)
以上我都是讀到動態規劃前
(假如有讀完動態規劃,實作第三題或許能寫)

這網站的優點就是配合著高中生解題系統
以C++解題,並且有解說。
這對我而言根本就是很棒的延續,
剛學完C++可以直接實戰。
我都是試著讀懂程式解法每一句的用法,
再試著自己寫一次,再讀再寫,一直到能完成。
每天讀2~3題,但是理解每一題也需要1~3天。
不知不覺慢慢地培養寫作的語感,
沒錯,寫程式碼就像學習語言也需要語感。
(小編此時也剛好在讀日文基礎)
再慢慢地懂每一個宣告出現的位置,
每一個迴圈的用法,再進階至內外迴圈。
又慢慢看懂一些神奇的小用法,
標記、記數、抓次數、if-else......
然後再慢慢地學C++好用的 STL,
如vector、queue、stack、map的使用。
最後真的看不懂指令用法或差異,
直接google搜尋也有不少的解釋與實例。
基礎C++與Python
這位老師的教學網站也是十分受用。

第三個月準備(10月)
開始讀觀念題,也只有公開的三份試題,
共75題。題目來源在這
一開始一題一題地解,直接代入,
用紙筆試著練習運算解題流程,
試著與電腦一樣地跑程式碼。
25題整整寫了3小時。
(考試是一小時20題,平均一題時間是3分鐘)
再寫第二次,再寫第三次......,
開始去懂這題想要考你什麼觀念。
遞迴、函數呼叫、條件判斷、陣列、全域宣告、
數次數...等,
有些題目只要能懂是要考什麼觀念,
就只要看重要的地方,或該怎麼去跑程式。
千萬不要每一題都是撩下去硬算。
這兩個星期,就是觀念題與之前寫過的
程式碼再複習,其實有點後繼無力。

考試當天(10月27日)
觀念題第一回有20題,第一次進考場,
很慌亂,寫不完,
很難看得懂,跟考古題完全不一樣阿!
自己覺得大概只有10題好好地寫,
其他都是猜題去完成。
第二回合也是20題,但是題目顯得簡單許多,
後面很多都是2分鐘內完成,只有2~3題是猜的。

下午的實作題有四題
第一題是數學列式,輕鬆列完式子,
但是測資跑出來是錯的,
只好從中一一cout,發現變數放錯了,
哈哈哈哈!!
(測資有多放一組錯誤答案,這多浪費了30分鐘)

第二題是類似迷宮題
這類題目一直有預感會出現,Bingo~
只要https://yuihuang.com/bfs-breadth-first-search/  有看過就能解出,
但是但是,還是有地方放錯變數,繼續傻笑!
後來第一、二題都順利拿到分數。

第三題是DFS的題目,看得懂,
但是要用函數去遞迴預搜尋做判斷
這題就放棄了,完全沒寫~
但是建議第一子題不管如何都要擠出來,
因為通常就是簡單的測資。

第四題我用兩層迴圈硬去搜尋,兩筆測資有過,
不過最後只拿到20分,看來沒這麼簡單,
但是實作題有150分鐘,比觀念題壓力少多了。
而且解題也是蠻有樂趣與成就感的!

最後結果:觀念題4級分,實作題3級分。
(本來以為會是觀念題2級分,實作題4級分)