AP计算机分为两大考试:CSP(AP计算机科学原理),着重的是计算机原理、基础知识、编程和网络等内容,并且有两个课内任务;CSA(计算机科学A),着重的是实践性编程考察,基于Java语言。
Computer
AP CSA考试形式及5分率
AP CSA虽然涉及到编程,但是仍然以笔试的形式进行考核,考试时长3小时,分为两大部分:选择题和简答题。
选择题——考试时长90分钟,分数占比50%,40道单选题;
● 简答题——考试时长90分钟,分数占比50%,4道代码编程题
考试总分80分,只要考试成绩达到62分,就可以获得5分。
AP CSA 2021、2022年五分率情况如下:
2022年全球有78000名考生参加,5分率达到了25%以上,并且近十年基本都能维持在20%以上。同学们只要肯花功夫,一定会有所回报。
Computer
AP CSA考试重点和例题分析
下面从选择题、简答题两部分,对考纲进行分析,同时结合考试真题,给出部分重难点解析。
● 第1单元:基本类型
● 第2单元:使用对象
● 第3单元:布尔表达式和if语句
● 第4单元:迭代
● 第5单元:写作课
● 第6单元:数组
● 第7单元:数组列表
● 第8单元:2D阵列
● 第9单元:继承
● 第10单元:递归
Iteration迭代
考察模式是给出一段代码,选择代码输出是什么。这类题目考察大家的代码阅读和执行能力,特别是在循环的场景下,代码可能要重复执行多次,更是对大家耐心和细心的考察。
具体题目做法,又可以分为两种类型,下面结合实际题目来说明。
一步步执行
int a=24;
int b= 30;
while(b!=0){
intr=a%b;
a=b;
b=r;
}
System.out.println(a);
这道题只需要按照代码执行就可以,可以得到下面的结果。平时大家在练习时,最好也手写下来一步步执行,不要觉得简单就跳过。
a |
24 | 30 | 24 | 6 |
b |
30 | 24 | 6 | 0 |
找规律
如果一步步执行,需要去遍历50个数,计算量很大,也很容易出错。但理解代码的含义后,就可以发现typeA其实就是同时能被2、5整除,也就是能被10整除数的个数;typeB就是能被2整除数的个数;typeC就是能被5整除数的个数。
这道题还要警惕,如果下面两个if换成else if,答案又是什么?
Boolean Expression and if Statements
考察模式和Iteration类似。这类题目比循环要简单,因为代码执行步骤有限。
首先拆解出最外层是一个||,左右两个表达式分别是(a<b)< span="">和!( (c==a*b) && (c < a))
所以只要(a<b)< span="">是true,或者!( (c==a*b) && (c < a))是true,也就是 (c==a*b) && (c < a)是false,那只要其中一个是false就可以,所以答案是A。
1D、2D Array
以考察代码为主,这里有一常见的考察问题:数组越界,下面看一个例题:
如果arr当中有负数的话,那么当遍历到这个idx的时候,while循环就会跳出,然后location赋值为对应的i;
如果arr中全部都是>=0的数,那么while循环条件一直满足条件,i一直++。最后i增加到数组的长度,这时候访问arr[i],就会抛出IndexOutOfBoundsException异常。
答案是C。
简答题分为四部分,每道题都有其针对性的考察内容,每年也没有太大变化。很多学生都多多少少担心做不好简答题,但其实这部分是最好拿分的。针对每类问题做专项练习,找到高频考察点,可以事半功倍!
简答题1
考察内容:方法和控制结构,包括表达式、条件语句、循环语句、方法调用等。
第一题一般比较简单,代码不会太复杂,读懂题意很关键!这里以22年真题为例:
这道题主要考察对if、for的使用,还结合了Boolean expression,经典的最大值、最小值问题也进行了考察。
简答题2
考察内容:类的编写,包括类的创建、继承、多态等。
第二题主要是class的编写,大家对于class的基本要素:成员变量、构造函数、成员函数等要熟练掌握;22年真题加入了对子类的考察,所以涉及到了extends、override、super等的使用。
对于这部分内容,大家也可以针对性多做练习,特别是对于super()、super.等不经常使用的语法。随着AP难度的提升,这部分可能会成为后面的考察重点。
简答题3
考察内容:1D Array、ArrayList,包括数组遍历、ArrayList的常用方法,同时可能会结合排序、查找等。
对于数组遍历,特别是enhanced for loop的使用,大家一定要非常熟练,会让我们的代码简单很多,同时也避免一些没必要的错误。
ArryaList的常用方法,比如add()、remove()、get()、size()等,一定要非常熟练。
此外,这里还有一些很容易出错的点,比如交换两个元素(必须使用一个临时变量)、移除数组元素(必须从右往左remove才能正常),也是大家需要警惕的。
这里以22年真题为例:
这道题目需要index信息,所以不能使用enhanced for loop,只能使用普通for loop进行遍历。这里还涉及到字符串的一些常用方法,比如contains()、endsWith()等,这些也要熟练掌握,知道它们的作用。
简答题4
考察内容:二维数组相关内容,包括数组的创建、遍历、操作等。
这部分内容,相对而言考察比较固定,二维数组的遍历一定要会。双层for loop的方式,外层对应行,从0到arr.length;内层对应列,从0到arr[0].length。
这里以22年真题为例:
最后希望大家放松心态,认真练习,在考试中取得好成绩,在学习中有所收获。