本文属于《程序员的数学》读书笔记系列。
一 逻辑为何重要?
逻辑是消除自然语言的歧义、严密准确的记述事物的工具。
作者还以需求说明为例,介绍逻辑的重要性。需求都理解错了,自然做出来的东西不是产品想要的。
二 兼顾完整性和排他性
作者以巴士费用为例介绍。
能够判断对错的陈述句,叫做命题。命题正确时,称该命题为“真”,也称true,命题不正确时,称该命题为“假.也称false。
思考条件有没有遗漏,有没有重复。
画一个帮助思考。这个还是很有用的,有的项目中尤其是缴费跟有效期有关。直观文字不好理解,用数轴可以有效辅助思考。
注意边界值,这是容易犯错的地方。
没有遗漏,即具备完整性,说明该规则无论在什么情况下都适用;
没有重复,即具备排他性,说明该规则不存在矛盾之处。
if语句的条件分支,体现了“兼顾完整性和排他性的分解”。
简单的逻辑容易理解,复杂的逻辑容易出错。
下面来一起学习复杂逻辑的解法。
三 建立复杂逻辑
我觉得这块总体上跟数学集合很多概念是一致的,或者是电子电路的与或非类似。作者用了真值表达式、文氏图来互相验证。
逻辑非 —— 不是A
“不是......”的命题运算称作非,英语中用not表示,假设某命题为A,则A的逻辑非表达式写作:
﹁ A(not A)
文氏图就是颜色反转,Java就是用!表示。
逻辑与 —— A并且B
“A并且B”的命题称作逻辑与,英语中用and表示,命题“A并且B”用逻辑表达式写作:
A∧B(A and B)
● 仅当A和B都为true时,A∧B才为true
逻辑或 —— A或者B
“A或者B”的命题运算称作逻辑或,英语中用or表示,命题“A或者B”用逻辑表达式写作:
A∨B(A or B)
● A和B至少有一个为true时,才为true
● 当A和B都为false时,才为false
异或 —— A或者B(但不是都满足)
“A或者B(但不是都满足)”的运算称作异或,英语中称作exclusive or,它和逻辑或相似,但是在A和B都为true或者false的情况下有所不同,它的逻辑表达式写作:
A⊕B
● 当A和B不同时,才为true
相等 —— A和B相等
它的逻辑表达式写作:
A=B
● 当A和B都为true时,A=B为true
● 当A和B都为false时,A=B为true
蕴含 若A则B
前面的都容易理解,合格相对难一些,我觉得这是为了让计算机做判断。
A=>B。
书上写的比较简单。直接说若A则B。真值表如下表示,看上去容易困惑。
写成熟悉的语法应该是if.... then ....
举个例子,你跟孩子承诺,如果考试100分,就可以买一辆滑板车。可以这样理解,A:考试100分,B买滑板车。
只有在A为true,B 为false情况下,才认为我失信于人,结果是false。否则,都是是true,尤其是在A为false情况下,B的结果与A无关。(你考试没考好,车子买不买都行),看下面的文氏图就是除了A为true,B=false的地方都是阴影。
四 德 摩根定律(反演律)
(﹁ A)∨(﹁ B)=﹁ (A∧B):“非A”或者“非B”和非“A与B”是等价的
(﹁ A)∧(﹁ B)=﹁ (A∨B):“非A”并且“非B”和非“A或B”是等价的
对偶性:
我们知道如下关系呈现对偶关系,可以认为是“非”的关系:
true ←→ false
A ←→ ﹁ A
∧ ←→ ∨
它们相互成对,这称作逻辑表达式的对偶性。
作者还介绍了使用卡诺图简化逻辑表达式。
五 含未定义的逻辑
程序经常会因为发生错误,导致退出、崩溃等,得不到true和false中的任意一个值,为了能表示这种得不到的值的情况,又新引入了一个undefined的值。即true、false、undefined三值逻辑。
1、带条件的逻辑与(&&)
它使用运算符&&,将A和B的带条件的逻辑与表示为:A&&B
● 不包含undefined的行,A&&B与和A ∧ B相等;
● A为true时,A&&B与B相等;
● A为false时,A&&B恒为false;
● A为undefined时,A&&B恒为undefined。
在判断A与B的真假值时,应根据条件A看是否需要看B,因此称为带条件的逻辑与。
2、带条件的逻辑或(||)
它使用运算符||,将A和B的带条件的逻辑或表示为:A||B
● 不包含undefined时,A||B与A ∨ 相等;
● A为true时,A||B恒为true;
● A为false时,A||B与B相等;
● A为undefined时,A||B恒为undefined。
3、三值逻辑中的否定(!)
它的否定式写作:!A
● 不包含undefined时,!A和﹁ A相等;
● 若A为undefined时,!A恒为undefined。
4、三值逻辑的摩根定律
(!A)||(!B)=!(A&&B)
(!A)&&(!B)=!(A||B)
先到这里。