7-教案设计单-C语言程序设计-第5章函数(二)_第1页
7-教案设计单-C语言程序设计-第5章函数(二)_第2页
7-教案设计单-C语言程序设计-第5章函数(二)_第3页
7-教案设计单-C语言程序设计-第5章函数(二)_第4页
7-教案设计单-C语言程序设计-第5章函数(二)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

《C语言程序设计及工程案例分析》教案(BOPPPS教学模式)第第页教案设计单授课教师XXX授课顺序7授课时长2学时(90分钟)课题内容第5章函数(二)学情分析递归方面,学生易混淆“自我调用”与普通函数调用,对终止条件的必要性、递归层次的展开与回溯过程理解模糊,常因逻辑嵌套过深导致思维混乱。变量作用域与生命周期方面,学生对“局部/全局变量”的有效范围、“静态变量”的存活机制理解片面,易忽略函数调用时变量的创建与释放过程,常出现“跨作用域访问”“变量重名冲突”等问题。学生抽象思维和代码追踪能力较弱,易因概念抽象产生畏难情绪。教学需结合可视化执行流程(如递归树、变量生命周期图示),通过对比案例强化理解。学习目标了解函数的递归调用理解变量的作用范围与生存期和变量的存储类别教学环境教学用具多媒体教学设备、手机、黑板或白板、便利贴、大幅白纸、彩色粉笔或白板笔板书设计递归调用过程示意图课前预习清单预习教材第5章递归调用,变量的作用范围与生存期和变量的存储类别。课后复习清单复习本章教材及PPT知识点。消化、理解、运行、改写老师在课堂上演示的代码。完成本章作业和实验。

教学流程时长教学内容及教学活动导入Bridge-in2同学们,咱们来想个生活场景:你想知道今天是星期几,问了同学A,A说他也不清楚,去问了B,B又去问了C……直到有人问到老师,老师说“今天周六”,这个答案再一层层传回来,你才知道结果。这个过程里,每个人做的事其实一样——“问别人今天星期几”,直到问到知道答案的人。再来看个生活场景:你站在两面相对的镜子中间,会看到什么?没错,镜子里有镜子,镜子里还有镜子……形成无穷无尽的“镜像嵌套”这种“自己包含自己”的现象。比如计算5的阶乘(5!),按定义是5×4×3×2×1。但换个角度想:5!其实等于5×4!,而4!又等于4×3!……直到1!等于1。发现没?求n的阶乘时,我们把问题变成了“n乘以(n-1)的阶乘”——这就是“自己调用自己”。在编程里,函数直接或间接调用自身,就是递归。它能把复杂问题层层拆解,像剥洋葱一样,直到最核心的简单情况。今天我们就来学这种神奇的编程技巧。学习目标Objective1让学生明晰本次课学习目标:了解函数的递归调用理解变量的作用范围与生存期和变量的存储类别前测Pre-assessment2【雨课堂前测/单选题】以下程序运行后屏幕输出为()。#include<stdio.h>intf(intx,inty){return(x+y);}main(){inta=2,b=3,c;c=f(a,b);printf("%d+%d=%d\n",a,b,c);}参与式学习ParticipatoryLearning参与式学习ParticipatoryLearning参与式学习ParticipatoryLearning参与式学习ParticipatoryLearning参与式学习ParticipatoryLearning参与式学习ParticipatoryLearning405.2.5函数的递归调用所谓“递归”,从程序代码的角度看就是“函数直接或间接调用函数自己”的现象。使用递归必须封装函数。函数的递归调用过程是在系统的控制下自动一层一层深入进行的(或展开的),直到满足递归调用结束的条件,然后再逐层返回,或者由于进程的栈空间被使用完毕,整个进程都被操作系统终止。递归每深入一层,则属于这个递归函数的局部变量就会由系统产生一份全新的副本(彼此有不同的内存空间),尽管这些变量的名字是相同的。C程序设计语言中函数递归调用分为直接递归和间接递归。使用递归方法来解决问题,必须符合以下3个条件:第一,可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。这里解决问题的方法相同指的是,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。第二,使用递归的方法可以很好地解决问题,或者说使问题能够较为简单地解决,相比之下使用其它的办法比较麻烦。第三,必定要有一个明确的结束递归的条件,即一定要能够在适当的条件下结束递归调用,否则可能导致系统崩溃。【雨课堂阶段测/单选题】一个递归算法必须包括()。【雨课堂阶段测/单选题】关于函数递归,下列说法不正确的是()。【雨课堂阶段测/单选题】递归函数最终会结束,那么这个函数一定()。【例5.8】用递归的方法求解n!。【雨课堂阶段测/单选题】调用函数f(27)的输出结果是()。voidf(intn){if(n<5)printf("%d",n);else{printf("%d",n%5);f(n/5);}}【例5.9】斐波那契数列中第n项值的计算过程。【例5.10】汉诺塔问题的求解。【雨课堂阶段测/单选题】以下关于函数的叙述中,不正确的是()。【雨课堂阶段测/单选题】下列叙述中正确的是()125.3变量的作用域与生命周期通常来说,一段程序代码所用到的变量并不总是有效的、可用的,限定这个变量可用性的代码范围就是这个变量的作用域。变量的生命周期是指变量从创建到销毁之间的一个时间段。这两个概念,前一个是从空间的角度描述变量,后一个是从时间的角度描述变量。5.3.1全局变量和局部变量C语言变量根据起作用的范围分为全局变量与局部变量。全局变量是指在函数之外声明的变量,声明全局变量的时候如果没有给该变量赋初值,则其初值自动初始化为0,全局变量一旦声明则在整个程序运行期间都有效,即从声明位置开始直到整个源文件结尾都可以使用。局部变量就是声明在函数内部的变量,通常有3种形态:(1)函数的形式参数(2)函数体内部声明的变量(3)函数体内部复合语句中声明的变量程序代码执行的过程中,当前范围内声明的局部变量优先,也就是说如果有外部的变量和当前范围内的某个变量同名,则此刻当前范围内的变量起作用。【例5.11】全局变量与局部变量的区别。155.3.2变量的存储类别C语言中声明一个变量的完整形式如下:变量的存储类别常用的有:自动、静态、外部与寄存器类型。表5.1C语言中自动类型和静态类型变量的存储期【例5.12】静态类型变量的使用【雨课堂阶段测/单选题】下列程序的输出结果是()。外部(extern)变量某种意义上讲就是全局变量。全局变量是从变量作用域的角度提出的;外部变量是从变量的存储方式提出的,表示它的生存周期。因此,外部变量的定义就是全局变量的定义。若全局变量的定义在后,而使用在前;或者引用其他文件中的某些全局变量,这时都必须用extern对该变量进行外部说明。【例5.13】外部(extern)变量的使用【雨课堂阶段测/单选题】在一个源文件中定义的全局变量,其作用域为()【雨课堂阶段测/投票题】讨论:全局变量比局部变量自由度大,更方便?【雨课堂阶段测/单选题】以下关于局部变量和全局变量的叙述错误的是()。【雨课堂阶段测/单选题】以下叙述中不正确的是()105.4综合应用实例——使用格雷戈里公式求圆周率输入精度值p,使用格雷戈里公式求圆周率常数的近似值,当求和序列中的最后一项的绝对值小于精度值p时求和结束。要求定义和调用函数计算完成圆周率常数近似值的求解。要定义和调用函数来计算圆周率常数,且序列求和的过程中通项的精度值是可变的因此设计的函数有1个参数用于接收实际调用该函数时传递进来的精度值,函数调用结束后的返回值即是最后的圆周率常数值。综合应用实例——求100到1000之间的全部素数设计和利用函数求100到1000之间的全部素数,每输出8个素数换1行,每个素数占6个字符宽度的位置。设计函数isPrime(intn)用于判断传入的整数是否为素数。——从素数定义出发完成的函数体【雨课堂阶段测/单选题】要调用数学处理函数时,在#include命令行中应包含()。55.5工程案例分析——5ms时间调度机【案例1】动力系统控制中,程序设计常常是按照时间间隔来调用的,所以在程序运行的最外层,会设计很多闹钟,例如1ms,5ms,直到1s以上的,不同的子功能模块根据实际情况放入对应的闹钟之下进行调用。基于时间的调度在控制上经常使用,程序按一个固定周期执行数据更新对于PID等功能来说是很重要的。【案例2】发动机内部调用各种函数来对加速过程进行控制的部分程序后测Post-assessment1【雨课堂后测/单选题】以下对C语言函数的描述中,正确的是()。程序由一个或一个以上的函数组成函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中调用关系的所有函数必须放在同一个程序文件中总结Summary2小结本节课核心要点函数是C程序的最小单元;C程序是由一个主函数以及若干个函数构成;主函数可以调用其它函数,其它函数可以相互调用;必须有且只能有一个名为main的主函数;C程序的执行总是从main函数开始,在main中结束。注意区别函数的声明、定义和调用。调用函数时实参的个数必须和形参保持一致,实参的类型必须向形参保持一致(至少是赋值兼容的);函数调用时参数传值的规则可简单地概括为“由实参到形参的单

温馨提示

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

评论

0/150

提交评论