- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章模块化程序设计函数
第5章 模块化程序设计------函数
★教学目标
★教学过程
解决现实世界中问题的程序往往比前五章介绍的程序大得多。经验表明:任何一项复杂的问题都可细化分解成若干个小问题,然后再各个击破、逐个解决。软件工程学中提出的结构化程序设计思想就是沿用的这种方法,它提出程序设计开发采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。开发和维护大型程序的最好办法是用更容易管理的较小程序块(即模块)建立程序,C语言的程序模块称为“函数”。
函数的使用是通过函数调用来实现的,函数调用指定了被调用函数的名字和调用函数所需的信息(参数)。这与现实生活中上下级管理形式有点类似:老板(相当于调用函数或调用者)要求工人(相当于被调用函数)完成某个任务并在完成工作后向老板报告。例如,某个要在屏幕上显示信息的函数可调用函数printf(工人)完成这项工作,函数printf显示了信息并在完成显示返回到调用函数(老板)。此时,调用函数并不知道被调用函数是怎样具体完成指定工作的,实际上被调用函数也可以再调用其它函数,但这些最初的调用函数并不知道这些情况。这就相当于这样一个实例:老板命令工人甲完成一项任务,工人甲接受任务后私自将任务交给工人乙来做,最后如期完成了老板布置的任务,但老板并不清楚其间的细节,事实上这也不是他所关心的。C语言的函数机制很好地实现了工件工程思想中信息隐蔽的概念,这有效地提高了软件工程的质量,随着学习的深入,你会逐步体会到这种好处的。
5.1 函数的概述
C程序的全部工作都是由各式各样的函数完成的, 所以也把C语言称为函数式语言。由于采用了函数模块式的结构,C语言易于实现结构化程序设计。使程序的层次结构清晰,便于程序的编写、阅读、调试。
图5.1
在C语言中可从不同的角度对函数分类。1. 从函数定义的角度看,函数可分为库函数和用户定义函数两种(1)库函数 由C系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。在前面各章的例题中反复用到printf 、 scanf 、 getchar 、putchar、gets、puts、strcat等函数均属此类。(2)用户定义函数 由用户按需要写的函数。对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。2.C语言的函数分为有返回值函数和无返回值函数两种(1)有返回值函数 此类函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。如数学函数即属于此类函数。由用户定义的这种要返回函数值的函数,必须在函数定义和函数说明中明确返回值的类型。(2)无返回值函数 此类函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。函数。由于函数无须返回值,用户在定义此类函数时可指定它的返回为“空类型”,空类型的说明符为“void”。3. 从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种(1)无参函数 函数定义、函数说明及函数调用中均不带参数。主调函数和被调函数之间不进行参数传送。此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。(2)有参函数 也称为带参函数。在函数定义及函数说明时都有参数,称为形式参数(简称为形参)。在函数调用时也必须给出参数,称为实际参数(简称为实参)。进行函数调用时,主调函数将把实参的值传送给形参,供被调函数使用。
函数类型是函数返回值的类型,若不关心函数返回值,则函数类型可定义为void类型,即空类型,前面我们在主函数前已经使用过。函数名的命名必须符合标识符的要求,形参是实现函数功能所要用到的传输数据,它是函数间进行交流通信的唯一途径。由于形参是由变量充当的,所以变量必须定义类型,那么,形参定义时,就在函数名后的括号中定义,不过有些功能函数不一定要形参,是否有形参将会根据具体情况来定。
例[5-1]写一个求n!的函数。
分析:
因为求的是n的阶乘,所以必须知道n,因此n对于这个函数功能的实现起到重要的作用,也就是说,具体的n值是我们所需要知道的信息,因此,n就是我们要定义的函数的形参。
代码如下:
int fac( int n )
{ int i , f ;
f = 1 ;
for( i = n ; i = 1 ; i- - )
f = f * i ;
return ( f ) ;/*返回函数的值f*/
}
上例中的语句return(f)的作用是将f的值作为函数值带回到主调函
文档评论(0)