假如不模块化假如不模块化读多少行的程序能让你不头疼?main()当中能放多少行程序?假如cout()函数由10行代码替换,那么你见过的程序会成什么样子?如果所有代码都在main()当中,团队怎么合作?•如果代码都在一个文件中,怎么团队合作?模块化思想模块化思想•模块各司其职–每个模块只负责一件事情,它可以更专心–便于进行单个模块的设计、开发、调试、测试和维护等工作–一个模块一个模块地完成,最后再将它们集成•开发人员各司其职–按模块分配任务,职责明确–并行开发,缩短开发时间•分而治之(Wirth,1971)信息隐藏(Parnas,1972)在结构化程序设计中,函数是将任务进行模块划分的基本单位。一个函数实现一项功能。在面向对象程序设计中,函数是对数据的一项操作,也是实现一项功能。第四章函数与预编译第四章函数与预编译要掌握函数的使用,必须理解函数调用时的内部实现机制,以及与此相关的内存分配机制、变量生命期和作用域。本章还将介绍关于函数重载的概念,介绍递归算法、内联函数、默认参数函数以及多文件组织、编译预处理、工程文件的概念和运行库函数。第四章函数与预编译第四章函数与预编译4.1函数的定义与调用4.5作用域与标识符的可见性4.4函数调用机制4.3全局变量和局部变量4.2函数的参数传递,返回值及函数声明4.10编译预处理4.9头文件与多文件结构4.6存储类型与标识符的生命期4.8函数的一些高级议题4.7函数的递归调用4.14.1函数的定义与调用函数的定义与调用4.1.1函数概述4.1.2函数的定义4.1.3函数的调用4.1.14.1.1函数概述函数概述函数是C++程序的基本组成模块。通过函数,可以把一个复杂任务分解成为若干个易于解决的小任务。充分体现逐步细化的设计思想。组成C++程序的若干函数中,有一个称为main()函数,是程序执行的入口,它可以调用其他函数,但不可以被调用。而其他一般函数既可以调用也可以被调用。函数概念的引入:入口函数:4.1.14.1.1函数概述函数概述main()fun2()fun1()fun3()funa()funb()func()图4.1函数调用层次关系4.1.14.1.1函数概述函数概述4.1.1结束库函数和自定义函数:库函数或标准函数,是由编译系统预定义的,如一些常用的数学计算函数、字符串处理函数、图形处理函数、标准输入输出函数等。库函数都按功能分类,集中说明在不同的头文件中。用户只需在自己的程序中包含某个头文件,就可直接使用该文件中定义的函数。用户根据需要将某个具有相对独立功能的程序定义为函数,称自定义函数。4.1.24.1.2函数的定义函数的定义无参函数定义格式为:《数据类型》函数名(《void》){函数体}说明:数据类型指函数返回值类型,可以是任一种数据类型,默认为返回整型值(但新标准要求写明,不用默认方式)。没有返回值应将返回值类型定义为void。函数名采用合法标识符表示。对无参函数,参数括号中的void通常省略,但括号不能省略。函数体由一系列语句组成。函数体可以为空,称为空函数。11无参函数无参函数4.1.24.1.2函数的定义函数的定义例:打印一个表头voidTableHead(){cout<<″****************″<=b?a:b);}问题:定义函数时究竟哪些变量应当作为函数的参数?哪些应当定义在函数体内?提示提示原则:函数在使用时被看成“黑匣子”,除了输入输出外,其他部分可不必关心。从函数的定义看出,函数头正是用来反映函数的功能和使用接口,它所定义的是“做什么”。即明确了“黑匣子”的输入输出部分,输出就是函数的返回值,输入就是参数。因此,只有那些功能上起自变量作用的变量才必须作为参数定义在参数表中;函数体中具体描述“如何做”,因此除参数之外的为实现算法所需用的变量应当定义在函数体内。C++中不允许函数的嵌套定义...