《程序员的数学》第二章:逻辑
2019-10-01 本文已影响0人
黑符石
闲言碎语
逻辑表达式在程序员眼里是再常见不过的了。除了正常的业务逻辑处理之外,还有各种异常需要我们去捕获。当然,能够尽量做到考虑所有可能情况是自然要满足的。也就应对了本书逻辑这一章节着重提出的“兼顾完整性和排他性”。当然,要做到这些,有各种数学表达方式和图像法来辅助我们完善程序的健壮性。那么下面针对具体的图表以及表达式做具体总结。
关键内容图示
第二章_逻辑.png表达方式
关于逻辑的表达方式主要可以通过逻辑表达式、真值表、文氏图以及卡诺图。下面逐一进行介绍:
1. 逻辑表达式
逻辑表达式在程序员开来已经屡见不鲜了,其包含的内容在此就一图来回顾一下即可。
逻辑表达式.png
2. 真值表
真值表主要通过交叉的方式,可以很好的避免遗漏与重复情况,也就是前文的完整性与排他性,因此常用真值表来验证是否有漏或者重复的判断。具体如下图所示:
真值表表示A并B.png
3. 文氏图
文氏图也就是我们在数学中常用语表示集合的交集并集情况的表达方式,其特点就是一目了然且容易理解。具体如下图所示:
文氏图表示A并B.png
4. 卡诺图
卡诺图主要针对复杂问题时可以简化问题。例如书中的二灯、三等游戏判断在那些情况下该按按钮。同样的,本人在此处推导到四灯情况。只是关于五灯情况,实在不知如何通过卡诺图表示,还是说卡诺图也是有限条件下的表达。还需更深研究。下面列举卡诺图的具体例子:
卡诺图表示A并B以及多灯游戏.png
德·摩根定律
该定律主要是针对逻辑换算而言,个人感觉其实就与集合的交集与并集等的换算逻辑一样。包括前文中的各种逻辑表达式,均可通过该定律做换算。
小结
以上是本人关于阅读《程序员的数学》1的第二章的个人笔记,可见一来在程序开发中的一个简单if……else……判断可以引发出这么多中表达方式;二来,确实可以通过以上这些工具辅助我们达到兼顾完整性与排他性的目的。小结完毕。
在程序的世界里,只有不断学习,才能留在原地。