跳到正文
IGCSE·Tuition
计算机科学 · 课程

区分逻辑 AND 与日常语言的歧义

平时说话时,“和”与“或”会随语气变化,但计算机只接受一种读法。

本页内容
  1. 日常语言在哪里容易误导人?
  2. 怎样翻译句子
  3. 例题 1
  4. 例题 2
  5. 常见错误
  6. 自测
  7. 接下来学什么?

在逻辑中,AND 只有当两个部分都为真时才为真,OR 只要至少一个部分为真就为真。日常语言里,同样的词可能比较松散,所以一个句子必须先加上括号,才能变成条件。

这一课用到计算表达式里的运算符,以及比较表达式里的情形检查。它是布尔逻辑模块里最后一节讲解课。

日常语言在哪里容易误导人?

有三个常见的陷阱。

  1. 用“和”来列出几组人。“五岁以下的儿童和六十五岁以上的成人免费入场”列出了两组人。一个人不会同时属于两组,所以条件需要用 OR。
  2. “或”表示二选一。“你可以选茶或咖啡”通常排除两者都要。逻辑 OR 允许两者都要,而 XOR 排除。
  3. AND 和 OR 混在一起又没有括号。“门是开着的,并且系统没有布防,或者按下了紧急按钮”有两种读法。

怎样翻译句子

  1. 给每个简单陈述取一个字母。
  2. **标出句子里的运算词:**和、或、不。
  3. 问清楚什么被归为一组,然后写出括号。
  4. 找一个例子来测试,看不同读法会不会得出不同结果。

例题 1

规则:“五岁以下和六十五岁以上的访客免费入场。”

错误的翻译:IF (Age < 5) AND (Age > 65) THEN。测试 Age = 3:(3 < 5) 为真,(3 > 65) 为假,所以 真 AND 假 = 假。三岁的孩子会被拒绝。

正确的写法:IF (Age < 5) OR (Age > 65) THEN。测试 Age = 3:真 OR 假 = 真。测试 Age = 30:假 OR 假 = 假。测试 Age = 70:假 OR 真 = 真。

例题 2

规则:“如果门是开着的,并且系统没有布防,或者按下了紧急按钮,警报就会响。”

设 D = 门开着,S = 系统已布防,P = 按下紧急按钮。

  • 读法 1:(D AND NOT S) OR P
  • 读法 2:D AND (NOT S OR P)

测试 D = 0、S = 0、P = 1(门关着、系统关闭、按下了紧急按钮)。

读法 1:(0 AND 1) OR 1 = 0 OR 1 = 1。读法 2:0 AND (1 OR 1) = 0 AND 1 = 0。

两种读法得出不同的结果,所以这个句子有歧义。读法 1 在按下紧急按钮时总会响警报,这很可能是本意,但只有写规则的人才能确定。写程序时必须做出选择,括号就是记录这个选择的方式:

IF (Door = TRUE AND Armed = FALSE) OR Panic = TRUE THEN
   OUTPUT "ALARM"
ENDIF

常见错误

错误想法:“规则里说了‘和’,所以我到处都用 AND。”

句子里的词并不总是条件所需要的运算符。要根据意思来决定,再用一个例子检验。好习惯是试一个明显应该通过的输入,再试一个明显应该不通过的输入。

自测

1. “访客如果持有门票并且持有通行证,或者是员工,就可以进入。”写出两种带括号的读法。

查看答案

设 T = 门票,P = 通行证,S = 员工。读法 1:(T AND P) OR S。读法 2:T AND (P OR S)。测试 T = 0、P = 0、S = 1:读法 1 得 1,读法 2 得 0,所以两者不同。

2. “不热且潮湿。”给出两种读法,以及一个让它们不同的例子。

查看答案

设 H = 热,U = 潮湿。读法 1:NOT (H AND U)。读法 2:(NOT H) AND U。测试 H = 1、U = 0:读法 1 得 NOT 0 = 1。读法 2 得 0 AND 0 = 0。两者不同。

3. 菜单上写着“汤或沙拉任选一样”。如果不能两样都要,哪一种门符合本意?

查看答案

XOR,因为它只有恰好选了一样时才为 1。OR 连两样都要也会接受。

接下来学什么?

用布尔逻辑练习结束本模块,它综合了五项技能。安全的 Python 推理沙盒可以让你安全地测试警报规则之类的条件。

把文字转成精确条件,是我们的老师在一对一线上计算机科学补习中一题一题带你练的技能。

常见问题

日常说的“或”和逻辑里的 OR 一样吗?

不一定。在逻辑中,只要至少有一个输入为真,OR 就为真,包括两个都真。日常说“茶或咖啡”,通常指二选一,也就是 XOR。题目出现“或”时,要根据上下文判断指的是哪一种。

为什么“小于 5 岁且大于 65 岁”永远不能当条件?

没有哪个年龄既小于 5 岁又大于 65 岁,所以这样的 AND 永远为假。口语里的“和”是在列出两组人,但逻辑里要包含任一组,就必须用 OR。要时常问自己:一个值是否必须同时满足两个部分。

遇到可以有两种意思的句子怎么办?

给每种读法加上括号,再找一个让两种读法输出不同的例子。考试时,要写明自己采用的读法,并遵守题目给出的括号或措辞。括号可以消除歧义。

资料来源

  1. Cambridge IGCSE Computer Science 0478 syllabus page

更新于:

下一步

如果你懂逻辑,却不太会把应用题的文字转成条件,一对一老师可以陪你练习翻译句子,直到括号自然而然地出现。

一小时付费试听课,按所安排老师确认的收费,RM80 起。 其他费用、时间安排及后续课程,在试听课后由家长与老师直接确认。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

是家长或监护人?在这里咨询

已通过我们的服务帮助 9,000+ 名学生