1、高中信息技术“二分法查找数据”教学案例一、教学设计教学分析 :程序设计中经常需要进行数据的查找与存储,设计查找算法时,往往要考虑算法的实现是否方便、快捷,而引入数组的使用,及在数组中查找数据的基本方法,即顺序查找与二分法查找等。本课是教科版算法与程序设计选修第三章算法的实现的第 3 节第 2 课时,主要要求学生在理解什么是数组,如何定义数组及给数组赋值,掌握在使用顺序法在数组中查找数据的基础上继续学习二分法查找,并比较两种基本方法查找数据的特点,由于本课是本章的学习难点,为了激发学生的学习兴趣,更好掌握二分法的算法思想,本人设计了一个“人与电脑竞猜商品价格 PK”的游戏,通过该游戏让学生学习什
2、么是二分法算法,并通过上机实现该游戏的程序,完成了本课的教学。建议使用 1 课时。教学目标 :1. 知识目标:理解二分法查找算法思想,学会使用二分法查找解决问题。2. 能力目标:通过学习二分法查找数据及应用,提高学生分析与解决问题的能力。3. 情感态度与价值观:通过上机完成“人与电脑竞猜商品价格 PK”等 VB 程序设计,让学生体验编程快乐、感受成功的喜悦。教学重难点:重点:二分法的算法基本思想及相关的程序实现。难点:如何使用二分法在数据组中查找数据,及解决一些实际的的问题(如使用二分法求数学方程的近似解等) 。教学策略 :“任务驱动”教学法、讲授法、讨论法、游戏体验法、案例分析法等多种教学方
3、法的有机结合,并整合多媒体网络教学手段、课程学习网站,组织学生自主探究学习、合作交流等完成本节课的教学。学情分析 :通过上一节课的学习,学生学会 VB 中数组的声明及与使用及顺序查找的算法思想,由于本校的学生全部来自于农村,以前从未接触程序设计,在上一节课的学习时,本人使用教材中的“英文字母的加密与解密”例子引导学生学习顺序查找算法,学习效果不甚理想,因此,本课的二分法查找的学习,本人决定不使用教材中的“英文字母的加密与解密”的例子,而采用自己设计的“人与电脑竞猜商品价格 PK”的实例,让学生从玩到程序的实现及相关知识的梳理完成了本课的学习。教学流程更新 (复习数组的声明及使用) (运行事先设
4、计的“人与电脑竞猜商品价格 PK”VB 程序,是一个猜 1 至 100 元内的商品价格,程序分“人猜”与“电脑猜”两部分,总分 100 分,猜错 1 次扣 10 分,猜对时得分最高获胜。 )(同学们是如何猜价格,引入二分法查找的算法。 )(结合课本 P55 二分法的流程图,讲解二分法查找的算法)逻辑 (剖析程序,剖析程序中“开始” 、 “大了”按钮等部分程序)动性 (学生上机完成课堂任务)(学生课堂任务完成情况评价,及本课学习目标完成情况进行反思)(教学小结,知识点梳理,整理学习笔记等)(在数学中如何使用二分法求方程的近似解,试用 VB 编程实现)(布置课外作业)二、教学过程实录复习旧知识(2
5、 分钟)师:同学们好,上节课我们学习了数组及顺序查找的算法,那么什么是数组呢?如果有一组元素包括大、小写字母及空格共 53 个,如何定义一个数组表示(数组名称为 zifu )?(课件展示问题,请两名学生回答)生 1:数组(Array)是一组相同类型的变量集合,集合中的每个元素都是独立的变量,它们能够通过数组序号被引用。生 2:dim zifu(52) as string师:下面这段程序的执行结果是什么?(课件展示问题,请学生回答)Dim i As Integer Dim zifu(25) As String 复习旧知识运行程序提出问题讲解算法剖析程序学生上机学习评价教学小结教学延伸课外作业Fo
6、r i=0To 25 zifu(i)=chr(65+i) Next i 生 3:分别将 AZ 赋值给 zifu 数组的每个元素。创设情境、引入新课:(10 分钟)师:同学们掌握得不错,大家经常看到电视上一些商品猜价节目吧。 (学生争着回答:“购物街” 、 “幸运 52”等) ,好今天我们设计 一个类似的 VB 程序,叫做“人与电脑竞猜商品 价格 PK”。 (学生很想知道这个程序的游戏规则)教师活动:教师演示本程序,并说明游戏 规则:这是一个猜 1 至 100 元内的商品价格,程 序分“人猜”与“电脑猜”两部分,总分 100 分, 猜错 1 次扣 10 分,猜对时得分最高者获胜,每次 出现的商品
7、价格都是随机的。程序界面如图。师:明白游戏规则后,大家想不想玩玩生:(异口同声)想!师生活动:教师请两名同学进行“人猜”部分的猜价,比较两名同学的成绩。并让同学简单讨论为什么另外一名同学会获胜,如何让你猜你会怎么猜得分才会高呢?(学生议论纷纷,讨论如何才能得高分,为下面问题的提出做铺设。 )师:好,我们先静静,大家思考一下,如何用最笨的方法来猜商品价格,那将怎样猜?生:从 1 一直猜到 100师:好,这种猜价的方法也就是我们上节课学到的(故意停顿,学生争着回答:顺序查找)师:非常好,大家都知道这种方法很笨,但最简单保证能猜得到。 (引导学生意识到顺序查找算法的特点)师:刚才我在听大家交流讨论,
8、如何猜价才能获得高分,哪位同学来说说你会怎么猜才能获得高分?(请同学回答,学生争着举手回答)生 4:从 10 开始猜,每次增加 10,直到电脑出现“大了” ,再往前猜。师:这有点类似于顺序查找,这种方法是最好吗?生:不是!生 5:我从 1 到 100 元的中间值 50 元开始猜,如果大了,我就猜 1 到 50 元的中间值25,同理,利用这种折半的方法进行猜价格。 (这个答案就是本课要讲的二分法查找算法)师:大家说这种方法好吗?(多数的同学认为这种方法不错)师:说这种方法好,我们可要拿出证据,现在我们做一个活动。师生互动活动:请 3 名同学进行猜价,把同学猜到的价格再分别让电脑猜,进行人机PK,
9、看谁获胜。 (学生的兴趣被推到高潮)人机 PK 的结果:分别猜到的商品价格是 98 元、52 元、55 元,3 名同学的得分分别是:40、40、30,电脑的得分分别是:60、40、40,结果是机胜 2 平 1。师:看到这个结果,大家知道电脑是 2 胜 1 平,那么电脑是怎样猜的呢?(学生很想知道)师:其实电脑使用的方法正是前面那位同学所说的方法,即折半查找法也叫二分法查找,根据刚才我们所完成的活动,大家一起说说二分法查找的算法思想。(学生讨论)新课的学习:(8 分钟)师:下面我们翻开课本 P52,一起学习二分法查找的算法流程。(前面的引入及相关游戏活动虽然所花时间较多,10 分钟左右,但学生已
10、经通过活动基本理解什么二分法查找算法,教师再结合课本 P55 的二分法查找流程进行讲解,便显得游刃有余,学生很容易接受。)师:理解二分法查找算法的思想后,大家思考一下,二分法查找对查找的数据有何要求?生:数据应该是有序的。师:这一点非常重要,它决定我们在查找数据时是否能使用二分法查找。师:通过对二分法算法的学习,大家想知道这个游戏程序是怎样使用二分法来实现其算法呢?然后通过学习,自己上机编程实现?学生:想师:好,下面我们剖析该程序“电脑猜”部分的“开始”、“大了”按钮的程序代码。师生共同剖析程序:“通用”部分声明:Dim P1%, P2%, M%, score1% 声明价格的下限 P1、上限
11、P2、电脑猜价 M 及得分score1。“开始”按钮的程序剖析:Private Sub Cmdok_Click()If Cmdok.Caption = “开始“ Then 如果 Cmdok 按钮的 Caption 为“开始”score1 = 100 得分最高分为 100 分Cmdok.Caption = “正确“ 让 Cmdok 按钮的 Caption 为“正确”P1 = 1: P2 = 100 一开始价格的下限为 1,上限为 100M = (P1 + P2) / 2 电脑猜价为下限与上限中间值。Label1.Caption = M 在 label1 显示电脑的猜价。ElseLabel1.Ca
12、ption = “我猜对了!我的得分是:“ & score1 在 label1 显示电脑猜对了及得分。Cmdok.Caption = “开始“ 让 Cmdok 按钮的 Caption 为“开始”以便下次再猜。End IfEnd Sub“大了”按钮的程序剖析:Private Sub cmdbigger_Click()P2 = M 1 价格上限为上次的猜价-1If P1 P2 Then 如果价格下限大于上限 Label1.Caption = “猜不到商品的价格!“ label1 显示猜不到商品的价格Cmdok.Caption = “开始“ 让 Cmdok 按钮的 Caption 为“开始”以便重新
13、再猜。Elsescore1 = score1 10 得分扣 10 分M = (P1 + P2) / 2 电脑重新猜价,价格同样为下限与上限的中间值。Label1.Caption = M 在 label1 显示电脑的猜价End IfEnd Sub师:通过程序的剖析,同学理解“电脑猜价”的程序含义,下面大家有没有信心通过自己的学习,完成“小了”按钮的程序代码?并最终完成该程序,体验自己制作的程序呢?生:有,我们想做。师:下面我们来完成今天的课堂任务。课堂任务:(15 分钟)1、在课程学习网站上,下载并运行“人与电脑竞猜商品价格 PK”程序,理解其代码的含义,试写出其“小了”按钮的程序代码。(在学生
14、操作过程中,教师对基础较差的学生进行个别辅导,及时发现与解决学生上机过程存在的问题,并鼓励基础好的学生参与帮助辅导,促进学生之间互助与关爱,争取所有的同学都完成任务。 )2、思考应用二分法查找有什么优点和缺点?顺序查找有哪些优点和缺点?(学生讨论)(二分法:优点是减少了查找的次数,提高了查找效率。缺点是必须是在有序数组中才能使用。顺序查找:优点是 算法简单,对数组的结构无任何要求。缺点是查找效率低,当数组的元素个数较多时不宜采用该方法查找。)学习评价:(3 分钟)1、对自己完成的作品进行评价及他人互评与分享。2、教师随机让个别学生演示其作品,师生共同进行简单点评。3、检查本节课学习目标的掌握情
15、况,通过本课的学习你是否能理解什么是二分法查找,及如何使用二分法查找算法解决一些实际的问题。课堂小结(学习笔记) (2 分钟)教师与学生共同归纳本课学习内容及知识梳理,并整理相关学习笔记。二分法查找1、什么是二分法 P552、二分法查找的基本算法思想 P553、顺序查找与二分法查找的特点:(1)二分法:优点是减少了查找的次数,提高了查找效率。缺点是必须是在有序数组中才能使用。(2)顺序查找:优点是 算法简单,对数组的结构无任何要求。缺点是查找效率低,当数组的元素个数较多时不宜采用该方法查找。教学延伸:(4 分钟)师:学以致用,本课我们学习二分法算法及二分法在“人与电脑竞猜商品价格 PK”游戏程
16、序的实现,并较好完成相应课堂任务。但是二分法作为一种重要的算法,它有广泛的应用,我们如何利用二分法来解决实际的问题呢?如数学中,可用二分法查找算法求方程的近似解。举例:利用二分法求函数 y=lnx+2x-6 在区间(2,3)内零点的近似值(精确度 0.1) 。附代码及运行结果:求函数 y=lnx+2x-6 在区间(2,3)内零点的近似值(精确度 0.1)Private Sub command1_Click()Dim p1, p2, x, y As Singlep1 = 2: p2 = 3 p1,p2 为区间的上界及下界。Do While p2 - p1 0.1 精确度为 0.1。x = (p2
17、 + p1) / 2 x 从 p1,p2 取中值。y = Log(x) + 2 * x - 6If y 0 Thenp2 = x - 0.01 y0 时表示 x 落在左半部Else 调整上界 p2 否则落在右半部,调整下界 p1。通过不断重复缩p1 = x + 0.01 小 p1,p2 的区间,直到 p2-p10.1 的精确度,这时的(p1,p2) End If 为所求的近似解的区间。LoopLabel1.Caption = “方程的近似解为区间:“ & vbCrLf & “ & p1 & “,“ & p2 & “的任一值“End Sub课外作业:(1 分钟)1、复习本课的内容。2、上网查找并
18、学习二分法查找相关 VB 知识。(课外教学延伸)3、尝试使用二分法算法求其它数学方程的近似值(如 y=3x-7x-8 等方程),思考生活学习中还有哪些问题可使用二分法算法解决,试着编程实现。三、教学反思:本课在教学中并没有什么新的创意,但教学过程中能紧扣课标,从学生的认识特点和实际能力出发,考虑本校学生全部是农村学生,以前从未接触程序,对编程有较大恐惧,如何消除这种心理,让他们树立信心。因此本课教学时没有采用教材提供的“英文字母的加密与解密”例子,而用教师自己设计的例子“人与电脑竞猜商品价格 PK”,让学生在游戏活动中,自然从上节课的顺序查找的引导到二分法查找的算法学习。这样引入自然、流畅,既
19、复习上节课的知识,更让学生在从顺序查找引导到二分法查找算法的学习时,已经基本了解到两种基本查找算法的特点,并通过相关游戏活动中建构学习,自己归纳二分法查找算法的思想并加以理解。整节课通过“人与电脑竞猜商品价格 PK”例子,以“观察玩分析做评价总结”为主线展开教学的。通过教学实践证明,本课受到了学生的欢迎,很好地完成相应教学目标。本节课的教学中本人感到比较成功的地方有:1、“玩”是孩子的天性,本课让学生深深地感受到 “在学中玩,在玩中学”的快乐课堂气氛。2、以学生为本,紧扣课标,教材处理恰当,通过游戏激发学习兴趣,不仅让学生玩,更让他们通过分析算法及编程实现程序,感受比玩更快乐的成功喜悦。3、课
20、堂任务设计合理,通过让学生完成“小了”按钮的程序代码,进行半成品加工,能从学生的实际出发,既让学生能够体验编程的乐趣,学习相应二分法算法的程序实现,又减轻操作难度,尽量使每个同学都能完成任务。4、学科的渗透与整合:信息技术新课程强调全面提高学生的信息素养,信息技术素养的一个重要方面也就是很好的利用信息技术,强调学以致用,对中学生来说,特别是如何将信息技术与其它学科学习整合。因此,本课教学延伸方面,很好利用二分法算法求数学方程近似解的例子进行知识拓展,并延伸到解决其它问题。5、整合课程学习网站,学生通过学案进行自主探究学习。实施新课程的教学时,本人教学时不仅有教学设计,更为学生精心准备了学案,每
21、个学案都有具体的学习步骤、任务作业、学习评价及知识点小结(即,本人要求学生要做的学习笔记)等,并传到自己设计与制作课程学习网站。有效地引导学生进行自主学习。另外,学习笔记能够让学生养成良好学习行为,有效解决学后忘记的问题,既能让学生按照课标要求提高相应技术素养又有利于参加有关考试(如会考)。教学感悟:玩游戏并不一定是坏事,要让学生玩,更要引导学生从玩中去学习。其实,比尔盖茨,小时候就非常喜欢玩电脑游戏而爱上电脑编程,最终成为世界著名的软件天才,为整个世界的软件业做出杰出的贡献。因此,我们应该如何从玩游戏中的去思考、发现、学习及解决相应的问题。学以致用,不断通过自己编程解决相应问题,如本课教学延伸中利用二分法求方程近似解等。勤于思考,勇于探索,就像“游戏过关一样”不断地克服困难,这样你就不断的提高,有朝一日也许你也能开发出程序让别人使用,成为真正的软件工程师。不足之处:1、本课是本章的一个学习难点,为了让学生更好理解与掌握相应的学习内容,讲解时花了较多的时间,留给学生交流的时间较少,对学生作品的评价也很简陋。2、同样因为时间紧张,课堂中很难针对利用二分法算法求方程的解及解决其它问题进行深入的拓展。