
五年级下册第6课“程序实现枚举”教学设计 年级 五年级 单元/主题 第二单元:编程实现算法 课名 第6课 程序实现枚举 一、教学建议 1.教学时长建议 2课时 2.教学目标 本课的主要教学目标是: 通过万钱买万鸡问题的分析和解决,理解枚举算法及其优化; 掌握枚举优化的两种技巧,体验提升执行效率的实际意义。 3.教学设计建议 教学设计建议如下: 1.结合生活实际,利用生活中的例子或问题对比区别人与计算机的枚举效率; 2.通过程序编写、体验,让学习者感受到计算机实现枚举求解的快捷,感受计算机的强大; 3.引导学习者进行探究,完善枚举的优化,体会到算法优化的重要意义。 4.教学方法建议 在学习引入方面,可根据生活中枚举算法常见案例,引导学习者想到枚举答案的方式来进行,引发人进行枚举效率慢、工作量大的矛盾,从而让学习者想要借助计算机进行枚举,引入新课。 在新知学习方面, (1)对于“枚举算法”的知识内容,可以演示计算机的运行效率让学习者知晓为什么枚举算法在程序设计里是一个可行、有效的解决方案。通过案例拓展,让学习者了解在排列组合问题、子集生成、密码破解等方面展示枚举算法的应用。在实际程序编写过程中,教师可演示枚举算法基本代码框架,学习者更多注重枚举算法关键点的实现。 (2)对于“枚举优化”的知识内容,教师更多进行思维上的引导,与学习者探讨优化枚举算法的策略,引导学习者思考如何在实际问题中应用这些优化策略。 在“项目探究”方面,对于枚举算法的初步设计,教师带领、引导学习者注重分析枚举对象、枚举范围及其验证条件,学习者在这一过程中掌握枚举算法的设计原则与关键点。枚举算法优化时,学习者可分小组讨论、探究可行的优化策略,提出解决方案。 二、补充知识 对应教材内容(对教材中何处内容的补充) 知识内容 一、枚举算法 补充内容 枚举的基本框架 设ai1—状态元素ai的最小值;aik—状态元素ai的最大值(1≤i≤n),即a11≤a1≤a1k,a21≤a2≤a2k, ai1≤ai≤aik,……,an1≤an≤ank for a1←a11 to a1k do for a2←a21 to a2k do …………………… for ai←ai1 to aik do …………………… for an←an1 to ank do if 状态(a1,…,ai,…,an)满足检验条件 then 输出问题的解; 补充知识来源(提供网站链接或按参考文献格式提供) 网站链接:https://baike./item/%E6%9E%9A%E4%B8%BE%E7%AE%97%E6%B3%95/10907032 fr=aladdin 三、对应需要的软件、硬件说明 对应教材内容(对教材中何处内容使用软件、硬件) 知识内容 一、枚举算法 图形化编程 软件名称(最好提供开源软件) 加法运算时间计算器 在线平台:点猫校园编程(来源:https://edu./) 海龟编辑器 https://wood.在线版 https://shequ./download type=download下载 基本功能说明 输入一个数字表示计算机加法运算的次数,程序会给出当前电脑配置下的运行时间 图形化编程 硬件名称(选择性价比高、中小学能用得起的) 无 基本功能说明 无 四、项目探究解答参考 探究项目:众人解题初探枚举 万钱买万鸡的枚举过程: 验证条件:万钱且万鸡 编程实现 探究项目:深入思考优化枚举 公鸡最多2000只,母鸡最多 3333只 拓展思考 只枚举公鸡、母鸡的数量,小鸡的数量通过计算得到,减少一层枚举 编程实现 五、操作练习答案 一、知识检测 (1)A B D E 二、技能操练 import math x = 362880 #1*2*3*4…*9的值 for i in range(123, 334): s = 1 j = (2 * i) k = (3 * i) a1 = (i % 10) a2 = (math.floor(i / 10) % 10) a3 = math.floor(i / 100) s = (s * (a1 * (a2 * a3))) b1 = (j % 10) b2 = (math.floor(j / 10) % 10) b3 = math.floor(j / 100) s = (s * (b1 * (b2 * b3))) c1 = (k % 10) c2 = (math.floor(k / 10) % ... ...
~~ 已预览到文档结尾了 ~~