高中二年级信息技术“实现查找指定商品-查找算法的应用及数据结构的选择”教学设计_第1页
高中二年级信息技术“实现查找指定商品-查找算法的应用及数据结构的选择”教学设计_第2页
高中二年级信息技术“实现查找指定商品-查找算法的应用及数据结构的选择”教学设计_第3页
高中二年级信息技术“实现查找指定商品-查找算法的应用及数据结构的选择”教学设计_第4页
高中二年级信息技术“实现查找指定商品-查找算法的应用及数据结构的选择”教学设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

高中二年级信息技术“实现查找指定商品——查找算法的应用及数据结构的选择”教学设计一、教学背景与设计理念本课选自沪科版(2019)高中信息技术选择性必修1《数据与数据结构》模块,对应“实验九实现查找指定商品”的教学任务,面向高中二年级学生开设。学生此前已经完成了顺序结构、分支结构、循环结构的程序设计学习,掌握了Python列表的基本操作,并初步接触了顺序查找的思想。本课在此基础上,引导学生面对“在电商平台中查找指定商品”这一真实情境,比较顺序查找与二分查找的差异,理解数据组织方式对查找效率的深刻影响,进而体会“根据问题选择合适的数据结构”这一学科核心观念。《普通高中信息技术课程标准(2017年版2020年修订)》强调,学科核心素养的培养应落位于真实问题的解决过程。本课以“信息意识、计算思维、数字化学习与创新、信息社会责任”四维目标为纲,将抽象的算法比较嵌入商品检索的生活场景,让学生在“做中学、比中悟、用中固”,避免概念灌输式的课堂形态。本设计坚持三条基本原则:一是问题先行,所有知识均在解决问题的需要中自然生长;二是证据导向,用运行时间、比较次数等可测量数据支撑结论;三是留白生成,为学生保留探索、犯错、修正的空间,教师只在关键节点点拨。二、学情分析授课对象为高二年级选考信息技术的学生,共40人,机房授课,一人一机。从知识储备看,学生能熟练编写for循环与while循环,能使用列表存储和访问数据,约七成学生在必修模块中实现过简单的顺序查找。从思维水平看,多数学生处于“能写代码但不问优劣”的阶段,缺乏算法效率的量化意识,认为“程序能跑通就是完成”。从学习风格看,该班学生热衷电商、社交等应用场景,对“双十一秒杀”“搜索推荐”类话题有天然的表达欲,这是可以借力的情感基础。预判的学习困难有三处:其一,二分查找中边界条件的处理(low、high、mid的更新与循环终止条件)极易出错;其二,“数据有序是二分查找前提”这一约束条件容易被忽略,导致学生在无序数据上误用算法而不自知;其三,从“两种查找方法”上升到“数据结构选择”的观念跨越,需要教师搭建思维支架,否则课堂会停留在代码训练层面。三、教学目标信息意识方面,学生能够从电商购物这一日常场景中提炼出“查找”这一基本数据处理问题,意识到数据规模增大时方法选择的重要性。计算思维方面,学生能够分别用顺序查找和二分查找实现指定商品的检索,通过实测比较两种方式在不同数据规模下的查找次数与耗时,归纳出二分查找O(logn)与顺序查找O(n)的效率差异,并说出二分查找依附于“有序”这一数据结构前提。数字化学习与创新方面,学生能够借助可视化对比表格与运行数据,开展小组协作探究,并尝试将查找思想迁移到字典、集合等Python内置数据类型,初步体会“为数据选择合适组织方式”的工程思维。信息社会责任方面,学生能够联系电商平台的搜索体验,讨论算法效率背后的算力消耗与用户体验,形成朴素的技术成本观。四、教学重点与难点教学重点:二分查找算法的思想与程序实现;通过实测数据比较两种查找方法的效率。教学难点:二分查找边界条件的正确控制;理解“数据的有序组织是高效查找的前提”,进而形成依据问题特征选择数据结构的意识。五、教学准备教师准备:机房环境预装Python3.10及以上版本;素材包一份,内含三个数据文件。其一为small_goods.csv,含100条商品记录(商品编号、名称、价格),按编号升序排列;其二为big_goods.csv,含100000条商品记录,同样有序;其三为messy_goods.csv,含1000条无序商品记录,用于制造认知冲突。另备课堂任务单、计时辅助代码模板、雨课堂或同类互动平台的即时统计页面。学生准备:课前完成预习单,用自己的话解释“为什么查字典先翻到中间比一页一页翻快”,并尝试在纸上模拟“在1到100中猜数字”的最优猜法,记录猜测次数。六、教学过程(一)情境导入:一次“卡住”的购物搜索(约6分钟)上课伊始,教师在大屏展示一段自录视频:某购物网站搜索框输入“白色保温杯316不锈钢”,页面迟迟转圈,用户失去耐心关闭页面。教师抛出问题:“如果你是这个平台的后端工程师,用户输入关键词的一刹那,计算机要干的活是什么?”学生很容易答出“在商品库里找匹配的商品”。教师追问:“假如库里有十万个商品,你写的查找代码能让用户等多久?”教室里出现猜测声,从“零点几秒”到“几分钟”不等。教师不置可否,顺势引出本课任务:今天我们自己动手,分别在100个商品和100000个商品里查找指定商品,用真实数据回答这个问题。设计意图在于用一次“卡顿”的用户体验击穿学生“程序跑通就行”的惯性认知,让效率问题以痛点形式出场,同时为后文的大数据统计埋下悬念。(二)温故知新:顺序查找的快速实现(约7分钟)教师布置任务一:读取small_goods.csv,编写顺序查找函数linear_search,查找编号为“S10086”的商品,找到即返回该商品全部信息,未找到返回1。要求统计并打印查找过程中的比较次数。学生独立编码,教师巡视。多数学生能在四分钟内完成,典型代码如下:deflinear_search(data,target):count=0foritemindata:count+=1ifitem["id"]==target:returnitem,countreturn1,count请一名学生在教师机演示,结果显示:比较了87次找到目标。教师随即在黑板左侧记下“100条,顺序查找,87次”。教师追问:“找到目标的比较次数取决于什么?”学生归纳:取决于目标在列表中的位置,最好一次命中,最坏要翻完全部,平均约一半。教师小结并板书:顺序查找对数据没有任何要求,拿来就能查,这是它的宽容,也是它的代价——数据量翻倍,最坏的查找代价也翻倍。(三)认知冲突:当数据涨到十万(约5分钟)教师抛出任务二:把数据文件换成big_goods.csv,用刚才写好的linear_search查找编号“S09999”的商品(该编号位于文件尾部),记录比较次数和大致耗时。学生运行后,屏幕上陆续出现“比较了99998次”的结果,部分配置较旧的机器出现明显等待。教师把两次结果并排在黑板上:100条数据87次,100000条数据99998次。提问:“数据量放大1000倍,比较次数放大了多少倍?如果这个比例延伸到一亿条数据的天猫商品库,搜索结果会怎样?”学生直观感受到线性增长的可怕,课堂出现真实的骚动。此时教师只说一句:“有没有办法,一次比较就甩掉一半的商品?”课堂悬念就此拉满。(四)探究建构:二分查找的诞生(约15分钟)教师不直接讲授算法,而是先组织一个“猜数字”对抗活动。教师心里想一个1到100之间的整数,请一名学生猜,教师只回答“大了”或“小了”,全班记录猜测次数。学生自然而本能地采用从中间猜起的策略,通常7次以内命中。教师追问:“为什么从中间猜最聪明?”学生答:“不管答案是大了还是小了,都能排除一半的可能。”教师板书:每次排除一半——这就是二分的力量。活动结束,教师将问题形式化:如果商品编号已经排好序,我们查找S09999时,能不能也“从中间猜起”?大屏幕给出有序列表示意,引导学生口述查找流程:取中间位置mid,比较中间元素与目标;相等则找到;目标更大,说明目标只可能在右半段,左半段永久放弃;目标更小,则只查左半段。如此反复,直到找到或区间缩小为空。随后学生分组完成任务三:实现二分查找函数binary_search(data,target),同样统计比较次数,并在small_goods.csv上验证结果与顺序查找一致。教师提供半成品框架,关键处留空:defbinary_search(data,target):low=0high=len(data)1count=0while____:mid=(low+high)//2count+=1ifdata[mid]["id"]==target:returndata[mid],countelifdata[mid]["id"]<target:____else:____return1,count这一环节是教师巡视密度最高的时段。预判中的高频错误如期出现:有的组写成whilelow<high,导致查找区间只剩一个元素时提前退出,恰好在边界上的目标查不到;有的组在目标大于中间值时写成low=mid,造成死循环——因为mid本身已被排除,若不跳过mid,区间将永不收缩。教师不直接给出答案,而是给出诊断工具:“把low、mid、high三个值每次循环打印出来,自己盯住它们是怎么走的。”学生通过观察打印轨迹,自行定位错误,修正为low=mid+1与high=mid1,并将循环条件改为low<=high。全部小组通过后,教师在黑板右侧记下新数据:100条数据,二分查找最多7次。随即任务四登场:用binary_search在big_goods.csv中查找同样的S09999。结果数字跳出——比较17次。教室响起真实的惊叹声。(五)证据呈现:效率之争的数据审判(约6分钟)教师组织全班汇总数据,大屏生成对比表:数据规模100条:顺序查找最坏100次,二分查找最多7次;数据规模100000条:顺序查找最坏100000次,二分查找最多17次。教师引导计算:n每次翻倍,二分查找的次数只增加1。由此引出对数量级的表述:顺序查找的比较次数与n成正比,记作O(n);二分查找的比较次数与log₂n成正比,记作O(logn)。教师用折中方式解释对数的含义:“log₂n就是回答‘n连续除以2多少次变成1’,十万里只够除17次,所以是17。”这一解释避开数学推演的艰涩,又保住了概念的准确性。教师请学生用自己的话完成一句填空式表达:“数据越多,______算法的优势越______。”学生齐答“二分,大”。效率之争以数据定谳。(六)认知冲突再起:二分查找的“阿喀琉斯之踵”(约6分钟)正当学生沉浸在二分查找的优越感中,教师不动声色地布置任务五:把数据文件换成messy_goods.csv(无序),运行binary_search查找某个确实存在的商品编号。结果出现两类:“找到了”和“返回1(没找到)”,而那个商品明明在文件里。学生困惑。教师请查到和没查到的学生分别展示运行结果,然后提问:“同一个程序、同一个目标,为什么结论分裂?”小组讨论后,有学生点破天机:二分查找每一步都靠“中间值与目标的大小关系”来决定舍弃哪一半,这个推理只有在数据有序时才成立;数据乱了,舍弃的那一半可能正藏着目标。教师板书并强调:二分查找的高效,是用“数据必须有序”这个前提换来的。算法与数据的组织方式,从来是绑在一起的。教师顺势补一刀:“乱的数据想用二分,怎么办?”学生答“先排序”。教师补充排序本身有代价,若只查一次,排序加上二分未必比直接顺序查找划算;但若一个商品库要被反复查询千万次,一次性排序的投入就极其值得。这就是工程里的权衡。(七)观念升华:数据结构的选择(约5分钟)教师将讨论推向本课的最高处。提出问题链:“同样是查找,Python的字典为什么号称一查就到?列表、有序列表、字典,它们组织数据的方式有何不同?如果让你设计电商后台,商品数据怎么存?”小组讨论后,教师引导归纳:列表按下标顺序排列,查找要逐个比对;排序后的列表支持二分,以“有序”换取效率;字典以键值哈希直寻,平均一次定位,但牺牲了顺序且占用更多空间。三种组织方式没有绝对优劣,只有与问题特征的匹配与否——数据量小、查询稀少,列表足矣;数据量大、查询频繁,有序结构或哈希结构才扛得住。这就是本课的标题之义:查找算法的应用,本质上是数据结构的选择。教师点出学科观念的迁移价值:将来学习数据库索引、搜索引擎分词,其核心思想都是从今天的“猜数字”游戏生长出来的。(八)课堂小结与延伸任务(约5分钟)教师带领学生完成三行板书式小结:顺序查找,无门槛,O(n),适合小数据或无序数据;二分查找,须有序,O(logn),适合大数据的反复查询;数据结构的组织方式决定算法的选择空间,算法效率决定用户的等待时长。布置分层作业。基础层:完善课堂代码,为两个查找函数添加中文注释,并在三种规模数据(千、万、十万)下记录比较次数,画出次数随规模变化的折线图。提高层:编写一个程序,先对无序商品表按编号排序再二分查找,统计“排序耗时+二分耗时”与纯顺序查找耗时的对比,验证“查多少次才值得先排序”的临界点。拓展层:查阅资料了解Python字典的哈希查找原理,用200字向同学解释“为什么字典几乎一次就能找到”。下课前,教师回扣开篇的视频:“现在再回答开头的问题——十万个商品,怎么让用户感觉不到等待?”学生答:“排好序,用二分,或者建字典。”教师颔首,本课在问题闭环中结束。七、板书设计主板书分三栏。左栏:顺序查找——逐个比对,无须有序,O(n),100条87次,100000条99998次。中栏:二分查找——折半排除,必须有序,O(log

温馨提示

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

最新文档

评论

0/150

提交评论