(中职)编程语言基础------C++模块5教学课件.ppt
《(中职)编程语言基础------C++模块5教学课件.ppt》由会员分享,可在线阅读,更多相关《(中职)编程语言基础------C++模块5教学课件.ppt(89页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、YCF正版可修改PPT(中职)编程语言基础-C+模块5教学课件模块模块5 函数函数任务任务1函数的定义和分类函数的定义和分类任务任务2函数的声明函数的声明任务任务3函数的调用函数的调用任务任务4函数的嵌套调用函数的嵌套调用任务任务5函数的递归调用函数的递归调用任务任务6函数的参数传递函数的参数传递下一页返回模块模块5 函数函数任务任务7函数的返回值函数的返回值任务任务8函数的重载函数的重载任务任务9内联函数和带默认参数的函数内联函数和带默认参数的函数任务任务10局部变量和全局变量局部变量和全局变量上一页返回任务任务1 函数的定义和分类函数的定义和分类在面向过程的程序设计中,一个在面向过程的程序
2、设计中,一个在面向过程的程序设计中,一个在面向过程的程序设计中,一个C+C+程序由一个或多个函数组成。当程序由一个或多个函数组成。当程序由一个或多个函数组成。当程序由一个或多个函数组成。当程序开始运行时,系统自动调用主函数程序开始运行时,系统自动调用主函数程序开始运行时,系统自动调用主函数程序开始运行时,系统自动调用主函数.主函数可以调用子函数,子函主函数可以调用子函数,子函主函数可以调用子函数,子函主函数可以调用子函数,子函数还可以调用其他子函数数还可以调用其他子函数数还可以调用其他子函数数还可以调用其他子函数.调用其他函数的函数称为主调函数,被其他调用其他函数的函数称为主调函数,被其他调用
3、其他函数的函数称为主调函数,被其他调用其他函数的函数称为主调函数,被其他函数调用的函数称为被调函数。函数调用的函数称为被调函数。函数调用的函数称为被调函数。函数调用的函数称为被调函数。5.1.1 函数的定义函数的定义 在在在在C+C+程序中,使用函数前首先需要声明函数,然后定义函数。声明程序中,使用函数前首先需要声明函数,然后定义函数。声明程序中,使用函数前首先需要声明函数,然后定义函数。声明程序中,使用函数前首先需要声明函数,然后定义函数。声明函数,就是告诉编译器函数的名称、类型和形式参数。定义函数,就函数,就是告诉编译器函数的名称、类型和形式参数。定义函数,就函数,就是告诉编译器函数的名称
4、、类型和形式参数。定义函数,就函数,就是告诉编译器函数的名称、类型和形式参数。定义函数,就是告诉编译器函数所做的工作。是告诉编译器函数所做的工作。是告诉编译器函数所做的工作。是告诉编译器函数所做的工作。注意注意注意注意:函数不能调用没有声明的函数函数不能调用没有声明的函数函数不能调用没有声明的函数函数不能调用没有声明的函数下一页返回任务任务1 函数的定义和分类函数的定义和分类在在在在C+C+程序中,定义一个函数的格式如下程序中,定义一个函数的格式如下程序中,定义一个函数的格式如下程序中,定义一个函数的格式如下:类型类型类型类型 函数名函数名函数名函数名(形式参数表形式参数表形式参数表形式参数表
5、)语句序列语句序列语句序列语句序列 上一页 下一页返回任务任务1 函数的定义和分类函数的定义和分类类型、函数名、圆括号和形式参数表组成厂函数头。用花括号括起来类型、函数名、圆括号和形式参数表组成厂函数头。用花括号括起来类型、函数名、圆括号和形式参数表组成厂函数头。用花括号括起来类型、函数名、圆括号和形式参数表组成厂函数头。用花括号括起来的语句序列则组成了函数体的语句序列则组成了函数体的语句序列则组成了函数体的语句序列则组成了函数体 函数的类型,即该函数返回值的类型。函数的类型,即该函数返回值的类型。函数的类型,即该函数返回值的类型。函数的类型,即该函数返回值的类型。函数的返回值是需要返回给主调
6、函数处理的结果,由函数的返回值是需要返回给主调函数处理的结果,由函数的返回值是需要返回给主调函数处理的结果,由函数的返回值是需要返回给主调函数处理的结果,由returnreturn语句给语句给语句给语句给出。该函数没有返回值时,函数的类型为出。该函数没有返回值时,函数的类型为出。该函数没有返回值时,函数的类型为出。该函数没有返回值时,函数的类型为voidvoid,可不写,可不写,可不写,可不写returnreturn语句。语句。语句。语句。每个函数都有类型,如果没有明确指定,则类型为每个函数都有类型,如果没有明确指定,则类型为每个函数都有类型,如果没有明确指定,则类型为每个函数都有类型,如果没
7、有明确指定,则类型为int.int.函数名是一个标识符,在命名时,其中主函数的名称应取编译器默认函数名是一个标识符,在命名时,其中主函数的名称应取编译器默认函数名是一个标识符,在命名时,其中主函数的名称应取编译器默认函数名是一个标识符,在命名时,其中主函数的名称应取编译器默认的名称的名称的名称的名称mainmain。语句序列可以有。语句序列可以有。语句序列可以有。语句序列可以有0 0条、条、条、条、1 1条或多条语句。当是条或多条语句。当是条或多条语句。当是条或多条语句。当是0 0条语句时,条语句时,条语句时,条语句时,该函数称作空函数。形式参数表由该函数称作空函数。形式参数表由该函数称作空函
8、数。形式参数表由该函数称作空函数。形式参数表由0 0个、个、个、个、1 1个或多个参数组成,内容如个或多个参数组成,内容如个或多个参数组成,内容如个或多个参数组成,内容如下下下下:类型类型类型类型1 1形式参数名形式参数名形式参数名形式参数名1 1,类型,类型,类型,类型2 2形式参数名形式参数名形式参数名形式参数名2 2,类型,类型,类型,类型n n形式参数名形式参数名形式参数名形式参数名n n上一页 下一页返回任务任务1 函数的定义和分类函数的定义和分类 其中类型其中类型其中类型其中类型1 1说明了对应形式参数说明了对应形式参数说明了对应形式参数说明了对应形式参数1 1的数据类型。的数据类
9、型。的数据类型。的数据类型。形式参数又称形参,将函数需要处理的数据、影响函数功能的因素形式参数又称形参,将函数需要处理的数据、影响函数功能的因素形式参数又称形参,将函数需要处理的数据、影响函数功能的因素形式参数又称形参,将函数需要处理的数据、影响函数功能的因素和函数处理的结果作为形参,实现主调函数与被调函数之间的联系。和函数处理的结果作为形参,实现主调函数与被调函数之间的联系。和函数处理的结果作为形参,实现主调函数与被调函数之间的联系。和函数处理的结果作为形参,实现主调函数与被调函数之间的联系。没有形参的函数,可以在形参表的位置填上没有形参的函数,可以在形参表的位置填上没有形参的函数,可以在形
10、参表的位置填上没有形参的函数,可以在形参表的位置填上voidvoid或保留空自,但形参或保留空自,但形参或保留空自,但形参或保留空自,但形参表两边的圆括号不可省略。形参在该函数被调用时,由主调函数初始表两边的圆括号不可省略。形参在该函数被调用时,由主调函数初始表两边的圆括号不可省略。形参在该函数被调用时,由主调函数初始表两边的圆括号不可省略。形参在该函数被调用时,由主调函数初始化。在函数没有被调用时,形参只是一个符号。它标示着该函数将可化。在函数没有被调用时,形参只是一个符号。它标示着该函数将可化。在函数没有被调用时,形参只是一个符号。它标示着该函数将可化。在函数没有被调用时,形参只是一个符号
11、。它标示着该函数将可以从主调函数那里获取什么数据。在实际调用时,主调函数将把实际以从主调函数那里获取什么数据。在实际调用时,主调函数将把实际以从主调函数那里获取什么数据。在实际调用时,主调函数将把实际以从主调函数那里获取什么数据。在实际调用时,主调函数将把实际参数赋给形参,每个函数都是一个功能独立的模块,绝对不允许在一参数赋给形参,每个函数都是一个功能独立的模块,绝对不允许在一参数赋给形参,每个函数都是一个功能独立的模块,绝对不允许在一参数赋给形参,每个函数都是一个功能独立的模块,绝对不允许在一个函数体内定义另一个函数。个函数体内定义另一个函数。个函数体内定义另一个函数。个函数体内定义另一个函
12、数。上一页 下一页返回任务任务1 函数的定义和分类函数的定义和分类【例例例例5 5一一一一1 1】函数的定义函数的定义函数的定义函数的定义/用于计算一个长方形的面积。其中用于计算一个长方形的面积。其中用于计算一个长方形的面积。其中用于计算一个长方形的面积。其中a,ba,b分别对应于长方形的长和宽。分别对应于长方形的长和宽。分别对应于长方形的长和宽。分别对应于长方形的长和宽。double area(double a,double b)double area(double a,double b)double s;double s;s=a*b;s=a*b;return s;return s;上一页
13、下一页返回任务任务1 函数的定义和分类函数的定义和分类5.1.2 函数的分类函数的分类 C+C+中的函数分为标准库函数和用户自定义函数。标准库函数由中的函数分为标准库函数和用户自定义函数。标准库函数由中的函数分为标准库函数和用户自定义函数。标准库函数由中的函数分为标准库函数和用户自定义函数。标准库函数由C+C+系统提供,可以直接使用,但需要在程序中包含相应的头文件系统提供,可以直接使用,但需要在程序中包含相应的头文件系统提供,可以直接使用,但需要在程序中包含相应的头文件系统提供,可以直接使用,但需要在程序中包含相应的头文件;用户自用户自用户自用户自定义函数是由用户自己根据需要编写的。定义函数是
14、由用户自己根据需要编写的。定义函数是由用户自己根据需要编写的。定义函数是由用户自己根据需要编写的。表表表表5-15-1给出厂标准库函数中每给出厂标准库函数中每给出厂标准库函数中每给出厂标准库函数中每个函数的名称、原型、对应的数学表示及功能个函数的名称、原型、对应的数学表示及功能个函数的名称、原型、对应的数学表示及功能个函数的名称、原型、对应的数学表示及功能上一页 下一页返回任务任务1 函数的定义和分类函数的定义和分类 在程序中任何位置调用一个系统函数或用户函数时,其调用格式应与在程序中任何位置调用一个系统函数或用户函数时,其调用格式应与在程序中任何位置调用一个系统函数或用户函数时,其调用格式应
15、与在程序中任何位置调用一个系统函数或用户函数时,其调用格式应与它的函数原型相一致,即它的函数原型相一致,即它的函数原型相一致,即它的函数原型相一致,即:()其中所使用的圆括号为函数调用运算符,其中所使用的圆括号为函数调用运算符,其中所使用的圆括号为函数调用运算符,其中所使用的圆括号为函数调用运算符,为为为为0 0个个个个(即即即即没有没有没有没有)、一个或多个用逗号分隔的实参表达式,实参表达式的个数与函、一个或多个用逗号分隔的实参表达式,实参表达式的个数与函、一个或多个用逗号分隔的实参表达式,实参表达式的个数与函、一个或多个用逗号分隔的实参表达式,实参表达式的个数与函数原型中参数表所含的参数的
16、个数相同。如调用数原型中参数表所含的参数的个数相同。如调用数原型中参数表所含的参数的个数相同。如调用数原型中参数表所含的参数的个数相同。如调用absabs函数时,实参表函数时,实参表函数时,实参表函数时,实参表达式表中应当有并且只有一个参数达式表中应当有并且只有一个参数达式表中应当有并且只有一个参数达式表中应当有并且只有一个参数(暂不考虑缺省参数的情况暂不考虑缺省参数的情况暂不考虑缺省参数的情况暂不考虑缺省参数的情况););调用调用调用调用powpow函数时,实参表达式表中应该包含两个表达式函数时,实参表达式表中应该包含两个表达式函数时,实参表达式表中应该包含两个表达式函数时,实参表达式表中应
17、该包含两个表达式;调用调用调用调用randrand函数时,函数时,函数时,函数时,实参表达式表应为空。实参表达式表应为空。实参表达式表应为空。实参表达式表应为空。一个函数调用可以单独作为一个表达式,也可以作为表达式中的一一个函数调用可以单独作为一个表达式,也可以作为表达式中的一一个函数调用可以单独作为一个表达式,也可以作为表达式中的一一个函数调用可以单独作为一个表达式,也可以作为表达式中的一个数据项存在,就如同在表达式中使用一个常量或一个变量的情况一个数据项存在,就如同在表达式中使用一个常量或一个变量的情况一个数据项存在,就如同在表达式中使用一个常量或一个变量的情况一个数据项存在,就如同在表达
18、式中使用一个常量或一个变量的情况一样。样。样。样。上一页 下一页返回任务任务1 函数的定义和分类函数的定义和分类如:如:如:如:(1)exit(1);/(1)exit(1);/作为单独表达式使用作为单独表达式使用作为单独表达式使用作为单独表达式使用(2)k=abs(nl);/(2)k=abs(nl);/作为赋值号右边的表达式作为赋值号右边的表达式作为赋值号右边的表达式作为赋值号右边的表达式(3)coutsqrt(x)+1endl;/(3)coutsqrt(x)+1endl;/作为输出数据项中的一个数据作为输出数据项中的一个数据作为输出数据项中的一个数据作为输出数据项中的一个数据(4)y=3*e
19、xp(x/2-1)+a/(4)y=3*exp(x/2-1)+a/作为表达式中的一个数据作为表达式中的一个数据作为表达式中的一个数据作为表达式中的一个数据(5)return pow(3,4);/(5)return pow(3,4);/作为返回数据作为返回数据作为返回数据作为返回数据上一页 下一页返回任务任务1 函数的定义和分类函数的定义和分类 由于一个函数调用也是一个表达式,而有的函数是由于一个函数调用也是一个表达式,而有的函数是由于一个函数调用也是一个表达式,而有的函数是由于一个函数调用也是一个表达式,而有的函数是voidvoid类型的,调用类型的,调用类型的,调用类型的,调用它不返回任何值,
20、所以这样的表达式是无值的,除此之外,表达式都它不返回任何值,所以这样的表达式是无值的,除此之外,表达式都它不返回任何值,所以这样的表达式是无值的,除此之外,表达式都它不返回任何值,所以这样的表达式是无值的,除此之外,表达式都是有值的。如函数调用表达式是有值的。如函数调用表达式是有值的。如函数调用表达式是有值的。如函数调用表达式exit(1)exit(1)和和和和srand(10)srand(10)都是无值表达式。无都是无值表达式。无都是无值表达式。无都是无值表达式。无值表达式并不是无用的,通过函数调用虽然不返回值,但能够实现一值表达式并不是无用的,通过函数调用虽然不返回值,但能够实现一值表达式
21、并不是无用的,通过函数调用虽然不返回值,但能够实现一值表达式并不是无用的,通过函数调用虽然不返回值,但能够实现一定的操作功能。定的操作功能。定的操作功能。定的操作功能。一个函数调用中的每个实参表达式可以是任何形式的表达式,如可以一个函数调用中的每个实参表达式可以是任何形式的表达式,如可以一个函数调用中的每个实参表达式可以是任何形式的表达式,如可以一个函数调用中的每个实参表达式可以是任何形式的表达式,如可以是一个常量、一个变量、一个函数调用或者一个带运算的一般表达式。是一个常量、一个变量、一个函数调用或者一个带运算的一般表达式。是一个常量、一个变量、一个函数调用或者一个带运算的一般表达式。是一个
22、常量、一个变量、一个函数调用或者一个带运算的一般表达式。如如如如(1)abs(1)abs(一一一一24)/24)/实参是一个常数实参是一个常数实参是一个常数实参是一个常数(2)abs(x)/(2)abs(x)/实参是一个变量实参是一个变量实参是一个变量实参是一个变量(3)abs(3*x+4)/(3)abs(3*x+4)/实参是一个带运算的一般表达式实参是一个带运算的一般表达式实参是一个带运算的一般表达式实参是一个带运算的一般表达式上一页 下一页返回任务任务1 函数的定义和分类函数的定义和分类(4)sqrt(fabs(y)/sqrt(4)sqrt(fabs(y)/sqrt函数调用的实参是一个函数
23、调用函数调用的实参是一个函数调用函数调用的实参是一个函数调用函数调用的实参是一个函数调用(5)pow(x+1,5)/(5)pow(x+1,5)/一个为一般表达式,另一个为常数一个为一般表达式,另一个为常数一个为一般表达式,另一个为常数一个为一般表达式,另一个为常数(6)sin(x/3.14159/180)/(6)sin(x/3.14159/180)/实参为一般表达式实参为一般表达式实参为一般表达式实参为一般表达式(7)log(fabs(nl)+7*sqrt(n2)-1)/(7)log(fabs(nl)+7*sqrt(n2)-1)/实参为带函数调用的表达式实参为带函数调用的表达式实参为带函数调用
24、的表达式实参为带函数调用的表达式上一页 下一页返回任务任务1 函数的定义和分类函数的定义和分类 当程序运行中执行到一个函数调用时,首先依次计算出实参表中每个当程序运行中执行到一个函数调用时,首先依次计算出实参表中每个当程序运行中执行到一个函数调用时,首先依次计算出实参表中每个当程序运行中执行到一个函数调用时,首先依次计算出实参表中每个表达式的值,接着把每个值对应传送给函数定义参数表中的每个参数表达式的值,接着把每个值对应传送给函数定义参数表中的每个参数表达式的值,接着把每个值对应传送给函数定义参数表中的每个参数表达式的值,接着把每个值对应传送给函数定义参数表中的每个参数变量,此时若实参值与参量
25、的类型不同,则该值被自动转换成参数变变量,此时若实参值与参量的类型不同,则该值被自动转换成参数变变量,此时若实参值与参量的类型不同,则该值被自动转换成参数变变量,此时若实参值与参量的类型不同,则该值被自动转换成参数变量的类型后再传送,然后转去执行函数定义的定义体,当执行到定义量的类型后再传送,然后转去执行函数定义的定义体,当执行到定义量的类型后再传送,然后转去执行函数定义的定义体,当执行到定义量的类型后再传送,然后转去执行函数定义的定义体,当执行到定义体中的二体中的二体中的二体中的二turnturn语句后就结束该函数的调用过程,返回该语句中表达式语句后就结束该函数的调用过程,返回该语句中表达式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 语言 基础 C+ 模块 教学 课件
限制150内