巧设情境 精彩课堂
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
巧设情境精彩课堂
本课利用“过河问题”、“高斯运算”、“韩信点兵问题”、“棋盘上的麦粒”等来设置情境,实现了高一数学知识的迁移,这些算法比较简单学生容易理解,也便于让学生进一步理解算法及其特征,同时结合实例引导学生学会利用自然语言、流程图和伪代码三种方式来描述算法。
一、创设情境,导入新课
师:同学们,上课前我先来考考大家,这是一道脑筋急转弯的题目——把大象放进冰箱需要几步?
生:哈哈,赵本山都知道,三步呗。
第一步:把冰箱门打开;第二步:把大象装进去;第三步:把冰箱门关上。
师:哇,不错,反应很快,那接下来我们增加点难度。
教师利用课件展示经典的趣味性过河问题:有一个猎人带着一头羊,一只狼和一颗大白菜回家,路上遇到一条河。
河边只有一条很小的船,一次最多只能载猎人和一样东西过去,可是如果让狼与羊单独在一起,狼会吃羊,让羊与白菜单独在一起,羊会吃白菜,请问猎人怎么做才能把三者都安全运过河?
学生思考并讨论解决方案。
最终给出准确答案:
第一步:带羊过河,人返回,留下羊;
第二步:带狼过河,人和羊返回,留下狼;
第三步:带菜过河,人返回,留下菜;
第四步:人带羊一起过河。
教师小结:刚才同学们在解决这两道问题时都有准确明了的解题步骤。
同样,计算机在解决问题时也需要有解题步骤,这种解题步骤就是算法。
这也是我们今天要学习的内容——“什么是算法?”
板书:算法的概念——算法就是解决问题的方法和步骤。
二、知识迁移,融汇贯通
师:那么一个算法具有哪些特征呢?同学们在高一数学课上学习算法知识时,遇到一题“计算1+2+3+……+100的和”。
下面请同学讨论并分析一下这道题的算法都有哪些特点?
生:最直接的计算方法是将这100个数按顺序相加得出结果5050,第二种是快速计算的方法是高斯所用的凑数法“1+99=100,2+98=100,……”,答案也是5050。
师:利用计算机程序也可以解决(课件展示解题方法)。
虽然我们的计算方法各不一样,但结果是唯一的,这也说明了算法具有可行性和确定性的特征。
那么从这段程序代码我们可以看到这个算法还必须具备什么?
生:如果要得出正确结果,这个算法首先必须先有两个数,一个是n表示相加的数值,另一个是s表示每计算一次的和。
师:同学们观察得很细心。
其实就是指在计算机程序中,这个算法必须有输入(即n和s)和输出(即结果5050)。
生:还有,这道题目的算法有限定一个范围,我们都可以在有限的时间内计算出来,应该是体现算法的有穷性。
师:没错,大家分析得很到位。
从高斯这道计算题中我们就可以找出一个算法所具备的一般特征。
板书:算法的五个特征——可行性、确定性、输入、输出、有穷性。
三、循序渐进,层层深入
师:通过前面的学习我们已经了解了算法的概念及其特征,那么当我们找到一个问题的算法之后,不能只是自己明白就行,还要想办法把它准确、具体地描述出来,这样才能编写成程序让计算机执行。
我们可以采取哪些方式来描述一个算法呢?接下来我们以“韩信点兵问题”为例,一起来探讨这个问题的算法描述方法。
课件展示韩信点兵问题:“今有物不知其数,三三数之余二,五五数之余三,七七数之余二,问物几何?”
师:同学们算一算,该“物”最少有几个?
生:可以把这个问题用数学语言表述成“求被3整除余2,被5整除余3,被7整除余2的最小自然数”,那么求该“物”最少的个数就是这里最小的自然数。
师:大家的数学学得很好啊,没错,换位思考一下,这个问题就简单了。
其实大家对这个问题的算法分析已经很准确了,现在请同学们参考课本第6页的“桌面小时钟问题的算法描述”,用自然
语言描述一下这个问题的算法,并写在自己的笔记本上。
学生思考并动笔描述,教师巡视检查。
教师选择一份正确的算法描述,利用板书展示。
1、用自然语言描述算法(韩信点兵问题的算法描述)
step1:将n初始值赋为1
step2:若n被3、5、7整除后余数为2、3、2,则输出n,转step4
step3:将n加1,转step2
step4:结束
教师小结:这位同学对于这道问题的描述非常清晰、详细。
用自然语言描述算法符合我们平常的表达习惯,且容易理解,但是比较缺乏直观性和简洁性。
大家在高一数学课上都学过流程图的知识了,那么接下来请同学们利用流程图来描述这个算法。
2、将自然语言转化成流程图描述算法
根据学生的分析,一步步展示韩信点兵问题的算法流程图
师:如果自然语言和流程图两种方式让大家选择,你们更喜欢采取那种方式来描述算法,为什么?
生:当然是流程图,不仅因为我们数学课上已经学过,而且用流程图描述算法看起来更加形象、直观,也更容易理解。
教师小结:同学们观察得很仔细。
我们以后的课程要学习一些复杂的算法,直接编写代码很难保证程序不出差错,所以程序设计
人员一般先用流程图描述算法,有了依据可以更方便地编写程序代码了。
这节课我们还没有直接涉及程序代码,接下来我们先来认识一下“伪代码”,看看它是怎么描述算法的。
3、将流程图转化成伪代码描述算法
教师引导提示,学生参考课本第8页的例题,根据上面的流程图,一步步转化成伪代码的形式。
韩信点兵问题的算法描述:
输入数->n
if n被3、5、7整除余数为2、3、2,then
输出n
else n=n+1
end if
师:上面的代码并不是我们计算机可以直接识别和执行的程序代码。
伪代码是介于自然语言和计算机程序语言之间的一种算法描述。
但是相对于前面两种描述方法已经是最接近我们以后要学的程序代码了,它还有什么特点吗?
生:这么看来,用伪代码描述算法更加简洁易懂,修改也比较方便,并且很容易转化为程序语言代码。
教师小结:刚才我们已经了解了描述算法的三种方式,也对它们的特点作了简单比较。
以后碰到这样的问题时,我们可以根据实际情况挑选一种合适的方式先对问题进行算法描述,再来编写程序
代码就可以做到事半功倍了。
四、自主探究,活学活用
师:从同学们刚才对于“韩信点兵问题”的算法分析及算法描述过程中的表现中,老师不得不佩服大家的智慧了。
我这里还有一个有趣的故事,需要大家看完之后能够对里面涉及的问题,也能用刚才的三种方式对其进行算法描述。
课堂中预留5分钟时间让学生自主探究,根据要求结合刚学的知识,先进行“棋盘上的麦粒”此问题的算法分析,再写出这道题的三种算法描述。
最后,教师结合“棋盘上的麦粒”问题的算法分析及算法描述,跟学生一起总结本堂课的知识点。