1、1课程基本信息课题枚举算法教科书书名:信息技术必修 1 数据与计算 人民教育出版社;中国地图出版社 出版日期:2019 年 6 月学生信息姓名学校班级学号学习目标1.理解枚举算法的基本思想;2.认识问题解决过程中枚举算法的效率,通过不同解题方法的比较,体验算法的优化,合理选择算法;3.体验程序设计的基本过程,通过对问题进行分析,根据实际问题的需要选用不同的算法,编写程序并进行调试和完善,形成用计算机解决问题的具体方案。课前学习任务1.今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?(雉兔至少有一只)使用解析法解鸡兔同笼问题,请写出问题的已知条件与结果之间关系的数学表达式(设鸡的数量为
2、x 只,兔的数量为 y 只):课上学习任务2【学习任务一】请你写出枚举算法的思想:【学习任务二】画出“小明的幸运年”的流程图:【学习任务三】仿照“水仙花数”中分别枚举百位、十位、个位数字的算法,通过枚举出生年份的千位、百位、十位和个位数字,实现“小明的幸运年”问题的求解。3【学习任务四】根据问题需求,分析其是否可以使用枚举算法解决。问题描述问题描述是否可以用枚举算法解决是否可以用枚举算法解决破解密码求方程 2x+y=9 的实数解求方程 2x+y=9 的整数解求方程 2x+y=9 的正整数解寻找 1000 以内的所有素数推荐的学习资源1.Python3 菜鸟教程:https:/1课程基本信息课题
3、枚举算法教科书书名:信息技术必修 1 数据与计算 人民教育出版社;中国地图出版社 出版日期:2019 年 6 月教学目标教学目标:1.理解枚举算法的基本思想;2.认识问题解决过程中枚举算法的效率,通过不同解题方法的比较,体验算法的优化,合理选择算法;3.体验程序设计的基本过程,通过对问题进行分析,根据实际问题的需要选用不同的算法,编写程序并进行调试和完善,形成用计算机解决问题的具体方案。教学重点:1.理解枚举算法的基本思想;2.通过不同解题方法的比较,体验算法的优化并合理选择算法。教学难点:根据现实问题的需要,灵活运用枚举算法解决实际问题。教学过程时间教学环节主要师生活动23复习旧知引入主题在
4、前面的学习中,我们学习了三种程序结构,了解了解析算法的思想:通过找出解决问题的前提条件与结果之间关系的表达式,并计算表达式的值来实现问题的求解。解析法求解“鸡兔同笼”问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?除了解析法,有没有其他的方法解决鸡兔同笼问题呢?回忆我们在循环结构中学过的密码破解的实例,能不能像破解密码一样,通过一个一个地去尝试,找到满足条件的鸡和兔的数量呢?38新知学习算法思想枚举算法的思想例 1枚举法解“鸡兔同笼”问题(1)分析问题 本问题的已知条件是什么?求解目标是什么?隐含什么样的关系?x+y=352x+4y=94列举出所有可能,逐一尝试验证,输出其中满足
5、题目条件的鸡兔数量,这就是枚举算法的思想。用用枚举算法实现解“鸡兔同笼”问题,如何进行问题拆解?一一列举可能的解,即枚举范围是多少?逐一检验可能的解,判断条件是什么?(2)设计算法:输入数据、处理数据、输出结果逐一列举,用循环结构就可以解决。一一校验,则需要用到分支结构,验证哪些情况满足问题的条件,如果满足就输出。4(3)编程调试算法的优化:分析两种代码的循环执行次数,在解决实际问题的过程中,由于枚举算法需要将所有可能情况一一列举,当数据范围比较大时,要尽可能将枚举范围降至最小,提高解决问题的效率。试一试:试一试:用自己的话说一说,枚举算法的思想是什么?一一列举,逐一检验一一列举,逐一检验即:
6、列举出所有可能的情况并逐一进行检验,根据检验的结果执行相应操作。枚举算法要注意的问题:12实践活动实践活动 1:小明的幸运年实践活动 1:小明的幸运年有人问小明的年龄,小明说:今年是我的幸运年。我出生年份的四位数字加起来刚好是我的年龄(周岁)。已知今年是 2020 年,请推断出小明的出生年份(4 位整数)。解法一:解法一:(1)分析问题 本问题需要存储哪些数据,各是什么类型?用用枚举算法实现解“小明的幸运年”问题,如何进行问题拆解?一一列举可能的解,即枚举范围是多少?逐一检验可能的解,判断条件是什么?如何根据输入年份,得到四位数字之和?5以“1949”为例,讲解数字拆分的过程:(2)设计算法:
7、输入数据、处理数据、输出结果(3)编程调试将一段逻辑相对独立、功能相对单一的代码封装成一个函数,可以提高代码的可读性和可重用性。可以直接调用定义的 resolve 函数,一一列举,逐一检验:解法二解法二:将输入年份先强制转换为字符串,通过 for 循环结构将每个字符取出,转换为整型数据,再进行累加,也能完成该功能。6在编写程序解决问题的过程中,要注意灵活使用 Python 的各种运算符解决问题。实践活动 2:水仙花数实践活动 2:水仙花数“水仙花数”是指一个三位自然数,其各位数字的立方和等于该数本身。例如 153 是“水仙花数”,因为:153=13+53+33。解法一:解法一:(1)分析问题
8、本问题需要存储哪些数据,各是什么类型?用用枚举算法实现解“水仙花数”问题,如何进行问题拆解?一一列举可能的解,即枚举范围是多少?逐一检验可能的解,判断条件是什么?如何分离各位数字,并得到三位数字的立方之和?(2)设计算法:输入数据、处理数据、输出结果(3)编程调试解法二:解法二:通过分别枚举三位自然数的百位、十位和个位数字,计算生成一个三位自然数,再去判断它是否是水仙花数。一一列举可能的解,即枚举范围是多少?逐一检验可能的解,判断条件是什么?7通过这两个实践活动,我们发现,同一个问题,可以从不同的角度思考,实现问题求解。在算法的学习中,大家要多思考,多和身边的同学们讨论,碰撞出更多思维上的火花
9、。枚举算法的应用:枚举算法的应用:想一想:想一想:以下问题可以用枚举算法解决吗?说一说:说一说:除了上述问题之外,生活中有哪些问题是可以用枚举算法来解决的?“开心辞典”栏目中的“二十四点”的趣味题逻辑问题:警察抓小偷问题2知识梳理归纳总结(一)帮助学生梳理教学线索,总结重点内容。1.枚举算法的基本思想2.枚举算法的结构特征3.枚举算法的应用(二)布置课后练习,学生自测学习效果,进行查缺补漏。编写程序解决以下问题:Q1:从 2000 年到 2050 年,哪些年份是闰年?能够被 4 整除但不能被 100 整除的是闰年能够被 400 整除的也是闰年Q2:寻找 1000 以内的所有素数。课例编号教科书
10、编程语言基础课例编号书名:信息技术必修 1 数据与计算 人民教育出版社;中国地图出版社 出版日期:2019 年 6 月学生信息姓名学校班级学号课后练习打开 Anaconda Jupyter Notebook,新建一个 Python3 文件,编写程序解决以下问题:Q1:从 2000 年到 2050 年,哪些年份是闰年?能够被 4 整除但不能被 100 整除的是闰年能够被 400 整除的也是闰年Q2:寻找 1000 以内的所有素数(质数)。枚举算法(第一十八课时)高中信息技术顺序顺序结构结构选择选择结构结构循环循环结构结构解析算法解析算法通过找出解决问题的前提条件与通过找出解决问题的前提条件与结果
11、之间关系的表达式,并计算结果之间关系的表达式,并计算表达式的值来实现问题的求解。表达式的值来实现问题的求解。复习高中信息技术今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?(雉兔至少有一只)复习高中信息技术x+y=a2x+4y=bx=2*a b/2y=b/2-a解析法解鸡兔同笼问题高中信息技术解析法解鸡兔同笼问题1.分析问题隐含关系已知条件求解目标x+y=35x+y=352x+4y=942x+4y=94求鸡的个数求鸡的个数求兔的个数求兔的个数鸡和兔的个鸡和兔的个数必须同时数必须同时满足已知所满足已知所有条件有条件高中信息技术解析法解鸡兔同笼问题鸡兔头的数量脚的数量111 +1=21*2
12、+1*4=6 121+2=31*2+2*4=10131+3=41*2+3*4=1434134+1=35 34*2+1*4 =72 1.分析问题高中信息技术解析法解鸡兔同笼问题1.分析问题鸡兔脚的数量1341*2+34*4=1382332*2+33*4=1363323*2+32*4=1344314*2+31*4=13234134*2+1*4 =72高中信息技术解析法解鸡兔同笼问题1.分析问题:一一列举列举可能的解,即枚举范围是多少?鸡的数量:鸡的数量:134高中信息技术解析法解鸡兔同笼问题1.分析问题:逐一检验检验可能的解,判断条件是什么?鸡与兔共94只脚2*chicken+4*rabbit=9
13、42*chicken+4*rabbit=94高中信息技术解析法解鸡兔同笼问题2.设计算法一一列举一一列举一一列举一一列举逐一检验逐一检验逐一检验逐一检验循环循环分支分支高中信息技术解析法解鸡兔同笼问题一一列举一一列举逐一检验逐一检验循环执行循环执行34*3434*34次次高中信息技术算法优化一一列举一一列举一一列举一一列举一一列举一一列举逐一检验逐一检验逐一检验逐一检验逐一检验逐一检验循环执行循环执行3434次次高中信息技术枚举算法的思想枚举算法的思想用自己的话说说看高中信息技术枚举算法的思想枚举算法的思想:一一列举一一列举一一列举一一列举一一列举一一列举逐一检验逐一检验逐一检验逐一检验逐一检
14、验逐一检验分支分支分支分支循环循环循环循环高中信息技术枚举算法要注意的问题题解的可能范围,不重重不漏漏考虑优化算法,缩小缩小枚举范围,提高解决问题的效率高中信息技术实践活动1:小明的幸运年老师问小明的年龄,小明说:今年是我的幸运年。我出生年份的四位数字加起来刚好是我的年龄(周岁)。已知今年是2020年,请推断出小明的出生年份(4位整数,默认小明100岁)。高中信息技术实践活动1:小明的幸运年1.分析问题:需要存储哪些数据?变量是何种数据类型?y y:年份:年份sumsum:数字之和:数字之和整型整型高中信息技术实践活动1:小明的幸运年1.分析问题:一一列举列举可能的解,即枚举范围是多少?192
15、12020高中信息技术实践活动1:小明的幸运年1.分析问题:逐一检验检验可能的解,判断条件是什么?出生年份的四位数字加起来刚好是小明的年龄sum=2020-ysum=2020-y高中信息技术实践活动1:小明的幸运年1.分析问题:如何得到出生年份的数位之和呢?高中信息技术实践活动1:小明的幸运年19499=1949%104=194%109=19%10194y/=1019y/=10sum+=y%10sum+=y%10高中信息技术实践活动1:小明的幸运年199=19%101=1%101y/=10y/=100sum+=y%10sum+=y%10高中信息技术实践活动1:小明的幸运年1.分析问题:如何得到
16、出生年份的数位之和呢?高中信息技术实践活动1:小明的幸运年2.设计算法:输出结果输出结果输出结果输出结果输入数据输入数据输入数据输入数据处理数据处理数据处理数据处理数据高中信息技术实践活动1:小明的幸运年3.编程调试如何得到出生年份的数位之和呢?高中信息技术实践活动1:小明的幸运年3.编程调试将其转换为函数形式:函数名函数名参数参数返回值返回值高中信息技术实践活动1:小明的幸运年3.编程调试一一列举一一列举逐一检验逐一检验)高中信息技术实践活动1:小明的幸运年高中信息技术实践活动1:小明的幸运年1.分析问题:如何得到出生年份的数位之和呢?高中信息技术实践活动1:小明的幸运年1949194994
17、911949str(y)for j in str(y)int(j)高中信息技术实践活动1:小明的幸运年3.编程调试如何得到出生年份的数位之和呢?高中信息技术实践活动1:小明的幸运年高中信息技术实践活动2:水仙花数“水仙花数”是指一个三位自然数,其各位数字的立方和等于该数本身。编程输出所有的水仙花数,每行一个。例如153是“水仙花数”,因为:153=13+53+33。高中信息技术实践活动2:水仙花数1.分析问题:需要存储哪些数据?变量是何种数据类型?y y:三位自然数:三位自然数sumsum:数字之和:数字之和整型整型高中信息技术实践活动2:水仙花数1.分析问题:逐一检验检验可能的解,判断条件是
18、什么?resolve(i)=i高中信息技术实践活动2:水仙花数2.设计算法:输出结果输出结果输出结果输出结果输入数据输入数据输入数据输入数据处理数据处理数据处理数据处理数据高中信息技术实践活动2:水仙花数3.编程调试如何分离各位数字,并得到三位数字的立方之和?高中信息技术实践活动2:水仙花数)高中信息技术实践活动2:水仙花数1.分析问题:一一列举列举可能的解,即枚举范围是多少?i:1 9j:0 9k:0 9高中信息技术实践活动2:水仙花数1.分析问题:逐一检验检验可能的解,判断条件是什么?n=i*3+j*3+k*3高中信息技术实践活动2:水仙花数2.设计算法:输出结果输出结果输出结果输出结果输
19、入数据输入数据输入数据输入数据处理数据处理数据处理数据处理数据高中信息技术实践活动2:水仙花数3.编程调试高中信息技术可以用枚举算法解决吗破解密码求方程2x+y=9的整数解寻找1000以内的所有素数求方程2x+y=9的正整数解求方程2x+y=9的实数解高中信息技术枚举算法的应用警察抓了A、B、C、D四名偷窃嫌疑犯,其中有一人是小偷。审问中:A说:“我不是小偷”。B说:“C是小偷”。C说:“小偷肯定是D”。D说:“C冤枉人”。现在已经知道四人中三人说的是真话,一人说的是假话。到底谁是小偷呢?高中信息技术枚举算法的应用只运用+、-、*、/和括号,连接四个数字,可乱序,使得最后得数为24,符号运用次数不限。高中信息技术小结与练习高中信息技术小结与练习编写程序解决以下问题:Q1:从2000年到2050年,哪些年份是闰年?能够被4整除但不能被100整除的是闰年能够被400整除的也是闰年Q2:寻找1000以内的所有素数。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。