高中信息技术选修1算法与程序设计对分查找算法的程序实现教学设计_第1页
高中信息技术选修1算法与程序设计对分查找算法的程序实现教学设计_第2页
高中信息技术选修1算法与程序设计对分查找算法的程序实现教学设计_第3页
高中信息技术选修1算法与程序设计对分查找算法的程序实现教学设计_第4页
高中信息技术选修1算法与程序设计对分查找算法的程序实现教学设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高中信息技术选修1算法与程序设计对分查找算法的程序实现教学设计一、教学设计概述本节课选自浙江教育出版社高中信息技术选修1《算法与程序设计》第五章第四节“查找算法的程序实现”,核心内容为对分查找算法。授课对象为高二年级选修本模块的学生。经过此前章节的学习,学生已经掌握顺序查找算法的原理与程序实现,理解数组的存储结构,能够使用循环结构、条件分支结构编写基础程序,具备用Python或VB语言描述简单算法的能力。本节课是在顺序查找基础上的进阶内容,既是查找算法体系的深化,也是后续学习排序算法、递归思想乃至分治策略的重要铺垫。对分查找的魅力在于“每一次判断都排除一半的可能”,这种折半逼近的思维方式与人类猜数字、查字典、翻电话簿的生活经验一脉相承。教学设计以“猜商品价格”的生活游戏切入,让学生在亲身体验中感受折半策略的高效,再将经验抽象为算法,用自然语言、流程图、程序代码三级表征逐步实现算法落地,最后在数据规模对比实验中形成对算法效率的量化认识。整节课以“问题情境—经验抽象—算法建构—程序实现—效率验证—迁移拓展”为主线,力求让学生在逻辑推理中发展计算思维,在程序调试中磨炼工程品质。二、学情分析知识层面,学生已能读写数组元素、使用for循环与while循环、理解变量累加与边界控制,具备程序实现的工具基础。认知层面,高二学生的抽象逻辑思维趋于成熟,能够理解“区间不断缩小”的动态过程,但对“循环终止条件”“中点取整”“区间端点更新”三处细节极易出错,这是历届学生学习的共性难点。心理层面,学生对游戏化、竞赛化的学习活动参与度高,但对纯讲授的算法推导容易倦怠,因而本课将难点拆解为可操作、可验证的小任务,借助可视化演示与实物模型降低思维坡度。预设的典型迷思概念有三类。其一,认为对分查找适用于任何数据集合,忽视“数据必须有序”这一前提。其二,认为循环条件写成low小于high或low小于等于high差别不大,导致边界元素漏查。其三,在更新端点时写成high等于mid而不是mid减一,造成死循环。这三个迷思概念将作为教学过程中重点设置认知冲突、实施辨析训练的靶点。三、教学目标学科核心素养导向下的目标定位如下。信息意识方面,学生能从猜价格、查字典等生活场景中识别出“有序集合上的快速定位”问题,体会有序数据的价值,形成处理数据前先考察其组织方式的习惯。计算思维方面,学生能将折半逼近的经验抽象为对分查找算法,准确描述循环不变量,即“待查元素若存在,必在low与high界定的区间内”,并能用流程图与程序代码双表征实现算法,理解分治思想在算法设计中的作用。数字化学习与创新方面,学生能借助集成开发环境独立完成程序的编写、调试与测试,能设计边界测试用例主动验证程序正确性,能通过改造程序统计比较次数开展算法效率的实证研究。信息社会责任方面,学生能在两种查找算法的对比中认识到算法选择对计算资源消耗的影响,初步建立“以恰当算法解决恰当问题”的工程伦理意识。四、教学重点与难点教学重点为对分查找算法思想的形成过程与程序实现,具体包括三个要点:理解折半缩小查找区间的策略,掌握low、high、mid三个变量的协同变化规律,用循环结构实现完整的查找过程。教学难点集中于三处细节。一是循环终止条件的精确表述,即low小于等于high时继续查找的合理性。二是区间端点更新的方向判断,即key大于a[mid]时low更新为mid加一,反之high更新为mid减一。三是正确性论证,即为什么每次加一减一能保证不遗漏候选元素。难点的突破依靠实物演示、表格跟踪、错误程序辨析三条路径协同推进。五、教学策略与资源准备教学策略采用情境驱动、变式辨析、探究实验相结合的方式。情境驱动负责激发动机与生成问题,变式辨析负责澄清迷思,探究实验负责量化验证效率。课前准备包括:教师准备猜价格网页小程序或PowerPoint交互课件、对分查找过程动态演示动画、包含十五个有序数字的卡片教具若干套、课堂学习任务单、半成品程序代码文件。学生机房确保编程环境可用,课前下发任务单电子版。六、教学过程第一环节:游戏导入,经验唤醒,用时约六分钟。教师在大屏上启动“猜价格”游戏:某商品价格介于1到1000元之间的整数,学生每次报一个价格,系统只回答“高了”“低了”或“猜对了”。先请一名学生凭直觉猜,记录所用次数,通常在八到十次上下。再请一名学生尝试,教师适时提示“有没有一种报法,保证每一次都更接近目标”。当学生自发说出“先猜中间”或者教师引导出该策略后,全班按折半策略演示一轮:500,低了;750,高了;625……教师板书每次猜测后的剩余候选区间长度:1000、500、250、125、63……请学生观察这列数字的规律,口算最坏情况下需要猜几次。学生发现区间长度每次减半,2的10次方等于1024,故最多10次必中。教师追问:若改用从1开始逐个加1的猜法,最坏要猜多少次?一千次。两种猜法的差距就是今天课题的差距。板书课题:对分查找算法的程序实现。设计意图:游戏的三次对比——直觉猜、折半猜、顺序猜——在同一情境中制造了强烈的效率反差,学生不是被告知对分查找快,而是亲手算出它快,动机由外部趣味转化为内部认知需求。第二环节:从游戏到算法,抽象建模,用时约八分钟。教师设问:把这个猜法搬到计算机里,要解决哪几个问题?师生共同梳理出三个子问题:数据放在哪里,怎么表示“还没排除的范围”,每次对比什么。针对数据载体,确定使用一维数组a存储n个按升序排列的整数,待查值记为key。针对查找范围,引入两个指针变量low与high,初始时low为0、high为n减1,含义是如果key在数组中,它一定落在下标low到high之间,这句话被师生共同命名为“不变量”,即无论循环执行多少次都保持成立的断言。针对比较对象,取区间中间位置mid等于low加high整除以2,用key与a[mid]比较:相等则查找成功;key大于a[mid]则左半区间连同mid位置都可排除,low更新为mid加1;key小于a[mid]则high更新为mid减1。教师用十五张数字卡片在实物展台上完整演示一次查找,每翻一张卡片就在黑板的区间图上划掉被排除的部分,学生直观看到候选区间以几何速度收缩。随后全班共同完成算法的自然语言描述,教师板书流程图框架,学生在任务单上补全三个判断框的内容,同桌互查。流程图要素为:初始化low与high;判断low是否小于等于high,不成立则输出查找失败;计算mid;比较key与a[mid],三种走向分别对应成功返回、缩右半、缩左半。设计意图:建模过程遵循“载体—范围—动作”的分析次序,把看似浑然一体的算法拆成三个可回答的问题。不变量概念的引入为后面论证端点更新为何必须加一减一埋下逻辑支点。第三环节:表格跟踪,攻克边界,用时约十分钟。黑板投影五列表格:循环轮次、low、high、mid、a[mid]与key的比较结果。全班共同跟踪一次手工执行:数组a为11个有序元素,key等于47。第一轮,low为0,high为10,mid为5,a[mid]小于key,low更新为6。第二轮,low为6,high为10,mid为8,a[mid]大于key,high更新为7。第三轮,low为6,high为7,mid为6,命中。每完成一行,教师追问“此刻不变量是否仍然成立”,强化区间语义的连贯性。接着设置第一次认知冲突:把key改为一个恰好位于数组首位的值,例如a[0]。学生分组跟踪,部分小组的算法在low与high重合于0时,因把循环条件误写为low小于high而提前退出,报告查找失败。两组结果在黑板并列呈现,引发争论。冲突的裁决回到不变量:low等于high时区间内仍有一个候选元素,尚未排除,故循环必须坚持到low大于high才允许宣告失败。由此确立条件必须写成low小于等于high。第二次认知冲突聚焦端点更新:若key大于a[mid]时写成low等于mid会怎样?学生跟踪发现mid会重复取值,low原地踏步,程序陷入死循环。教师借此强调:mid位置已经与key比较过且不相等,它不再属于候选区间,排除必须是彻底的,加一与减一不是偏好而是正确性的要求。设计意图:边界疑问不通过教师宣讲解决,而是让学生亲手执行错误版本、亲眼见到失败,再回到不变量完成自我修正。两次冲突分别命中预设迷思中的第二、第三条,错误在课堂内发生、在课堂内纠正。第四环节:程序实现与调试,用时约十二分钟。教师下发半成品代码,关键三行挖空:循环条件、mid的计算、两端点更新语句。参考程序框架如下,以Python语言呈现:定义函数binary_search,参数为列表a与待查值key;函数体内初始化low为0、high为len(a)减1;while循环条件为low小于等于high;循环体内mid等于(low加high)整除2;若a[mid]等于key则返回mid;否则若key大于a[mid]则low等于mid加1,否则high等于mid减1;循环结束后返回负1。学生独立补全代码并运行。教师巡视,对提早完成的学生追加任务:在循环体内加一行计数语句,统计比较次数并输出。程序跑通后进入测试环节。教师提出测试用例设计问题:随便试一个数通过就能说程序正确吗?师生共同商定五类测试数据:key位于数组正中间、位于第一个位置、位于最后一个位置、位于数组值的间隙中即查找失败、以及key恰好等于a[mid]的首轮命中。学生逐一执行并记录结果。个别学生程序在边界用例上暴露错误,教师引导其回到第三环节的表格跟踪定位问题行,自行修复。小组互测环节,学生交换程序,故意设计刁钻用例互相考验,机房内形成“攻击与防守”的活跃氛围。教师收集两例典型错误投屏讲评:一例mid计算写成low加high除以2未取整导致类型错误,一例端点更新少了加一,借此完成全班范围的二次澄清。设计意图:半成品代码把学生的认知负担集中于算法本身而非语法细节;测试用例的共同设计让学生经历从“程序能跑”到“程序可信”的工程意识跃迁;互测互攻则把正确性验证变成有对抗色彩的智力活动。第五环节:效率实证,量化对比,用时约六分钟。教师提出问题:游戏里的十比一千只是估算,程序层面差异有多大?学生运行教师提供的数据文件生成脚本,分别构造一百万个有序整数,用两种算法查找同一个位于尾部的值,输出各自的比较次数。结果显示:顺序查找一百万次,对分查找二十次。学生观察数字,教师引导分析:对分查找的比较次数与区间反复减半相关,其数量级为以2为底n的对数,而顺序查找与n成正比。教师给出对照表:n为一千时约为十与一千,n为一百万时约为二十与一百万,n为十亿时约为三十与十亿。教师追问两个思辨问题。其一,既然对分查找这么快,顺序查找还有存在的价值吗?学生讨论后明确:对分查找要求数据有序且支持按下标随机访问,无序数据只有先排序才能用之,排序本身有代价,一次性查找未必划算。其二,若数据经常变动呢?学生意识到维护有序性的成本需纳入考量。两点讨论使学生对算法的理解从“谁快”上升到“在何种约束下谁合适”。设计意图:上一节学到的顺序查找在此成为对照组,新旧知识在量化实验中完成整合;两个思辨问题打破“新算法全面优于旧算法”的简单认知,培养条件化的算法选择观,对应教学目标的工程伦理维度。第六环节:课堂小结与概念结构化,用时约两分钟。教师引导学生用三句话完成小结。第一句描述思想:每次与区间中点比较,排除一半候选,直到命中或区间为空。第二句概括条件:数据有序,区间用low与high封闭界定,循环坚持到low大于high。第三句点明价值:比较次数的数量级为对数级,是高效处理大规模有序数据的基本功。板书随小结逐步收敛为一张结构图:中间是“对分查找”,向左连“前提:有序”,向右连“动作:折半排除”,向下连“实现:三变量协同循环”。第七环节:分层作业布置,用时约一分钟。基础层:完成教材本节配套练习,手写跟踪给定数组与key的执行过程表格。提高层:修改程序,使其在查找失败时不返回负1,而是返回key应该插入的位置,保持数组仍有序,为下一章插入类算法作铺垫。拓展层:查阅资料了解标准库函数bisect的实现思路,并思考递归方式如何表达同一算法,下节课请一名学生用三分钟分享。七、板书设计主板书呈三段式结构。左段为游戏数据列:1000、500、250、125……指向结论“最多十次”。中段为算法三要素:前提是有序数组,不变量是候选元素必在low到high之间,动作是mid比较后取半排除。右段为核心代码骨架与两点血色警示:条件要写low小于等于high,端点更新必须加一减一。三段以箭头连接,示意从生活经验到算法思想再到程序实现的完整链条。八、教学评价设计评价嵌入教学全程,分三层实施。过程性评价依托任务单,重点批阅流程图补全与手工跟踪表格,观测不变量意识是否建立。表现性评价依托程序上机,评价维度涵盖算法正确性、测试用例完备性、代码规范度三项,采用量规给学生即时反馈。迁移性评价依托分层作业与下节课的分享环节,考查学生能否把对分思想迁移到插入定位与递归表达等新情境。三项评价结果共同计入本单元的学业档案,作为模块学分认定的过程证据之一。九、教学反思预设从以往实施经验看,本课最易出现的偏差是游戏环节气氛过热而挤占算法建模时间,教师需在第二次猜测结束后果断收束,把兴奋感引导到纸笔推演。第二个风险点是部分基础薄弱学生在端点更新处反复出错,仅靠一次冲突教学不足以固化,需要在任务单中设置阶梯式跟踪练习并在巡视时优先面批。第三个关注点是效率实验的数据量设置,一百万级数据的顺序查找在本机房环境运行约需数秒,实验前务必实测,避

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论