对分查找算法教案_顺序查找算法教案

2020-02-27 教案模板 下载本文

对分查找算法教案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“顺序查找算法教案”。

对分查找算法教案

一、设计思想

对分查找是计算机科学中的一个基础算法。对于一个基础算法的学习,同样可以让学生在一定的情境下,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程。本堂课以一个游戏暖场,同时激活学生的思维,引导学生去探索游戏或生活背后的科学原理。为了让学生在教师的引导下能自我解析算法的形成过程,本课分解了问题动作,找出问题的全部可能情况,在对全部可能情况总结归纳的情况下,得出对分查找的基础算法,最后在程序中得到实现,从而使学生建立起对分查找算法形成的科学逻辑结构。

二、教材分析

本课的课程标准内容:

(一)计算机解决问题的基本过程(1)结合实例,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程,认识算法和程序设计在其中的地位和作用。

(三)算法与问题解决例举 C 查找、排序与问题解决

(2)通过实例,掌握使用数据查找算法设计程序解决问题的方法。本课的《学科教学指导意见》内容:基本要求:1.初步掌握对分查找算法。2.初步掌握对分查找算法的程序实现。

教材内容:第二章 算法实例 2.4.3对分查找和第五章5.4查找算法的程序实现,课题定为对分查找算法及程序实现,安排两个课时,第一课时着重是对分查找算法的形成和初步程序实现,第二课时利用对分查找算法解决一些实际问题的程序实现,本教学设计为第一课时。

从《课程标准》和《学科教学指导意见》对本课教学内容的要求来看,要求学生能从问题出发,通过相应的科学步骤形成对分查找的算法。对学生来说,要求通过这一课时的学习能初步掌握或了解对分查找的前提条件、解决问题的对象,明确对分查找算法结构和对分查找的意义。

三、学情分析

学生应该已经掌握程序设计的基本思想,掌握赋值语句、选择语句、循环语句的基本用法和VB基本操作,这节课学生可能会遇到的最大问题是:如何归纳总结对分查找解决不同情况问题的一般规律,鉴于此,在教学中要积极引导学生采取分解动作、比较迁移等学习策略。(说明:由于这个课是算法与程序设计课,对学生有一定的要求,学生至少应该熟悉算法的基本概念,掌握顺序结构、分支结构和循环结构,天津的学生虽然学的是Java,但是在算法这一块上都是相通的,如果对算法流程,三种基本结构原理和语句如果都掌握的话,理解这个课应该没什么大的问题,VB只是一个程序实现的工具。但如果学生没有较好的算法基础,没有前续的知识作辅垫,这节课会比较困难,教师就要灵活处理。)

四、教学目标

知识与技能:理解对分查找的概念和特点,通过分步解析获取对分查找的解题结构,初步掌握对分查找算法的程序实现。

过程与方法:通过分析多种不同的可能情况,逐步归纳对分查找的基本思想和方法,确定解题步骤。

情感态度与价值观:通过实践体验科学解题的重要性,增强效率意识和全局观念,感受对分查找算法的魅力,养成始终坚持、不断积累才能获得成功的意志品质。

五、重点难点

教学重点和难点:分解并理解对分查找的过程。

六、教学策略与手段

1、教学线索:游戏引领---提出对分查找原理---解析对分查找的算法特征---实践解决问题。

2、学习线索:分解问题---归纳问题---实践提升,在三个阶段的不断推进中明确对分查找算法,总结规律。

七、教学过程

1、新课导入

(1)热身:游戏(2分钟)教师展示一件特色物品,让一个学生来猜这个物品的价格,其他学生只需要根据这个学生猜出的价格提示“高了”或是“低了”,如果学生能在约定次数内猜对这个物品的价格,就把这件物品“赠送”给他……。

(2)讨论:你觉得怎么样猜可以猜的快一点呢?有什么技巧吗?你从这个游戏当中得到什么启示?(2分钟)

(3)教师引导:这个世界不是缺少问题,而是缺少发现,其实在这个游戏的背后,含有一个非常经典的算法。引出对分查找的的概念。(1分钟)

2、新课:

教学步骤一:分析对分查找的原理和方法。(3分钟)

(1)对分查找是效率很高的查找方法,但被查找的数据必须是有序的。

(2)首先将查找的数与有序数组内处于中间位置的数据比较,如果中间位置上的数与查找的数不同,根据有序性,就可确定应该在数组的前半部分还是后半部分继续查找。

(3)在新确定的范围内,继续按上述方法进行查找,直到获得最终结果。

教学步骤二:分解查找过程中可能出现的所有情况。(第一种情况5分钟)

以规模为10的升序数组d为例:用一个数组d(1 to 10)来存放序列,用i表示查找范围的第一个数组元素的下标,j表示最后一个数组元素的下标,mid表示中间位置元素的下标。(1)

第一种情况:要找的值在后半部分;

以查找键KEY=48为例分析

第一次查找::

范围d(1)~d(10),mid= └(1+10)/2┘, d(mid)

所以可以确定接下来要找的范围是后半部分。

比较后i=mid+1

第二次查找:

范围d(6)~d(10),mid= └(6+10)/2┘,d(mid)

所以可以确定接下来要找的范围是后半部分。

比较后:i=mid+1

第三次比较:

范围d(9)~d(10),mid= └(9+10)/ ┘2,d(mid)=Key,找到了。

思考:如果要找的是52? i,j,mid分别是多少? 总结一: 如果d(mid)

教学步骤三:继续分解对分查找算法中包含的其他情况。(9分钟)

讨论:两人为一合作小组,分别画出key=17和key=20的查找示意图,并用共同的智慧讨论并回答以下两个问题。

问题1:当d(mid)>key时,新查找的范围在哪里?i和j如何变化?

问题2:在什么情况下查找会结束?继续进行重复查找的条件是什么?

(2)

第二种情况:要找的值在前半部分;

以查找键KEY=17为例分析:

(3)第三种情况:要找的值找不到;以查找键KEY=20为例分析:

总结二:如果d(mid)>key ,新查找范围为上半部分, i值不变,j=mid-1。

总结三:(1)找到了查找会结束;(2)在i

教学步骤四:对各种情况进行归纳总结。(2分钟)

(1)Key与d(mid)的大小比较影响i,j的取值的规律: i的取值规律:if d(mid)

j的取值规律:if d(mid)>key then j=mid-1,用分支结构实现。

(2)继续进行重复查找的条件: i≤j,用循环结构实现。

教学步骤五:用流程图来描述对分查找算法(3分钟)

教学步骤六:对分查找算法的初步程序实现。(9分钟)

教师事先设计好VB窗体,学生只需在相应的程序体输入代表算法思想的关键语句。

附主要程序体:

Private Sub Command2_Click()

Dim key As Integer, mid As Integer, i As Integer, j As Integer key = Val(Text1.Text)i = 1: j = 10

Do While ____(1)_______ mid =(i + j)2 If d(mid)= key Then

Text2.Text = “找到了,是第” & mid & “个” Exit Sub End If If _____(2)_______ Then _____(3)_______ Else

_____(4)_______ End If Loop

Text2.Text = “对不起,找不到!” End Sub

教学步骤七:评价。(4分钟)

用过程反馈表评价学生的程序实现情况,学有余力的同学可以进一步讨论或实践问题:如果是降序序列,该怎么样改动程序?如果序列元素不是10个,而是100个或更多呢?

教学步骤八:盘点对分查找法的核心内容,总结提升。(3分钟)(1)采用对分查找的前提是数据序列必须是有序。

(2)由于对分查找过程中的每次比较都能使得搜索空间减半,对分查找将不会使用超过┌log2(n+1)┐次来找到目标值。

(3)提升对分查找算法的实际意义:同学们可能还没有意识到对分查找是多么高效,那不妨设想一下在一个有一百万个人名的电话簿中找一个名字,对分查找可以让你不超过21次就能找到指定的名字。如果你能够将世界上所有的人按照姓名排序,那么你在35次内就能找到任何人。

教学步骤十:总结本课的科学解题过程。(2分钟)

八、作业:

以下的三组元素序列能采用对分查找法来查找吗?

(1)7,22,25,35,44,61,88,99,100

(2)22,46,77,89,67,99,33,20,98

(3)87,75,58,44,23,11,7,2,0,-8,-102、设计一个能用对分查找算法思想解决的实际问题,用自然语言描述即可,为下节课作准备。

《对分查找算法教案.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
对分查找算法教案
点击下载文档
相关专题 顺序查找算法教案 算法 教案 顺序查找算法教案 算法 教案
[教案模板]相关推荐
    [教案模板]热门文章
      下载全文