《程序员的数学》· 第 2 章
逻辑
真与假的二元世界
6–8 年级互动课堂 · 90 分钟 · 边学边练
TRUE 真
FALSE 假
ARCADE
01 / 58
课前热身 · 30 秒思考
同样一个「或者」,意思一样吗?
句子 A · 妈妈说
「今晚吃米饭或者面条。」
这里的意思是……
二选一 —— 只能挑一样,不能两样都要
句子 B · 老师说
「会钢琴或者吉他的同学可以报名。」
这里的意思是……
至少会一样 —— 两样都会当然也能报名
💡 中文一句话能有两种意思,可计算机只认一种 —— 这就是我们今天要学的逻辑
02 / 58
90 分钟学习地图
今天要闯的 5 关
01
为什么学逻辑
命题 · 真与假
约 10 分钟
02
规则里的漏洞
完整性 · 排他性
约 15 分钟
03
五大逻辑运算
非 与 或 异或 蕴涵
约 28 分钟
04
化简神器
德摩根 · 卡诺图
约 22 分钟
05
三值逻辑
真 · 假 · 未定义
约 15 分钟
🎮 每一关都是:学一个知识点做一道练习题当场对答案
03 / 58
01
STATION 01 / 05
为什么需要逻辑
逻辑是消除歧义的放大镜 —— 命题、真与假
04 / 58
STATION 01 · 核心概念
逻辑,是给语言「消歧」的工具
🗣 自然语言
模糊、有歧义、要靠语境
「他长得挺高的」—— 多高算高?
⚙️ 逻辑语言
只有两个值:truefalse
没有「大概」「也许」「差不多」
🎯 一句话总结
把会让人误解的话,改写成不会误解的话。
试试判断:下面哪些话能说清对错?
① 今天的作业真多啊。—— 说不清 ❌
2 + 3 = 5 —— 真 ✅
2 + 3 = 6 —— 假 ✅
④ 请把窗户关上。—— 是命令,不是对错 ❌
能明确判断「真 / 假」的句子,才叫命题
05 / 58
练习 01 ⏱ 3 分钟 · 和同桌讨论
歧义大搜查:这 4 句话哪里没说清?
1
「明天早上 8 点,在门口集合。」
哪里没说清楚?
2
「身高 120cm 以上的同学买全票。」
正好 120cm 的同学呢?
3
「成绩好的同学可以参加比赛。」
多少分算「好」?
4
「他要么去北京,要么去上海。」
两个地方都能去吗?
06 / 58
练习 01 · 答案
揭晓:每一句都藏着一个「坑」
1
「明天早上 8 点,在门口集合。」
→ 哪个门口?校门 / 教室门 / 食堂门?没指定地点
2
「身高 120cm 以上买全票。」
→「以上」包不包括 120cm?边界值没说清
3
「成绩好的同学可以参加。」
→「好」没有数字标准。应改成「90 分以上」
4
「他要么去北京,要么去上海。」
→「要么…要么…」是两个只能选一个,还是至少选一个?两种读法
✅ 记住:写规则时,凡是边界范围,都要写成数字。
07 / 58
STATION 01 · 关键定义
命题 = 能判断真假的陈述句
✅ 是命题(有唯一真假)
· 2 + 3 = 5 → 真 true
· 2 + 3 = 6 → 假 false
· 所有偶数都能被 2 整除 →
· 北京是中国的首都 →
注意:假命题也是命题!只要能判断就行。
❌ 不是命题
· 今天的作业真多啊!
→ 感叹句,是主观感受
· 请把门关上。
→ 命令句,没有真假
· x + 1 = 5
→ x 不确定,真假跟着变
· 你今天开心吗?
→ 疑问句,不是陈述
📌 判定的唯一标准:这句话能不能明确回答「对」还是「错」?
08 / 58
02
STATION 02 / 05
规则里的漏洞
完整性 · 排他性 · 边界值 —— 别让「正好 6 岁」溜走
09 / 58
STATION 02 · 情境题
巴士车费:规则 A
🚌 某市巴士收费标准
· 乘客年龄 6 岁以上 → 车费 100 元
· 乘客年龄 不到 6 岁 → 车费 0 元
数轴上看一看
6 岁
0 岁
年龄 →
实心点 ● 表示「包含 6 岁」:6 岁及以上都买 100 元票。
🤔 想一想
张明今年正好 6 岁,他该付多少钱?
100 元 ✓
「6 岁以上」包含 6,「不到 6 岁」不包含 6 —— 两个区间刚好拼起来,不多也不少
这就是一条合格的规则。下面两条呢?
10 / 58
想一想 ①
规则 B:有没有「谁都没管到」的人?
🚌 规则 B
· 年龄 大于 6 岁 → 100 元
· 年龄 不到 6 岁 → 0 元
数轴上看一看
6 岁
0 岁
两个空心圈中间,是不是空了一块?
把所有人分成三类检查
① 7 岁以上 → 命中第一条 ✅
② 5 岁以下 → 命中第二条 ✅
正好 6 岁 → ???
6 岁「不大于 6」,也「不小于 6」—— 两条都进不去
售票机这时候会怎样?→ 卡住、报错,或者随便给个结果。
11 / 58
答案 ①
漏洞一:正好 6 岁被「漏掉」了
❌ 遗漏(不完整)
规则覆盖不到的情况,叫做 遗漏
6
数轴上两个空心圈之间,6 这个点没人负责
👉 程序员的黑话:这叫 bug
✅ 怎么修?
把「大于 6 岁」改成 「6 岁及以上」
· 6 岁及以上 → 100 元
· 不到 6 岁  → 0 元
一个字的差别(大于 → 及以上),决定了这台机器会不会出错。
🔑 完整性:所有可能的情况,都至少命中一条规则。
12 / 58
想一想 ②
规则 C:有没有人被「算了两次」?
🚌 规则 C
· 年龄 6 岁以上 → 100 元
· 年龄 6 岁以下 → 0 元
数轴上看一看
6 岁
两个实心点叠在同一个位置 —— 打架了!
还是检查这三类人
① 7 岁以上 → 只命中第一条 ✅
② 5 岁以下 → 只命中第二条 ✅
正好 6 岁 → 两条都成立
第一条说 100 元,第二条说 0 元 —— 系统该听谁的?
13 / 58
答案 ②
漏洞二:6 岁被算了两次,还给出两个价
❌ 重复(不排他)
一个人同时命中两条规则,叫做 重复
更麻烦的是:两条规则给出的结果还不一样(100 元 vs 0 元),程序就不知道该执行哪一句了。
现实中:售票机可能死机,或者随机吐出一张票。
✅ 怎么修?
把第二条改成 「不到 6 岁」
· 6 岁及以上 → 100 元 (含 6,实心点)
· 不到 6 岁  → 0 元  (不含 6,空心圈)
一实一空,严丝合缝,谁也不抢谁。
🔑 排他性:任何一种情况,最多只能命中一条规则。
14 / 58
STATION 02 · 工具
画一根数轴,漏洞立刻现形
边界值(临界点)是事故高发区 —— 每次写规则,先把边界值圈出来单独检查。
x > 6 (大于 6)
6
空心圈 ○ = 不包含这个点
x ≥ 6 (6 及以上)
6
实心点 ● = 包含这个点
x < 6 (不到 6)
6
小于号也是空心圈
记忆口诀:带等号(≥ ≤)用实心点,不带等号(> <)用空心圈。
15 / 58
练习 02 ⏱ 4 分钟
游乐场身高票:哪条规则有漏洞?
规则 ①
身高 120cm 以上 → 全票 | 身高 不到 120cm → 半票
规则 ②
身高 超过 120cm → 全票 | 身高 120cm 以下 → 半票
规则 ③
身高 120cm 以上 → 全票 | 身高 120cm 以下 → 半票
任务:分别判断「有没有遗漏」和「有没有重复」,并在数轴上画出来。
16 / 58
练习 02 · 答案
正好 120cm 的那位同学,是关键人物
规则 ①:120 以上 / 不到 120
120
完整且排他 —— 完美!
规则 ②:超过 120 / 120 以下
120
遗漏 —— 正好 120cm 没人管
规则 ③:120 以上 / 120 以下
120
重复 —— 正好 120cm 被算两次
🎯 秘密只有两个字:「以上」包不包含自己?写规则时一定要写死。
17 / 58
STATION 02 · 总结
两条铁律:完整性 + 排他性
🔒 完整性 Completeness
没有遗漏」—— 所有情况至少命中一条
漏了会怎样?系统不知道该干什么 → 卡死
🎯 排他性 Exclusiveness
没有重复」—— 每种情况最多命中一条
重了会怎样?两个答案打架 → 结果不确定
两条都满足 = 「一分为二」
A
¬A
全集
整个矩形被切成两半:不重不漏
18 / 58
STATION 02 · 落到代码
if 语句:天然把世界切成两半
💻 车费问题的代码写法
if ( 年龄 >= 6 ) {
车费 = 100;
} else {
车费 = 0;
}
条件为真 → 走 if;条件为 → 走 else。真假合起来就是全部,所以自动满足完整 + 排他。
🧩 大问题 → 两个小问题
原来:「车费怎么算?」(很大、很乱)
拆成:
① 年龄 ≥ 6 吗?(只有是 / 否两种答案)
② 是 → 100 元;否 → 0 元
这就是「分而治之」:
把一个大问题分成两个更小、更简单的问题。
19 / 58
练习 03 ⏱ 5 分钟 · 小组合作
你来写:校门口闸机的放行条件
🚪 场景
学校新装了刷脸闸机,需要你写判断规则。每个人只有这几种情况:
· 身份:本校学生 / 外校人员
· 时段:上学时段 / 非上学时段
· 是否佩戴校卡:是 / 否
请写出一条规则,让每个人恰好落到一种处理里:放行 / 登记 / 劝离
✍️ 你的答案(写下 if 结构)
提示:先想清楚「放行」的条件,剩下的一律走 else。
20 / 58
练习 03 · 参考解
闸机规则:先定「放行」,其余交给 else
💻 一种合格写法
if (是本校学生 && 上学时段
&& 佩戴校卡) {
放行;
} else {
请到门卫处登记;
}
&& 就是「并且」—— 下一站会详细讲。
✅ 检查一下两条铁律
完整性:放行条件 + else 覆盖了所有人 ✓
排他性:条件成立走 if,不成立走 else,不可能同时走
进阶思考:如果想区分「外校人员」和「本校但没带校卡」,就要再拆一层 if —— 但每一层都要保证不重不漏。
21 / 58
03
STATION 03 / 05
五大逻辑运算
非 · 与 · 或 · 异或 · 相等 · 蕴涵 —— 把命题拼起来
22 / 58
STATION 03 · 读图工具
文氏图:一眼看懂命题的范围
A
B
全集
矩形 = 全集(所有可能的情况)
🔵 一个圆 = 一个命题
里面:这个命题为
外面:这个命题为
🟡 涂色 = 结果为真
我们要判断的表达式,为真的部分就涂亮
🟣 重叠区 = 同时为真
两个圆叠在一起的地方,就是 A 和 B 都为真。
📌 接下来每学一个运算,我们都会画真值表 + 文氏图,双管齐下。
23 / 58
STATION 03 · 运算 ①
逻辑非 ¬A (NOT:不是……)
📋 真值表
A¬A
真 true假 false
假 false真 true
🔁 双重否定 = 肯定
¬(¬A) = A
「不是『不下雨』」= 下雨。
文氏图:整个圆外面
A
黄色区域(圆外)= ¬A
🌧 生活例子
A = 「今天下雨」
¬A = 「今天下雨」
💻 代码里怎么写
!A (感叹号)
A 和 ¬A 加起来是全集,且互不重叠 —— 又是「一分为二」!
24 / 58
练习 04 · ¬ 的真假 ⏱ 2 分钟
说出 ¬A 是「真」还是「假」
1
A = 「7 是质数」(这是真的) → ¬A 是?
2
A = 「1 米 = 100 厘米」 → ¬A 是?
3
A = 「所有的鸟都会飞」(这是假的) → ¬A 是?
4
把「这次考试及格了」取反,用一句话说出来。
✋ 先自己想,再看下一页。
25 / 58
练习 04 · 答案
对一对,你全对了吗?
1
A = 「7 是质数」(真) → ¬A = 假
¬A = 「7 不是质数」,这是错的
2
A = 「1 米 = 100 厘米」(真) → ¬A = 假
3
A = 「所有的鸟都会飞」(假,企鹅不会) → ¬A = 真
¬A = 「存在不会飞的鸟」,这是对的!注意「所有」取反变成「存在」
4
「这次考试及格了」取反 → 「这次考试没有及格」
注意:不是「这次考试不及格就完了」……取反只翻真假,不加情绪 😄
🔑 易错点:「所有」的否定是「至少有一个不」,不是「所有都不」。
26 / 58
STATION 03 · 运算 ②
逻辑与 A ∧ B (AND:……并且……)
📋 真值表
ABA ∧ B
真 ✓
只有两个都真,结果才为真。
文氏图:两个圆的交集
A
B
只有中间重叠的那一块为真
🎒 校园例子
A = 「带了校卡」
B = 「穿了校服」
A ∧ B = 两样都做到了
才能进校门
💻 代码
A && B
27 / 58
练习 05 · ∧ ⏱ 3 分钟
判断 A ∧ B 的真假
1
A = 「今天星期一」(真) B = 「今天有体育课」(真) → A ∧ B?
2
A = 「2 是偶数」(真) B = 「2 大于 5」(假) → A ∧ B?
3
小明带了校卡,但没穿校服。他能进校门吗?(规则:带校卡 ∧ 穿校服)
4
密码规则:长度 ≥ 8 位 ∧ 含有数字 ∧ 含有字母
「abcdefgh」能通过吗?为什么?
28 / 58
练习 05 · 答案
∧ 的口诀:一假即假
1
真 ∧ 真 =
2
真 ∧ 假 =  只要有一个假,结果就是假
3
真 ∧ 假 =  → 不能进校门
这就是 ∧ 的严格之处:缺一样都不行
4
不能通过
长度够(8 位 ✓)、有字母 ✓,但没有数字 ✗ → 三个条件必须同时满足
🔑 记住这句:「并且」很严格 —— 一个掉链子,全盘皆输。
29 / 58
STATION 03 · 运算 ③
逻辑或 A ∨ B (OR:……或者……)
📋 真值表
ABA ∨ B
真 ✓
真 ✓
真 ✓
只要有一个真,结果就为真。
只有两个都假,才是假。
文氏图:两个圆的并集
A
B
两个圆合起来的整片区域
🎫 回到开头的句子 B
A = 「会钢琴」
B = 「会吉他」
A ∨ B = 会其中一样就行
两样都会当然更行
这就是兼容的「或」—— 数学和程序里的「或」默认都是这个意思。
💻 代码
A || B
30 / 58
练习 06 · ∨ ⏱ 3 分钟
「或者」的两副面孔:哪句是真的 ∨?
1
「今晚吃米饭或者面条。」—— 两样都端上桌,妈妈同意吗?
2
「会钢琴或者吉他的同学可以报名。」—— 两样都会能报名吗?
3
A = 「今天下雨」(真) B = 「今天刮风」(真) → A ∨ B?
4
A = 「3 > 5」(假) B = 「3 > 2」(真) → A ∨ B?
🤔 第 1、2 题的答案不一样 —— 这就是中文的坑
31 / 58
练习 06 · 答案
∨ 的口诀:一真即真
1
❌ 妈妈不同意 —— 这是「二选一」,不是逻辑或
它其实是下一页的「异或」!
2
报名 —— 这才是逻辑或 ∨
3
真 ∨ 真 =
注意!很多人以为「真或真」是假,其实是真
4
假 ∨ 真 =
🔑 记住这句:「或者」很宽容 —— 有一个真就够了。
32 / 58
STATION 03 · 运算 ④
异或 A ⊕ B (XOR:只能选一个)
📋 真值表
ABA ⊕ B
真 ✓
真 ✓
两个不一样才为真;
一样(都真或都假)就是假。
文氏图:只留两边,挖掉中间
A
B
中间重叠部分被挖掉
💡 楼梯双控开关
楼上、楼下各有一个开关,都能控制同一盏灯。
· 两个开关都朝上 → 灯
· 两个开关都朝下 → 灯
· 一个上一个下 → 灯
灯 = A ⊕ B
随便拨动任意一个开关,灯的状态一定翻转 —— 这就是异或的魔力。
33 / 58
练习 07 · ⊕ ⏱ 3 分钟
走廊灯:动一个开关,灯会怎样?
🏫 场景
教学楼走廊有一盏灯,两端各有一个开关 A 和 B,规则是 灯 = A ⊕ B
① A 朝上、B 朝上 → 灯是亮还是灭?
② A 朝上、B 朝下 → 灯是亮还是灭?
③ 现在灯是的。我只拨动开关 A,灯会怎样?
④ 现在灯是的。我同时拨动 A 和 B,灯会怎样?
开关 A
开关 B
提示:「朝上」当作 ,「朝下」当作
34 / 58
STATION 03 · 运算 ⑤
相等 A = B (异或的反面)
📋 真值表
ABA = B
真 ✓
真 ✓
两个一样就是真;不一样就是假。
A = B 就是 ¬(A ⊕ B) —— 完全相反!
文氏图:两边挖掉,只留中间和外面
A
B
黄色 = A = B 为真的区域
🌟 两个特别的命题
恒真命题:不管 A、B 取什么,结果永远为真
A ∨ ¬A = 真
「今天要么下雨,要么不下雨」—— 一定对
恒假命题:永远为假
A ∧ ¬A = 假
「今天下雨并且不下雨」—— 一定错
35 / 58
STATION 03 · 运算 ⑥
蕴涵 A ⇒ B (若 A,则 B)
📋 真值表(最反直觉的一张)
ABA ⇒ B
真 ✓
假 ✗
真 ?
真 ?
只有「A 真而 B 假」这一种情况才是假。
A 一旦为假,整个命题自动为真
🤯 为什么会这样?
老师说:「如果你考了 100 分,我就给你买游戏机。」
① 你考了 100,老师买了 → 说话算话 ✓
② 你考了 100,老师没买 → 说话不算话 ✗
③ 你考 100,老师还是买了 → 老师没食言(他只是好人)✓
④ 你考 100,老师也没买 → 没食言
承诺只在条件成立时才需要兑现;条件不成立,就不算违背。
📌 也读作:A 是 B 的充分条件;B 是 A 的必要条件。
36 / 58
STATION 03 · 图解
文氏图秒懂「若 A 则 B」
A 的圆整个被 B 包住
A
B
全集
A ⊆ B:只要你在A 里面,就一定在 B 里面
📐 数学里的例子
若 x 是正方形,则 x 是矩形
正方形 ⊆ 矩形 —— 一定成立 ✓
⚠️ 反过来不成立
若 x 是矩形,则 x 是正方形
长方形也是矩形,但不是正方形 ✗
🌧 生活里的例子
下雨,则地面湿
地面湿不等于下雨(可能有人洒水)—— 这就是逆命题不一定成立
37 / 58
STATION 03 · 进阶
逆命题不一定真,逆否命题一定真
原命题
A ⇒ B
若下雨,则地面湿。
真 ✓
逆命题(把方向调过来)
B ⇒ A
若地面湿,则下雨。
不一定真 ✗(可能有人洒水)
否命题(两边都取反)
¬A ⇒ ¬B
若不下雨,则地面不湿。
不一定真 ✗
逆否命题(调方向 + 取反)
¬B ⇒ ¬A
若地面不湿,则没下雨。
一定真 ✓✓
🔑 黄金法则:原命题 ⟺ 逆否命题,永远同真同假。证明题常用的秘密武器!
38 / 58
练习 08 · 逆否命题 ⏱ 4 分钟
写出下面两个命题的「逆否命题」
第 1 题
若一个数是偶数,则它能被 2 整除。
逆否命题:若 ____________,则 ____________。
第 2 题
若一个数各位数字之和能被 3 整除,则这个数能被 3 整除。
逆否命题:若 ____________,则 ____________。
第 3 题 · 想一想
「若 x 是正方形,则 x 是矩形」的逆命题是什么?它成立吗?
39 / 58
练习 08 · 答案
对一对:先取反,再调头
第 1 题
逆否命题:若一个数不能被 2 整除,则它不是偶数
✅ 与原命题一样,都是真的。
第 2 题
逆否命题:若一个数不能被 3 整除,则它的各位数字之和不能被 3 整除
✅ 这就是课本上「3 的倍数特征」的另一面。
第 3 题
逆命题:若 x 是矩形,则 x 是正方形
不成立 —— 长 4 宽 3 的长方形是矩形,但不是正方形。
🧠 解题口诀:「逆否 = 反过来 + 都取反」,两步一起做,别漏掉任何一步。
40 / 58
STATION 03 · 大发现
两个命题,正好 16 种运算
🔢 数一数就知道了
两个命题 A、B,一共 4 行真值表:
(真,真)(真,假)(假,真)(假,假)
每一行结果都能选「真」或「假」—— 2 种选择。
2 × 2 × 2 × 2 = 16
把结果写成 0/1,就是一个 4 位二进制数:0000 ~ 1111,正好 16 个!
📋 16 种运算一览(节选)
二进制运算名字
0000false恒假
0001A ∧ B逻辑与
0011A就是 A
0110A ⊕ B异或
0111A ∨ B逻辑或
1001A = B相等
1101A ⇒ B蕴涵
1111true恒真
💡 这意味着什么?
再复杂的两个命题的公式,也逃不出这 16 种
所以看似复杂的表达式,往往能化简成其中最简单的一种 —— 下一站就来做这件事!
类比:16 种运算就像 16 个颜料格,任何颜色都只能从里面调出来。
41 / 58
04
STATION 04 / 05
化简神器
德摩根定律 · 对偶性 · 卡诺图 —— 把乱麻理成一条线
42 / 58
STATION 04 · 神器 ①
德·摩根定律:把「非」推进括号里
定律 ①
¬(A ∧ B) = (¬A) (¬B)
「不是两个都满足」=「至少有一个不满足
∧ 变成 ∨
定律 ②
¬(A ∨ B) = (¬A) (¬B)
「两个都不满足」=「两个分别都不
∨ 变成 ∧
☔ 生活例子
A = 「下雨」 B = 「有体育课」
¬(A ∧ B)
= 不是「又下雨又有体育课」
= 不下雨 或者 没有体育课
验证:只有「下雨 且 有体育课」这一种情况让左边为假;右边也只有这一种情况为假 —— 完全一致 ✓
🎒 班级例子
「不是(带校卡 并且 穿校服)」
= 「没带校卡 或者 没穿校服」→ 不能进校门
🔑 口诀:「非」进括号,与或互换。
43 / 58
STATION 04 · 神器 ②
对偶性:一次学会两公式
🔄 三个互换动作
把公式里的东西做三组互换:
truefalse
A¬A
换完之后,等式依然成立
这就是对偶性(Duality)—— 学一个送一个。
🧪 现场演示
原式:¬(A ∧ B) = (¬A) ∨ (¬B)
↓ 把 A 换成 ¬A、B 换成 ¬B、∧ 换成 ∨、∨ 换成 ∧
得到:¬(¬A ∨ ¬B) = A ∧ B
↓ 两边同时取反
¬A ∨ ¬B = ¬(A ∧ B) ✓ 又回来了
再试一个:A ∨ ¬A = true → 对偶:A ∧ ¬A = false ✓
🤔 为什么有用?
一半的公式就够了。
就像乘法口诀:知道了 3×7,就知道了 7×3。
程序员写复杂判断时,靠对偶性把公式翻过来,马上就变简单。
44 / 58
练习 09 · 德摩根 ⏱ 4 分钟
把这三句话改写成等价的说法
1
不是(下雨 并且 有体育课)」= ?
2
不是(迟到 或者 早退)」= ?
3
不是(数学及格 并且 英语及格)」= ?
提示:想想什么情况下「两门都及格」这句话是假的
4
判断对错:¬(A ∨ B) 和 (¬A ∨ ¬B) 是一样的吗?
45 / 58
练习 09 · 答案
揭晓:「非」进门,与或互换
1
不下雨 或者 没有体育课
¬(A ∧ B) = ¬A ∨ ¬B
2
没有迟到 并且 没有早退
¬(A ∨ B) = ¬A ∧ ¬B —— 注意这里变成「并且」了!
3
数学没及格 或者 英语没及格
只要有一门不及格,「两门都及格」就是假的 ✓
4
不一样
¬(A ∨ B) = ¬A ¬B(两个都不);而 ¬A ∨ ¬B = ¬(A B)(至少一个不)
🔑 易错点:很多同学只记得「把 ¬ 分下去」,忘了 ∧ 要变成 ∨(或反过来)。
46 / 58
STATION 04 · 实战
二灯游戏:规则表看着好复杂
🎮 游戏规则
街机上有两个开关 AB,控制一盏红灯。红灯亮不亮,遵循下面这张表:
开关 A开关 B红灯
0 关0 关亮 💡
0 关1 开亮 💡
1 开0 关
1 开1 开亮 💡
任务:用一个最简短的逻辑表达式说出红灯什么时候亮。
先硬着头皮写一遍
红灯 = (¬A ∧ ¬B)
  ∨ (¬A ∧ B)
  ∨ (A ∧ B)
三种情况「或」起来 ——
又长又难懂 😵
有没有更快的方法?
👇 下一页登场:程序员的化简神器 —— 卡诺图
47 / 58
STATION 04 · 神器 ③
卡诺图:把真值表摆成方格,圈一圈就化简
🗺 第一步:摆方格
横轴是 B(0 / 1),纵轴是 A(0 / 1),把红灯的亮灭填进去。
B=0
B=1
A=0
1
1
A=1
0
1
1 = 灯亮,0 = 灯灭。
⭕ 第二步:圈出尽量大的方块
把相邻的 1 圈成 2 格或 4 格的大块:
🟡 第一行的两个 1(A=0 整行)→ 这一行跟 B 无关,就是 ¬A
🟡 右下角单独的 1(A=1 且 B=1)→ A ∧ B
红灯 = ¬A ∨ (A ∧ B)
还能再简:¬A ∨ (A∧B) = (¬A∨A) ∧ (¬A∨B) = ¬A∨B
✅ 化简结果
¬A ∨ B
也就是 A ⇒ B
翻译成人话:「只要 A 关着,灯就亮;A 开着的时候,得看 B。」
从 3 项 → 1 项,这就是卡诺图的力量 💪
48 / 58
STATION 04 · 升级
三灯游戏:8 格卡诺图,答案更简单
🗺 三个开关 A、B、C 的卡诺图
横轴是 BC(按 00 · 01 · 11 · 10 排列),纵轴是 A。
00
01
11
10
A=0
1
1
1
1
A=1
0
0
1
1
⚠️ 注意横轴顺序是 00→01→11→10,不是 00→01→10→11:相邻两格只能变一个字母。
⭕ 圈两圈
🟡 整行 A=0(4 格)→ ¬A
🟡 右下两格(A=1 且 C=1)→ A ∧ C
绿灯 = ¬A ∨ (A ∧ C) = ¬A ∨ C
🎉 惊喜
¬A ∨ C
开关 B 根本不用看
8 格表里藏着这么简单的规律,光看表格是看不出来的。
🎯 卡诺图的价值:让「看不见的规律」变成肉眼可见的方块。
49 / 58
练习 10 · 你来当游戏设计师 ⏱ 6 分钟
设计一条规则,再把它化简
🎮 你的任务
设计一个「过关判定」:两个条件 A = 血量 > 0B = 有钥匙
过关规则表如下,请:① 填出过关栏 ② 用卡诺图化简
A 血量>0B 有钥匙过关?
00不过
01不过
10过关
11过关
提示:先想清楚「过关」跟 B 有没有关系。
✍️ 写出你的化简过程
答案其实非常短 —— 短到只有一个字母
💬 答案下一页揭晓,先别翻!
50 / 58
05
STATION 05 / 05
三值逻辑
真 · 假 · 未定义 —— 当答案不只有两个
51 / 58
STATION 05 · 新概念
第三个值:undefined(未定义)
❓ 什么时候会「不知道」?
① 还没决定:明天的运动会还没定是否举行
② 算不出来:1 ÷ 0 的结果是什么?
③ 还没填:表格里空白的那一格
④ 无关紧要:答案不影响最终结果
这些既不是,也不是
三值逻辑的三个积木
true
false
undefined
未定义
就像选择题的第三个选项:「不确定」
📌 程序世界里,undefined 是真实存在的第三个值,不能假装看不见。
52 / 58
STATION 05 · 短路求值
&& 和 || 会「偷懒」
A && B(逻辑与)
· A 为 false → 直接得出 false根本不看 B
· A 为 true → 结果由 B 决定
所以:A=false 时,B 就算未定义,答案也是 false。
A || B(逻辑或)
· A 为 true → 直接得出 true根本不看 B
· A 为 false → 结果由 B 决定
所以:A=true 时,B 就算未定义,答案也是 true。
📋 三值真值表
ABA ∧ BA ∨ B
truetruetruetrue
truefalsefalsetrue
true未定义未定义true
falsetruefalsetrue
falsefalsefalsefalse
false未定义false未定义
💡 这有什么用?
写代码时可以省掉一次判断
if (名单里有他 &&
 他的成绩 > 90)
如果「名单里没有他」,后面那句压根不会执行 —— 既快,又不会出错。
这叫短路求值(Short-circuit)。
53 / 58
STATION 05 · 验证
三值逻辑里,德摩根定律还成立吗?
✅ 依然成立!
¬(A ∧ B) = ¬A ∨ ¬B
¬(A ∨ B) = ¬A ∧ ¬B
把「未定义」也代进去逐格检查,每一行都对得上
这说明德摩根定律非常结实,不是只在两值世界里才对。
📋 抽查几行
AB¬(A∧B)¬A∨¬B
true未定义未定义未定义
false未定义truetrue
未定义未定义未定义未定义
falsefalsetruetrue
左右两列完全相同
🤔 唯一要注意的
未定义」的否定,还是未定义
¬undefined = undefined
不知道的反面,还是不知道 —— 这很合理 😄
54 / 58
练习 11 · 三值逻辑 ⏱ 4 分钟 · 含答案
「未定义」会传染吗?
① false && 未定义 = ?
A 已经是 false,与运算直接短路false
② true || 未定义 = ?
A 已经是 true,或运算直接短路true
③ true && 未定义 = ?
得看 B,而 B 不知道 → 未定义
④ 未定义 && false = ?
得看 B,B 是 false → false
🎯 做题心法
先问一句:「左边能不能一锤定音?」
· && 遇到左边的 false → 定音:false
· || 遇到左边的 true → 定音:true
· 定不了音 → 再看右边
「未定义」就像还没拆的盲盒:不看它,就还能下结论;一看它,答案就被它带跑了。
55 / 58
FINAL STATION
四把钥匙
把这四样东西装进口袋,你就是逻辑小高手
56 / 58
FINAL · 本章小结
今天带走的四把钥匙
🔑 01
命题与真假
能判断对错的陈述句才叫命题;只有 true / false 两个值。
配套:完整性 + 排他性
🔑 02
五大运算
¬ 非 ∧ 与 ∨ 或 ⊕ 异或 = 相等 ⇒ 蕴涵
配套:真值表 + 文氏图
🔑 03
化简工具
德摩根定律(非进括号,与或互换)· 对偶性 · 卡诺图
配套:圈大方块
🔑 04
三值逻辑
真 · 假 · 未定义;&& 与 || 会短路求值
配套:先看左边能不能定音
🧭 最重要的不是公式,而是这个习惯:遇到含糊的说法,先问「边界在哪?会不会漏?会不会重?」
57 / 58
课后挑战 · 把逻辑带回家
现在轮到你了
三道挑战题,任选一题完成,下次课分享:
① 给家里的一件电器写一条「完整且排他」的使用规则
② 用真值表证明 ¬(A∧B) = (¬A)∨(¬B)
③ 设计一个四灯游戏,画出卡诺图并化简
💡
逻辑小高手
TRUE · FALSE · 不重不漏
58 / 58
01/ 58
← → 翻页 · O 目录 · F 全屏 · P 打印