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