“二分法查找”教学设计 第三章第三节

减小字体 增大字体 作者:免费教育文稿网  来源:eduwg.com  发布时间:2013-04-11 10:03:14

江苏省盐城中学信息教研组 周勇军

一、教材分析

[教材内容及学情分析]

二分法查找是《算法与程序设计》选修(新课标教科书,教育科学出版社出版)第三章第三节的内容。本节课之前,学生已经学习了数组和顺序查找等内容,具备了编程实现顺序查找算法的能力。但是,顺序查找在遇到数据量大或频繁查找的问题时,效率会比较低,而二分法查找会大大提高查找的效率。因此,本节课的学习对学生能够编写出更高效、更优化的程序是一个重要的帮助。

[教学目标]

知识目标:理解二分法查找的算法思想,学会编程实现二分法查找算法

能力目标:培养学生分析问题和解决问题的能力

情感目标:激发学生的编程兴趣,增强学生优化算法的思想意识

[教学重点]

理解二分法查找的算法思想

[教学难点]

理解二分法查找的算法思想

二、教法和学法

教法:创设情景教学法、任务驱动教学法

学法:自我探究学习法、小组合作学习法、对比学习法

三、教学准备

多媒体教室、动画演示课件、VB6

四、教学设计思路:

对于中学生来讲,本课具有一定难度。我采用了以下几种教学策略降低难度,增强学生学习兴趣。

(一)通过创设大家熟悉的游戏情景来导入课题

在本节课中首先要让学生初步了解什么是“二分”算法,我给大家直接讲述一个采用“二分法”的故事,这个故事里有跟算法相关的具体数据。然后让学生对数据进行分析,很容易获得对“二分法”初步感性的认识。

(二)让学生用简单范例实践,通过小组合作探究加深理解二分法思想。

书上的二分法的程序应该说比较难,我让学生实践一道简单的题目,但体现的算法思想完全一样,而且程序的算法流程图事先我们给予了分析,这样学生就会容易上手。小组合作的方式能将复杂的任务细小化、步骤化,这样对每一个小组成员来讲,任务不重,又能充分锻炼。

(三)用多媒体手段,加深对算法思想的理解。

确实“二分法”比较抽象,难理解。为此,我们制作了一个flash动画来动态地模拟二分法查找的过程,这样让学生对算法有了充分的感性认识,从而促进学生对知识的理解。

(四)让学生不断地在比较、归纳、总结中取得学习成效

在各个环节的任务中,既有与以前所做练习相比较,又有运用新知识产生不同效果的比较,通过比较学生能够快速找出程序中变化的部分,并结合新知识解决问题。让学生在归纳和总结中对所学的知识得到进一步的巩固和升华,也让学生在归纳和总结中找到解决问题的规律。

通过以上四个措施,将“二分法”思想逐层分解,降低难度,环环相扣,逐步加深,使学生的认知有节奏,理解有层次,从而达到将知识掌握的目的。

五、教学过程

1、创设情景,激发兴趣,导入课题。

[教师抛出问题]大家知道中央电视台有一档收视率很高的节目叫“幸运52”,其中有一个环节,是让选手猜商品的价格,规则是给出商品的价格范围,主持人根据实际价格和选手报价给出提示:“高了”、“低了”、“正确”。曾经有一个选手,仅仅尝试猜了3次,就猜出了实际价格。当时给出的价格范围是100-300,实际价格是225。他猜的3个数是200(主持人:低了)、250(高了)、225(正确)。他为什么会猜这样3个数字呢,这3个数字(相对于价格范围)有什么特点吗?

[学生讨论回答]学生经过小组讨论和分析,很容易发现,200是100-300中间的数,250是200和300中间的数,225是200和250中间的数,讨论结果请小组代表回答。

[教师小结引入]大家讨论的结果证明这个选手的猜数过程是有规律的,每次猜的数都是相应数据范围中间(一分为二)的数,这实际上采用了“二分法查找”的算法。

[设计意图]通过教师抛出 “选手猜商品价格” 问题,让学生发现这个选手就是采用了“二分法”猜商品价格,所以能很快的猜出商品的价格。通过这样的方式引入课题,一方面可以激发学生的学习兴趣和热情,另一方面也让学生初步了解“二分法”算法思想。为下面教学活动的开展做好铺垫。

2、教师讲解分析

[教师]二分法查找对被查数据有没有要求呢?是不是任意一堆数据都可以采用二分法呢?我们来做个实验。

[找数实验]事先准备好标有数字(1-10且不重复)的10张小卡片,将10张小卡片按数字散乱排成一行,请同学找出标有“5”的这张卡片;再将 10张小卡片按数字从小到大顺序排成一行,请同学找出标有“5”的这张卡片,比较两次找的速度。

[教师]显然排好序的卡片要比散乱的卡片好找得多,这里仅有10个数字,假如100个1000个甚至10000个呢,那速度差距更明显。也就是说被查数据必须是有序的,否则二分法查找无法进行。大家看我们这里商品的价格范围100-300实际上对应于100,101,…,200,…,299,300,这是一个有序的数列。

[教师]选手猜数的具体过程实际就是查找目标值(225)的过程,这个过程包含比较、确定查找的新数据范围等,那么具体步骤是怎样的?请大家讨论并回答。

[学生回答]将100设为下界,300设为上界,取上下界的中间元素200与实际值225进行比较,200比225小,所以200左侧的数据舍弃,将200设为下界,上界还是300,取上下界的中间元素250与225进行比较,250比225大,所以将250右侧的数据舍弃,将250作为上界,下界还是200,取上下界的中间元素225与225比较,正确,猜中。

[教师]这个同学讲的不错,有没有要补充的呢?

[学生补充]200比225小,所以应该将201设为下界;同样,250比225大,所以应该将249作为上界,这样可以缩小查找范围,减少查找次数。

[教师]这个同学补充的很好,提高了查找效率。显然这里的查找是针对的具体数据,那么推广到一般情况是什么样的呢?

[教师讲解]

◆用自然语言描述:

设置4个变量,low(下界)、high(上界)、mid(中间元素)、real(查找值),设置下界low=100,上界high=300,取中间元素mid=(low+high)\2,mid=200,比real(225)小,左侧舍弃,取mid右侧数据作为low,即low=mid+1,再取mid=(low+high)\2,比225大,右侧舍弃,取mid左侧数据作为high,即high=mid-1,以此类推,如找到,则结束。

◆动画演示

教师播放Flash动画模拟这一过程,帮助学生进一步形象理解二分法查找算法思想。

[学生讨论]让学生根据自然语言描述、动画演示,讨论画出算法流程图,教师可以用投影展示事先准备好的流程图以供学生对照。

[反馈练习]

检查学生是否真的理解了二分法查找的算法思想,在100-300之间任意找一个数,让学生描述具体查找过程。

[设计意图]在这一环节,教师首先向学生明确,能用二分法查找的数据必须是有序的,否则这样的算法思想无法实施。然后在讲二分法查找的具体思想之前,请学生描述刚才猜商品价格的具体过程,实际上是算法思想从具体特殊情况演变到一般规律的过程。在讲一般规律的时候,用了自然语言方法(明确具体)、播放flash动画方法(形象生动),另外流程图方法(直观清晰)可以让学生讨论得出。这3种方法各有自己的特点,可以选讲1种,也可以几种结合起来讲。目的都是帮助学生更好地理解二分法查找的算法思想。另外,反馈练习环节,可以让老师了解学生到底有没有掌握所学内容。通过这样的设置,可以突出本节的重点,也突破了本节的难点。

3、布置任务,学生小组合作探究,教师答疑

[教师]布置任务,要求学生用VB编程方法实现在200-300之间用二分法查找指定数据的算法思想。要求分小组,分工合作探究完成任务,这边的合作是“相同内容”的合作,因此组织的方式是,将整个任务分成3步:进一步理解算法,规范化流程图、将算法翻译成VB代码、调试代码检验结果。这3步每一步安排一人作为任务承担者,其他人协助补充,由于这3步不能同时进行,所以每一步尽可能安排不同的人作为主要任务承担者,所有其他人都参与,这样最大限度地锻炼了每一个小组成员,同时所有小组成员都能自始自终地投入任务的每一步之中。在小组合作探究的同时,教师要及时地对学生进行引导、观察、控制、协调、答疑。

[小组自评互评] 小组在完成任务后,要对自己完成的程序进行评价,并与其他小组互评,分享劳动成果。

[教师提问评价]请某小组推选一名代表将你们组完成的程序的编程思路讲一讲,组内成员可以补充,仍有不完善的地方请其它组同学补充。然后教师和小组成员进行简单点评。

[设计意图]

布置的任务已经分析过,并且给出了流程图,这样做一方面可以照顾到部分学习能力差的学生,使他们能够在模仿的基础上来完成任务,从而体验成功带来的喜悦;另一方面对学习能力较强的学生也留给他探究学习的余地。另外,这里的小组合作是“相同内容”的合作,安排一个学生作为任务承担者,其他学生补充,这样让同学间互相帮助、共同提高,保障了课堂教学效果,也增强了学生的合作学习的能力。评价反馈机制让学生充分地了解自己的实力,也增强了学习的热情。

4、布置任务,比较顺序查找与二分查找的效率

刚才学生已经通过编程学会了二分法查找算法,要求学生将此程序另存一个文件,修改为顺序查找算法(前面的课讲过,比较容易),这样就有两个程序可以实现查找算法,然后要求在两个程序中各增加一个计数器来统计查找的次数,然后查找同一个数据,比较计数器的大小,从而得出两种查找算法的效率高低。这里让学生通过实践证明二分查找的效率要比顺序查找高得多。

这个任务应该说比较简单,建议小组里成绩基础比较差的同学作为任务承担者,其他人补充。

[设计意图]

这里让学生编写顺序查找算法,应该说是很简单的,因为已经学习过,同时也起到复习的作用,通过比较两种算法的效率高低,可以增强学生优化算法的意识。

5、课堂小结

[教师提问]

请同学回答:本节课学习了哪些内容?回答不完整的再请其他同学补充。最后教师简单总结。

[教师]前面一节课我们学习了顺序查找,如果查找的数据较多或需要频繁进行查找,顺序查找效率会比较低,而使用二分法查找则可以提高查找的效率。而二分法查找的数据一定要是有序的,怎样让一组无序的数据变成有序的,便于我们通过二分法进行查找呢,下节课我们将一起来探讨这一问题。

[设计意图]

听其他同学和教师的总结有利于巩固本节课所学内容,让学生理解老师的教学思路。用同学讲代替教师讲,效果比教师直接公布标准答案好得多。老师总结时有意识地对知识进行了承上启下的链接,起到了复习和预习的作用。

六、学习效果评价设计

课后反思:

(一)坚持小组合作探究学习方式

本节课采用了小组合作方式进行学习,感觉效果很好,大家的主动性很高,学习热情火热,每个学生都能得到充分有效锻炼。

(二)转化学生错误程序为有效课堂教学资源

学生在程序的编写过程中,经常出现各种各样的问题,本节课也不例外,如程序中变量名的错误;由于条件表达式错误,使得程序一次都没有运行就结束了等,这些错误都是非常宝贵的课堂资源,我把这些程序呈现在全班同学面前,让学生通过读程序找出出现的问题,我和学生一起分析出现错误的原因,由于是学生自己出现的问题,又具有一定的代表性,所以学生在找出问题的同时,也说出了自己当时是如何想的,便于我及时找出教学过程中出现的纰漏,也便于对学生进行警示。

(三)课堂教学中的一些不足之处

1、由于整节课的教学密度比较大,而且停下来解决学生出现的问题也占去了一些时间,所以整节课显得比较紧张,感觉比较仓促。这样一来,给学生自己独立消化知识的时间比较少,对于一些基础较差的学生是一个考验。

2、虽然采用了小组合作、自我探究,但是教师讲解的地方仍较多,学生仍然有些被动处于接受状态,在后面的教学过程中,可以通过有梯度的练习题,让学生在操作、交流中发现问题,找出原因,在教师的引导下尝试解决,真正做到成为学习的主体。当然,也不是所有的结论都要由学生通过实验得出,作为教师要把握好这个度的问题,既能让学生在做中学,又能保证学生始终高效地沿着正确的方向前进。 

 

Tags:

作者:免费教育文稿网
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论