第9次课--变量的性质和作用域、函数递归调用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》首页第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》教学主题变量的性质和作用域、函数递归调用教学目标通过本次课的学习,使学生掌握变量的性质及作用域、全局变量与局部变量的概念、函数嵌套调用和递归调用的方法等。教学重点1.全局变量和局部变量2.函数的嵌套调用和递归调用教学难点1.全局变量和局部变量的作用范围2.函数的递归调用教案第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》主要内容函数的嵌套调用函数的递归调用变量的性质及作用域全局变量和局部变量静态存储变量和动态存储变量任务实现第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》本章任务编写(简易)成绩管理系统的主菜单框架,有输入成绩、计算总成绩、计算平均成绩、输出成绩等菜单项。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》函数的嵌套调用函数不能嵌套定义,但可以嵌套调用函数嵌套调用示意图第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》函数嵌套调用举例【问题1】输入两个整数,编程实现求这两个数之间的全部素数。要求用函数来实现求全部素数。运行程序(8_1)看源程序(8_1)流程图源程序第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》函数的递归调用函数的递归调用:在调用一个函数的过程中又出现直接或间接地调用该函数本身。函数的递归调用分为两种:直接递归、间接递归第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》函数的直接递归调用直接递归调用示意图第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》函数的间接递归调用间接递归调用示意图第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》函数递归调用举例【问题2】编写函数,实现计算n!。分析流程图n!=n*(n-1)!(n-1)!=(n-1)*(n-2)!……1!=1*0!由于0!=1,所以可以依次求出1!、…、n!。运行程序(8_2)看源程序(8_2)源程序第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》变量的性质及作用域在不同位置定义的变量有着不同名称、性质和作为范围。这涉及到变量的作用域和生存期、全局变量和局部变量、静态变量和动态变量等概念。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》变量的作用域作用域:是指变量在程序中的有效使用空间。在作用域范围内,变量是“可见的”,程序可以读取该变量的值,并能修改该变量的值。在作用域范围外,变量是“不可见的”,如果在程序中使用了作用域外的变量,编译程序就会报告错误“该变量没有找到”。根据作用域的不同,变量可以分为“全局变量”和“局部变量”两种。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》局部变量局部变量:在一个函数内部定义的变量是局部变量。局部变量的作用范围:定义该变量的函数内部有效,在该函数外部是不能使用该变量的。局部变量有以下几种:(1)函数内部定义的变量。(2)函数的形参。(3)复合语句中定义的变量。分别说出这三种局部变量的作用范围。该函数内有效该复合语句内有效第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》全局变量全局变量:是指在函数之外定义的变量。全局变量的作用范围:从变量的定义位置开始,到源程序文件结束。在其作用范围内,任何函数均可以使用全局变量。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》全局变量和局部变量当全局变量和局部变量同名时,即:全局变量的作用域、局部变量的作用域出现重叠时,作用域小者优先,屏蔽大作用域变量。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》全局变量和局部变量举例inta=3,b=8;intmax(inta,intb){intc;c=ab?a:b;returnc;}voidmain(){printf(%d,%d\n,a,b);{inta=10;printf(“%d,%d,%d\n,a,b,max(a,b));}printf(%d,%d\n,a,b);}3,810,8,103,8程序运行结果问题(1)程序中定义的变量分别是什么变量?作用范围是什么?(2)写出该程序的运行结果。全局变量局部变量第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》全局变量和局部变量举例#includestdio.hintx=1;func(intx){x=3;}main(){func(x);printf(“x=%d\n”,x);}x=1程序运行结果问题(1)程序中定义的变量分别是什么变量?作用范围是什么?(2)写出该程序的运行结果。全局变量局部变量第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》注意在编程过程中,为了便于实现编程的模块化和标准化,应尽量不使用全局变量。可以通过函数的参数来实现模块间的通信。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》变量的生存期生存期:是指变量存在的时间。根据生存期的不同,变量可以分为“静态存储变量”和“动态存储变量”两种。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》静态存储变量和动态存储变量静态存储变量:是在程序运行期间分配固定的存储空间的变量,在程序运行期间变量的存储地址不变。其生存期从程序运行时开始,到程序结束时结束。动态存储变量:是指在程序运行期间根据需要进行动态分配存储空间的变量。其生存期从变量定义时刻开始,到作用域结束时结束。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》静态存储变量和动态存储变量前面定义的全局变量是静态存储变量。前面定义的局部变量均是动态存储变量。缺省关键字“auto”。可以定义静态的局部变量。方法:使用关键字“static”。static类型标识符变量名;静态存储变量具有初始值“零”。动态存储变量的初值不定(明确赋初值的除外)。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》静态存储变量和动态存储变量举例intfunc(inta,intb){staticintm;inti=2;i+=m+1;m=i+a+b;return(m);}voidmain(){intk=4,m=1,p;p=func(k,m);printf(%d,,p);p=func(k,m);printf(%d\n,p);}8,16程序运行结果问题(1)程序中定义的变量分别是什么变量?(2)写出该程序的运行结果。静态局部变量动态局部变量(3)将“staticintm;”改为“intm=0;”,结果如何?程序运行结果8,8第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》任务实现任务内容编写(简易)成绩管理系统的主菜单框架,有输入成绩、计算总分、求平均值、输出成绩等菜单项。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》任务分析任务分析(1)(简易)成绩管理系统的主菜单,由若干菜单项组成,每个菜单项对应一个子模块(子函数)。(2)菜单中除了四个功能选项以外,还需增加一个退出选项,以便系统终止。(3)选择菜单项是通过输入菜单项的序号来实现的。输入菜单选项号后,通过多分支语句switch语句来分别调用相应的子函数。(4)为了方便能连续选择多个选项,可用循环语句while语句,让程序用户在完成一项功能以后,继续选取另一项功能菜单项,直到选择退出项为止。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》任务分析数据定义(1)我们假定处理5个学生,这5个学生的成绩用5个变量来保存。(2)5个成绩通过函数输入,在其它的函数中又要使用,所以,必须定义成全局变量。第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》任务流程图及源程序运行程序(8_3)看源程序(8_3)源程序主函数流程图第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》本次课总结函数不可以嵌套定义,但可以嵌套调用函数的递归调用直接递归、间接递归根据作用域的不同,变量有:全局变量和局部变量之分根据生存期的不同,变量有:静态存储变量和动态存储变量之分任务实现第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》本章小结函数的定义、调用、声明函数的形参和实参、参数传递方式单向值传递函数的返回值函数的嵌套调用和递归调用全局变量和局部变量、静态变量和动态变量任务实现通过return语句实现第3章第9次课----变量的性质和作用域、函数递归调用《C语言与数据结构》下课

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功