展现独立思想 博采百家众长
汇集涓涓细流 共向辽阔海洋
今天给大家介绍的,是西安市西电中学王煜老师的案例《“谁在说谎”中的逻辑推理》
逻辑推理,是从简单命题中推导出复杂命题判断结论的过程。王煜老师案例的要点,是在二进制数的基础上,将人说的真话与谎话,转换成符号化的计算机“0/1”逻辑的“真”与“假”,依据逻辑推理中的“不矛盾规则”,构造出逻辑判断式,编程后由计算机自动完成,初步展示了用计算机来代替人进行思维活动的简单方法。
对比李辛老师和王煜老师的案例后可以发现,同样是“量化”,李辛老师的量化结果是“数量值”,王煜老师的量化结果则是“逻辑值”,这两种量化方法分别体现了计算机“数值运算”和“逻辑运算”的基本功能,是 “计算机科学的思想与方法”的重要特征。
“谁在说谎”中的逻辑运算
西安市西电中学 王煜
一、案例内容
某地区发生了一桩命案,警官圈定了四名嫌疑人甲、乙、丙、丁,在讯问时,警方确定四人中有一人在说谎,而说谎的这个人就是凶手。这四人口供如下:甲说:“不是我”,乙说:“是丙”,丙说:“是丁”,丁说:“不是我”。
请设计一个算法,通过编程判断谁在说谎。
二、案例解析
在新课标中,本例属于必修模块的“数据与计算”。
(一)意义和作用
在对现实生活中的问题进行算法设计时,会遇到两种类型的问题:一类属于数学的“可计算”类问题,可以通过数学公式、定理等推导得出相关的解题方法;另一类是超出数学计算范畴、条件模糊、方法不明、需要逻辑推理和深度思考的“非计算”类问题,对于这类问题,学生往往无从下手,不知道计算机是如何进行逻辑推理的,但正是这类问题,恰能较好地体现计算思维的作用。
(二)概念和原理
1.逻辑运算的概念
逻辑运算是用数学方法研究逻辑问题,可以对非数值表达的客观事物如状态、现象等进行推理和演绎。逻辑变量的取值只有两个:0和1,用来表示两种相互对立的“真、假”逻辑状态,没有中间值;逻辑运算有与、或、非三种运算关系,其运算结果非0即1。
2、解决问题的思路
分析案例可以发现,每个人的口供只有“真”“假”两种状态,这两种状态可以用逻辑值“1”和“0”表示,而口供中的“是”与“不是”则对应着关系符“=”和“”,这样,利用逻辑值和关系符,能够将人的“话语”转换成逻辑关系式,然后通过对逻辑关系式的运算,找到各关系间没有相互矛盾的情形,即为问题的答案。
因此,用计算机解决简单的推理问题,可以运用计算思维的思想,利用逻辑运算来完成。具体的方法是:抽象出解决问题的关键要素进行量化,确定各要素之间的逻辑关系;通过对逻辑关系式的判断,得到结论。
(三)目标与方法
1. 教学现状分析
在算法与程序设计教学中,教师常常注重可直接套用数学公式的标准算法,重实用,轻思维,重程序,轻算法,以编写程序代码为主,强调语法结构,注重上机操作,忽视思维方式的引导和算法思想的培育,其结果是学生只会根据教师提供的标准算法,依葫芦画瓢地编写代码,缺少思维能力和创造意识,更不会将算法思想迁移到其他问题的解决中。
2. 教学目标的设定
2.1 教学目标的设定依据
新颁布的课程标准对“数据与计算”模块要求如下:
(1)主要学科核心素养:计算思维
(2)内容标准:理解算法的概念,掌握算法与程序设计的基本知识,能够运用恰当的描述方法和控制结构表示简单算法,并使用程序设计语言实现简单算法。
(3)学业要求:依据解决问题的需要,设计和表示简单算法;掌握一种程序设计语言的基本知识,利用程序设计语言实现简单算法来解决问题。
2.2 教学目标的设定结果
(1)通过对具体案例的分析,使学生了解利用逻辑运算解决“非计算”类问题的一种思路和方法。
(2)在对具体案例的分析过程中,培养学生能够从实际问题中抽象并量化关键要素,建立数学模型,形成和优化解决方案。
(3)在问题的解决过程中,培养学生有意识地运用计算思维解决问题的能力,能够将计算思维的思想迁移到现实生活中。
从上述目标可以看出,本节课的教学重点是对关键要素的抽象、界定、量化、建模、算法设计和编程,其中界定、量化和建模是教学难点。
3. 教学方法设计
3.1 教学方法的设计依据
本节课的教学案例是对“非计算”类问题的算法设计,新课标对算法设计的教学建议:创设利用算法解决问题的情境,让学生经历将实际问题形式化的过程,在解决问题的过程中,注重思路和方法的引导,引导学生在解决不同问题的情境中,反复亲历思维的全过程,利于学生计算思维的形成和发展,理解算法的特征,掌握常见解决实际问题的方法。
3.2 教学方法的设计结果
通过对具体案例的分析,让学生经过抽象、界定问题、量化、建模、算法设计及编程等过程,体验计算机解决逻辑推理问题的一种思路和方法。采用的主要教学方法是讲授法和任务驱动法。
(四)过程与实施
1. 给出事实
判断四个人中谁在说谎,找出凶手。
2. 抽象并界定问题
2.1 抽象:从问题出发,通过比较、分析、排除无关因素,提取研究对象的重要特性,找到解决问题的关键要素。
(1)甲说:“不是我”,乙说:“是丙”,丙说:“是丁”,丁说:“不是我”。
(2)有一人在说谎
2.2 界定问题:把复杂的问题划分为具有可操作性的若干个小问题。
(1)如何对人的语言进行量化;
(2)确定量化后的各变量之间的逻辑关系;
(3)在给定条件下,怎样设计能够进行逻辑推理的算法;
(4)怎样编程实现算法,得出正确结果。
3. 量化
把从实际问题中抽象出来的非数值型特征,如事物的状态、颜色、大小等,转化成为可计算的数值形式,便于计算机处理。
(1)对甲、乙、丙、丁四人分别编号,号码依次为1、2、3、4。
(2)设变量x为做凶手的编号,由于凶手只能是甲、乙、丙、丁四人中的一个,因此x的取值范围为1,2,3,4。
(3)根据各人的口供构造逻辑关系式,得到下列表格:
4. 建立数学模型
逻辑关系式的运算结果为逻辑值True或False。具体运算时,逻辑值将被转换成数值。例如:在VB中,True被转换成 -1;False被转换成0。因此,四人的口供可以被构造成由四个逻辑关系式组合而成的算术运算式:
当有三个人说真话,则上述算式中有三个逻辑关系式的运算结果为True,另一个为False,算式的运算结果为-3,此时的x值就对应着凶手编号。因此,正确答案的判定条件应该为:
5. 算法设计:
利用穷举法,对x在取值范围内的所有值进行运算,找出符合判定条件的运算结果,即为正确答案。
6. 利用VB语言编程并调试运行:
三、一些个人想法
初听起来,计算思维非常抽象和晦涩。但简单来看,它就是一个思维的过程,是一种能够帮助我们使用数字化工具解决问题的思维方式。在算法设计中,对于“可计算”类问题,我们可以借助数学知识运用相关公式和定理进行建模,形成算法,而在面对“非计算”类问题时,就要依靠计算思维,对问题进行界定、抽象、量化和建模,这是使用计算机解决此类问题的关键。因此,在算法与程序设计教学中,教师应结合实际生活,从不同角度积累教学案例,提供多种场景和复杂问题,促使学生在反复亲历的过程中,逐步发展计算思维,最终迁移到与生活相关的其他问题的解决中。
欢迎关注白珍名师工作室
领取专属 10元无门槛券
私享最新 技术干货