| 学习指南 EN
College Board · cb-cs-principles · AP Computer Science Principles · Algorithms and Programming / 算法与编程 · 阅读约 15 分钟 · 更新于 2026-05-07

算法与编程 (Algorithms and Programming) — AP CS Principles CSP 学习指南

适合谁:AP CS Principles 参加 AP Computer Science Principles 的考生。

覆盖内容:覆盖变量与类型、数学与布尔表达式、算法与程序流、迭代/条件语句/列表、过程抽象五大核心子主题。

前置知识:无需前置 CS 知识。

关于练习题:下文「练习题」一节的所有题目均为我们按 AP CS Principles 风格编写的原创题目 (original problems),仅用于教学。它们不是 College Board 真题的复制,措辞、数值或语境可能不同。请把它们当作练手用;评分细则请对照 College Board 官方 mark scheme。


1. 什么是算法与编程?

算法 (algorithm) 是解决特定问题的有限、有序、可执行的步骤集合,编程 (programming) 则是用计算机可理解的规则(伪代码或编程语言)实现算法的过程。本模块在AP CS Principles考纲中占比20%-30%,同时覆盖选择题和占总分30%的创作任务 (Create Performance Task),是整个科目的核心基础。

2. 变量与类型 (Variables and types)

变量 (variable) 是存储数据的命名容器,你可以把它理解为一个带标签的盒子,用来存放运算过程中需要的数值、文本等信息。每个变量对应的数据类型 (data type) 决定了数据的存储方式和可执行的运算,AP CSP要求掌握4种基础类型:

  1. 整数 (integer):不带小数的正负整数,例如92-3
  2. 浮点数 (float):带小数的数值,例如87.5-0.3
  3. 字符串 (string):由字符组成的文本,需要用引号包裹,例如"Zhang San"
  4. 布尔值 (Boolean):只有两个取值True(真)和False(假)

AP CSP统一使用作为赋值符号,示例:你要存储学生的考试信息,可以写:

student_name ← "Li Ming"
math_score ← 89.5
is_pass ← True

考点提示:考试不要求你掌握特定编程语言的语法,只需要识别伪代码的赋值逻辑即可。

3. 数学与布尔表达式 (Mathematical and Boolean expressions)

数学表达式由数值、变量和算术运算符组成,返回数值结果。AP CSP要求掌握的运算符优先级从高到低为:括号 > 乘法*、除法/、模运算 (modulo)MOD > 加法+、减法-。其中模运算MOD用来计算两个数相除的余数,例如7 MOD 2 = 1,常用来判断奇偶性、整除性。

布尔表达式由变量、比较运算符和逻辑运算符组成,返回TrueFalse

  • 比较运算符:等于=、不等于、大于>、小于<、大于等于、小于等于
  • 逻辑运算符优先级从高到低:NOT(非,取反) > AND(与,所有条件为真才返回真) > OR(或,任意条件为真就返回真)

示例:判断学生是否满足评优条件的布尔表达式为:math_score ≥ 90 AND is_attendance_full = True,只有两个条件同时满足时才返回True

4. 算法与程序流 (Algorithms and program flow)

所有算法都可以拆解为三种基础程序流结构:

  1. 顺序结构:代码按书写顺序从上到下依次执行,是最基础的结构
  2. 选择结构:根据布尔表达式的结果,选择执行不同的代码分支,对应IF/ELSE语句
  3. 循环结构:重复执行某一段代码,直到满足终止条件为止

示例:求两个数中较大值的算法步骤为:

  1. 输入两个数值ab
  2. a > b则输出a,否则输出b
  3. 算法结束

考点提示:合格的算法必须满足有限性要求,必须能在有限步骤内结束,不能出现死循环。

5. 迭代、条件语句与列表 (Iteration, conditionals, lists)

迭代 (iteration) 就是循环结构的另一种称呼,条件语句 (conditional) 就是实现选择结构的IF/ELSE语句,列表 (list) 是存储多个有序数据的容器,你可以把它理解为一排带编号的盒子,每个盒子可以放任意类型的数据。

AP CSP伪代码中列表的索引从1开始(注意不要和Python等语言的0开头索引混淆),遍历列表常用FOR EACH循环,示例:统计班级中数学及格的人数:

pass_count ← 0
math_scores ← [85, 59, 92, 70, 48, 96]
FOR EACH score IN math_scores:
 IF score ≥ 60:
 pass_count ← pass_count + 1
DISPLAY pass_count

运行后输出结果为4,即共有4名同学及格。

6. 过程抽象 (Procedural abstraction)

过程 (procedure,也叫函数function) 是将实现特定功能的代码封装起来的命名代码块,你可以在需要的地方重复调用它。过程抽象 (procedural abstraction) 是指调用过程时,你只需要知道它的输入参数和输出结果,不需要了解它的内部实现逻辑。

示例:定义一个计算平方值的过程:

PROCEDURE square(x):
 RETURN x * x

调用square(5)就会返回25,你不需要知道内部是乘法实现还是加法累加实现,只要输入数值就能得到平方结果。

考点提示:过程抽象的优势是减少重复代码、提高复用性、降低调试难度,是选择题的高频考点。

7. 常见陷阱 (Common Pitfalls)

  1. 错误做法:把赋值符号和等于判断符号=搞混,写x = 5作为赋值语句。原因:受Python等常见编程语言的语法习惯影响。正确做法:AP CSP伪代码中赋值必须用,只有判断两个值是否相等时才用=
  2. 错误做法:列表索引从0开始计算,例如取列表[10,20,30]的第一个元素写scores[0]原因:日常学习Python等语言的惯性思维。正确做法:AP官方伪代码的列表索引从1开始,第一个元素是scores[1]
  3. 错误做法:逻辑运算优先级搞反,例如a > 5 OR b < 3 AND c = True,误以为先算OR再算AND原因:忽略运算符优先级规则。正确做法:逻辑运算优先级为NOT > AND > OR,不确定时可以加括号明确运算顺序。
  4. 错误做法:循环中忘记更新计数器导致死循环,例如写REPEAT UNTIL i > 10但循环体内没有i ← i + 1的更新语句。原因:写代码时遗漏循环要素。正确做法:写循环前确认三个要素:计数器初始值、终止条件、计数器更新步长。

8. 练习题 (AP CSP 风格)

题目1

下列伪代码运行后输出的结果是?

a ← 12
b ← 5
c ← a MOD b
d ← a / b
DISPLAY c + d

解答:步骤1:a MOD b计算12除以5的余数,结果为2,因此c=2;步骤2:a / b计算12除以5的商,结果为;步骤3:两者相加得到,即最终输出为4.4。

题目2

下列伪代码的功能是统计列表中奇数的个数,请问空缺处应填入的表达式是?

count ← 0
nums ← [3,6,7,12,15,18,19]
FOR EACH num IN nums:
 IF __________:
 count ← count + 1
DISPLAY count

解答:奇数的判断规则是除以2的余数为1,对应伪代码表达式为num MOD 2 = 1,填入后运行得到结果为4,符合预期。

题目3

下列关于过程抽象的说法,错误的是? A) 过程抽象可以减少重复代码,提高复用性 B) 调用过程时必须知道过程内部的实现细节 C) 过程可以接收多个输入参数,也可以返回结果 D) 拆分复杂问题为多个小过程可以降低调试难度 解答:答案为B。过程抽象的核心优势就是封装内部实现逻辑,调用者只需要知道输入输出规则即可,不需要了解内部代码细节,因此B选项错误。

9. 速查表 (Quick Reference Cheatsheet)

知识点 核心规则
变量赋值 伪代码用变量 ← 值,等于号=仅用于相等判断
算术运算符 优先级:括号 > *、/、MOD > +、-,MOD返回两数相除余数
逻辑运算符 优先级:NOT > AND > OR,返回True/False
列表索引 AP伪代码中列表第一个元素索引为1
循环结构 FOR EACH用于遍历列表,REPEAT UNTIL满足条件时停止
过程抽象 封装功能、复用代码,调用无需知道内部实现

10. 接下来怎么学

本模块是AP CSP的核心基础,后续的大数据分析、网络安全、编程创作任务(Create Performance Task)都需要用到本章的变量操作、循环逻辑、过程抽象等知识,掌握好本章内容可以为后续占比30%的创作任务打下坚实基础,大幅降低创作任务的完成难度。

如果你在刷题过程中遇到任何算法与编程相关的疑问,都可以随时到小欧主页提问,我们会提供针对性的解答和备考建议。

← 返回章节主页

某道题卡住了?
拍照或粘贴题目 — 小欧(我们的 AI 学习助手)会一步步讲解并配示意图。
免费试用小欧 →