高中信息技术必修一算法专题八课时教学设计:选择循环与经典算法_第1页
高中信息技术必修一算法专题八课时教学设计:选择循环与经典算法_第2页
高中信息技术必修一算法专题八课时教学设计:选择循环与经典算法_第3页
高中信息技术必修一算法专题八课时教学设计:选择循环与经典算法_第4页
高中信息技术必修一算法专题八课时教学设计:选择循环与经典算法_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

高中信息技术必修一算法专题八课时教学设计:选择循环与经典算法一、教学设计总体说明本教学设计面向高中一年级信息技术必修课程《数据与计算》模块,覆盖算法部分的八个核心课时:选择结构、循环结构、解析算法、枚举算法、冒泡排序、选择排序、顺序查找、对分查找。八个课时按照"控制结构奠基—算法思想进阶—经典算法应用"的逻辑主线编排,前两课解决算法三大基本结构中的两个分支,中间两课建立用数学与穷举思想解决问题的思维路径,后四课以排序与查找为载体训练学生比较、分析、优化算法的能力。课程实施以Python语言为载体。选择Python的理由有三:语法接近自然语言,学生能把注意力集中在算法逻辑而非语法细节上;生态丰富,便于后续数据处理的拓展;与学业质量要求中"能够用程序设计语言实现简单算法"的表述直接对应。八课时的整体教学目标分解为四个层面。其一,知识层面:学生能准确描述三种基本控制结构,能说出解析、枚举、排序、查找算法的基本思想与适用条件。其二,能力层面:学生能针对真实问题抽象出算法模型,画出流程图,编写可运行程序,并能对算法效率作初步比较。其三,思维层面:通过对比顺序查找与对分查找、冒泡与选择排序,学生初步建立时间代价的意识,形成"先想清楚再动手写"的工程习惯。其四,素养层面:在调试失败、数据异常、边界出错的过程中培养耐心、严谨与反思品质。二、第一课时选择结构教学设计(一)情境导入上课伊始,教师在屏幕上展示学校体质健康测试系统的成绩单:输入一名学生的跑步成绩,系统自动判定"优秀、良好、及格、不及格"四个等级。教师提问:计算机凭什么做出这个判断?判断的依据写在哪里?学生在讨论中自然说出"比较分数""分档"等关键词。教师顺势板书课题:让程序学会做判断——选择结构。(二)新知建构教师以单分支结构入手,在黑板上画出流程图:菱形判断框内写"成绩≥90?",是分支输出"优秀",否分支直接结束。学生观察流程图后,教师给出对应的Python语句:ifscore>=90:print("优秀")教师强调三点:冒号是分支开始的标志;缩进四个空格表示语句隶属于该分支;判断条件的结果是成立或不成立两种可能。接着问题升级:不及格要给出"需要补考"的提示,如何修改?学生小组讨论后得出双分支结构if…else…。教师再抛出真实问题:体测有四个等级怎么办?引出多分支结构if…elif…else…。此处安排一个常见错误的剖析。教师故意写出四个独立的if语句实现分档,运行输入95分,结果同时输出"优秀"和"及格"。学生调试后发现:独立if之间没有互斥关系。通过这个错误,学生深刻理解elif的"排他性"语义。(三)实践任务任务一:编写程序,输入三角形三边长度,判断能否构成三角形;若能,进一步判断是等边、等腰还是一般三角形。该任务训练条件表达式中and的运用。任务二:编写阶梯电价计算程序。用电量240度以内每度0.55元,241至400度部分每度0.60元,400度以上部分每度0.85元。该任务训练分段思维与elif链条的边界设计。教师巡视时重点关注两类问题:边界值归属(240度究竟落在哪一档)、条件顺序(从高档往低档写与从低档往高档写均可,但边界判断必须一致)。(四)课堂小结学生用自己的话完成三个填空:选择结构解决的问题是____;单分支、双分支、多分支的区别在于____;写条件时最容易犯的错误是____。三、第二课时循环结构教学设计(一)情境导入教师出示例题:计算1+2+3+…+100。有学生立即报出高斯的故事与答案5050。教师追问:如果加到10000呢?加到n呢?数学公式能解决等差数列,但计算机更擅长的是"不知疲倦地重复"。板书课题:循环结构。(二)新知建构教师先在黑板上画出当型循环流程图:判断条件成立则进入循环体,执行完回到判断;不成立则退出。随后给出累加程序:s=0i=1whilei<=100:s=s+ii=i+1print(s)师生共同拆解循环三要素:初始化(s=0,i=1)、循环条件(i<=100)、循环变量的更新(i=i+1)。教师用表格追踪法带学生手动执行前四轮,学生在表格中看到s与i的变化轨迹,"循环"从抽象概念变成可视过程。随后引入for循环与range函数,对比两种写法实现同一累加任务,学生体会:知道循环次数时用for更简洁,次数不确定时用while更灵活。必须安排的环节是死循环警示。教师删去i=i+1一行,运行程序,光标停住。学生讨论原因:条件永远成立。由此确立规则:循环体内必须有让条件趋向不成立的语句。(三)实践任务任务一:用while实现"猜数字"游戏。程序内置一个目标数,用户反复输入猜测,程序提示"大了""小了",猜中后输出所用次数。该任务体现了"次数不确定"的典型场景。任务二:输出九九乘法表下三角。该任务引入循环嵌套,外层控制行,内层控制列。教师提示学生先用文字描述"第i行有i个式子",再翻译成代码。任务三(拓展):求1−1/2+1/3−1/4+…前100项的和。该任务训练符号交替的处理技巧,可引入一个符号变量flag在循环中取反。(四)课堂小结师生共同归纳:循环结构由三要素构成;for适合次数已知,while适合条件驱动;警惕死循环;嵌套循环要先想清楚内外层各管什么。四、第三课时解析算法教学设计(一)概念建立教师呈现三个问题:已知圆半径求面积;已知路程与时间求速度;解一元二次方程。学生发现共性:这些问题都有现成的数学公式可循。教师给出解析算法的定义:解析算法是指用数学公式或已有的数量关系,直接计算出结果的算法。其核心是"找到公式—代入数据—输出结果"。教师强调解析算法与前一课的区别:选择、循环解决的是"怎么控制流程",解析算法回答的是"能不能一步算出来"。(二)案例精讲案例一:求解一元二次方程ax²+bx+c=0。这是解析算法与选择结构的综合应用。教师引导学生写出判别式d=b²−4ac,根据d的符号分三种情况:d>0两个不等实根,d=0一个实根,d<0无实根。根的计算使用求根公式:x₁=(−b+根号下(b²−4ac))÷(2a)x₂=(−b−根号下(b²−4ac))÷(2a)程序实现时引入math模块的sqrt函数。教师特别强调输入合法性检查:a不能为0,否则不是二次方程。这是工程严谨性的早期渗透。案例二:自由落体运动。已知下落时间t,求下落高度h(g取9.8)。公式h=½gt²。教师让学生对比案例一,得出解析算法的一般步骤:分析问题找出数量关系→写出表达式→程序实现→验证结果。(三)实践任务任务一:编写程序,输入圆柱体底面半径和高,输出表面积与体积(π取3.14159)。任务二:分期还款计算。贷款P元,月利率r,分n个月等额本息还款,月供公式为:月供=P×r×(1+r)ⁿ÷((1+r)ⁿ−1)。学生完成编程后,用1万元、年利率折算月利率0.004、12期验证结果合理性。(四)小结与过渡解析算法的前提是世界存在明确的数量规律。教师抛出问题:如果一个问题没有现成公式,比如"找出100以内所有的素数",怎么办?为下一课枚举算法埋下伏笔。五、第四课时枚举算法教学设计(一)概念建立接着上节课的问题展开。教师提问:判断一个数n是不是素数,没有公式可用,但有一个笨办法——把2到n−1的每个数都试除一遍,没有一个能整除,它就是素数。这种"把所有可能逐一列举,逐个检验"的方法就是枚举算法。枚举算法三要素在黑板上逐一明确:枚举对象(检验谁)、枚举范围(从哪里到哪里)、检验条件(什么算合格)。(二)案例精讲案例一:百钱买百鸡。公鸡5元一只,母鸡3元一只,小鸡1元三只,用100元买100只鸡,问各买几只。这是中国古典名题,也是枚举教学的最佳载体。师生共同建模:设公鸡x只、母鸡y只、小鸡z只。约束条件为x+y+z=100,且5x+3y+z/3=100。枚举范围分析:x至多20,y至多33,z由前两者确定或直接内层到100。程序采用双重循环:forxinrange(0,21):foryinrange(0,34):z=100−x−yif5x+3y+z/3==100:print(x,y,z)运行得到四组解。教师引导学生思考优化:公鸡每只5元,最多买19只(要留钱买别的),范围从20收紧;更精妙的是z不用枚举,直接由x、y算出,三重循环降为双重。学生体会到:枚举谁都会,枚举得聪明是功夫。案例二:寻找1000以内的完数(真因子之和等于自身的数,如6=1+2+3)。该案例训练"枚举+内层累加判断"的复合结构。(三)实践任务任务一:找出100至999之间所有水仙花数(各位数字立方和等于自身的三位数,如153)。教师提示用整除与取余分离三位数字。任务二:破解三位密码。一个三位数满足:各位数字之和为14,十位数字比个位大2,百位是偶数。枚举所有可能并输出。(四)小结与过渡枚举算法思想朴素但威力强大,计算机的高速让"笨办法"变成"好办法"。但它的代价是范围越大越慢。教师出示一张乱序的成绩单:如何让数据排好序以方便后续处理?引出排序专题。六、第五课时冒泡排序教学设计(一)情境导入教师请八名学生上台,每人手持一张写有随机数字的卡片,站成一排。要求:不准全部打乱重排,每次只能交换相邻两人,如何用最少指挥让队伍按从小到大站好?学生们自发尝试后,教师引导观察一种策略:从排头开始,相邻两人比较,大的往后换,走完一轮,最大的人站到了排尾。再走一轮,次大的站到倒数第二位。这就是冒泡排序。(二)算法剖析教师用五张卡片现场演示一趟冒泡的全过程:49、38、65、97、13。第一轮比较后序列变化的每一步都写在黑板上,学生看到97如何像气泡一样浮到末尾。归纳算法要点:n个数需要n−1轮;第j轮完成第j大元素的归位;每轮比较范围比上一轮少一个。程序实现:a=[49,38,65,97,13]n=len(a)foriinrange(n−1):forjinrange(n−1−i):ifa[j]>a[j+1]:a[j],a[j+1]=a[j+1],a[j]教师逐行讲解双重循环的含义:外层i控制轮数,内层j控制每轮比较的左端位置,n−1−i体现"已归位的不再参与比较"。(三)优化探究教师提问:如果某一轮比较中一次交换都没发生,说明什么?学生回答:序列已经有序,可以提前结束。引入标志变量flag改进算法,每轮开始置False,发生交换置True,一轮结束若flag仍为False则跳出。学生体会算法优化的思想:不做无用功。(四)实践任务任务一:输入10名学生成绩,冒泡排序后从高到低输出。注意降序只需改变比较符号。任务二:交换次数统计。给程序添加计数器,统计完成排序共交换了多少次,并对比不同初始数据的交换次数,为下一课选择排序的效率比较做准备。七、第六课时选择排序教学设计(一)衔接导入承接上节课的统计结果:冒泡排序交换次数很多。教师提问:交换是有代价的操作,能不能减少交换?新思路:每一轮先找到最小值的位置,一轮只交换一次。(二)算法剖析沿用五张卡片演示。第一轮在全部元素中找到最小的13,与首位49交换;第二轮在剩余四张中找最小的38,与第二位交换;依此类推。学生观察到规律:n个元素进行n−1轮;第i轮在未排序区找最小值下标,与未排序区首元素交换。程序实现:foriinrange(n−1):k=iforjinrange(i+1,n):ifa[j]<a[k]:k=jifk!=i:a[i],a[k]=a[k],a[i](三)对比研讨黑板上并列两种算法,师生从四个维度比较。比较次数:两者都是n(n−1)/2级别,相当。交换次数:冒泡最坏情况接近比较次数,选择排序最多n−1次。稳定性:教师举例(两个相同分数的学生排序后先后次序),说明选择排序可能打破原有相对顺序,冒泡可保持稳定。直观性:冒泡像水下气泡上浮,选择像班级选最矮的站前面。学生小组讨论后填写对比表,教师点评:没有绝对更好的算法,只有更适合场景的算法。这渗透了计算思维中"权衡"的核心观念。(四)实践任务任务一:用选择排序将学生姓名按拼音字母序排列(Python字符串可直接比较大小)。任务二(拓展):统计两种排序对同一组随机数据的比较次数与交换次数,用数据验证课堂结论。八、第七课时顺序查找教学设计(一)情境导入排序完成的序列有什么用?教师给出场景:教务处有全校1500名学生的学号列表,要查某学生的信息。最朴素的做法:从第一个开始逐个往下看,找到为止。这就是顺序查找。(二)算法实现核心逻辑三分钟可以讲完:foriinrange(len(a)):ifa[i]==key:print("找到,位置:",i)break真正的教学重点在细节与变式。细节一:找不到怎么办?引入位置变量pos初值−1,循环结束后判断pos是否仍为−1。细节二:用while改写,体会"条件控制型查找"的写法。细节三:若列表中可能有多个相同元素,如何找出所有位置?(三)效率初探教师做一个思想实验:列表有n个元素,查找最好情况几次成功?(1次。)最坏情况几次?(n次。)平均呢?(约一半。)学生第一次接触算法效率的量化描述。教师随即追问:能不能让这个n变小?有没有办法每次排除一大批元素?学生沉默或猜测。教师宣布:下节课的对分查找能给出惊人答案,但有一个前提条件,请大家先猜。多数学生能说出"先排好序",为下一课做好认知铺垫。(四)实践任务任务一:班级花名册查找。列表中存有姓名,输入姓名返回其在列表中的位置,查无此人给出友好提示。任务二:统计一篇英文文本中单词the出现的所有位置。体会顺序查找在文本处理中的应用。九、第八课时对分查找教学设计(一)情境导入教师与学生玩猜数游戏:教师想好一个1至1000之间的整数,学生猜,教师只回答"大了"或"小了"。请一名学生上台,多数学生本能地采取折中策略:500→750→625……十次以内必然命中。教师揭晓:刚才你们不自觉使用的,就是对分查找,也叫二分查找。(二)算法剖析前提条件再次明确:数据必须有序。算法过程描述:设查找区间左端low、右端high;取中点mid=(low+high)÷2取整;比较中间元素与目标值——相等则成功;目标小则把左半区间作为新区间(high=mid−1);目标大则取右半区间(low=mid+1);当low>high时说明不存在。教师用有序数组[3,8,15,21,35,46,57,62,79,88]查找21做全程演示,每一步在黑板上更新low、high、mid三个值,学生看到区间像对折的纸条一样迅速收缩。程序实现:low=0high=n−1whilelow<=high:mid=(low+high)//2ifa[mid]==key:breakelifkey<a[mid]:high=mid−1else:low=mid+1边界条件是本课的最大难点。教师专门剖析两个高频错误:写成high=mid而非

温馨提示

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

评论

0/150

提交评论