资源简介 教学设计课例名称2.4.2基于枚举算法的问题解决学段学科高一信息技术教材版本人教中图版章节必修第二章第四节授课学校核心素养目标进一步体验算法思想,通过实例了解用枚举法解决问题的基本方法。(信息意识)理解枚举法的核心思想,抽取数学模型(计算思维)。3、体验枚举算法的执行效率,认识优化算法的必要性(数字化学习与创新)。教学重难点1、教学重点:建立正确的数学模型,确定枚举方案。2、教学难点:恰当安排枚举方式,感受不同算法的执行效率,体验算法优化在解决中的价值。教材分析在应用计算机求解问题时,枚举是一个很常用的思想方法,一个严密的枚举方案可以训练思维的严密性和条理性。枚举算法的基本思想是在列举过程中,所有可能一个不漏地逐一判断,从中得到符合要求的答案。通过本节内容的学习,学生对设计算法求解问题有了进一步的认识,思考问题更加严密,程序编制和调试更有经验。教学策略注重教学过程中核心素养的培养,以“优化为营”项目任务入手,引导学生关注枚举法在社会生活中的应用,培养学生的逻辑思维能力、解决问题的能力。采用以学生的学习和发展为中心的自主、合作、探究等学习方法;强调信息技术与生活实际的联系,以及创新意识等;设置多元化的评价方式,让学生掌握学习内容的同时,形成交流与评价的能力。2.4.2基于枚举算法的问题解决教学环节教师活动学生活动设计理念提出问题引发思考提出问题:1、开展凑24游戏,数字1到10,随机抽出四个数,任意作“加、减、乘、除”四则运算,找出一种运算结果等于24的方法。(比如“5,4,6,2”四个数,方法为:54+(6-2)=24。)2、某羽毛球赛共有23支队伍报名参赛,赛事安排23支队伍抽签两两争夺下一轮的出线权,没有抽到对手的队伍轮空,直接进入下一轮,那么,本次羽毛球赛最后共会遇到多少次轮空的情况?(公务员考试题)3、如图某同学要从甲地到乙地和丙地游玩,其中从甲地到乙地有2条路线可走,从乙地到丙地有3条路线可走,从甲地到丙地共有4条不同的路线可走,问从甲地到丙地共有多少种不同的走法?1、学生参与游戏,积极思考,在游戏过程中体会解题的基本思路。2、分析思考问题,并尝试用数学方法解决问题。3、学生小组探究以上问题的是否有相同规律?尝试进行归纳总结。进行推理,请说出相关的解决方法。1、贴近生活,体现生活里的程序,程序里的生活。2、拓展视角,促使学生积极思考,进行归纳推理,提高解决问题的能力。核心学习枚举算法通过演示文稿介绍:枚举算法的定义枚举算法的基本思路枚举算法流程图引领学生归纳总结枚举法的基本思路及枚举策略。1、将手动枚举和计算机枚举进行对比。2、读流程图,理解枚举算法的工作流程思考、交流与讨论,体验计算机枚举在解决现实生活问题中的作用与优势。引导学生发现知识的规律、方法,提高信息意识,形成严谨的逻辑思维习惯。学以至用解决问题1、布置探究任务模糊数字推断问题:票据上有一个4位数字组成的编号:甲说:数字编号的前两位数字相同,但都不是零;乙说:数字编号的后两位数字是相同的,但与前两位不同;丙说:数字编号是一个整数的平方。 根据以上线索推断出编号。2、巡视学生学习情况,指导和帮助学生自主、协作学习。3、调控课堂气氛。1、根据任务需求,学生应用枚举法,找出已知条件,求解问题以及隐含关系。2、确定枚举对象、范围和判定条件。3、编写程序,解决问题。importmathforAinrange(1,10):forBinrange(0,10):ifA!=B:k=A1000+A100+B10+Bc=int(math.sqrt(k))#ifcc==k:print("票据编号是:",k)1、学生体验枚举法解决问题的全过程。2、引导学生提炼枚举法的技术思想,使学生解决问题的能力可迁移,提高计算思维。项目实战优化为营项目:寻找1000以内的所有素数旧例推新,重在优化通过素数定理1(从2开始到自身开平方的数中找到一个能整除的)。和学生完成程序基本写法。引导学生优化算法程序这种基本写法是否有待改进?探究完成:1、第一层循环的i取值时,是否可以排除偶数?2、第二层循环j取值时,从2开始到i开平方取值,思考函数range()的使用,是否可减少一半的数?读下列程序,n=1000foriinrange(2,n):forjinrange(2,i):ifi%j==0:breakelse:print(i,end='')优化1,完成探究活动:1、第一层循环的i取值时,因为偶数确定不是素数,所以排除偶数,使用range()函数排除偶数,range(3,n,2)这样就减少了一半的数。2、第二层循环j取值时,考虑从2开始到i开平方取值,同时也把偶数排除range(3,int(i0.5)+1,2)这样也可减少一半的数。2就是素数,单独打印。1、解决问题并不难,让学生感受到难的是选择最优的枚举策略。提高学生对利用程序解决实际问题过程的系统化梳理的能力。2、小组合作探究,通过对比实验,认识算法优劣在解决问题中的意义,促进数字化学习与创新。项目实战优化为营1、素数定理2一个合数一定可以分解成几个素数的乘积,也就是说,一个数如果能被一个素数整除就是合数。(使用列表保存素数)。2、代领学生使用定理2,完成程序,使之更有python语言的特色。3、引导学生优化算法程序探究:(1)上述写法的效率是否有待提高?(2)读程序,第一层循环的i与列表中的元素进行了怎样的操作?(3)请进一步优化。优化2:使用定理2,用列表保存上一次的运算结果:n=100L=[2]foriinrange(3,n,2):forjinL:ifi%j==0:breakelse:L.append(i)print(L)优化3,完成探究活动:此种写法的效率不高,第一层循环的i没必要与列表中的每一个元素取余,与从2开始到i的开平方处之间的数取余即可。设计一题多解、多次优化的任务,体验枚举算法的执行效率,认识优化算法的必要性。提高规划设计能力,计算思维,鼓励学生勇于探索。归纳总结知识内化1、通过演示文稿总结本节知识内容,帮助学生归纳知识。2、总结同学们在解决问题过程中所遇到的困难。3、略述枚举法的局限性。1、知识总结,系统归纳。2、回忆课堂学习过程,提高对枚举算法的认识。3、学生自我反思,加深对所学知识的认识与理解,学会评价各种枚举方案的优劣。促使学生将知识内化、系统化,并进行能力迁移。阅读拓展网络探索鼓励有兴趣的学生自主学习相关知识,进行更深入的探索。利用网上搜索算法的基本设计方法,了解递归法,排序法、回溯法、动态规划法等解决问题的方向。通过知识的延伸,拓展学生的思路,提升信息意识,鼓励数字化学习与创新,加强核心素养的培养。附优化1及优化3程序代码:优化1程序代码:n=100print(2)foriinrange(3,n,2):forjinrange(3,int(i0.5)+1,2):ifi%j==0:breakelse:print(i,end='')优化2程序代码:n=100L=[2]foriinrange(3,n,2):flag=FalseforjinL:ifi%j==0:flag=Truebreakifj>int(i0.5):breakifnotflag:L.append(i)print(L)2.4.2基于枚举算法的问题解决练习题一、选择题1、(单选)下列问题中适合使用枚举算法解决的是()A在一串不相同的钥匙中寻找云教室的钥匙B已知a,b,c,求一元二次方程ax2+bx+c=0的解C超市的促销方案D利用“割圆术”求圆周率的近似值2、(单选)枚举算法的适用范围是()A一切问题B所求问题的解无限多C所求问题解的个数有限且有明确的条件D所求问题解的个数有限且无明确的条件。3、(单选)下列问题中适合使用枚举算法解决的是()A已知5个电阻阻值,求它们并联后的阻值B银行贷款买房后每月还货金额的计算C查找100以内所有能被6整除的数D已知某同学的身高和体重,判断体重指数的等级4、(多选)枚举算法思想在生活中解决问题的适用情况及特点A运算量大B求解数量有限C所有的可能情况都符合一定的规则,D计算表达式来实现问题的解5、下列说法符合枚举算法的是(),A逐一判断,强调不遗漏且不重复地验证条件。B根据条件判断是否合适,保留合适的,舍弃不合适的.C为了提高解决问题的效率,使可能解的范围将至最小,D可作为某类问题时间性能的底线,用来引出同样问题的更高效率的算法。二、简析题1、小刘负责甲、乙、丙三个机房的巡检工作,甲、乙和丙机房分别需要每隔2天、4天和7天巡检一次,3月1日,小刘巡检了3个机房,问他在整个3月有几天不用做机房的巡检工作?2、把若干个大小相同的立方体摆成如图形状,从上向下数,摆1层有一个立方体,摆2层共有4个立方体,摆3层共有10个立方体,问摆了7层共有多少个立方体?答案:一、ACCABCABCD二、14天84个(共25张PPT)第二章算法与程序实现2.4.2基于枚举算法的问题解决目录CONTENTS01提出问题引发思考02核心学习枚举算法03学以至用解决问题04项目实战优化为营05阅读拓展网络探索提出问01题提出问题1、开展凑24游戏,1到10,10个数,随机抽出四个数,任意作“加、减、乘、除”四则运算,找出一种运算结果等于24的方法。(比如“5,4,6,2”四个数,那么方法为:54+(6-2)=24。)2、某羽毛球赛共有23支队伍报名参赛,赛事安排23支队伍抽签两两争夺下一轮的出线权,没有抽到对手的队伍轮空,直接进入下一轮,那么,本次羽毛球赛最后共会遇到多少次轮空的情况?(公务员考试题)3、如图某同学要从甲地到乙地和丙地游玩,其中从甲地到乙地有2条路线可走,从乙地到丙地有3条路线可走,从甲地到丙地共有4条不同的路线可走,问从甲地到丙地共有多少种不同的走法?思考下列问题:1、以上问题的是否有相同规律?尝试进行归纳总结。2、进行推理,请说出相关的解决方法。小组探究:提出问题枚举算02法核心学习枚举算法在进行归纳推理时,依据问题的已知条件,确定答案的大致范围,在此范围内列举出它所有可能情况的方法。枚举算法的定义:在列举过程中,既不能遗漏,也不能重复,通过逐一判断,验证哪些情况满足问题的条件,从而得到问题的答案。核心概念1、确定枚举对象、范围和判定条件。2、逐一枚举可能的解,并验证每个解是否是问题的解。枚举算法的基本思路:枚举算法枚举算法开始输出该枚举值枚举值在给定的范围中吗?取下一个枚举值结束枚举值符合给定的条件吗?NNYY枚举算法流程图列举,采用循环来实现;逐个检验,采用选择来实现。枚举算法1.模糊数字问题例:一个五位数,万位和百位不知道,但是57和67的倍数,求所有的可能性。(直接枚举所有情况,判断即可)。2、百钱买百鸡问题公元6世纪,中国的《张丘建算经》有一道著名的百鸡问题:“今有鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,凡百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”3、填写运算符问题添加“+”、“-”,“”,“/”,4个运算符,使得式子成立:5?5?5?5?5=5?枚举算法主要解决的实例学以至03用学以至用 票据上有一个4位数字组成的编号:甲说:数字编号的前两位数字相同,但都不是零;乙说:数字编号的后两位数字是相同的,但与前两位不同;丙说:数字编号是一个整数的平方。 根据以上线索推断出编号。提出问题模糊数字推断问题:学以至用已知问题求解问题分析四个数字应是AABB,其中A≠0,A≠B,且AABB是一个整数的二次方票据中的数字。要求解的4位数字的编号必须同时满足所有的已知条件。解题时尽量分析出问题隐含条件,缩小枚举的范围,提高算法效率。隐含关系学以至用importmathforAinrange(1,10):forBinrange(0,10):ifA!=B:k=A1000+A100+B10+Bc=int(math.sqrt(k))#求票据中数字的平方根并取其整数部分ifcc==k:#若k是完全平方数,则找到该票据编号print("票据编号是:",k)代码调试程序:项目实04战项目实战寻找1000以内的所有素数欧几里德大约在公元前300年,征明了素数有无数个,从此人们开始了寻找素数的历程。项目项目实战寻找1000以内的所有素数确定范围:1和它本身之间的所有数。满足条件:逐一验证除1和它本身以外的数能否整除。分析有关素数例题,前面曾讲引用过,本节课旧例推新。项目实战素数定理:1、从2开始到自身的-1的数中找到一个能整除的(从2开始到自身开平方的数中找到一个能整除的)。2、一个合数一定可以分解成几个质数的乘积,也就是说,一个数如果能被一个质数整除就是合数。(使用列表保存质数)n=1000foriinrange(2,n):forjinrange(2,i):ifi%j==0:breakelse:print(i,end='')使用定理1的基本写法:项目实战优化这种基本写法是否有待改进?1、第一层循环的i取值时,是否可以排除偶数?2、第二层循环j取值时,从2开始到i开平方取值,思考函数range()的使用,是否可减少一半的数?小组探究:使用定理2,用列表保存上一次的运算结果。n=100L=[2]foriinrange(3,n,2):forjinL:ifi%j==0:breakelse:L.append(i)print(L)素数定理:1、从2开始到自身的-1的数中找到一个能整除的(从2开始到自身开平方的数中找到一个能整除的)。2、一个合数一定可以分解成几个素数的乘积,也就是说,一个数如果能被一个素数整除就是合数。(使用列表保存素数)。项目实战1、上述写法的效率是否有待提高?2、读程序,第一层循环的i与列表中的元素进行了怎样的操作?3、请进一步优化。优化小组探究:项目实战项目实战枚举的意义1、枚举法是在分析问题时,通过循环、递归或选择,利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案。2、枚举可作为某类问题时间性能的底线,用来引出同样问题的更高效率的算法。???阅读拓05展阅读拓展请到网上搜索算法的基本设计方法,了解递归法,排序法、回溯法、动态规划法等解决问题的方向。自主学习谢谢聆听 展开更多...... 收起↑ 资源列表 2.4.2基于枚举算法的问题解决 练习.docx 2.4.2基于枚举算法的问题解决 课件.pptx 2.4.2基于玫举算法的问题解决 教案.docx