函数与程序结构讲稿.ppt
《函数与程序结构讲稿.ppt》由会员分享,可在线阅读,更多相关《函数与程序结构讲稿.ppt(142页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、函数与程序结构函数与程序结构第一页,讲稿共一百四十二页哦 模模块化程序化程序设计技技术就是通就是通过开开发和和维护一些小的程序一些小的程序块(即模(即模块)的方法构建一个)的方法构建一个大型程序,是人大型程序,是人类解决解决较大的复大的复杂问题所采所采用的一种用的一种“分而治之分而治之”的策略。本章主要的策略。本章主要讨论C语言言实现模模块化程序化程序设计技技术的手的手段以及在模段以及在模块化化实现过程中所遇到的一系程中所遇到的一系列列问题。第4章 函数与程序结构第二页,讲稿共一百四十二页哦n nC程序的一般结构程序的一般结构 C程序程序源文件源文件1源文件源文件i源文件源文件n函数函数1预处
2、理语句预处理语句函数函数m说明说明/定义部分定义部分执行语句部分执行语句部分图图4.1 C程序的一般结构程序的一般结构第4章 函数与程序结构第三页,讲稿共一百四十二页哦 在在C语言程序中的若干个函数中必言程序中的若干个函数中必须有一有一个且只能有一个函数成个且只能有一个函数成为主函数。程序的主函数。程序的执行行从从main函数开始函数开始,调用其它函数后流用其它函数后流程回到程回到main函数,函数,在在main函数中函数中结束整个束整个程序的运行程序的运行。在一个函数中可以使用另一个。在一个函数中可以使用另一个函数的功能,函数的功能,这称称为函数函数调用。用。4.1 函数的定义和调用第四页,
3、讲稿共一百四十二页哦 使用函数首先要使用函数首先要使用函数首先要使用函数首先要对对函数定函数定函数定函数定义义。函数定。函数定。函数定。函数定义义中必中必中必中必须须描述出函数的三个特征,描述出函数的三个特征,描述出函数的三个特征,描述出函数的三个特征,即即即即函数的名字、函数形式的参数表以及函数的返回函数的名字、函数形式的参数表以及函数的返回函数的名字、函数形式的参数表以及函数的返回函数的名字、函数形式的参数表以及函数的返回值类值类型型型型。C C语语言函数定言函数定言函数定言函数定义义的形式如下:的形式如下:的形式如下:的形式如下:4.1.1 函数的定义和声明返回值类型返回值类型 函数名函
4、数名(形式参数列表形式参数列表)函数体函数体return;第五页,讲稿共一百四十二页哦n n下面以定下面以定下面以定下面以定义实现义实现求求求求阶阶乘功能函数乘功能函数乘功能函数乘功能函数为为例了解一个函数的具体定例了解一个函数的具体定例了解一个函数的具体定例了解一个函数的具体定义义过过程程程程.根据前面所学知根据前面所学知根据前面所学知根据前面所学知识识知道,求知道,求知道,求知道,求阶阶乘的乘的乘的乘的C C程序如下所示:程序如下所示:程序如下所示:程序如下所示:#include#include void main()void main()intint i,n;i,n;long fact=
5、1;long fact=1;printf(Input n:);printf(Input n:);scanf(%d,&n);scanf(%d,&n);for(i=1;i=n;i+)for(i=1;i=n;i+)fact*=i;fact*=i;printf(%d!=%ldn,n,fact);printf(%d!=%ldn,n,fact);程序程序实现了了计算从算从键盘输入一个整数入一个整数n,并求其,并求其阶乘的功能。如果在今后的乘的功能。如果在今后的应用中,需要将求某数用中,需要将求某数阶乘的功能作乘的功能作为程序中相程序中相对独立的一个部分(功能)独立的一个部分(功能),则需要将上述功能用自需
6、要将上述功能用自编函数的方式函数的方式实现4.1.1 函数的定义和声明第六页,讲稿共一百四十二页哦(1 1)函数的命名)函数的命名)函数的命名)函数的命名函数的名字在程序函数的名字在程序函数的名字在程序函数的名字在程序设计设计中有两个作用:一是使用中有两个作用:一是使用中有两个作用:一是使用中有两个作用:一是使用该该名字名字名字名字调调用用用用这这个函数;二是个函数;二是个函数;二是个函数;二是应该见应该见名知意,符合名知意,符合名知意,符合名知意,符合c c语语言的言的言的言的规则规则。对对于于于于实现实现本功能的本功能的本功能的本功能的函数,命名函数,命名函数,命名函数,命名factori
7、al factorial。(2 2)函数)函数)函数)函数执执行行行行结结果的返回和返回果的返回和返回果的返回和返回果的返回和返回值类值类型的确定型的确定型的确定型的确定函数函数函数函数执执行的行的行的行的结结果如果是一个具体的表达式,当函数果如果是一个具体的表达式,当函数果如果是一个具体的表达式,当函数果如果是一个具体的表达式,当函数执执行完成行完成行完成行完成时时用关用关用关用关键键字字字字returnreturn组组成形如:成形如:成形如:成形如:return return;的的的的C C语语句将函数句将函数句将函数句将函数执执行行行行的的的的结结果返回果返回果返回果返回给调给调用函数者
8、。注意函数用函数者。注意函数用函数者。注意函数用函数者。注意函数执执行行行行结结果的数据果的数据果的数据果的数据类类型不是由返回的型不是由返回的型不是由返回的型不是由返回的表达式数据表达式数据表达式数据表达式数据类类型来决定的,而是用型来决定的,而是用型来决定的,而是用型来决定的,而是用类类型名作型名作型名作型名作为为关关关关键键字在函数的字在函数的字在函数的字在函数的头头部予以部予以部予以部予以确定。基于上述两点,可以写出确定。基于上述两点,可以写出确定。基于上述两点,可以写出确定。基于上述两点,可以写出实现阶实现阶乘功能的函数乘功能的函数乘功能的函数乘功能的函数factorialfacto
9、rial4.1.1 函数的定义和声明第七页,讲稿共一百四十二页哦long为函数返回值类型Return语句将n!返回给调用函数花括号给函数确定了边界区域 long factorial()inti,n;long fact=1;printf(Input n:);scanf(%d,&n);for(i=1;i=n;i+)fact*=i;return fact;4.1.1 函数的定义和声明第八页,讲稿共一百四十二页哦(3 3)函数的参数表设计)函数的参数表设计)函数的参数表设计)函数的参数表设计n n在上面定在上面定在上面定在上面定义义的函数的函数的函数的函数factorialfactorial中,函数用
10、到的数据是从中,函数用到的数据是从中,函数用到的数据是从中,函数用到的数据是从键盘输键盘输入入入入获获取的,如果需要从取的,如果需要从取的,如果需要从取的,如果需要从对对函数的函数的函数的函数的调调用者(使用者)用者(使用者)用者(使用者)用者(使用者)处获处获取所需要的数取所需要的数取所需要的数取所需要的数据,就必据,就必据,就必据,就必须对须对函数的函数的函数的函数的形式参数表形式参数表形式参数表形式参数表进进行行行行设计设计。此。此。此。此时时需要两个步需要两个步需要两个步需要两个步骤骤来来来来实现实现:一是将函数内部用于从一是将函数内部用于从一是将函数内部用于从一是将函数内部用于从键盘
11、键盘上接收数据的数据上接收数据的数据上接收数据的数据上接收数据的数据对对象定象定象定象定义义移到函数的形式移到函数的形式移到函数的形式移到函数的形式参数表中;二是参数表中;二是参数表中;二是参数表中;二是删删去函数中从去函数中从去函数中从去函数中从键盘获键盘获取数据的取数据的取数据的取数据的语语句。函数句。函数句。函数句。函数factorialfactorial可以可以可以可以改造改造改造改造为为如下形式如下形式如下形式如下形式:long factorial(long factorial(int nint n)intint i;i;long fact=1;long fact=1;for(i=1
12、;i=n;i+)for(i=1;i=n;i+)fact*=i;fact*=i;return fact;return fact;n的值函数调用者(使用者)处获取,不再从程序中获取。4.1.1 函数的定义和声明第九页,讲稿共一百四十二页哦 通通通通过对过对函数函数函数函数factorialfactorial定定定定义过义过程的程的程的程的讨论讨论,可以理解,可以理解,可以理解,可以理解C C函数定函数定函数定函数定义义一般形一般形一般形一般形式中各个函数式中各个函数式中各个函数式中各个函数组组成成分的确切含成成分的确切含成成分的确切含成成分的确切含义义:(1 1)返回)返回)返回)返回值类值类型型
13、型型说说明符明符明符明符用以制定函数返回用以制定函数返回用以制定函数返回用以制定函数返回值值的数据的数据的数据的数据类类型,可以是型,可以是型,可以是型,可以是C C语语言中任何合法的基言中任何合法的基言中任何合法的基言中任何合法的基本数据本数据本数据本数据类类型和构造体数据型和构造体数据型和构造体数据型和构造体数据类类型。如果要型。如果要型。如果要型。如果要表示一个函数不需要向表示一个函数不需要向表示一个函数不需要向表示一个函数不需要向调调用者返用者返用者返用者返回回回回值值,则则函数的返回函数的返回函数的返回函数的返回值值数据数据数据数据类类型型型型应该应该定定定定义为义为voidvoid
14、,如前面章如前面章如前面章如前面章节节的主函的主函的主函的主函数数数数mainmain。(2 2)函数的名字)函数的名字)函数的名字)函数的名字遵循遵循遵循遵循C C语语言言言言标识标识符的命名符的命名符的命名符的命名规则规则。尽量做到。尽量做到。尽量做到。尽量做到“见见名知意名知意名知意名知意”。(3 3)形式参数表)形式参数表)形式参数表)形式参数表函数的形式参数表用函数的形式参数表用函数的形式参数表用函数的形式参数表用圆圆括号括起来的、由零个到多个形式参数的括号括起来的、由零个到多个形式参数的括号括起来的、由零个到多个形式参数的括号括起来的、由零个到多个形式参数的定定定定义组义组成,两个
15、形式参数定成,两个形式参数定成,两个形式参数定成,两个形式参数定义义之之之之间间用逗号分隔。若一个函数没有形式用逗号分隔。若一个函数没有形式用逗号分隔。若一个函数没有形式用逗号分隔。若一个函数没有形式参数,作参数,作参数,作参数,作为为函数运算符使用的函数运算符使用的函数运算符使用的函数运算符使用的圆圆括号也不能省略。括号也不能省略。括号也不能省略。括号也不能省略。4.1.1 函数的定义和声明第十页,讲稿共一百四十二页哦(4)return;语句句如果函数定如果函数定义中指定的返回中指定的返回值数据数据类型不是型不是void,则函数定函数定义中必中必须有用关有用关键字字return构成的构成的r
16、eturn;语句。当函数句。当函数执行到行到该C语句句时,先先计算算该语句中的表达式的句中的表达式的值,然后再将,然后再将该值强制制转化化为指定的函数返回指定的函数返回值的数据的数据类型,返回到主型,返回到主调函数中。函数中。如果函数定如果函数定义时指定的返回指定的返回值类型是型是void,则函数定函数定义中可以没有用中可以没有用return构成的构成的语句,若函数句,若函数定定义的的执行流程需要使用行流程需要使用return语句,句,则其形式只其形式只能是:能是:return;。4.1.1 函数的定义和声明第十一页,讲稿共一百四十二页哦例如:我们定义一个求两个数中最大值的函数:4.1.1 函
17、数的定义和声明 int max(int x,int y)int temp;/*函数体的局部变量函数体的局部变量*/temp=xy?x:y;/*函数体的执行部分函数体的执行部分*/return temp;/*返回函数值返回函数值*/函数返回类型函数返回类型函数名函数名 形式参数形式参数第十二页,讲稿共一百四十二页哦n nC C语语言中言中言中言中规规定,函数不能嵌套定定,函数不能嵌套定定,函数不能嵌套定定,函数不能嵌套定义义。这这个个个个规规定保定保定保定保证证了每个函数都了每个函数都了每个函数都了每个函数都是一个相是一个相是一个相是一个相对对独立的程序模独立的程序模独立的程序模独立的程序模块块
18、。在由多个函数。在由多个函数。在由多个函数。在由多个函数组组成的成的成的成的C C程序中,各程序中,各程序中,各程序中,各个函数的定个函数的定个函数的定个函数的定义义是并列的并且是并列的并且是并列的并且是并列的并且顺顺序是任意的,函数在一个序是任意的,函数在一个序是任意的,函数在一个序是任意的,函数在一个C C程序中的定程序中的定程序中的定程序中的定义义顺顺序与序与序与序与该该C C程序运行程序运行程序运行程序运行时时函数的函数的函数的函数的执执行行行行顺顺序无关。序无关。序无关。序无关。n n函数定函数定函数定函数定义义好后,就可以使用了,称好后,就可以使用了,称好后,就可以使用了,称好后,
19、就可以使用了,称为为函数的函数的函数的函数的调调用。用。用。用。C C语语言言言言规规定,在定,在定,在定,在调调用函数之前必用函数之前必用函数之前必用函数之前必须须向系向系向系向系统统描述所描述所描述所描述所调调用函数的基本特征,称用函数的基本特征,称用函数的基本特征,称用函数的基本特征,称为为函函函函数的声明。数的声明。数的声明。数的声明。n nC C语言中的函数分为标准库函数和用户自定义函数两大类。下面分语言中的函数分为标准库函数和用户自定义函数两大类。下面分语言中的函数分为标准库函数和用户自定义函数两大类。下面分语言中的函数分为标准库函数和用户自定义函数两大类。下面分别介绍他们的声明方
20、法。别介绍他们的声明方法。别介绍他们的声明方法。别介绍他们的声明方法。4.1.1 函数的定义和声明第十三页,讲稿共一百四十二页哦(1)标准准库函数的声明方式函数的声明方式#include 当使用尖括号当使用尖括号时,指定系,指定系统首先首先查找找C编译系系统配置配置的的头文件路径(文件路径(include路径);路径);#include“头文件名文件名”当使用双引号当使用双引号时,指定系,指定系统首先首先查找当前目找当前目录。(2)用)用户自定函数的声明方式自定函数的声明方式如果被如果被调用函数(称用函数(称为被被调函数)与函数)与调用它的函用它的函数(称数(称为主主调函数)在同一源文件中,需
21、要在函数函数)在同一源文件中,需要在函数调用之前用之前对被被调函数函数进行声明行声明。形式。形式为:返回返回值类型型 函数名函数名(形式参数表形式参数表);4.1.1 函数的定义和声明第十四页,讲稿共一百四十二页哦/*Name:ex04-01.cpp*/*Name:ex04-01.cpp*/#include#include void main()void main()long factorial(int n);long factorial(int n);int num;int num;printf(Input the num:);printf(Input the num:);scanf(%d,
22、&num);scanf(%d,&num);printf(%d!=%ldn,num,factorial(num);printf(%d!=%ldn,num,factorial(num);long factorial(int n)long factorial(int n)/函数函数函数函数factorialfactorial的定义,最后没有分号的定义,最后没有分号的定义,最后没有分号的定义,最后没有分号 intint i;i;long fact=1;long fact=1;for(i=1;i=n;i+)for(i=1;i=n;i+)fact*=i;fact*=i;return fact;return
23、 fact;函数声明告诉编译系统factorial是一个返回值是long,只有一个int参数的函数,注意最后分号不可少!程序演示形式参数(简称形参)实际参数(简称实参)第十五页,讲稿共一百四十二页哦 在上面程序中,主函数中的在上面程序中,主函数中的long factorial(int n);语句就是句就是对函数函数factorial的声明。的声明。C程序中,程序中,对被被调函函数的声明也可以数的声明也可以书写在主写在主调函数定函数定义之前,之前,这种方种方式下函数声明式下函数声明语句之后的所有函数都能句之后的所有函数都能对被声明函被声明函数数进行行调用,如下面的程序段所示:用,如下面的程序段所
24、示:#include long factorial(int n);/对对函数函数函数函数factorialfactorial的声明的声明的声明的声明,该该程序中其它函数均可以程序中其它函数均可以程序中其它函数均可以程序中其它函数均可以调调用用用用它。它。它。它。void main()4.1.1 函数的定义和声明第十六页,讲稿共一百四十二页哦 在函数的声明在函数的声明语句中,形参的名字是无关句中,形参的名字是无关紧要的要的(可以与函数定(可以与函数定义中的不同甚至可以缺省),函数中的不同甚至可以缺省),函数声明声明语句的关句的关键是是形参的形参的类型、个数和次序必型、个数和次序必须与与定定义对应
25、。例如上面例如上面对函数函数factorial的声明的声明语句句还可以写成可以写成为如下两种形式:如下两种形式:long factorial(int);/*对函数函数factorial的声明中无形的声明中无形参名,表示默参名,表示默认*/long factorial(int x);/*对函数函数factorial的声明中形的声明中形式参数名与函数定式参数名与函数定义不同,但意不同,但意义一一样*/4.1.1 函数的定义和声明第十七页,讲稿共一百四十二页哦C语言言规定在下列情况下可以不定在下列情况下可以不对被被调函数函数进行声明:行声明:1.被被调函数的返回函数的返回值数据数据类型是整型或字符型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 程序结构 讲稿
限制150内