网站首页  词典首页

请输入您要查询的论文:

 

标题 枚举法的程序实现及优化
范文

    计新明

    内容分析

    本部分内容是教育科学出版社出版的必修1《数据与计算》第四单元第一节中的内容,整本书的思路是初始数据与计算、编程计算、认识数据、计算与问题解决、数据分析与人工智能,第四章属于比较重要的一章,主要介绍算法的概念和特征、算法的实现以及怎样通过算法来解决现实中的问题。枚举法作为最重要的算法之一,在现实生活中也经常用它来解决问题,所以笔者把它挑出来用一节课的时间来讲。

    本节知识需要用两课时,第一课时主要讲解算法及其特征,第二课时主要讲解枚举法的程序实现及其优化,本节课是该节的第二课时。

    学情分析

    本节课的教学对象是高一的学生,他们在前面的学习中已经学习过Python语言,对该语言的基本语法以及程序的基本结构都有一定的了解,所以本节课中枚举法的实现部分将使用Python语言。

    学习目标

    了解枚举法的概念;掌握枚举法的特征;枚举法的程序实现;对枚举法进行优化。

    核心素养

    引导学生对提出的问题进行分析,探讨问题的解决方案,设计出解决问题的算法并使用程序设计语言来实现此算法,最终解决问题。解决之后继续思考是否有更好的解决方案,能否对算法进行优化,从而更高效地解决问题。通过本课学习,对学生的核心素养,特别是信息意识和计算思维的提高都有一定的促进作用。

    教学重难点

    重点:枚举法的特征、枚举法的程序实现。

    难点:枚举法的程序实现、枚举法的优化。

    教学媒体

    多媒体计算机教室、广播教学软件、投影仪、教学幻灯片、Python軟件。

    教学策略

    本节课主要采用信息技术网络教学平台支持下的教学模式,即在教师教学引导下,学生通过任务驱动实现自主学习的教学方法。教学流程为:提出问题→学生探讨解决问题的方法→引出枚举法的概念和特征→怎样用Python来实现枚举法→是否能让我们的程序更加高效→枚举法的优化。

    教学过程

    1.新课导入(3分钟)

    提出问题:有一类四位数,如3025,分为30和25两个两位数,这两个数之和的平方正好等于该数本身,即(30+25)2=552=3025,求所有符合这一特征的四位数。请同学们尝试解决这个问题,并告诉老师你的思路是怎样的。

    设计意图:提出实际问题并让学生自己去解决,引出今天要讲的内容;让学生使用不同的方法,为后面的优化埋下伏笔;最后让学生自己动手,让学生理解得更深刻。

    2.引出枚举法的概念(3分钟)

    教师引出枚举法的概念:一一列举所有可能的答案,合适就保留,不合适就丢弃(也就是我们日常生活中通常所说的一个一个去试)。

    要求学生列举出日常生活中可能用到或见到的枚举法,如密码锁忘记密码了;公安机关破案时先锁定几个嫌疑人,一个一个验证指纹,最后抓到犯罪嫌疑人。

    设计意图:不管学生有没有解决这个问题,他们的方法都是一个一个去试是否满足条件,这样就可以引出枚举法的概念。

    3.引导学生归纳总结出枚举法的特征(2分钟)

    归纳总结:观察以上例子,它们有什么共同点?明确:①有枚举范围;②有一定的验证条件。

    设计意图:在教师的引导下,学生根据前面的例子归纳出枚举法的特征。

    4.枚举算法的程序实现(4分钟)

    教师讲解枚举算法实现的三部曲:

    (1)确定枚举对象、枚举范围和判定条件。

    这个数i的范围为1000到9999,判定条件为前两位数x和后两位数y和的平方等于这个数。

    (2)枚举可能的解(使用循环结构)。

    for i in range(1000,9999):

    (3)验证是不是问题的解(使用选择结构)。

    If(x+y)2=i:

    pirnt(i)

    设计意图:将枚举法的实现分成三步来实现,让学生更容易理解枚举法,也更好去实现。

    5.课堂活动:实践与尝试(15分钟)

    实践一:按照上面讲解的枚举法实现的三部曲,写出以下两道习题的三部曲。

    题1:班里要举行班级聚会,要用600元班会费为50名同学准备50份礼品进行抽奖。选定了公仔(20元/个)、水杯(15元/个)和笔筒(10元/个)三类商品。要求刚好用完600元买50件礼品(每种礼品至少一件),这三种礼品的数量可以如何搭配?(提示:假设这三种物品的数量分别为x、y、z,它们的范围是多少?)

    题2:这次面试的冠军在A、B、C、D四位同学中产生。A说:“不是我。”B说:“是C。”C说:“是D。”D说:“C说的不对。”已知四人中有一人说了假话。你能判断出到底谁是冠军吗?(提示:可以将A、B、C、D看成1、2、3、4)

    实践二:使用Python软件写出上面题1的完整程序。

    注意点:①提示学生写程序时注意缩进,Python对这个要求比较严格;②三种循环是怎样实现的(教师演示);③学生完成之后教师使用广播软件转播学生的完成情况,将错得比较多的地方挑出来讲解,总结并评价一些学生的程序。完整程序如下:

    for x in range(1,50):

    for y in range(1,50):

    for z in range(1,50):

    if (x+y+z==50) and (x*20+y*15+z*10==600):

    print(x,y,z)

    设计意图:这两道习题主要用来训练学生怎样用程序来实现枚举法,第一道题难点在于确定枚举对象和范围,有一个三重循环,第二道题难点在于判断条件,怎样将现实中说的话转换为计算机里的if语句。

    6.交流评价,优化枚举(10分钟)

    提出问题:枚举法是一种比较耗时的方法,能不能克服这个缺点呢?有的时候我们可以通过优化来解决这个问题,让计算量减少,最常用的方法就是减少枚举的范围。同学们能不能通过优化使上面的题1的枚举范围减小呢?相邻的同学比一比,看谁优化得好,让循环的次数最少。优化前后本题循环次数分别是多少?同时思考,本节课开始的问题能不能优化呢?怎么优化?

    设计意图:通过枚举优化及优化前后枚举次数的比较,培养学生优化程序的思想;交流优化方案,引导学生自我反思,加深对所学知识的认识和理解,从而得到思想与方法的提升。

    7.总结与拓展(3分钟)

    回顾和总结本课所学的知识:枚举法的概念、枚举法的特征、枚举法的程序实现、枚举法的优化。

    枚举法是日常生活中经常用到的一种算法,是在没有其他更好的方法情况下所使用的容易理解的算法,它的缺点是所耗费的时间比较长,但是我们可以通过优化来缩短它的计算时间。本节课我们使用了缩小枚举范围的方法来优化枚举法,大家也可以到网络上搜索其他的优化方法,让枚举法更优秀。

    设计意图:通过总结,让学生进一步巩固本节课的知识;通过知识的拓展,扩展学生的知识视野,激发他们的学习兴趣。

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2024/12/22 12:15:24