C++程序设计与应用 教学课件 ppt 作者 周仲宁courseware5

上传人:w****i 文档编号:92479270 上传时间:2019-07-10 格式:PPT 页数:62 大小:329KB
返回 下载 相关 举报
C++程序设计与应用 教学课件 ppt 作者 周仲宁courseware5_第1页
第1页 / 共62页
C++程序设计与应用 教学课件 ppt 作者 周仲宁courseware5_第2页
第2页 / 共62页
C++程序设计与应用 教学课件 ppt 作者 周仲宁courseware5_第3页
第3页 / 共62页
C++程序设计与应用 教学课件 ppt 作者 周仲宁courseware5_第4页
第4页 / 共62页
C++程序设计与应用 教学课件 ppt 作者 周仲宁courseware5_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《C++程序设计与应用 教学课件 ppt 作者 周仲宁courseware5》由会员分享,可在线阅读,更多相关《C++程序设计与应用 教学课件 ppt 作者 周仲宁courseware5(62页珍藏版)》请在金锄头文库上搜索。

1、第5章 函数,5.1 函数概述 5.2 函数的定义与声明 5.3 全局变量与局部变量 5.4 函数的调用 5.5 静态局部变量 5.6 内联函数 5.7 重载函数 5.8 默认参数的函数,已学程序的结构(1),例: 计算两个整数的和。 / sum.cpp 本程序的文件名 # include int main() /主函数 int x,y,sum; /定义三个整型变量 coutx; /从键盘输入变量x的值 ciny; /从键盘输入变量y的值 sum=x+y; /计算x+y的值并将其/赋给sum cout“The sum is:“sum“n“; /输出sum的值 return 0; ,Q:如果程序

2、中需要使用反复运行该部分,而这一部分又无法通过一条语句实现时怎么办?,已学程序的结构(2),例: 设计程序,计算m中取n的组合数。 # include void main() /主函数 int m,n,i,t,result=1; /定义三个整型变量 coutmn for (i=1,t=1;i=m;i+) t=t*i; result=result*t; for (i=1,t=1;i=n;i+) t=t*i; result=result/t; for (i=1,t=1;i=m-n;i+) t=t*i; result=result/t; coutresult“n”; /输出结果 return; ,Q

3、1:斜体部分重复了3次,能否有一个功能专门计算x的阶乘?如果有,那么可以写为: Result=m的阶乘/n的阶乘/(n-m)的阶乘,Q2:如果将斜体部分单独用程序实现,那么如何调用该程序 (涉及到进程调用,既使可以调用,仍然造成程序的语义错误) ? Q3:别人写的代码我能否象使用自己书写的代码一样使用?,5.1 函数概述,C+语言认为函数是一个能完成某一独立功能的子程序,也就是程序模块。 函数就是对复杂问题的一种“自顶向下,逐步求精”思想的体现。 编程者可以将一个大而复杂的程序分解为若干个相对独立而且功能单一的小块程序(函数)进行编写,并通过在各个函数之间进行调用,来实现总体的功能。,例 计算

4、两个整数的和。 / sum.cpp 本程序的文件名 # include int add(int a, int b) /定义add函数,函数值为整型 int c; /定义一个整型变量 c=a+b; /计算两个数的和 return c; /将C的值返回,通过add带回调用处 int main() /主函数 int x,y,sum; /定义三个整型变量 coutx; /从键盘输入变量x的值 ciny; /从键盘输入变量y的值 sum=add(x,y); /调用函数add计算x+y的值并将其/赋给sum cout“The sum is:“sum“n“; /输出sum的值 return 0;,使用函数的

5、程序结构(1),函数说明,函数体,调用函数,例: 设计程序,计算m中取n的组合数。 # include int jc(int x) int i,t; for (i=1,t=1;imn result=jc(m)/jc(n)/jc(m-n); coutresult“n”; /输出结果 return; ,使用函数的程序结构(2),函数说明,原来在主函数中重复的部分,现在只要写一遍,程序语义十分清晰,并且计算阶乘的部分可以是其他人书写,或者供其他人使用,Q:该程序的执行过程是怎样的?,程序的执行过程,执行C+程序,也就是执行相应的main()函数。即从main()函数的第一个左花括号“”开始,依次执行

6、后面的语句,直到最后一个右花括号“”为止。如果在执行过程中遇到其他的函数,则调用其他函数。调用完后,返回到刚才调用处继续执行。而其他函数也只有在main()函数中被调用时才会被执行。,函数的定义,定义一个函数的语法格式为: 类型 函数名(形式参数表) 函数体; C+中的函数从四个方面来进行定义:类型、函数名、形式参数表、函数体。,函数的定义例,例如: int max(int a,int b) int t; if(ab) t=a; else t=b; return t; ,函数定义说明,类型就是该函数的类型,也就是该函数的返回值的类型,此类型可以是C+中除函数、数组类型之外的任何一个合法的数据类

7、型,包括普通类型、指针类型和引用类型等。每个函数都有类型,如果在函数定义时没有明确指定类型,则默认类型为int。 函数的返回值通常指明了该函数处理的结果,由函数体中的return语句给出。一个函数可以有返回值,也可以无返回值(称为无返回值函数或无类型函数)。此时需要使用保留字void作为类型名,而且函数体中也不需要再写return语句(如果有return,则不能有值)。,函数定义说明,函数名是一个有效的C+标识符,遵循一般的命名规则。在函数名后面必须跟一对小括号“()”,用来将函数名与参数或其他用户自定义的标识符区分开来。在小括号中可以没有任何信息,也可以包含形式参数表。C+程序通过使用这个函

8、数名和实参表可以调用该函数。 主函数的名称规定取编译器默认的名称main()。,函数定义说明,形式参数表又称参数表,写在函数名后面的一对圆括号内。它可包含任意多个参数说明项,当多于一个时,必须用逗号分开。 每个参数说明项由一种已定义的数据类型和一个变量标识符组成,该变量标识符称为该函数的形式参数,简称形参,形参前面给出的数据类型称为该形参的类型。每个形参的类型可以为任一种数据类型,包括普通类型、指针类型、数组类型、引用类型等。 一个函数定义中的可以被省略,表明该函数为无参函数,若用void取代,则也表明是无参函数,若不为空,同时又不是保留字void,则称为有参函数。,函数定义说明,是一条复合语

9、句,它以左花括号开始,到右花括号结束,中间为一条或若干条C+语句,用于实现函数执行的功能。 注意:在一个函数体内允许有一个或多个return语句,一旦执行到其中某一个return语句时,return后面的语句就不再执行,直接返回调用位置继续向下执行。,函数定义说明,请注意:C+不允许函数定义嵌套,即在函数定义中再定义一个函数是非法的。一个函数只能定义在别的函数的外部,函数定义之间都是并列、独立的。主函数也不例外。 例如:下面的代码在主函数中非法嵌套了一个f()函数定义: void main() void f() / ,函数的调用,函数可以被一个函数调用,也可以调用另一个函数,它们之间可以存在着

10、调用上的嵌套关系。但是,C+不允许函数的定义嵌套,即在函数定义中再定义一个函数是非法的。 C+函数是一个独立完成某个功能的语句块,函数与函数之间通过参数和返回值来联系。,使用函数的优点,(1)可读性好; (2)易于查错和修改; (3)便于分工编写,分阶段调试; (4)各个函数之间接口清晰,便于相互间交换信息和使用; (5)节省程序代码和存储空间; (6)减少用户总的工作量; (7)成为实现结构程序设计思想的重要工具; (8)扩充语言和计算机的原设计能力; (9)便于验证程序正确性。,计算两个整数的和。 / sum.cpp 本程序的文件名 # include /C+的预编译命令,其中的iostr

11、eam.h是C+ /定义的一个头文件,设置C+风格的I/O环境 int main() /主函数 int x,y,sum; /定义三个整型变量 coutx; /从键盘输入变量x的值 ciny; /从键盘输入变量y的值 sum=add(x,y); /调用函数add计算x+y的值并将其/赋给sum cout“The sum is:“sum“n“; /输出sum的值 return 0; int add(int a, int b) /定义add函数,函数值为整型 int c; /定义一个整型变量 c=a+b; /计算两个数的和 return c; /将C的值返回,通过add带回调用处 ,各语法要素的进一

12、步说明,函数类型,函数名,形参类型,形参变量,用界定函数体,Q:该程序在上机时有编译错误,为什么?!,函数体,函数功能的体现,加了这一行后程序编译正确,本行的作用是原型声明,对上面的改正,例 计算两个整数的和。 / sum.cpp 本程序的文件名 # include /C+的预编译命令,其中的iostream.h是C+ /定义的一个头文件,设置C+风格的I/O环境 int add(int a, int b); /函数原型的声明 int main() /主函数 int x,y,sum; /定义三个整型变量 coutx; /从键盘输入变量x的值 ciny; /从键盘输入变量y的值 sum=add(

13、x,y); /调用函数add计算x+y的值并将其/赋给sum cout“The sum is:“sum“n“; /输出sum的值 return 0; int add(int a, int b) /定义add函数,函数值为整型 int c; /定义一个整型变量 c=a+b; /计算两个数的和 return c; /将C的值返回,通过add带回调用处 ,5.2 函数原型,C+要求必须为每个函数建立原型,说明函数的返回值类型、函数名称、参数类型及个数。主要目的是在编译时检查调用函数是否与预先说明的原型一致,以维护程序的正确性。函数原型的一般格式为: 返回类型 函数名(参数表); 参数表包括所用参数的

14、类型和可选的参数名称,参数之间用逗号分开。如以下两种声明是等价的: int max(int,int ); int max(int x, int y);,函数原型的例,例函数原型声明的例 #include void print(char *); void main() print(“hello, lanzhou!“); void print(char *s) couts; 输出结果是:hello,lanzhou!,编译程序将做一致性检查,函数原型的说明(1),函数原型是一条语句,必须以分号结束。 函数原型的参数表中可以不包括参数的名字而只包括它们的类型,如语句 long aree(int,cha

15、r); 是合法的。但函数定义中函数说明部分的参数必须给出名字,并且不能以分号结尾。 在程序中,函数原型要求出现在函数调用之前,但当一个函数的定义在前而调用在后时,可以不单独给出它的原型,此时的函数定义的说明部分就起到了函数原型的作用。 主函数不必说明原型,它被认为是一个自动说明原型的函数,且不存在被调用的问题。,例如:设有一函数的定义为: double func1(double a, int b, float c) 函数体 正确完整的函数声明应为: double func1(double x, int y, float z);,例如:设有一函数的定义为: double func1(double

16、 a, int b, float c) 函数体 可以声明为: double func1(double , int, float);,函数 double func1(double a, int b, float c) 函数体的几种错误的声明: double func1(x,y,z); 或 func1(double x, int y, float z); 或 double func1(int y, float z, double x);,函数原型的说明(2),C+的参数说明必须放在函数名后的括号内,不能放在函数说明部分与函数体之间,如下面的程序在编译时将会出错: 原型中没有说明返回类型的函数(包括主函数main),C+默认它的返回类

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号