欢迎来到天天文库
浏览记录
ID:50083332
大小:740.00 KB
页数:108页
时间:2020-03-08
《C语言程序设计 教学课件 作者 丁峻岭 等 第七章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章函数7.1函数7.2变量的存储属性7.3画图程序的实现课后练习模块化程序设计思想是将一个较大的程序分为若干个程序模块,每个模块可以实现某一种特定的任务。C语言提供的支持模块化程序设计的功能有:(1)程序结构函数化。程序整体由一个或多个函数组成,每个函数可以实现独立的任务。(2)允许通过使用不同存储类别的变量控制模块内部及外部的信息交换。(3)具有预编译功能,为程序的调试、移植提供了方便。C语言模块化程序结构的特点主要体现在以下两点:(1)无论涉及的问题是复杂还是简单,规模是大还是小,用C语言设计程序,任务只有一项,就是编写函数,至少也要编写一个main()
2、函数。(2)执行C程序就是执行相应的main()函数。即从main()函数的第一个前花括号开始,依次执行后面的语句,直到最后的后花括号为止。其他函数只有在执行main()函数的过程中被间接调用执行。如图7-1所示,某一程序的主函数中含有调用函数f1、f2的表达式,当程序执行到语句f1();时,函数f1才被调用,当执行到语句f2();时,函数f2才被调用。调用f1时,main()通常会向f1传递一些信息,并将流程转向f1。函数f1执行完后,向main()送回一些信息,再将流程返回main()。调用f2时情形与f1相同。当然在执行f1函数时,f1内部也可以调用一些别的函数
3、(如图7-1中的f11()函数)。在进行C语言程序设计时,一般的步骤是首先集中考虑main()函数中的算法。当main()中需要使用某一功能时,就先写上一个调用具有该功能的函数表达式,标明它具有什么功能及如何与程序通信(输入什么,返回什么)。设计完main()的算法并检验无误后,再开始考虑它所调用的函数。在这些被调用的函数中,若在库函数中可以找到就直接使用,否则再动手设计这些函数。这样设计的程序从逻辑关系上就形成图7-2所示的层次结构。这个层次结构的形成是自顶向下的,这种方法就被称为自顶向下、逐步细化的程序设计方法。这种方法允许人们在进行程序设计时,每个阶段都能集中
4、精力解决只属于当前模块的算法,细节暂不考虑。这种处理的方法能保证每个阶段所考虑的问题都是易于解决的,因此设计出来的程序成功率高,而且程序层次分明,结构清晰。7.1函数7.1.1函数的基本概念1.函数的概念函数是一个可以反复使用的程序段,从其他的程序段中均可以通过调用约定的语句来执行这段程序,完成既定的工作。从程序设计的角度看,函数可以分为两种:(1)标准函数,即库函数。由系统提供,用户可以直接使用它们。(2)自定义函数。由用户自己定义的,用于完成一定的功能。从函数形式的角度看,函数也可分为两种:(1)无参函数,主调函数和被调函数之间无参数传递。(2)有参函数,
5、主调函数和被调函数之间有参数传递。2.函数定义函数定义的形式如下:[存储类型]数据类型函数名(参数类型1形式参数1,…参数类型n形式参数n){数据定义语句序列;执行语句序列;}例如:intadd(inta,intb){intc;c=a+b;return(c);}说明:(1)函数名。函数名应符合C语言对标识符的规定。函数名后面的一对圆括号是函数的象征。(2)形式参数。在进行对有参函数的定义时,函数名后面括号中的“变量名”被称为形式参数(简称形参);相应的,在调用函数时,函数名后面括号中的表达式称为实际参数(简称实参)。①形式参数通常有两个作用:a.表示将从
6、主调函数中接收哪些类型的信息。例如:doublefun1(inta,doubleb)表示将从主调函数中接受一个int型数据和一个double型数据。b.在函数体中形式参数是可以被引用的。②使用形式参数时应注意以下几个问题:a.形式参数的数量是可以选择的,用户可以根据自己的需要不定义或定义一个或多个形参。b.对于无参函数而言,圆括号内可以空着。但现代风格要求除main()外,其他函数应用void声明它为空。例如:voidfun1(void)c.C语言的程序在进行编译时,并不为形式参数分配存储空间。只有在被调用时,形式参数才临时地占有存储空间,从调用函数中获得值。当调用结
7、束流程返回主调函数时,形参所占空间也被释放(撤销)了。d.形式参数的名字并不重要,关键在于它们的数量及类型。只要类型与数量确定了,程序员便可以自己选择一些合适的标识符来作形参名。(3)函数体。函数体是由变量定义部分和执行语句部分组成。在函数体中定义的变量只有在执行该函数时才存在。函数体中也可以不定义变量,而只有语句,也可以二者皆无。例如:voidf1(void){}这是一个空函数,调用它不产生任何有效操作。为了使程序便于阅读,建议在空函数中用NULL进行显式标识。上例可改写成:#includevoidf1(void){
此文档下载收益归作者所有