高中信息技术选修1《数据与数据结构》教学设计:4.4 过程和函数-代码的封装与复用_第1页
高中信息技术选修1《数据与数据结构》教学设计:4.4 过程和函数-代码的封装与复用_第2页
高中信息技术选修1《数据与数据结构》教学设计:4.4 过程和函数-代码的封装与复用_第3页
高中信息技术选修1《数据与数据结构》教学设计:4.4 过程和函数-代码的封装与复用_第4页
高中信息技术选修1《数据与数据结构》教学设计:4.4 过程和函数-代码的封装与复用_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

高中信息技术选修1《数据与数据结构》教学设计:4.4过程和函数——代码的封装与复用授课对象为高二年级学生,对应浙江教育出版社高中信息技术选修1《数据与数据结构》第四章第四节第一课时。本课在学生已经掌握Python基本语法结构、顺序结构、分支结构和循环结构的基础上,引导学生认识程序设计中"封装"这一核心思想,理解过程与函数的定义、调用及参数传递机制,为后续学习递归、模块化程序设计以及数据结构的操作封装奠定基础。一、教材与学情分析浙教版教材在本节安排了过程与函数两个概念,强调通过自定义函数将复杂问题分解为若干相对独立的子问题,体现"自顶向下、逐步求精"的结构化程序设计思想。教材以计算阶乘、判断素数等经典问题为载体,引出def语句、形参与实参、返回值等知识要素。从学情看,学生此前编写的程序大多是从上到下顺序执行的"单体式"代码,代码量小、逻辑简单,尚未面临代码复用的真实困境。学生已经使用过print、len、int等内置函数,对"调用"有朴素体验,但说不清其中的机制,更未意识到自己也可以"制造"这样的工具。教学中需要制造认知冲突,让学生切身感受到重复代码带来的痛苦,再顺水推舟引出封装思想。二、教学目标第一,理解过程与函数的概念,能用自己的语言说明二者的区别与联系,知道函数由函数名、参数列表、函数体和返回值构成。第二,掌握def语句定义函数的基本格式,能正确定义带参数、带返回值的函数,能在主程序中正确调用,理解实参与形参之间的对应关系和值的传递过程。第三,通过"温度转换""判断素数"等任务,体会将重复代码封装为函数所带来的简洁性、可读性和可维护性,初步形成模块化设计的意识。第四,在调试函数的实践过程中培养严谨细致的工程态度,面对错误提示能主动分析定位问题,体验代码"一次写好、处处可用"的成就感。三、教学重难点教学重点:函数的定义格式与调用方法,形式参数与实际参数的对应关系,return语句的作用。教学难点:理解参数传递的执行机制,区分"函数定义"与"函数调用"两个不同阶段,理解return与print的本质差异。四、教学准备计算机教室,安装Python3.x环境及Thonny或IDLE编辑器,多媒体广播教学系统,课前下发包含半成品代码的学习任务单。教师准备一段故意写得冗余重复的"问题代码"作为课堂导入素材。五、教学过程(一)情境导入:一段让人抓狂的代码上课伊始,教师在大屏幕上展示一段代码:某班级要计算三名同学三门功课的平均分,代码中出现了三段几乎一模一样的求和与除法运算,只是变量名略有不同。教师请学生目测这段代码并谈谈感受。学生普遍反映"看着累""读起来费劲"。教师顺势追问:如果要计算的不是三名同学,而是全班四十五名同学的成绩,怎么办?如果要修改计算规则,比如从算术平均改为加权平均,需要改动多少处?学生意识到:同样的逻辑写了三遍,就要改三遍,而且改漏一处就会出错,还很难发现。教师点明本课的核心问题:能不能把这段重复的逻辑"打包"起来,起个名字,用的时候喊一声名字就行?这正是今天要学习的内容——过程与函数。这种从真实痛点出发的引入,让"封装"的概念在孩子心里先扎下根,再接受语法形式就顺理成章。(二)温故知新:认识函数这位"老朋友"教师提问:其实我们早就用过函数了,谁能举出例子?学生回忆起print、input、len、abs、max等内置函数。教师以len为例进行剖析:len("hello")这行表达式中,len是函数的名字,括号里的"hello"是我们交给它处理的原料,它干完活以后把结果5"交还"给我们。教师用生活中的类比帮助学生建立模型:函数就像一台自动榨汁机,你放进去水果(输入),按下开关(调用),它吐出果汁(输出),至于里面刀片怎么转、滤网怎么过滤,使用者完全不必关心。教师总结函数的三个组成要素:名字、输入(参数)、输出(返回值)。并指出内置函数是Python语言设计者们预先制造好的工具,而今天我们要学会自己制造工具。黑板上同步书写关键术语:函数名、参数、返回值,为后续概念教学做好铺垫。(三)新知探究一:动手定义第一个函数教师给出第一个实践任务:定义一个名为say_hello的函数,功能是输出三行欢迎文字,然后在主程序中调用它两次。教师通过广播演示,逐行讲解代码结构:defsay_hello():print("欢迎学习信息技术")print("今天的主题是函数")print("动手试一试吧")say_hello()say_hello()教师强调四个语法要点:其一,def是定义函数的关键字,标识着"我要制造一台新机器了";其二,函数名后必须紧跟一对圆括号和冒号,括号暂时为空表示这台机器暂时不需要原料;其三,函数体内的语句必须缩进四个空格,缩进是Python表达"归属关系"的方式;其四,函数定义之后不会自动执行,只有被"调用"——也就是写下函数名加括号——才会真正干活。学生动手实践,教师巡视。巡视中发现两类典型问题:一是忘记写调用语句,跑来问"为什么程序运行后什么都没输出",教师抓住这个现场生成性问题向全班强调定义与调用的区别——定义只是"说明书",调用才是"按下开关";二是缩进混乱导致IndentationError,借此机会讲解Python对缩进的严格要求。学生完成后,教师追问:say_hello函数做了事情,但它有没有像len函数那样"交还"一个结果给我们?学生回答没有。教师指出:这种只干活不归还结果的函数,在有些语言里被称作"过程",而在Python中,过程也统一用def定义,只是不使用return语句返回数据。这样,教材中"过程"与"函数"的概念关系就自然澄清了。(四)新知探究二:让函数学会接收原料——参数教师提出新问题:上面的say_hello每次都输出一成不变的文字,我想让它能向不同的人打招呼,喊出对方的名字,怎么办?引导学生猜想:必须在括号里做点什么文章。教师演示带参数的函数:defgreet(name):print("你好,"+name+"!欢迎来到函数的世界。")greet("张明")greet("李华")学生观察到greet("张明")和greet("李华")产生了不同的输出,对"参数"的作用有了直观感受。教师此时引入一对核心概念:定义函数时括号里的name叫作形式参数,简称形参,它是一个占位符,一个空盒子;调用函数时写在括号里的"张明""李华"叫作实际参数,简称实参,它是真正放进盒子里的东西。程序执行greet("张明")时,"张明"这个值被装进name这个盒子里,函数体内的所有name都换上了新装。为突破这一难点,教师组织"角色扮演"活动:请一位学生扮演"函数体",一位学生扮演"调用者"。调用者拿着写有"2027年"的卡片说"greet(数据)",函数体学生接过卡片,照着黑板上的模板把"2027年"嵌入输出语句大声读出来。这个具身化的活动把抽象的值传递过程变成了可感知的动作,课堂气氛活跃,理解水到渠成。随后布置第二个实践任务:定义函数celsius_to_fahrenheit(c),输入摄氏温度,输出对应的华氏温度。换算关系为华氏温度等于摄氏温度乘以1.8再加32。学生独立完成并互相测试调用,例如celsius_to_fahrenheit(37)应输出98.6。(五)新知探究三:让函数学会交还成果——返回值教师设置认知冲突:上一题的函数把计算结果直接"说"了出来(用print输出),但如果主程序想拿这个结果继续算别的东西怎么办?比如医院系统计算完华氏体温后,还要判断是否发热并自动生成报告。print只是把结果显示在屏幕上,数据并没有真正回到调用者手里。教师给出解决方案:return语句。defcelsius_to_fahrenheit(c):f=c1.8+32returnftemp=celsius_to_fahrenheit(37)iftemp>99.5:print("请注意,体温偏高")教师精讲return的三个要点:第一,return把值"交还"给调用处,调用处的表达式celsius_to_fahrenheit(37)在运算结束后就被替换为98.6这个结果,可以赋值给变量、参与运算、放进其他函数;第二,return执行后函数立即结束,后面的语句不再执行;第三,一个函数中可以没有return,此时Python默认返回None这个特殊值。为突破print与return混淆这一高频易错点,教师设计对比辨析:print是"对外喊话",声音说完就飘散在空气里,程序中其他代码拿不到;return是"上交报告",白纸黑字递到调用者手里,随时可以取用。教师设计一组判断题让学生快速反馈:想在函数中使用另一个函数的计算结果,被用的函数应该用print还是return?学生通过辨析建立清晰的边界。(六)综合实践:素数判断器课堂进入综合应用环节。教师发布任务:定义函数is_prime(n),判断正整数n是否为素数,是则返回True,否则返回False;然后在主程序中调用该函数,输出100以内的所有素数。任务分解指导:先回顾素数的定义——大于1且只能被1和自身整除的正整数。判断n是否为素数,只需检查2到n1之间是否存在n的因数,用循环遍历即可;一旦发现因数立即返回False,循环正常结束则返回True。学生独立编写,教师分层指导。对学有余力的学生给出拓展挑战:能不能进一步优化,只检查到n的算术平方根就够了?为什么?这个追问引导学生把数学知识与算法效率联系起来,渗透计算思维。典型参考实现如下:defis_prime(n):ifn<2:returnFalsei=2whileii<=n:ifn%i==0:returnFalsei=i+1returnTruenum=2whilenum<100:ifis_prime(num):print(num,end="")num=num+1完成后,教师请两至三名学生展示代码并讲解思路,其他学生从"函数定义是否规范""返回值使用是否正确""主程序调用是否恰当"三个维度进行评价。学生互评的过程本身就是一次概念的再次建构。教师适时提升:观察这段程序的整体结构——小问题的解法被封装在is_prime里,主程序只管列举和筛选,各司其职。这正是"自顶向下、逐步求精"思想的雏形:遇到大问题,先把它拆成若干小问题,每个小问题做成一个函数,最后像搭积木一样组装起来。今后程序越写越大,这种思想就越发重要。(七)课堂小结与升华教师引导学生用结构化语言完成课堂复盘:今天我们制造了自己的工具。用def关键字定义函数,用括号安放形参来接收外部数据,用return语句把计算成果交还调用者;定义只是写好说明书,调用才是按下开关;把重复或独立的逻辑封装成函数,程序更简洁、更易读、更好改,也更能扛得住规模的增长。教师布置分层作业:基础层,定义函数area_of_circle(r)返回圆面积,并在主程序中调用计算三个不同半径的圆面积;提高层,定义函数is_leap_year(y)判断闰年并返回布尔值,在主程序中输出从2000年到2050年之间的所有闰年;挑战层,思考一个函数里能否调用另一个函数,尝试让is_leap_year被一个新函数days_in_year调用,返回该年份的总天数,为下一课时做铺垫。六、板书设计主板书以"制造我们自己的工具"为中心线索:左侧书写概念区——过程(只干活不归还)、函数(干活且归还结果);中间书写语法区——def函数名(形参):缩进的函数体return结果;右侧书写机制区——实参传给形参,ret

温馨提示

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

评论

0/150

提交评论