APCSAFRQ超硬核乾貨第1彈!帶你從刷題無思路到衝刺滿分!


在AP CSA考試中,最令各位同學們頭疼的莫過於
FRQ不會寫,FRQ沒思路。除了把基礎知識都牢牢掌握以外,對出題規律的把握也尤為重要。如果對FRQ的考試重點不夠熟悉,就可能會出現有力使不出的情況,所以今天老師帶大家好好把一把出題人的脈。
從2020年CB官方修改FRQ部分的大綱已經過去四個多年頭,在新的出題形式下,各個專題題型的規律也逐漸變得清晰。20年之前的FRQ,每一題都有可能是橫跨多個單元大綜合;而20年後採用分專題

的形式,每道題的側重點被固定在特定的單元之中,這就給各位同學極大的空間來找規律。
程式設計從來都不是隻有唯一解,背標準答案很難從根本上提高大家的得分水平,那麼掌握深層次的規律和技巧就尤為重要。接下來老師根據近年來FRQ從以下幾個方面做出系統的總結,包括

做題讀題方法,各題型出題規律

一、做題方法
所有題型中共性的問題:
第一件事情是讀題。在眾多AP科目的FRQ中CSA的FRQ題目文字量尤其的大,這就需要一定的閱讀能力。英語好的同學有天然的優勢,詞彙量有限的同學也不必慌張。重點在於如何快速的捕捉題目中的關鍵資訊
讀題順序:
✨1. 細讀大題幹(非程式碼部分),也就是一道題目最開始出現的內容。
大題幹主要介紹一些特定的概念,幫助我們快速的代入場景,確定大方向,比如我們今天實在處理字串還是篩選數字,還是統計人員資訊,貨物資訊等等。大題幹一般還會明確本道題要完成的目標,比如我們是要寫哪個class裡面的方法,寫幾個方法等等。大題乾的長度一般只有兩三句話,所以認真讀完!
✨2. 略讀程式碼
所有的題型都會伴隨有至少一個class的程式碼出現,其中程式碼篇幅長的主要原因是其中包含了大量的comment(註釋)來解釋其中constructor(構造器)和methods(方法)的具體功能以及前提條件。我推薦大家在第一次讀題的時候要快速識別出class的結構,即區分出哪部分是instance variable(個體變數),哪部分是constructor,哪部分是methods。
仔細看header(標頭)部分確定他們的數量和名稱,對這個class有一個整體的結構性的認知。之所以不推薦大家對程式碼部分進行精讀是因為在如此龐大的資訊量之下很難快速的記住所有內容,即使完整讀一遍,後面也會有所遺忘。精讀的工作留到讀完小題幹後進行
✨3. 精度小題幹
除了Q2以外的另外三個題型,都會有多個小問,而最具體的要求和解釋就出現在小題幹中。小題幹會對大題幹建立的場景進行儘可能的細化,並且結合程式碼中出現的變數進行解釋。這個部分必須要非常仔細的去閱讀。寫程式碼的思路就藏在小題乾的字裡行間,同時此處提到的任何前面我們略讀程式碼的時候出現的變數或者方法就都可以回過頭進行精讀了。簡而言之,用到什麼找什麼,目標明確了,效率就高了。小題幹中有兩個非常關鍵的部分:Example(例子)和 Method header(方法的標頭)
Example:例子就是英語不好的同學最好的救星!不管前面的小題幹對功能的描述有沒有。

二、評分標準


由於CSA考試的筆試形式限制,其實真實的評分標準往往比大家想象中要寬鬆許多。判卷人在評分的過程中其實並非看著你的程式碼糾錯,並不是
“哪裡錯了扣哪裡”;而是“哪裡對了給哪裡”,是按照一些得分點給大家算分的。所以我們要做的就是主動的把一些得分點呈現出來,接下來我會對每一個題型的採分點進行具體的分析。
另外需要強調的是手寫程式碼過程中的書寫問題,注意格式縮排問題,以及好好寫字,把字寫清楚。首先,大家要清楚一點就是我們的FRQ是不接受考試後argue的,得分情況全靠給大家判卷子的判卷人來決定。如果他不能找到你的得分點,那麼很遺憾這一分就與你失之交臂了。
縮排(indentation)是java用來呈現程式碼結構的非常重要的方式。在所有的判斷語句和迴圈語句中,只要有大括號出現,就意味需要一層新的空間。新的內部空間的每一行程式碼前面都需要一個tab的長度(也就是4個空格的長度)來分清和上層空間的關係。雖然有的同學已經發現java本質上對縮排不敏感,但是如果我們不按照縮排來寫,很有可能你的得分點會淹沒在忙忙程式碼之中。
【CSA FRQ高分衝刺】之Q1硬核拆解

2020年大綱更新後四道大題對應的題型分別為:
Q1. Method and Control Structure
Q2. Classes
Q3. Array/ArrayList
Q4. 2D Array
Q1. Method and Control Structure
本專題主要考查學生最基本的程式設計語句的書寫,結合Unit1-Unit4的基礎知識點考察定義方法呼叫方法的正確使用。同時第五單元class相關知識是作為java最重要的背景知識,會出現在FRQ的所有題目中,Q1也不例外,但第五單元知識點並非專題1的考察重點。一般的出題形式為,根據題目描述的功能編寫某些方法。
Method的考察重點主要集中在兩個層面,一個層面是對於java自帶方法的熟練使用,另一個層面是對於方法整個結構的認知。Java自帶方法包括String Class中的六個方法(length(); substring()兩種; indexOf(); equals(); compareTo()),Math Class

中的4個方法(Math.abs(); Math.pow(); Math.sqrt(); Math.random())。對方法的整齊認知及包括如何正確的設計一個簡單的方法,根據題意使用題幹給出的引數(parameter),並輸出正確型別的返回值(return type)。這些都是重要的得分點。


Control Structure
的考察重點為Unit3判斷語句if statement和Unit4兩種loop structure的使用。If statement有幾種不同的結構,所有場景下大家都要思考這幾個問題:
1.是否需要else statement;else statement應該放在哪裡。

2. 多種情況出現時,是使用multi-way selection(同一個if statement中的多條件判斷)還是寫多個if statement連續判斷。

3. 複合條件(Compound conditions)和 巢狀關係(Nested loop)的選擇。迴圈結構方面,雖然for loopwhile loop本質上是相通的,但是自己寫程式碼的時候一定要擇優選用,不要給自己找麻煩。For loop比較適合於迴圈次數比較明顯的迴圈,而while loop比較適合用於次數模糊但條件明顯的迴圈。

Q1的場景都相對簡單,基本可以分為“
數學”和“語文”兩個方面。
例如20年的hailstone sequence,就是一道“數學”題。但數學不好的同學也完全不用緊張,因為需要用到的數學操作只有加法和除法這兩種,即使大家只有小學數學水平在這裡也完全足夠了。非常著名的希爾頓序列,任何一個自然數我們都按照遇到偶數就除2,遇到奇數就乘3再加1,最終都會變為1。
圖表1 2020 FRQ Q1-1
21年的word match則是處理字串,文字資訊的“語文”內容,主要就是考察String methods的靈活使用。模擬的是一個猜單詞的過程,並且透過一個評分系統量化了這個猜單詞的好壞。
圖表 2 2021 FRQ Q1-1
22年的Level and Game 則是一個打遊戲闖關然後得分的場景,除了分數的計算以外更加偏重的是對給定方法(helper method)的呼叫。
23年的book appointment圍繞著預約時間段是否可用這件事情展開,讓大家利用計算機的思維來解決這種時間序列的問題。
縱觀4個年份的Q1,我們可以發現出題人不再滿足於簡單的處理數字或者處理字串,而是要創造一些系統性的,更適合計算機去解決的問題和場景。所謂系統性,就是處理某一個問題的時候有固定的流程,程式碼上來講就是有一些方法需要我們去使用。
採分點分析

1)首先算數的部分在Q1種基本都會有一些,不管是數列中算下一項,算分數,算時間都離不開我們的算數運算子(arithmetic operator)。字串方法(String method)雖然近四年在Q1中只出現了一年,但是結合20年之前的規律String的重要性是永遠都不會下降的,所以後續的每一年也都有很高的機率會考,關於String methods大家還是要做到滾瓜爛熟。
2)不管題目的情景是偏重“數學”還是“語文”,判斷語句 (if statement) 和迴圈結構 (loop structure) 都是經久不衰的得分點, 每一年都佔到一半的分數。因為所有的基本演算法和問題都離不開這兩種結構的配合。例如21年的猜單詞的第一問,其中數guess出現的次數,這就屬於典型的計數問題(counting problem)。
22年的記錄最高分,是典型的找最大值問題(find maximum)。
3)Helper Method,一個非常值得強調的點,也是大家容易忽略的點。對於輔助方法的呼叫,某種程度上來說是送給大家的分數,大家一定要把握住啊。一半helper method有兩種出現形式,直接出現在題幹,或者a問的方法作為b問的helper method。簡而言之,你只要用了,用對了,就有一分了。
AP CSA自由問答題Q1的拆解就到這裡啦,我們將在之後的文章中依次對Q2、Q3、Q4進行詳細拆解,希望可以幫助AP CSA的各位考生攻克難題,拿下5分~
本文作者

TD福利
TD教研組老師們為了幫助大家解決“找題簡單,彙總困難”的問題,收集並整理了AP CSA近十年的北美FRQ真題助力大家考前刷題,應刷盡刷,刷最近的題,掌握最新的考試動態!有需要的同學只需新增下方小馬甲微信,並回復暗號「CSA十年」,就能免費get咯~(已有馬甲微信的同學無需重複新增,傳送暗號即可~)


相關文章