1、基础教育精品课3.3.2枚举算法的程序实现(第一课时)年年 级级:一年级:一年级 学学 科科:信息技术(浙教版):信息技术(浙教版)1 理解枚举算法的思想 能用枚举算法来设计算法解决简单问题。3 通过解决实际问题,编写实用性程序 熟练使用循环结构、分支结构的嵌套。学习目标2 编写程序来实现枚举算法 使用枚举算法来设计算法,编写程序实现枚举算法 你不经意间发现了一间密室,密室入口有一你不经意间发现了一间密室,密室入口有一道大门。大门由英明神武的老黑把守,只有破解道大门。大门由英明神武的老黑把守,只有破解大门密码,才能打开大门,进而找到宝藏的线大门密码,才能打开大门,进而找到宝藏的线索索情境导入
2、问题分析根据问题本身的性质,根据问题本身的性质,一一列举一一列举出该问题所有可能的解,并根据问题出该问题所有可能的解,并根据问题的条件对各解进行的条件对各解进行逐个检验逐个检验,从中挑,从中挑选出符合条件的解,舍弃不符合条件选出符合条件的解,舍弃不符合条件的解。的解。密码由不小于1000的4位数字组成,怎么办?如何破解打开大门的密码?从10009999都试一遍抽象建模枚举算法原理揭密:一一列举,逐个检验一一列举一一列举首先:列举的数字是变化,所以用变量首先:列举的数字是变化,所以用变量i i存放数字存放数字1000-9999循环结构for语句逐个检验逐个检验是否和密码是否和密码一致一致分支结构
3、if语句注意:在列举过程中要既不遗漏,又不重复。设计算法NYi=9999 i=pwi=i+1i=1000输出输出i开始开始结束结束YbreakN编写程序编写程序请同学们根据左侧的流程图,将下列程序补充完请同学们根据左侧的流程图,将下列程序补充完整,并运行调试整,并运行调试pw=4206#设置密码for i in range():#列举i变化范围 if :#一一检验 print(“密码是:”,i)#输出密码 _ for i in range(1,36 ):#列举i变化范围 if :#一一检验 print(“稚有:”,i,“只”)print(“兔有:”,(35-i),“只”)“今有稚兔同笼,上有三
4、十五头,下有九十四足,问鸡兔各几何?”孙子算经探究一:鸡兔同笼问题请同学们将程序补充完整:探究任务二:辗转相除法求最大公约数原理原理:以小数b除大数a求得余数r,若r为0(能整除)则转,若r不为0(不能整除)否则转。将第步的小数b作为新的大数a,第步余数r作为新的小数b,转到第步求得b就是最大公约数说明:ab记作a除以b或者b除a示例示例:求4453和5767的最大公约数由上表得5767和4453的最大公约数是73 Python程序实现a=int(input(请输入第一个数字:)b=int(input(请输入第二个数字:)if a x下一步的a为63,b为35。)63-35=28(a=63,b
5、=35,a-b=x28;bx下一步的a为35,b为28。)35-28=7 (a=35,b=28,a-b=x7;bx下一步的a为28,b为7。)28-7=21 (a=28,b=7,a-b=x21;bx下一步的a为21,b为7。)21-7=14 (a=21,b=7,a-b=x14;b a:a,b=b,ax=a bwhile x!=b:if x b:a,b=x,belse:a,b=b,xx=a-bprint(c*x)算法实现 总结归纳一一列举逐个检验1.枚举算法的思想循环结构里嵌套分支结构明确列举范围和检验条件2.枚举算法解决问题的步骤for语句实现了列举的范围if语句实现了逐个检验3.枚举算法的编程实现