高一信息技术“可以复用的代码-函数与模块化编程”教学设计_第1页
高一信息技术“可以复用的代码-函数与模块化编程”教学设计_第2页
高一信息技术“可以复用的代码-函数与模块化编程”教学设计_第3页
高一信息技术“可以复用的代码-函数与模块化编程”教学设计_第4页
高一信息技术“可以复用的代码-函数与模块化编程”教学设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高一信息技术“可以复用的代码——函数与模块化编程”教学设计一、教学背景与教材分析本课选自教科版(2019)高中信息技术必修1《数据与计算》第二单元“编程计算”,是在学生已经掌握顺序结构、分支结构、循环结构三种基本程序结构之后,对程序设计思想的一次关键提升。教材以“可以复用的代码”为核心指向,引导学生认识函数这一重要概念,理解模块化编程思想,学会将重复出现的代码段抽象为可反复调用的功能模块。从单元整体地位看,本课是承上启下的枢纽环节。此前学生编写的程序多为“一次性脚本”,代码从上到下顺序执行,解决问题依靠结构组合;本课之后,学生将接触更复杂的项目式编程任务,能否自觉运用函数组织代码,直接决定其程序设计水平的上限。同时,函数思想与数学学科中的函数概念存在天然的迁移通道,挖掘这一联系能够帮助学生在学科交叉处建立深层理解,落实信息技术学科核心素养中的计算思维与数字化学习与创新维度。二、学情分析授课对象为高一年级学生。通过前三个课时的学习,多数学生能够独立编写具有分支和循环结构的Python小程序,例如判断闰年、累加求和、猜数游戏等。但在作业批改和课堂观察中发现,学生在面对稍复杂的任务时普遍出现三类典型问题:一是复制粘贴式编程,同一段代码在程序中出现三四次,修改一处忘记另一处,导致逻辑错误难以排查;二是程序冗长臃肿,一个文件上百行却不知所云,变量命名随意;三是畏惧复杂问题,看到较长的任务描述便无从下手,缺乏将大问题拆解为小问题的意识。这三类问题的共同根源,恰恰是缺少函数与模块化思维。也就是说,本课的教学内容正是学生当前真实痛点的解决方案,具备天然的内在学习动机。教师需要做的,不是生硬灌输概念,而是让学生在切身的“麻烦体验”中自发产生“能不能让这段代码只写一遍”的追问,继而顺势引入函数。此外,高一学生在数学课上已经学习了函数的概念,对“输入—对应关系—输出”有初步认知,这为理解编程中的参数与返回值提供了现成的认知支架。但数学函数与程序函数毕竟存在差异,教学中要有意识地辨析异同,避免负迁移。三、教学目标理解函数的概念,能够用自己的语言说明函数是为实现特定功能、可重复调用的一段代码,说出函数封装对于提升代码复用性的意义。掌握Python中定义函数与调用函数的基本语法,能够正确使用def关键字、参数、return语句,编写并实现功能明确的小函数。经历将重复代码抽象为函数的完整过程,体会模块化分解问题的思想,形成“先分解、再实现、后组装”的程序设计习惯。在对比改造前后代码的活动中,感受简洁、清晰、可维护的代码之美,初步建立工程化的编程态度,养成主动优化代码的意识。四、教学重点与难点教学重点是函数的定f义与调用方法,以及通过实例体会代码复用带来的效率提升。教学难点有两个。其一是理解参数与返回值在函数内外搭建起的“数据通道”,特别是局部变量与外部变量的边界。其二是抽象意识的养成,即面对具体任务时,能够识别哪些代码值得封装、依据怎样的标准进行功能切分。后一难点无法通过一节课彻底解决,需要在后续项目中持续渗透,本课的任务是播下种子、给出范例。五、教学策略与方法采用情境问题驱动与对比教学相结合的策略。课堂主线是“一段让学生头疼的烂代码”出发,经由“发现问题—提出设想—学习工具—动手改造—反思提升”的完整探究链条,自然生成函数知识。具体方法上,以讲授与演示相结合的方式突破语法点,以小组协作完成任务驱动实践,以学生互评作品落实素养目标。教学环境为配备Python环境(IDLE或Thonny均可)的机房,课前在每台学生机中预置本课所需的半成品代码文件,保证课堂时间聚焦于思维活动而非输入代码。六、教学过程(一)情境导入:一段让人头疼的代码(约8分钟)教师在大屏上展示一段预置的程序,功能是在一个猜数游戏中分别对简单、中等、困难三个难度等级进行判断并输出评价。程序能正常运行,但学生一眼可以看到其中有三段几乎一模一样的代码:检查猜测次数是否超限、比较猜测数与目标数的大小、给出“太大了”“太小了”的提示,只是提示语略有差别。教师抛出问题链:这段程序运行正常,老师为什么还不满意?如果客户要求把提示语“太大了”改成“偏大哦”,程序员要修改几个地方?漏改一处会发生什么?学生通过观察和讨论迅速发现,同样的逻辑重复了三次,任何一处修改都要改三遍,风险极高。教师顺势追问:有没有办法让这段相同的代码只写一次,需要它的时候随时“取来就用”?学生在七嘴八舌中提出“打包”“做个模板”“命名后随时调用”等朴素设想。教师肯定这些想法,指出这正是今天的主角——函数。板书课题:可以复用的代码。设计意图:不从定义出发而从痛点出发,让学生在真实的需求中产生对新知识的期待,抽象概念因此被赋予了具体的价值意义。(二)新知建构:认识函数(约12分钟)第一层次,从数学函数走向程序函数。教师提问:数学中的f(x=2x+1表示什么?学生回答后教师点拨:给它一个输入x,它按照固定规则加工,返回一个确定的结果。程序中的函数如出一辙——接收输入(参数),执行内部操作,送出结果(返回值)。不同之处是程序函数的“加工”可以是任何操作序列,不一定输出数值,甚至可以只是打印一句话或画一个图形。第二层次,剖析语法结构。教师现场敲入一个最小样例:defpingjia(cishu):ifcishu<=5:return"厉害!"else:return"继续加油!"逐行讲解:def是定义函数的关键字,告诉计算机“接下来的代码块是一个工具”;函数名是工具的标签,起名要见名知义;括号中的cishu是参数,是外界向函数内部传递数据的入口,可以没有,也可以有多个;缩进部分是函数体,即真正干活的代码;return负责把结果交还给调用者,函数执行到return即告结束。第三层次,强调定义与调用的区别。教师故意只写定义不调用,运行程序,学生发现没有任何输出。由此引出关键认识:定义函数只是“备好工具”,调用函数才是“使用工具”。同一个函数在程序的任意位置只需写下“pingjia(3)”即可调用,参数不同,结果不同。这正是“复用”二字的落点。第四层次,辨析参数传递与返回值。通过两个微型实验:调用一个不写return的函数并打印其结果,学生看到None,理解没有return时函数无值可交;在函数内改变量cishu,验证函数外同名变量不受影响,初步建立局部作用域的直观印象,但不展开术语堆砌,留待后续课程深化。设计意图:以数学函数为认知锚点,用最小样例直击语法核心,再通过“定义却不调用”“缺少return”两个反例制造认知冲突,使关键知识点在学生心中留下清晰刻痕。(三)实践一:改造猜数游戏(约12分钟)学生两人一组,打开课前的半成品代码文件,完成三个递进步骤。第一步,将重复出现的“判断并提示”代码段抽象为函数panduan(caice,mubiao),要求函数内部完成比较并返回提示字符串,然后删除原文档中的三处重复代码,改为三次调用。第二步,再给程序添加一个新难度等级“极难模式”,学生亲身体验此时只需新增一行函数调用即可扩展功能,而不必再复制一整段代码。第三步,小组讨论并尝试回答:如果按照客户要求修改提示语,现在需要改几处?教师巡视指导,重点关注三类典型困难:有的学生直接把整段代码塞进函数却仍保留三份重复,提示其识别“变化的部分”应通过参数传入;有的学生忘记缩进导致报错,借此巩固代码块规则;有的学生遇到NameError,引导其检查函数名拼写与定义位置,渗透“先定义后调用”的执行顺序常识。任务完成后,教师展示某小组改造前后的两份代码行数对比:改造前38行,改造后24行,且修改提示语只需改一处。大屏并列呈现,直观可见模块化给代码带来的瘦身与清晰。设计意图:让学生亲手走完“抽象—封装—调用—扩展”的全过程,前文的理论立即在指尖兑现,复用的好处由教师口中的结论变为学生亲历的事实。(四)实践二:模块化解决新问题(约10分钟)给出新任务:编写一个“体质指数(BMI)健康助手”程序,要求输入多名学生身高与体重,计算BMI值=体重÷身高的平方,并依据数值区间给出评价(偏瘦、正常、超重),数据个数由用户决定。教师不要求直接动手,先引导小组进行“口头拆解”:如果只用一句话回答这个程序有哪几件事要做,你会怎么分?学生讨论形成共识:读取输入、用公式计算、按数值分级评价、汇总输出。教师板书将程序拆分为四个功能块,并指出其中“计算”和“评价”正是最该封装为函数的部分——计算具有明确输入输出,评价逻辑独立可测。学生编写两个核心函数:一个接收身高和体重、返回BMI值;一个接收BMI值、返回评价文字。主程序部分用循环读取若干次输入并调用上述函数。学有余力的小组挑战进阶项:让评价函数同时返回运动建议,或在主程序中统计各类评价人数,体会函数在更清晰分工上的价值。展示交流环节抽取两组在大屏上演示,请其他同学从三个角度评价:功能是否完整、函数分工是否合理、代码是否易于读懂。教师总结时特别强调:写函数的第一原则不是“把代码变短”,而是“让一个函数只专心做一件事”,这样的划分标准在未来任意规模的程序中都成立。(五)总结提升与作业布置(约3分钟)师生共同回顾三条收获:函数是把实现特定功能的代码打包命名、可被反复调用的工具;定义用def,调用写名字,参数是入口,return是出口;面对复杂任务先分块、再实现、后组装,这种模块化思维高于任何具体语法。层次化作业:基础层,将上次课完成的“闰年判断”改写为函数形式并编写测试调用;提高层,设计一个“密码强度检测”函数,按长度和字符种类给出弱、中、强评价;拓展层,观察Python中自带函数(如len、max)与自己定义的函数在使用方式上有无差别,思考二者关系,为下节课“代码的模块化与模块”做认知铺垫。七、板书设计左板书呈现函数骨架:def函数名(参数):→函数体→return结果,并标注“一次定义,随处调用”。右板书呈现本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论