函数是对数据进行运算和操作的重要手段在面向过程程序_第1页
函数是对数据进行运算和操作的重要手段在面向过程程序_第2页
函数是对数据进行运算和操作的重要手段在面向过程程序_第3页
函数是对数据进行运算和操作的重要手段在面向过程程序_第4页
函数是对数据进行运算和操作的重要手段在面向过程程序_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 函 数 函数是对数据进行运算和操作的重要手段。在面向过程程序设计中,函数是程序模块划分的基本单位。在面向对象程序设计中它是实现对象功能和行为的手段。第一节 函 数(1)n在数学中,经常用下面的方法表示函数: f (x,y)=x2+y+10 如果,已知自变量x、y的值分别为a、b,那么,则可根据运算表达式就可以计算出f( )的值。即: f (a,b)=a2+b+10n如果用c+语言来书写这个函数(设数据类型为float型),则为:函数名自变量自变量float f (float x,float y) return (x*x+y+10); 第一节 函 数(2)n在程序设计中,函数是作为一个独

2、立的程序单位写在主函数外部的。n在程序中需要使用这个函数时,需要写出函数名并用实际值或实际变量代入括号中对应的形参位置。n要代入的实际值或变量叫做实际参数(实参)。例如:#include float f (float x,float y) float z,g; z= x*x; g=z+y+10; return g; void main() coutf (10.0,6.5)endl; float a=28.7; float b=30.5; coutf(a,b)endl; 形参形参实参实参实参实参第一节 函 数(3)c+要求,函数要先定义后使用。也可以在使用这个函前,使用函数原型对这个函数进行声明

3、,然后在其他适当的位置对函数进行实现。函数原型的声明方法为: 函数的定义数据类型 函数名(数据类型 形参1,数据类型 形参2,)函数体返回值类型 函数名(形参列表或形参类型列表);第一节 函 数(4)n可以给形参定义默认值。这样,在调用该函数时,如果给出了实参,则用实参初始化形参;如果没有给出实参,则使用默认值初始化形参。 n注意:第一,在函数的形参列表中,默认的形参值必须从右向左顺序定义。即在有默认值的形参右边,不能出现无默认值的形参;第二,只能在声明函数原型时声明默认值。为了在实现函数时清楚起见,可以在形参列表中添加适当的注释,例如:int add (int x,int y/*y=9*/)

4、。 带默认参数值的函数 第二节 函数的调用(1)第二节 函数的调用(2)n值传递 是指当发生函数调用时,用实参的值对形参进行初始化。所以形参与实参互不干扰,也就是说,在函数中,无论形参的值发生了什么变化,都不会改变实参的值。n引用传递 c+允许为一个变量命名多个名称,也就是说可以给变量起别名,这个变量的别名就叫做该变量的引用。 如果在定义函数时,把形参名定义为实参名的引用,那么在调用该函数时,传递的就是实参本身,这样,在函数中对形参的改变也就是对实参的改变,因为形参和实参代表的是同一个变量。函数参数的传递 数据类型&别名标识符=变量标识符;第四节 函数的重载n函数重载 使用同一个函数名

5、称,编写了多个不同的函数。n在函数名称相同时、c+会依据形参的数据类型、形参的个数,来识别函数。这样,就允许程序中可以有形参的数据类型或形参的个数不相同的多个同名函数存在。在调用时,系统会根据实参和形参的数据类型及个数的最佳匹配,自动确定调用同名函数中的哪一个函数。这个技术就叫做函数的重载。 函数的重载 第五章 程序流程控制语句任何程序流程都可以用顺序、条件、循环三种控制结构来实现。本章主要介绍这三种基本控制结构及其在程序设计中的应用。 第一节 顺序结构n顺序结构 执行顺序与源程序中语句的书写顺序一致,没有重复和跳跃的程序结构。n只有一个分号的语句叫空语句;n复合语句 由花括号“ ”括起来的多

6、个语句组成,有时也叫做“语句块”。复合语句的一般形式为:语句1;语句2;语句n;第二节 选择结构(1)n当条件满足时就做该事,否则就不做。例如:如果天下雨,带雨伞。显然“天下雨”就是“带雨伞”的条件。如果把这个意思使用伪代码来表达就是:if结构 if(天下雨)带雨伞;关键字第二节 选择结构(2)n二选一的选择结构 “如果天下雨,就上课;否则,去郊游。”把这句话用伪代码来表达就是:if-else结构 if(天下雨)上课;else郊游;第二节 选择结构(3)switch_case结构switch(表达式)case 常量表达式:语句组break;case 常量表达式2:语句组2break;case

7、常量表达式n:语句组nbreak;default语句组n+1 nswitch_case结构又叫做开关分支结构,主要是用来解决多分支的选择问题。switch-case结构的形式为:第三节 循环结构(1)nfor是c+控制循环的一个关键字,它主要用于处理开始条件和结束条件均已知的循环问题。for语句的一般形式为:n其中,其中表达式2是一个条件语句,当条件满足时执行循环体中的语句部分,并计算表达式3,然后再计算表达式2以判断条件是否满足,当表达式2的结果不满足条件时,则退出循环。表达式1一般用来设置循环的初始条件。for语句 for(表达式1;表达式2;表达式3)语句第三节 循环结构(2)n判断条件

8、表达式的值,当其为真时,执行循环体的代码,然后,每完成一次循环体的工作之后,再判断条件表达式的值,为真时继续执行循环体,为假时,结束循环。while语句 第三节 循环结构(3)do-while语句 第六章 类 本书已经对类和对象的概念做了初步介绍,本章将在此基础上,围绕封装这一特点,进一步介绍类的定义、类的数据成员、类的函数成员、友元以及如何用类来解决实际问题的基本思想方法。 第一节 抽象和封装n抽象,就是人类对事物进行分类的最基本手段。在面向对象程序设计中,抽象就是对具体问题进行概括,抽出一类对象的公共性质,并加以描述的过程。对一个事物的抽象应该包括两个方面:数据抽象和代码抽象。数据抽象是用

9、来描述事物的属性或状态的,是描述此类对象与其他类对象区别的特征量;代码抽象是用来描述某类对象的共同行为特征的,它可以使某类对象具有共同的功能。n封装就是在对事物进行整体分析后,将抽象得到的数据与函数相结合,形成一个有机的整体。 第二节 类的成员函数(1)n类的成员函数是程序算法的实现部分,它描述了类的行为,同时它也是对封装的私有或保护数据成员进行操作的唯一途径。n c+允许在类中只声明成员函数原型,而在类的外部实现函数。在类外定义成员函数时,在成员函数之前要使用域作用符“:”指明类的名称。具体形式为: 类成员函数的声明返回值类型 类名:函数名(形参表) 函数体第二节 类的成员函数(2)n构造函

10、数是特殊的类成员函数,它只在创建对象时被系统自动调用,并且只在创建对象时调用一次,并且构造函数的名称要与类名称相同。 它的作用是对类的数据成员进行初始化。n构造函数的声明方法为: n注意,函数名一定要与类名相同,且该函数无返回值类型。 构造函数 函数名(参数表);类名:函数名(参数表) 函数体 n 在类声明外部实现构 造函数的语法为:第二节 类的成员函数(3)n在类中声明的,专门用于将一个对象的数据成员复制到同类的另一个对象的构造函数。n定义拷贝构造函数的语法为: 在类中声明时:在类外实现时: 拷贝构造函数 类名(类名&对象名);类名:类名(类名&对象名)函数体第二节 类的成员

11、函数(4)n析构函数是在对象即将被删除之前,由系统自动调用的特殊函数,用户可以在这个函数中做一些对象在删除之前的工作(一般常用来删除在构造函数中动态定义的变量或对象),同时系统也利用这个函数将本对象所占用的内存空间进行释放。与构造函数一样,如果用户没有定义析构函数,系统会自动提供一个缺省的析构函数。定义析构函数的一般格式为:类名();析构函数 第三节 类的聚集(组合)n如果类中使用了其他类的对象作为数据成员,那么这种做法叫做类的聚集。n在创建这个类的对象时,既要对本类的对象初始化,同时又要对内嵌对象进行初始化。于是,类的聚集的构造函数与普通类的构造函数有所不同。类的聚集的构造函数的定义形式为:n在该定义中,冒号后的语义为:调用对象n所属类的构造函数创建对象n,其参数取自参数总表。类名:类名(参数总表):对象名1(参数表),对象名2(参数表),函数体第四节 类成员的访问控制nc+利用三个关键字:private、protected和public将类的声明分为三个区

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论