|
【试卷分析】 本次特殊的AP计算机科学A考试共有两道大题,每道题所考查的知识点、答题时间、分值如下表所示: K" T$ V& u5 `& m! a7 d
【AP备考】计算机科学A 2020考情分析
* N5 {- _( U. a- u2 _
# ^) x. Q7 X) ]/ b* G" k( n0 Z& q答题形式 根据CB官方说法,考生既可以选择以打字的形式输入代码,也可以选择纸笔的形式书写,然后拍照上传图片。考试属于开卷考试,但在整个过程中考生无需使用任何IDE软件进行辅助。也就是说,这次疫情下的特殊AP CSA的答题形式,和往年的大题没什么区别。 / |3 n* m# g+ w0 J! |
题目分析与知识点总结 从上面的表格可以看出,本次AP CSA考试的两道试题分值和答题时间都有所不同。第一道大题的分值占比达到65%,明显高于第二道题目。可以看出第一道题的难度或题量都要相比第二题要更大一些。同学们在复习的时候,也应该更着重复习第一题所涵盖的知识点。
" L) {$ e+ W( @+ R. y第一道题目所考查的知识点是Array/ArrayList。同学们要对这两种结构都非常熟悉。考试中既可能单独挑出一种结构来出题,也有可能两种结构相结合来出题。 / V" q7 j# G% M) ~# i% N0 |
对于array来说,同学们需要掌握的主要知识点如下:
) E7 D0 S3 e' m- L( earray 的定义语句,例如 int [] arr = new int[10]; ! V3 ]+ V) U9 z, b a" D% E
利用for循环对array进行遍历,例如 for (int i=0; i < arr.length; i++) { }
& L! S4 K* B' c* Q0 |3 N9 p, @( }" b利用for each循环对array进行遍历,例如 for (int x : arr) { } 2 z! k6 S$ t- E2 y' h& h+ O
array中相邻元素的比较,例如: boolean isIncreasing = true; for(int i=0; i<arr.length-1; i++) { if(arr > arr[i+1]) { isIncreasing = false; } } 7 \) C' |; }, X( v$ ^
对于ArrayList,题目出题思路和array类似,但ArrayList的语法不同,以下是我们需要格外注意的语句:
6 f+ ~# L- W. I& V( ?ArrayList的定义语句,比如! C# }- p$ X* `. L
ArrayList<Integer> iList = new ArrayList<Integer>();
+ K$ R& W3 Y' v, E6 F. [0 N0 W利用for循环对ArrayList进行遍历,例如 for (int i=0; i < iList.size(); i++) { System.out.println(iList.get(i)); } ; N/ j9 W* B# k$ M$ p' l8 u, {
利用for循环对ArrayList进行清空,例如 for (int i=iList.size()-1; i >= 0; i--) { iList.remove(i); } 3 f1 v$ {- U0 S) B' |- k' {
除了上面说到的array和ArrayList中同学们需要注意的语句,我们还需要掌握array和ArrayList的主要区别。具体内容可以参考下表: ; {7 |% N$ P; O0 l3 b$ H1 [/ u
' R2 J8 g( D, ]; T0 @4 |* Z; f% E
【AP备考】计算机科学A 2020考情分析
" u3 a0 Q B( F* v# \/ b; U4 `
2 d. S& ~- V- \4 w" O& @8 @% \8 U简要来说,如果存储的是primitive types例如int,double,并且需要大量的数学运算(加减乘除求余)或数值之间的比较,我们一般选用array。如果经常需要执行插入、删除等操作,或者我们希望列表的长度可以变化,我们就选用ArrayList。如果数组没有装满,那么array.length 体现的只是数组的容量,而arraylist 返回的是元素个数 # V f, J; K9 y/ ^
第二道题目的知识点不像第一道题这么复杂。同学们主要注意以下几点:
( \/ j) }0 |4 y& L* S, h方法中每个要素的含义:access type, return type, id, parameter list; ; h1 j, u/ J7 ]* ]% C( W- b" ?, V
一个Class的定义里面主要分为两个部分:variables和methods;
. |5 ~, K; Q$ }1 ]% I% Cmethods中必不可少的是constructor,用来构造这个Class的object;
- R' U H' Q1 m) f' @; sconstructor的主要作用就是(利用parameters)给前文提到的variables赋值。
6 U0 B7 R# L! n9 H5 k- l使用constructor来创建该Class object的语句,要重点掌握。比如创建Person这个Class的object,假设Person class有两个variables,分别是一个代表名字的String和一个代表年龄的int: 6 ~$ b( t$ S, E
Person p1 = new Person(“Jack”, 18);
; ^- @+ `) ~. L- A3 a7 G) p1 @利用dot operator来调用某个object中方法的语句,例如: p1.printPerson(); String s = p1.getName(); ' \% i( R$ a' U& ~
除了上文提到的知识点之外,还建议大家多复习Standard Classes中关于String, Integer, Double和Math中的部分。熟悉这些标准类中每个方法如何使用。考试的时候,强烈建议把官方的AP CS A Reference Sheet放在旁边,随时参考。 & |' t' k v& O3 b6 Q% S
0 M9 m/ [4 B5 x: @4 Z5 C
复习建议 1. 重点关注2010至2019的官方FRQ 2. 在题目中如果包含下面字样之一,同学们就可以跳过该题目: case study; 2D array; interface; abstract class; inheritance; subclass/superclass;
% |8 Z+ |" e% a! L( k K
|