2.4常见算法的程序实现 教学设计(表格式) 2023—2024学年人教_中图版(2019)高中信息技术必修1

资源下载
  1. 二一教育资源

2.4常见算法的程序实现 教学设计(表格式) 2023—2024学年人教_中图版(2019)高中信息技术必修1

资源简介

《常见算法的程序实现》教学设计
学 科 信息技术 年 级 高一 班 级 授课教师
章 节 第二章第四节 第二课时 课题名称 常见算法的程序实现二
课 型 新授课 授课时间
教材内容 分析 本节从体验探索开始 ,在已经实现“自助式人行过街红绿灯”基本功能的基础上,引导学生结合生活实际进行分析,探讨“绿灯时长的最优设置”,通过计算绿灯最短时长,认识解枚举法。随后,学习枚举法,通过实践活动“寻找1000以内的所有素数”,对两种方案的算法与程序实现的进行比较,感受算法效率。最后进行算法综合应用,掌握调试运行程序的基本方法。
学生情况 分析 学生具有强烈的求知欲和探索精神,兴趣广泛,思想活跃,有创意,有较好的发散思维,有一定的分析问题和解决问题的能力。经过前期的涫,他们已经掌握了Python语言编程的基本知识 ,并实现了编程模拟“自助式人行过街红绿灯”的基本功能。但对程序设计中的一些基本算法了解不深,对现实生活中较复杂问题的分析能力较弱,不能选择合适的算法进行问题的分析和算法实现。另外,在日常 和生活中,学生经常需要构建表达式解决较为复杂的问题,具有较强的解枚举法学习需要。
教学目标(核心素养) 理解解枚举法的含义与基本思想,能够通过编程实现算法。 掌握使用解枚举法解决问题的基本方法,能从日常生活和学习中民现或抽象出可以利用算法与程序设计解决的问题,形成主动应用算法和程序解决问题的意识。 能对自己和他人设计的算法与程序进行优化,开展合作,运用算法与程序实现设计问题求解方案,进行创造性探索。 能遵守与程序设计相关的偷道德与法律法规,负责任地使用信息技术。
教学重点 理解解枚举法的含义与基本思想,难免通过编号实现算法。
教学难点 掌握使用解枚举法解决问题的基本方法,能从日常生活、学习中发现或抽象出可以利用算法与程序设计解决的问题。
教学方法 合作探究、任务驱动
教学过程
教师活动 学生活动 设计意图
引 入 新 课 枚举法是依据问题的已知条件,确定答案的大致范围,在此范围内列举出它所有可能情况的方法。在列举过程中: 不能遗漏任何一个正确解; 通过逐一判断,验证哪些情况满足问题的条件,从而得出问题的答案。 观察思考 在老师的引导下,思考并回答问题。
新 课 学 习 新 课 学 习 枚举法在编程中,首先要确定枚举对象和枚举范围,验证问题成立的条件; 借助循环语句和条件语句进行相应的程序设计,实现问题解决。 例:票据中模糊数字推断问题。 一张票据上有一个4位数字组成的编号,甲说数字编号的前两位数字相同,但都不是零;乙说数字编号后的后两位数字是相同的,但与前两位不同;丙说数字编号是一个整数的二次方。试根据以上线索推断出编号。 分析问题 已知条件:假设4位数字的编号是AABB,其中A≠0, A≠B,且AABB是一个整数的二次方。 求解目标:票据中的数字; 已知与未知的关系:要求解的4位数字的编号必须同时满足所有的已知条件。 设计算法 编程实现与调试 Import math A=1 While A<10: B = 0 While B <10: If A !=B : K=A*1000+A*100+B*10 +B C = int(math.sqrt(k)) If C*C==K: Print(“票据编号是:”,K) B = B+1 A= A+1 保存文件,调试运行程序 师生总结:分析该问题的解决算法的核心思想——枚举法。它的基本特征:枚举对象、枚举范围、验证条件。 探究任务:判断一个数是不是素数 提出任务,小组合作进行任务分析,交流。 已知条件:素数的定义(只有1和它本身两个因数的数) 求解目标:判断这个数是不是素数。 求解方法:逐一判断 活动1:算法分析——理解枚举算法 绘制流程图 活动二:编写程序 K=1 N= Print(“请输入一个数:”) For j in range(2 , N): If N%j==0 K=0 If K==1; Print(N) K =1 学生根据流程图编写程序,并调试运行,得到结果。 活动3:延伸思考1000以内的素数查找 师生交流:这是对1000个数的“大”枚举,逐一列举每一个数,判断是否为素数,可以将上面的代码作为这下问题的判断条件。 展示完善后的流程图,共同修改程序,运行求解。 代码如下: K=1 For N in range(2,1000): For j in range(2 , N): If N%j==0 K=0 If K==1; Print(N) K =1 打开教学资源平台 中提供的另一算法,进行对比,哪个效率高? Import math K=1 For n in range (2,1000): m = math.ceil(math.aqrt(n))+1 If n == 2: Print(n) For j in range(2,n): If n%j==0 k=0 Break If k==1: Print(n) k=1 方案枚举对象枚举范围验证条件自己的略略略算法Aj2—n/2n是否能被j整除算法BJ2—n是否能被j整除
根据具体数据,计算出最短绿灯时长。 绘制流程图 展示关键解析语句,并运行程序。
综合应用 查找文稿中高频词汇的问题 问题:学校开展经典诵读活动,小明在阅读《三国演义》时,为了分析小说的写作特色,想把小说中出现次数最多的20个词查找出来。想一想小明如何通过编写程序来实现呢? 分析问题 已知条件:文本文件《三国演义》 求解目标:《三国演义》是高频词(以出现次数最多的20个词为例); 已知与未知关系:统计文本中词频,找出次数最多的20个词。 设计算法 读取文件——中文分词(jieba分词)——词频统计——词频排序——显示输出 编程实现与调试 Import jeiba f =open(“三国演义.txt”,”r”,encoding=”utf-8”) txt = f.read() words = jieba.lcut(txt) Count={} for word in words: If len(word)==1: continue else: Counts[word] = counts.get(word,0)+1 Items = list(counts.items()) Items.sort(key = lambda x:x[1],reverse=true) For i in range(20): Print (items[i][0],items[i][1] 保存文件,调试运行程序。
课堂总结 枚举算法思想在生活中解决问题的适用情况及特点: 运算量大; 求解数量有限; 所有的可能情况都符合一定的规则。 枚举的应用与延伸 枚举算法是计算机解决问题的基本算法,在生活中广泛应用。如,有的系统设计6位阿拉伯数字作为密码,组合共有1000000种,这就意味着最多只需尝试一百万次就可破解密码,对计算机来说这是一个非常小的值。 提出问题:如何保护自己的密码安全? 展示保护密码安全的技术(如指纹验证、图片验证等),帮助学生建立信息安全意识。

展开更多......

收起↑

资源预览