本模块讲解程序中每个条件、处理器中每个逻辑门背后的逻辑。你将学会计算布尔表达式、制作真值表(truth table)、读懂简单的逻辑电路、判断两个表达式是否等价,并把日常语句转成精确的条件。
请查看剑桥官方的 Computer Science 0478 课程大纲,了解你考试年份的内容要点。如果不确定,可以阅读你的大纲适用哪些年份。我们的计算机科学学习指南显示了本模块在整体中的位置。
开始之前应该先掌握什么?
你需要知道一个值可以是真或假,写作 1 或 0,并且熟悉伪代码中的 IF ... THEN ... ELSE。如果 Age >= 13 这样的条件你已经看得懂,就可以开始了。
入门示例
学校实验室的门在教师卡出现时开启,或者在学生卡出现并且老师已打开实验室开关时开启。用符号表示:T 为教师卡,S 为学生卡,L 为实验室已开启:
Q = T OR (S AND L)
**第 1 步,计算 T = 0、S = 1、L = 1。**先算括号:1 AND 1 = 1。再 0 OR 1 = 1,门开启。
**第 2 步,计算 T = 0、S = 1、L = 0。**括号:1 AND 0 = 0。再 0 OR 0 = 0,门保持关闭。
**第 3 步,数情形。**三个输入有 23 = 8 行,所以这扇门的真值表有 8 行。只要 T = 1,Q 就是 1(4 行),再加上 T = 0、S = 1、L = 1 这一行,共有 5 行门会开启。
同样的表达式在代码中是这样的条件:
IF TeacherCard = TRUE OR (StudentCard = TRUE AND LabOn = TRUE) THEN
OUTPUT "Door opens"
ENDIF
应该按什么顺序学习各课?
- 计算带括号的逻辑表达式:运算顺序,是其余一切的基础。
- 制作真值表:对每一种输入计算表达式,结构上不会漏掉任何情形。
- 解读简单的逻辑电路:把图中的逻辑门读成同样的表达式。
- 用情形比较两个等价的表达式:用表格证明两种写法一致。
- 区分逻辑 AND 与日常语言的歧义:先把句子翻译成括号,再计算。
然后做布尔逻辑练习。布尔与数字表示实验室、受限伪代码追踪训练器和安全的 Python 推理沙盒都适合用来检查小例子。
这个主题有哪些陷阱?
- 没有括号时,忘记 AND 比 OR 先算。
- 把 NOT 用在整个表达式上,而它其实只属于一个字母,或者相反。
- 真值表漏掉一行,通常是最后一行。
- 两个输入都是 1 时,把 XOR 当成 OR。
- 只检查一种情形,就断定两个表达式相等。
怎样使用练习?
按顺序做题,像考试那样写出完整步骤。写完自己的答案之后再打开解答,并标出第一步出错的位置,而不只是最后的数值。“如果你做错了”部分会把每种错误指回对应的课。
想让人检查自己解题过程的同学,可以咨询我们的一对一线上计算机科学补习。