高中信息技术选修1教学设计:过程与函数的程序实现路径_第1页
高中信息技术选修1教学设计:过程与函数的程序实现路径_第2页
高中信息技术选修1教学设计:过程与函数的程序实现路径_第3页
高中信息技术选修1教学设计:过程与函数的程序实现路径_第4页
高中信息技术选修1教学设计:过程与函数的程序实现路径_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

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

文档简介

高中信息技术选修1教学设计:过程与函数的程序实现路径一、教学背景与设计理念本课选自粤教版高中信息技术选修1《算法与程序设计》第二章第五节第二课时。学生此前已完成顺序结构、选择结构、循环结构的学习,掌握了变量的定义与基本输入输出语句,能够编写简单的顺序程序。过程与函数是模块化程序设计思想的核心载体,是学生从“能写程序”走向“会设计程序”的关键转折点。新课标对选修1的要求强调“通过算法与程序设计的实践,经历分析问题、设计算法、编写程序、调试运行的完整过程,理解模块化程序设计的基本思想”。本课设计遵循“任务驱动—问题链引导—迁移应用”的路径,将抽象的模块化概念具象化为可操作、可验证的程序体验活动。让学生在解决真实问题的过程中,自然生成对过程与函数本质的理解,而非机械记忆语法规则。考虑到高二学生已具备一定的逻辑思维基础,但在抽象建模能力上仍显薄弱,本课采用“半成品补全”与“对比实验”双策略:一方面降低上手门槛,让学生专注于核心逻辑的补写;另一方面通过功能相同但写法不同的代码片段对比,促使学生主动思考模块化带来的价值。二、学情分析与目标定位授课对象为高二年级选修信息技术的学生。经过前期学习,学生能熟练使用VB或Python实现单循环、双循环的嵌套问题,能读懂包含列表(数组)操作的简单程序。但在面对稍复杂的问题时,学生的代码往往冗长重复,变量管理混乱,排错困难。极少有学生意识到“把重复代码提取出来封装成块”能够极大提升效率与可读性。本课的三维教学目标设定为:知识与技能:掌握过程与函数的定义语法、调用方式;理解形参、实参的对应关系;了解函数返回值与过程无返回值的区别;能正确区分按值传递与按引用传递的执行效果。过程与方法:通过“求组合数”任务的逐步拆解,体验将大问题分解为子问题的分析过程;通过调试运行观察变量变化,建立程序执行的动态跟踪观念。情感态度与价值观:感受模块化思想在团队协作与大型软件开发中的基础性作用;养成规范编写代码、注释清晰的良好习惯;体会抽象封装带来的简洁之美。教学重点:过程与函数的定义及调用方法,参数传递的两种方式。教学难点:形参与实参的本质联系,按值传递与按引用传递的执行差异。三、教学方法与资源准备教学方法:任务驱动法、对比教学法、问题链引导法。教学环境:计算机网络教室,学生机安装VB6.0或Thonny(Python),教师机安装多媒体广播系统。准备两份预写代码文件:一份为“完整版”程序,一份为“挖空版”程序,供不同层次学生选择。教学资源:导学案一份,内含本课的知识结构图、三个递进任务及评价量表。微视频两个,分别演示过程的调用过程与函数的返回机制,时长均控制在三分钟以内。四、教学过程实施(一)情境导入唤醒经验上课伊始,教师在大屏幕展示一段代码。该程序的功能是计算五个学生的平均分,但实现方式是重复书写五段极其相似的累加与除法代码。教师请学生快速指出这段代码有什么问题。学生很快会发现代码冗长、修改困难。例如想增加一个学生的成绩,需要整体复制修改。教师顺势追问:如果是一百个学生呢?一千个学生?此时有学生提出可以用循环,教师肯定后继续引导:循环解决的是重复执行同类操作,但如果这段操作非常复杂,包含几十行代码,循环体内部仍然臃肿不堪,有没有更好的组织方式?这时教师展示同一功能的第二版代码,核心逻辑被封装为一个名为“计算平均分”的程序块,主程序仅需依次调用五次。两相对比,简洁与混乱一目了然。教师板书课题并指出:今天要掌握的工具,就是实现这种封装的核心语法——过程与函数。设计意图:用直观可见的代码对比制造认知冲突,让学生先感受到“痛”,再主动寻求“解药”。避免从语法定义入手带来的枯燥感。(二)初识过程手写第一个子程序教师打开VB开发环境,现场演示一个最简过程。该过程的功能是在窗体上打印一行分隔线,十个减号组成。教师先写出完整代码:SubPrintLine()Print""EndSub随后教师在主程序中调用两次:PrivateSubForm_Click()CallPrintLinePrint"欢迎学习过程与函数"CallPrintLineEndSub学生观察运行结果:点击窗体后,上下各出现一行分隔线。教师此时引导学生留意两个细节:过程名后的括号是空的,表示不需要外界传入任何数据;过程的代码只有被调用时才执行,按F5运行程序本身不会自动执行过程中的语句。接着教师提出问题链中的第一个核心问题:假设我现在需要一个打印一行星号的过程,并且星号的个数可以随意指定,应该怎么做?学生思考后认为需要把个数告诉过程。教师顺势引出参数的概念:在过程名后面的括号里写上“个数”这个变量,这个过程就变成了一个可以接受外部指令的通用工具。教师修改代码:SubPrintLine(ByValnAsInteger)DimiAsIntegerFori=1TonPrint"";NextiPrintEndSub主程序中调用:CallPrintLine(5),再调用CallPrintLine(10)。学生观察输出效果,总结规律:同一个过程可以产生不同长度的线条,关键在于调用时传入的数值不同。此时教师给出形参、实参的准确定义:定义过程中写的是形参,相当于公式中的自变量;调用过程中实际写入的数值称实参,是自变量在这一次计算中的具体赋值。为了检验理解,教师展示一组易混淆的代码,让学生判断错误原因。SubTest(ByValaAsInteger,ByValbAsInteger)Printa+bEndSub调用语句为:CallTest(2)。学生通过错误提示认识到形参与实参的数量必须一致。随后教师追问:如果调用CallTest(2,3,4)呢?学生很快得出同样结论。本环节以约十二分钟完成为宜。教师需巡视课堂,确保每个学生都能正确录入并运行代码,遇到语法错误能够对照报错提示定位到具体行。(三)深入函数感受返回值的力量教师出示任务二:求两个整数中的较大者。学生已有实现经验的他们会立即用If语句编写主程序代码。教师说:如果这个“找最大”的操作在程序里要使用五次,每次都要把If语句写一遍,是不是又回到了导入环节的痛点?学生意识到需要封装。但此前的过程PrintLine只管执行操作,不返回任何结果。现在“找最大”这个操作完成后,主程序希望得到一个数值,以便继续参与后续运算。于是教师引入函数概念:函数与过程的差别在于,函数会向调用者返回一个结果,而过程不会。教师板书对比表格:项目|过程Sub|函数Function||定义关键字|Sub...EndSub|Function...EndFunction返回值|无|有,赋值给函数名调用方式|Call或直接写名称|作为表达式的一部分使用适用场景|执行一系列动作|计算并返回一个值教师现场编写求最大值的函数:FunctionMax(ByValxAsInteger,ByValyAsInteger)AsIntegerIfx>yThenMax=xElseMax=yEndIfEndFunction主程序中调用:DimmAsIntegerm=Max(12,8)+100Printm学生最惊讶的地方在于“Max=x”这一行。教师强调:函数名在函数体内充当一个特殊变量,当函数执行完毕时,这个变量的最终值就是函数的返回结果。在Python语言中,这一机制表达为return语句。两种语言的差异比较在此处自然呈现。教师接着给出一个融合前面知识点的综合任务:计算组合数C(n,k)=n!/(k!(nk)!)。学生已经学过循环求阶乘,但需要连续编写三段几乎相同的循环代码。教师引导:把求阶乘封装成一个函数Fact(n),主程序只需调用三次Fact并做乘除运算。学生分组完成,教师投影展示优秀学生代码。典型代码呈现如下:FunctionFact(ByValnumAsInteger)AsLongDimiAsIntegerDimresAsLongres=1Fori=1Tonumres=resiNextiFact=resEndFunctionPrivateSubForm_Click()DimnAsInteger,kAsIntegerDimcAsLongn=10k=3c=Fact(n)/(Fact(k)Fact(nk))Print"C(";n;",";k;")=";cEndSub此时教师要求全体学生估算程序输出结果,再运行验证,强化逻辑推理能力。此环节耗时约十五分钟。(四)参数传递观察变量的变与不变参数传递是本课的教学难点。为突破难点,教师采用“观察实验法”而非先讲理论。教师给出两段对比程序,要求学生在自己的机器上依次运行,并把每次运行后显示的数值记录在导学案上。第一段程序:SubA(ByValxAsInteger)x=x+10EndSubPrivateSubForm_Click()DimpAsIntegerp=5CallA(p)PrintpEndSub第二段程序将ByVal改为ByRef:SubB(ByRefyAsInteger)y=y+10EndSubPrivateSubForm_Click()DimqAsIntegerq=5CallB(q)PrintqEndSub学生运行后发现第一段输出5,第二段输出15。教师鼓励学生猜测原因,并允许同桌讨论。经过两分钟交流,教师请几位学生发表看法,逐步引导到“值传递是复制一份数据给过程,过程里的修改不影响外部原变量;引用传递是直接把外部变量的地址传给过程,过程内的修改直接改变原变量”这一核心结论。教师利用LBound与UBound函数举例说明引用传递的实际价值:如果希望一个过程能修改数组中的多个元素,必须使用ByRef,因为数组无法直接按值传递。教师现场演示一个交换两个变量值的过程:SubSwap(ByRefaAsInteger,ByRefbAsInteger)DimtAsIntegert=aa=bb=tEndSub调用后主程序中的两个变量值确实互换。学生发现如果不加ByRef而改用ByVal,交换将不发生。这一直观现象极大加深了学生的理解。本环节结束时,教师在黑板上写下关键结论:选择ByVal还是ByRef,核心看被调过程是否需要修改实参变量的原值。若只是读取数据而不修改,优先用ByVal,安全且易于调试。(五)综合实践解决经典问题本环节设置一道综合应用题:设计一个程序,输入三角形的三条边长,判断能否构成三角形。若能,则计算三角形面积,并要求用过程与函数两种方式分别实现判断逻辑和面积计算。教师引导学生完成系统设计。判断三边能否构成三角形的条件为:任意两边之和大于第三边。面积计算采用海伦公式:设半周长s=(a+b+c)/2,面积等于s(sa)(sb)(sc)的算术平方根。学生需自主确定哪个功能用函数实现,哪个用过程实现。教师巡视中发现常见问题有两类:一类是忽略判断步骤直接计算,另一类是判断逻辑中的条件写错,例如只写了一次a+b大于c而遗漏其他组合。优秀学生代码示例:FunctionIsTriangle(ByValaAsSingle,ByValbAsSingle,ByValcAsSingle)AsBooleanIfa+b>cAnda+c>bAndb+c>aThenIsTriangle=TrueElseIsTriangle=FalseEndIfEndFunctionFunctionTriArea(ByValaAsSingle,ByValbAsSingle,ByValcAsSingle)AsSingleDimsAsSingles=(a+b+c)/2TriArea=Sqr(s(sa)(sb)(sc))EndFunctionPrivateSubForm_Click()DimaAsSingle,bAsSingle,cAsSinglea=InputBox("请输入第一条边")b=InputBox("请输入第二条边")c=InputBox("请输入第三条边")IfIsTriangle(a,b,c)ThenPrint"面积为:";TriArea(a,b,c)ElsePrint"不能构成三角形"EndIfEndSub教师选取三个典型作品进行投影点评:一个逻辑正确结构清晰,一个把IsTriangle写成了过程导致主程序内无法通过If直接使用,还有一个缺少边界检查。点评时重点关注第一个与第二个的对比,让学生在实例中再次领会函数与过程选择的关键。此环节约十二分钟,允许提前完成的学生挑战附加任务:增加对边长数据是否为正数的验证。(六)归纳小结构建知识网络教师引导学生回顾本课三个任务,在导学案上独立完成知识结构图填充。结构图中心为“模块化程序设计”,向外辐射四个分支:过程定义与调用、函数定义与返回值、参数传递机制、模块化设计价值。每个分支下由学生自己填写关键要点,教师用投影展示两份完成度较高的结构图,进行互评补充。教师用两个问题收束课堂:第一个问题:什么情况下用Sub,什么情况下用Function?引导学生回答:需要返回一个结果给调用方时用Function,只是执行一串动作不需要返回值时用Sub。第二个问题:为什么大型软件开发必须依赖过程与函数?学生回答后教师补充:模块化不仅减少重复代码,更重要的是让团队不同成员可以分别开发不同模块,再组合调试。这种分解与协作的思想,是软件工程中最重要的基本理念。课后作业分为两个层次。基础层:完成教材练习册中关于过程与函数调用的填空与改错题,并编写一个求圆面积和周长的自定义函数,在主程序中调用输出。提高层:设计一个整数约分小程序,要求用过程将分子分母同时除以它们的最大公约数,且改变操作必须影响主程序中的变量,考察ByRef的正确使用。两个层次的作业均要求写出完整代码并附上运行结果截图。五、教学评价设计本课评价采取过程性评价与终结性评价结合方式。课堂中教师通过巡视记录每个任务的完成用时与正确率,使用观测表记录学生对三组核心问题的回答质量。课程结束前两分钟,学生扫描二维码填写在线小问卷,包含三道自评题。第一题:你能清晰说出过程与函数在定义上的根本区别吗?选项为“完全能”“大致能”“模糊”“不能”。第

温馨提示

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

评论

0/150

提交评论