第 2 单元 编程计算
2.4 可以复用的代码
一、项目简介
项目主题 解决火柴棒摆数字问题
项目背景 米拉和同学比赛用 6 根火柴棒摆放自然数,谁就赢得比赛,就会赢得米拉制作的单片机手表,米拉用编程解决问题,赢得了比赛。于是同学们都很想像米拉一样用编程来解决问题,提高自己的编程能力。 本节将围绕“解决火柴棒摆放数字问题”项目展开学习,让我们了解编写的程序代码中有许多功能是相似甚至是完全相同的,需要考虑代码复用,本节将以函数的方法来实现。学好本节课的知识,对后面的迭代与递归以及其它编程知识 的学习有举足轻重的作用。
对应教材 教育科学出版社普通高中教科书信息技术必修 1《数据与计算》第二单元
二、课程标准及目标分析
【学科核心素养】
能够根据解决问题的需要,自觉、主动地寻求恰当的方式处理信息;(信息意识)
通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案。(计算思维)
掌握数字化学习工具的操作技能。(数字化学习与创新)
能够遵守信息法律法规,信守信息社会的道德与伦理准则。(信息社会责任)
【课程标准要求】
掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。
通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。
【学业要求】
依据解决问题的需要,设计和表示简单算法。
掌握一种程序设计语言的基本知识,利用程序设计语言实现简单算法,解决实际问题
(计算思维)。
三、教材分析
【教学内容分析】
本课为教科版信息技术必修 1 数据与计算第二章第四节任务一的内容,本节我们将围绕“解决火柴棒摆数字问题”项目展开学习。学生初次接触该任务,往往不知所措,教师借助流程图将“用火柴棒摆数字问题”拆解为“穷举需要 6 根火柴棒的自然数”和“计算一个数需要多少根火柴棒”两个问题。
编写程序代码时,可以考虑用代码复用的方法来提高程序的效率。
函数分为系统函数和用户自定义函数两种类型。在本节之前学生已经使用过 print()和input()函数,由于个性化的需求,教材从系统函数过渡到自定义函数。定义函数时的函数名、参数、返回值和函数体;调用函数时的参数传递过程都是本部分的重点内容。
【学情分析】
学生在前面的课中已经学习了基本的赋值语句、分支语句和循环语句,对于编写程序解决问题的一般流程已经比较熟悉,但学生对函数应该没有基础。
【教学目标】
了解函数的作用。
掌握函数的定义和调用方法。
通过解决复杂问题,学会“自顶向下、逐步细化”的结构化程序设计的思路,提高计算思维的能力。
【教学重难点】
重点:
“自顶向下、逐步细化”的结构化程序设计思想
函数的定义及调用。
难点:
使用函数解决实际问题
函数的调用和传参过程
【教学方法】
项目驱动教学法。
【资源列表】
资源名称 清单及描述 形式(类型) 来源
课件 2.4 可以复用的代码 演示文稿 教师制作
知识结构图 第二章 编程计算(思维导图) 思维导图 教师制作
网络课程 网址:nv0129. 线上课程 教师制作
微课 《函数》 微课视频 互联网
软件工具 Python3.*、思维导图、Excel、画程等 软件 互联网
(
教学环节
教师活动
学生活动
设计意图
【情境导入】
【项目需求】
展示米拉自制的单片机手表视频,其中数字是液晶数字形式。
确定项目主题:“解决火柴棒摆数字问题”。
思考并回答问题
从生活中的事例入手
创设项目背景,引发学生的学习兴趣。
提出要求:用 6 根火柴棒,摆出的自然数,要求火柴棒正好用完。
【
项目规划
】
制订项目规划方案,小组成员进
行任务分工,并制定各自的实施计划。
小组协商
培养学生的计划能力,可以增强学生适应能力
)四、教学过程第一课时
【项目实施】 【自主探究】 学生活动 1: 1. 列出 3 个可以用 6 根火柴棒摆放的 数字,分别是 、 、 。2. 6 根 火 柴 棒 能 摆 放 的 最 大 数是 。 如何设计算法,让计算机找出这些自然数? 思考作答 引导学生运用形象维探寻解决问题的思路, 为之后的抽象思维做准备。
引出并展示本节任务: 任务一:用自定义函数实现火柴棒摆数字问题
【项目实施】 【探究活动】 分析问题, 拆分为将原问题拆解为“穷举需要 6 根火柴棒的自然数”和“计算一个数需要多少根火柴棒”两个子问题。 引出代码复用和“自顶向下,逐步细化”的程序设计思想。 学生活动 2: 请再学们打开下发的“穷举需要 6 根 火柴棒的自然数”的流程图,小组协作,将缺少的部分,补充完整。 小组展示合作探究的成果。 数字“1”需要的火柴棒最少, 因此能摆出的自然数最大是 111。 对 0~111 之间的每一个数进行计算,统计需要的火柴棒根数。 凡是恰好需要 6 根火柴棒的数直接输出。 学生活动 3: 以小组为单位,通过对“计算一个数 需要多少根火柴棒”子问题进行讨论与协作,分析设计好算法后,尝试利用各种数字化工具绘制流程图。 ①将这个数除以 10 求余,求得个位数; ②把个位数对应于火柴棒的个数进行累加; ③ 将这个数除以 10 取整,去掉个位数; ④重复以上①、②和③步骤,直到这个数为 0。 分析需要重复使用的部分是什么。 小组合作,采取“ 自顶向下, 逐步细化”的方法, 分析问题,设计算法。 小组讨论积极参与 展开分析,学生感兴趣,并积极思考解决问题的办法。 提升处理复杂问题的能力,掌握“自顶向下”的思想,将大问题化为小问题,找到重点所在。 掌握“逐步细化”, 最后只要处理简单的每个小问题的编程即可。
【项目实施】 【探究活动】 展示完整流程图(挑选学生作品) 如:《画程》绘制流程图,同时可观察系统自动生成程序代码。 提出:对于程序中需要反复使用部分 代码,可使用循环嵌套和函数来解决, 根据需要选用适合的数字化工具显得尤为重要。
那这次我们使用函数来解决。
【知识链接】 函数分类: 系统函数、用户自定义函数。 以“如何计算不规则四边形的面积?” 为例来说明函数的概念,定义,调用及参数的传递过程。 自定义函数的基本格式是: def 函数名(参数): #函数说明 语句或语句组 return 返回值 参数是用来向函数传递值的,当有多个参数时,各个参数之间用逗号开。函数执行完后,由 return 语句将表达式值返回给调用者,结束函数。 学习思考 给出完整的代码,让学生体验函数的使用,规避难懂的代码, 程序设计的感性认识,为后续的学习树立信心
【项目实施】 【探究活动】 学生活动 4: 打开下发的程序, 小组合作, 编写 “计算一个数需要多少根火柴棒”自定义函数。 展示学生编写的自定义函数。学生活动 5: 如果是用 8 根火柴棒,如何解决? 老师分析尝试修改主程序,来解决不 同数量的火柴棒摆数字问题 小组协作完成代码编写, 调试程序,展示成果。 自主探究 小组讨设论 让学生再次感受使用函数完成代码复用的好处。
【项目拓展】 布置课后两个分层拓展练习: 基础练习:判断生肖 进阶练习:上楼梯 课后练习 让学生具有举一反三的应用能力。
【梳理所学】 【总结评价】 学生总结在本节课的学习后收获了哪些知识。 2.在 umu 网络课程中完成教学评价 课后完成 巩固学生对本次课学习的知识。
板书设计
第二单元 编程计算 2.4 可以复用的代码
1.“自顶向下、逐步细化”的程序设计思想
2. def 函数名(参数): #函数说明
语句或语句组
return 返回值
函数名(参数)