万书网 > 文学作品 > 程序员的数学思维修炼 > 第8章 数理逻辑——非此即彼

第8章 数理逻辑——非此即彼




数理逻辑又称符号逻辑、理论逻辑,它既是数学的一个分支,也是逻辑学的一个分支。数理逻辑是用数学方法研究逻辑或形式逻辑的学科。其研究对象是对证明和计算这两个直观概念进行符号化以后的形式系统。数理逻辑是数学基础的一个不可缺少的组成部分。虽然名称中有逻辑两字,但并不属于单纯逻辑学范畴。



8.1 逻辑的重要性


数理逻辑就是精确化、数学化的形式逻辑,它是现代计算机技术的基础。作为程序员,必须掌握数理逻辑的相关知识。这样,不仅在编写程序时不会出现逻辑错误,并且在编写项目文档等用自然语言描述的信息时,也同样能做到表达清楚,不会产生歧义。

其实,不仅在计算机项目中逻辑非常重要,在日常生活中,逻辑也非常重要。例如,我们编写报告、发言稿、总结等公文,与朋友聊天等活动,都需要有一定的逻辑思维能力,按一定的逻辑关系来进行。



8.1.1 模棱两可的表述


什么叫“模棱两可”?我们先通过一个故事来看这个词的来历。

唐朝时代,栾城有一个人,名字叫苏味道。他九岁的时候就会写文章,后来和他的同乡李峤都以才学出名,当时的人合称他们为苏李。苏味道在二十岁的时候,考取了进士,曾做到吏部侍郎的职位。后来在武则天当皇帝的时候做了宰相。根据“唐书”的记载,苏味道做了宰相以后,只求保持个人的地位和安全,处理事情总是这样办也行,那样办也可以,却从不表示明确的态度和意见,更谈不上什么创新和改革了。他还常常对别人说:“处理事情不能做明确的决断。因为如果发生了错误,就要负失责的责任,只要保持‘模棱’两端就可以了。”当时的人听他这么一说,都叫他“苏模棱”或者是“模棱手”。“模棱”是指方向可左可右的意思。因此,后人在遇到有人说话或处理事情不做明确的决断,也不表示鲜明的态度,可以或不可以都行,就叫做“模棱两可”。

我们来看一下现实生活中一些常见的模棱两可的表述。

案例一

在购买手机时,征求朋友的意见:你看这款手机屏幕很大,玩游戏很好;另外这一款屏幕比较小,不过样式很好。你觉得应该买哪款?

朋友:屏幕大的这款不错,屏幕小的这款也很好。

听了朋友的意见,你有什么感想?

案例二

团队开会讨论项目的两个完全相反的发展模式时,甲:我支持A模式。

乙:我赞同B模式。

丙:我觉得A、B两种模式都很好。

如果你是项目负责人,听到丙的这种意见,有什么想法?



8.1.2 肯定或否定


在很多时候,为了消除歧义,我们不需要模棱两可的表示,而是希望听到明确的肯定或否定表述,即只需要回答yes或no。

使用逻辑,可以消除歧义,准确描述事物。

对于程序员来说,应该已经知道逻辑的基本是两个分支:逻辑成立、逻辑不成立。在很多场合,关于这两个分支还有很多不同表述,如真/假、是/否、Yes/No、True/False、1/0。在C语言系统中,对于逻辑值的表示用“非0”(表示真)和“0”(表示假)来表示。



8.1.3 程序中的逻辑判断


正是由于逻辑代数(布尔代数)的创立和发展,为数字电路设计打下理论基础,才产生了今天被广泛应用到各行各业的电子计算机。

在计算机应用中,除了硬件电子线路采用逻辑电路之外,程序设计中的逻辑判断也是必不可少的。在计算机程序中使用逻辑判断功能,使设计的程序具有智能判断能力,可根据不同的条件进行分支,以执行不同的程序片断。

作为程序员的我们都知道以下公式:

而算法又可以用以下公式来表示:

由此可见,逻辑在程序设计中的重要性。

所有的程序设计语言都离不开逻辑判断语句,如C语言中可通过if语句、switch语句等进行逻辑判断。其他程序设计语言(如Java、Basic等)也提供了类似功能的语句。

逻辑判断是程序中最常用的功能。例如,根据我国相关法规的规定,年满18周岁的成年人才能单独进入网吧上网,因此网吧管理系统中,就需要根据上网者提供的身份证进行判断。这样就会产生两种情况:一种是已满18周岁,可以在网吧上网;另一种情况是未满18周岁,则不允许在网吧上网。这两种情况可表示为图8-1所示。

图8-1

图8-1所示逻辑非常简单,可以用以下程序来实现其功能。