内容正文:
枚举算法及其应用教材内容:
3.3.2 简单算法及其程序实现-枚举算法及其应用 (必修一数据与计算 浙江教育出版社)
适应的课程标准:
1.6 从生活实例出发,概述算法的概念与特征,运用恰当的描述方法和控制结构表示简单算法。
1.7 掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。
教学目标:
●掌握从实际项目中界定
问题、对问题进行抽象与建模的方法。
●能基于问题求解模型,分析计算过程中的数据、运算特点,针对求解目标能够选择合理的程序结构,并编写 Python语言的程序。
●掌握编写程序的过程与方法。掌握程序调试与运行方法。指向的主要核心素养:
●计算思维:针对给定的任务进行需求分析,明确需要解决的关键问题;能提取问题的基本特征,进行抽象处理,并用形式化的方法表述问题。
●数字化学习与创新数字化学习与创新是指个体通过评估并选用常见的数字化资源与工具,有效地管理学过程与学习资源,创造性地解决问题,从而完成学习任务,形成创新作品的能力。
学习环境:有教学控制软件的多媒体机房。
课程标准和教学目标
课时:1课时
教学环节
教学过程
设计意图
情境导入
以中国古诗词大会飞花令环节视频作为课堂导入,古诗词游戏飞花令,轮流说出含有特定主题字的古诗句。完成飞花令的过程?对记忆中所有古诗进行逐个比较,将含有主题字的古诗句说出来作为答案。总结课题:把问题所有可能的解一一列举,然后判断每一个列举出的可能解是否为正确的解。这种解决问题的过程就是枚举算法。通过视频引出活动主题,总结课题。
通过活动的形式引导课堂思考。尝试先学后教。出示课题,明确课堂主题
学生活动(1)课堂内游戏比赛
将学生分为两组以‘花’为主题字进行飞花令游戏。当学生将常见诗句列举完成之后。假设有一本诗集,如何利用资料进行飞花令游戏。算法分析:在众多的古诗中查找含有关键字的古诗句的方法,从第一首古诗开始,直到最后一首古诗查找匹配完成,在每一首古诗的每一诗句中查找是否有含有关键字。学生总结查找过程:总结算法关键词所有古诗一一列举,逐个比较。
绘制手工查找流程图。
所有古诗一一列举,逐个比较。绘制手工查找流程图。教师事先准备古诗集,给两个组组长,继续进行游戏。体验手工查找过程。总结手工查找比较慢。出示目标:设计制作一个适合飞花令使用的古诗词查找工具软件。
组织学生进行游戏互动。用“花”为关键字进行游戏,学生体验游戏的乐趣同时顺利开展课堂教学。学生体验手动查找的过程,并且总结。将日常工作生活中的操作学生课堂体验手工查找过程。
学生活动(2)
用计算机程序来实现手工查找资料的过程。程序功能任务总结;
1、古诗词如何组织数据结构?
2、如何一一列举?
3、如何逐个判断?算法分析数据结构:列表数据结构存储古诗词
poems:
[...... '''床前明月光,疑是地上霜。举头望明月,低头思故乡。''', '''白日依山尽,黄河入海流。欲穷千里目,更上一层楼。''',......]
在列表数据结构基础上算法可以通过遍历列表,以关键词是否存在于古诗句内为条件,进行判断列表内古诗句是否为所需要的答案。对比手工查找流程图进行程序流程图绘制,完善流程图增加流程图内变量设计和控制条件梳理。
对流程图进行展示和完善
共同梳理流程图执行过程。
活动 2让学生再次手绘流程图用拼图的形式进行并且实际操作。程序需要利用前面学习的for语句in运算符列表遍历方法字符匹配方法
学生活动(3)
程序设计和书写
from lib import
*poems = loaddata( )
key= input("请输入关键词:")
for poem in poems :
if key in poem:
print(poem)
程序运行结果展示分享程序改进:程序一次性所有诗句全部输出,不方便查看,添加 input()命令,实现暂停功能。
程序代码设计和书写过程中,loaddata()函数为老师自己封装的函数,需要进行功能讲解。程序运行成功之后总结比赛结果,引导学生得出需要增加古诗功能。更进一步使学生体会枚举算法的本质为对所有可能解的逐个比较判断。
课堂小结
1. 总结枚举算法的基本思想是: 把问题所有可能的解一一列举,然后判断每一个列举出的可能解是否为正确的解。
2. 总结枚举算法解题过程:
(1)逐一列举可能的解的范围。这个过程用循环结构实现。
(2)对每一个列举可能的解进行检验,判断是否为真正的解。这个过程用分支结构实现。
3. 总结枚举算法的优缺点和注意事项:优点:是对现实生活的直接描述,易于理解,容易证明算法的正确性。
缺点:枚举算法需要考