资源简介 常见算法的程序实现 【课程标准】 掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。 通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试和运行的方法。 【教学目标】 通过“票据中模糊数字推断”情境,分析数字推断的过程,理解枚举算法的基本原理。(计算思维) 通过“判断一个数是不是素数”任务,了解枚举算法求解问题的基本过程,能用流程图描述该问题求解的算法,能编写程序并调试运行,实现问题求解。(计算思维) 体验枚举算法的执行效率,认识优化算法的必要性。(计算思维) 通过与生活实例的结合运用,学会使用枚举算法解决生活中的实际问题,提高信息安全意识。(信息社会责任) 【学业要求】 利用程序设计语言实现简单算法,解决实际问题。 【学情分析】 本节课的授课对象是高中一年级的学生,他们已经具有一定的问题解决和规划设计能力,而且乐于动手操作,勇于探索。通过前面课程的学习,学生已经理解了算法及其特征,能用流程图描述问题求解的算法;掌握了Python语言的基本知识,能进行简单的程序编写。但是还缺乏对利用程序解决实际问题过程的系统化梳理,对常用的典型算法(如枚举算法)缺乏深入的理解。 【教学重点】 理解枚举算法的核心思想和典型特征;能结合实际问题,编写程序实现枚举算法并调试运行,解决问题。 【教学难点】 感受不同算法的执行效率,体验算法优化在问题解决中的价值。 【教学方法】 教学方法:讲授法、任务驱动法、对照实验法和合作探究法。 讲授法:通过“票据中模糊数字推断”问题导入,讲授枚举算法的基本原理。 任务驱动法:以“判断一个数是不是素数”为主要任务,引导学生在枚举算法思想的指导下进行算法分析、程序编写与调试。 对照实验法:运用对照实验法,比较“寻找1000以内的所有素数”的两个程序的运行效率,认识算法优化的重要性。 合作探究法:通过小组合作“密码解密”的任务,体会枚举算法思想在实际生活中的运用,培养学生的计算思维。 软硬件资源:网络机房、电子白板、教学课件、《希沃白板》软件。 【教学过程】 教学环节 教学内容 学生活动 设计意图 情境导入 引入枚举 算法 教师活动:课堂开始创设情境,引入票据中模糊数字推断问题。 张票据上有一个4位数字组成的编号。 甲说:数字编号的前两位数字相同,但都不是零;乙说:数字编号的后两位数字是相同的,但与前两位不同;丙说:数字编号是一个整数的二次方。试根据以上线索推断出编号 观察 思考 以实际生活场景作为突破口,引出本节课的主枚举算法,激发学生的学习兴趣 数字解密 初识枚举 算法 活动1:分析问题 已知条件:四个数字应是AABB,其中A≠0,A与B不相等,且AABB是一个整数的二次方; 求解目标:票据中的数字; 隐含关系:要求解的四位数字编号的票据必须同时满足已知的所有条件。 教师活动:引导学生梳理推断的思路。 师生互动:完成问题的分析。 根据问题引领,自主思考 本环节以实际生活场景作为突破口,学生通过体验推断模糊数字的实际问题,认识枚举算法,进而总结出枚举算法的三要素,突破本节课的第一个教学重点——枚举算法设计的基本原理 数字解密 初识枚举 算法 活动2:设计算法 教师活动:引导学生进行算法分析。根据问题分析,只要一一列举出4位数字AABB中A与B的所有可能组合,保证A≠B且A≠0,再验证二次方根问题,就可以得到问题的解。 师生互动:完成算法流程图。 活动3:梳理归纳 师生互动:分析该问题解决算法的核心思想——枚举算法。教师强调该算法的基本特征:枚举对象、枚举范围和验证条件。 活动4:程序实现 教师演示:打开程序文件,分析对应算法的程序语句。运行程序,体会利用计算机程序实现枚举算法的优势 1.观察与思考,完成算法流程图,总结枚举算法的基本原理。 2.观察程序,体会用计算机程序解决问题的优势 本环节以实际生活场景作为突破口,学生通过体验推断模糊数字的实际问题,认识枚举算法,进而总结出枚举算法的三要素,突破本节课的第一个教学重点一枚举算法设计的基本原理 素数探究 深窥枚举 算法 探究任务:判断一个数是不是素数教师提出任务,小组合作进行任务分析,并交流。 (1)已知条件:素数的定义(只有“1”和它本身两个因数的数)。 (2)求解目标:判断这个数是不是素数。 (3)求解方法:逐一(强调不遗漏且不重复)判断(验证条件)。 活动1:算法分析——理解枚举算法进行算法流程图分析,完成自主探究任务——绘制流程图,理解枚举算法 完成活动1(可以借助学案和微课),并展示 通过任务驱动,自主分析枚举算法的应用,理解枚举算法的基本原理,培养计算思维 师生互动:师生在黑板上借助流程图,共同梳理判断一个数是不是素数的过程中的三要素:在确定枚举对象后,最重要的是确定枚举范围和验证条件。 活动2:编写程序——实现枚举算法 学生根据流程图编写程序,并调试运行,得到结果。(选出一位同学在电子白板上操作) 教师活动:利用电子白板对学生任务进行总结与评价。 活动3:延伸思考1000以内的素数 查找提出思考问题:我们已经成功利用程序实现了判断一个数是不是素数。如果需要查找1000以内的所有素数,哪位同学能说一下自己的思路? 师生交流:这是对1000个数的“大”枚举,逐一列举出其中的每一个数,判断是否为素数。所以,可以将前面判断素数的程序代码作为这个问题的判断条件。 展示最后完善的流程图,师生修改程序,运行求解 1.展示程序。 2.思考问题,完善流程图和程序,展示 通过编写程序、运行程序、调试程序三个环节,体会利用计算机程序实现枚举算法的全过程 实验对比 感受算法 效率 提出问题:借助计算机的高速运算能力,可以利用枚举算法帮助我们解决这一问题,比人工查找方便多。但是,大家有没有想过,如果数据量太大,计算机会不会“累”?师生归纳:计算机虽然不“累”,但如果数据量太大,会影响速度,因此需要考虑算法效率。 算法效率指算法执行的时间,即程序在计算机上运行时所消耗的时间 思考 回答问题 本环节是突破本节课的教学难点:感受不同算法的执行效率,体验算法优化在问题解决中的价值。通过学生自己的对比实验,直观地体验不同的枚举算法具有不同执行效率,认识优化算法的必要性,培养学生系统化的计算思维以及创新能力 展示任务:给出解决“寻找1000以内的所有素数”问题的两种算法的对比程序,以两个同学为一组进行关键代码,运行两段程序,从枚举对象、枚举范围和验证条件等方面分析哪种算法更好?好在哪里?并写出“两种方案比较”的结果。 展示学生任务完成情况,并总结:运行速度更快,效率更高的方案,其程序缩小了枚举范围,进而减少了逐一验证的次数,提高了程序的运算效率,算法更优化 完成对比实验并认识到算法效率的重要性 情感升华 总结枚举 算法 1.课堂回顾与总结。 枚举算法思想在生活中解决问题的适用情况及特点: ①运算量大; ②求解数量有限; ③所有的可能情况都符合一定的规则。 2.枚举的应用与延伸。 枚举算法是计算机解决问题的基本算法,在生活中有广泛的应用。例如,有的系统设计6位阿拉伯数字作为密码,6位数字所有的排列组合共有100000种,这就意味着最多只需尝试一百万次就可破解密码,对计算机来说这是一个非常小的值。这就是绝大多数系统对用户设置密码验证次数限制的原因,一旦超过限值,用户账户就会被锁定。 提出问题:如何保护自己的密码安全?教师展示保护密码安全的技术(如指纹验证、图片验证等),帮助学生建立信息安全意识。 延伸:思考枚举算法还有哪些应用 回顾学习过程,交流密码设置安全性问题,了解枚举算法的更多应用,拓展思路 对枚举算法的应用进行情感升华,帮助学生建立正确的信息社会责任和信息保护意识 展开更多...... 收起↑ 资源预览