欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    c++面向对象程序设计(完整课件).ppt

    • 资源ID:5085512       资源大小:2.20MB        全文页数:442页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c++面向对象程序设计(完整课件).ppt

    C+面向对象程序设计,C+面向对象程序设计,教材:C+参考大全学时:40(理论)+24(实践)考试:70%(笔试)+30%(平时),第一章 C+编程基础,一、程序语言的发展,1、机器语言(用二进制代码表示)2、汇编语言(用符号表示)3、高级语言(类似自然语言),第一章 C+编程基础,二、C+与C的联系,1、C+是在C的基础上发展而来,是带类的C语言。2、C语言支持结构化程序设计,C+语言支持面向对象程序设计。,3、结构化程序设计的思想:功能分解,并逐 步求精。面向对象程序设计的本质:把数据和处理数据的过程 看成一个整体对象。,第一章 C+编程基础,第一章 C+编程基础,三、C+中几个重要概念,1、程序:数据+操作2、数据类型:不同的数据组织方式 得到不同的数据类型3、表达式:操作符+操作数4、语句控制:数据操作的流程,第一章 C+编程基础,四、开发一个C+程序的四个步骤:,1、编辑(产生源文件,扩展名为CPP)2、编译(产生目标文件,扩展名为OBJ)3、连接(产生执行文件,扩展名为EXE)4、运行,第一章 C+编程基础,五、集成开发环境(IDE),1、定义:集文字处理、编译、连接、项目管理、程序排误等多功能为一体的软件开发工具。2、常见的集成开发环境:Borland C+,Visual C+,第一章 C+编程基础,六、程序风格,1、良好的编程风格,不仅有利于 自己对程序的调 试,而且会大 大增加程序的可复用机会。,第一章 C+编程基础,2、注释,(1)定义:为增加程序的可读性而在 程序中附加的说明性文字。(2)形式:以符号/打头,只占一行。C+特有的注释形式。包含在符号/与/之间,可占多行。继承C的注释形式。,第一章 C+编程基础,六、程序风格,3、命名(为常量、变量、函数取名)(1)名字必须符合标识符的规范。(2)标识符:由字母、数字、下划线组成,而且 只能以字母、下划线打头。(3)名字不能是保留字(系统有固定用途 的标识符)。(4)字母的大小写有区别。(5)名字最好能表达一定的含义。,第一章 C+编程基础,4、编排编排时使用缩进、空行、空格使程序更清晰。,第一章 C+编程基础,七、简单性原则,1、可以用一句话说清楚的,不要用一页 纸 去说明,可以用一个简单的语句完 成的功能,不要用许多语句来完成。2、不要写太长的函数,可以用函数调用 来缩短函数的定义。3、不要写太长的语句,可以用多条语句 来代替一条语句。,第一章 C+编程基础,4、如果文件太长,将它分成几个小文件。5、不要用太多的嵌套,可以考用switch 语句或者引入新的函数来解决问题。6、定义类时,一个文件放一个类的定义。,第一章 C+编程基础,八、一致性原则,1、变量的命名应该有意义。2、在程序中加上适当的注释。3、利用缩进使程序清晰。4、相关的内容组织在一起。5、能简单,则简单。,第二章 基本C+程序结构,例1:#include void main()cout”同学们,你们好!”;程序功能:在屏幕上显示输出 同学们,你们好!,说明一说明二说明三说明四说明五说明六,第二章 基本C+程序结构,一、编译预处理命令#include1、#:预处理命令的标志。2、#include:包含命令;把一个文本文件的内容插入到该命令处。3、命令参数;给出要插入文件的文件名。,返回,第二章 基本C+程序结构,二、头文件:以h为扩展名的文本文件 如果程序文件中引用到的函数、变量、常量、对象、数据类型等是由别的文件 提供的,则必须在程序文件的开始部分 用#include命令把有关的头文件包含进来。,返回,第二章 基本C+程序结构,三、函数(具有特定功能的程序模块)1、定义格式:返回类型 函数名(形式参数表)函数体,void main()cout”同学们,你们好!”;,返回,第二章 基本C+程序结构,(1)类型修饰符:函数返回值的类型。(2)函数名:非保留字的标识符。(3)形式参数表:由一系列用逗号隔 开的参数组成。(4)函数体:包含在一对 中的语句序列。,第二章 基本C+程序结构,2、主函数(main函数),每个程序中至少要有一个函数,这个不可缺少的函数就是主函数,约定主函数名为:main(1)程序由一个或多个函数组成。(2)如果程序中只有一个函数,则 一定是main函数。(3)如果程序中有多个函数,则有 且仅有一个为main函数。,第二章 基本C+程序结构,(4)main函数是程序的入口,程序是从 main函数开始执行的。(5)main函数的返回值 void:无返回值。int:有返回值。(0表示程序正常结束 非0表示程序非正常结束),第二章 基本C+程序结构,四、C+语句基本语句:以分号;作为结束标志。复合语句:包含在 中的基本语句序列。,返回,第二章 基本C+程序结构,五、常量数据的一种重要表现形式,常量的值不可改变,1、整型常量(整型常数)如:1232、实型常量(实型常数)如:1.233、字符常量(用 括起的一个字符)如:a,第二章 基本C+程序结构,4、字符串常量(用”括起的字符序列)如:”student”5、枚举常量注:除字符串常量中引号内的字符以及 注释外,其它字符必须是半角字符。尤其注意不要误用中文标点。,返回,第二章 基本C+程序结构,六、cout和数据的显示输出,1、cout:连接显示器的输出流对象。2、:输出操作符(插入操作符),第二章 基本C+程序结构,3、显示输出语句的格式:cout 表达式【表达式】;注:【】中内容可有可无,若有,可重复多次。如:cout100;屏幕输出 100 cout100200100+200;屏幕输出 100200300,返回,第二章 基本C+程序结构,4、插入空格:(空格符为)如:cout 100 200100+200;屏幕输出:100 200 300,第二章 基本C+程序结构,5、换行输出换行符号:n 换行控制符:endl如:cout 100n200;cout 100endl200;则这两个语句的输出结果相同:100200,第二章 基本C+程序结构,四点注意:1、要输出的字符串需要用双引号”括起 来。但输出到屏幕上时,双引号”并 不显示。2、语句的最后要用分号;表示结束。,第二章 基本C+程序结构,3、换行符号n 和换行控制符endl写法不同,但效果相同。4、可以作为输出内容的不止是字符串,还可以是数、表达式等等。,返回,第二章 基本C+程序结构,例2:#include void main()float radius,circum;const float PI=3.14;cinradius;circum=2*PI*radius;cout”circum=”circum;,说明一说明二说明三,第二章 基本C+程序结构,程序功能:根据从键盘输入的半径,计算并输出 圆的周长。如:键盘输入2.0,则屏幕输出:circum=12.56,返回,第二章 基本C+程序结构,一、变量 数据的一种重要表现形式,变量的值 可以改变。1、变量必须先定义后使用。定义格式:变量类型 变量名;如:int age;,返回,第二章 基本C+程序结构,2、变量赋值和初始化如:int age;age=20;/变量赋值 int age=20;/变量初始化,第二章 基本C+程序结构,3、常值变量在一般变量定义前加上保留字const如:const float PI=3.14;注:常值变量定义时必须初始化,且值 不可改变。常值变量名通常大写。,第二章 基本C+程序结构,1、定义:由操作符和操作数按照一定 的语法规则组 成的符号序列。如:2*PI*radius/算术表达式 circum=2*PI*radius/赋值表达式 注:最简单的表达式:常量,变量,函数调用。,二、表达式,返回,第二章 基本C+程序结构,2、优先级和结合性:优先级:不同操作符出现在同一表达式中,谁先运算的级别。如:a+bc/优先级高于+结合性:同等优先级的操作符出现在同一表 达式中,谁先运算的规定。如:a+b-c/从左到右,第二章 基本C+程序结构,3、表达式语句:表达式后加;如:circum=2*PI*radius;4、C+表达式的写法:(1)所有字符写在同一水平线上。(2)乘号:除号:/(3)算术运算符不可省略。,第二章 基本C+程序结构,5、表达式的值(1)算术表达式算术运算符:+,-,/,%(取模操作符):求两整数相除后所得的余数。如:22%7=1,第二章 基本C+程序结构,若两操作数都为整数,则计算结果为整数。如:345/10=34 若两操作数有一个为实数,则计算结果 为实数。如:345.0/10=34.5,第二章 基本C+程序结构,(2)赋值表达式:赋值操作符=赋值表达式格式 变量=表达式 如:circum=2 PIradius,第二章 基本C+程序结构,赋值表达式的值:赋值操作符左边表达式的值。如:cout(x=5)endl;屏幕输出 5 赋值语句格式 变量=表达式;如:circum=2 PIradius,第二章 基本C+程序结构,三、cin和键盘输入 cin:连接键盘的输入流对象。:输入操作符(提取操作符)键盘输入语句的格式:cin 变量【变量】;,返回,第二章 基本C+程序结构,1、【】中内容可有可无,若有,可重复多次。如:int a,b,c;cina;cinabc;2、格式中cin后跟的是变量,不可是常量或 表达式。如:cin100;()cin100+200;()注:若在程序中用到cin或cout,则在程序中应 有#include,第三章 数据类型,一、C+数据类型分类图,数 据 类 型,基本数据类型,整型(int),浮点型(float),字符型(char),双精度型(double),无值(void),构造数据类型,引申数据类型,指针(*),引用(&),结构化数据类型,数组(),结构(struct),联合(union),位域,枚举(enum),类(class),第三章 数据类型,二、基本数据类型概况:1、数据在计算机中的存储(1)计算机内存单元的单位是字节,一个字节是8个二进制位。如:0000 0000 1010 1010 是两个字节。,第三章 数据类型,(2)不同的计算机中,同一数据类型 占用的空间不一定相同。如:16位计算机中,整型占两个字节;32位计算机中,整型占四个字节;,第三章 数据类型,(3)数据占用内存字节的多少决定了其 能表达的数据的范围。如:两个字节的整数表示范围是-3276832767,第三章 数据类型,(4)计算机对内存中存放的同样信息解释 会因其所能表示的数据类型的不同而 不同。如:0000 0000 0000 1010 在16位计算机中 若表示整数,则为一个整数 若表示字符,则为两个字符,第三章 数据类型,注:定义变量时,数据类型有两个含义:为该变量分配多大的存储空间;如何解释该存储空间中的二进制数位。如:定义变量float radius;则表示radius 将要占用4个字节的存储空间,并且对这 个空间的值的存放和解释都按小数进行。,第三章 数据类型,2、修饰符号long(长型符)short(短型符)signed(有符号型)unsigned(无符号型),第三章 数据类型,使用修饰符号后的基本数据类型,第三章 数据类型,第三章 数据类型,第三章 数据类型,第三章 数据类型,第三章 数据类型,3、基本数据类型(1)void:实际上不能算是一种数据 类型,它表示根本就没有值,通 常用于表示函数没有返回值。,第三章 数据类型,(2)整型 整数的三种表示方式:十进制:无前缀 如:12 八进制:0前缀 如:012 十六进制:OX(或ox)前缀 如:OX12,第三章 数据类型,(3)实型 浮点数(float)和双精度数(double)的区别 表示的数据范围不同 表示的精度不同,第三章 数据类型,实数的两种表示形式 定点数形式 如:3.14 指数形式 如:31400 3.14E4 0.314 3.14E-1,第三章 数据类型,(4)字符型 字符型和整型的关系 字符在内存中是以ASCII码存储,所以 字符和整数在一定范 围内可以通用。如:char c=60;int i=,第三章 数据类型,整数值的范围比字符类型值的范围要大,所以在赋值时要注意不能超过字符的范围。如:char c=1234;(),第三章 数据类型,尽管整数和字符可以在一定范围内 相互赋值,但它们表示的含义不同,一个表示整数,而另一个表示字符。,第三章 数据类型,例3:#include void main()int i=60;char c=i;cout”The value of integer:”iendl;cout”The value of character:”c endl;,该程序的输出结果是:The value of integer:60 The value of character:,第三章 数据类型,特殊字符(转义字符):以 开头的字符序列。,第三章 数据类型,如:cout”How are you!”;则屏幕输出:How are you!cout”How are you!”;则屏幕输出:”How are you!”,第三章 数据类型,字符串(用”括起来的字符序列)0:字符串结束符;不显示,但占一个 字节的存储空间。如:”Hello”内存表示为:,第三章 数据类型,如:”0”与0的差别:”0”为字符串,内存表示为:0为字符,内存表示为:,第三章 数据类型,4、数据类型长度的确定 格式:sizeof(数据类型)如:cout”Size of int is:”sizeof(int);则屏幕输出:Size of int is:2 表示在16位计算机中,int型的长度为2个字节。,第三章 数据类型,5、选择数据类型的原则 根据所表示的数据的类型选择。根据所表示的数据的范围选择。,第三章 数据类型,三、结构化数据类型概况1、数组数组变量可以存放一组具有相同类型的数据。数组变量的定义格式:数据类型 数组名 数组元素个数 如:int grade50;则将变量grade定义成一个可存放50个整 数的整型数组。,第三章 数据类型,下标访问 通过下标访问操作符 访问指定的数组元素。若数组元素个数为n,则下标范围是:0n-1如:grade0表示该数组的第一个元素。grade49表示该数组的最后一个元素。,第三章 数据类型,2、枚举枚举是一种用户自定义的类型,使用前必须先定义。枚举类型的定义格式:enum 枚举类型名常量1,常量2,常量n;如:enumWEEKDAYSun,Mon,Tue,Wed,Thu,Fri,Sat;,第三章 数据类型,定义了一个枚举类型后,就可以用该类型来定义变量.如:WEEKDAY w1,w2=sat;,第三章 数据类型,某一枚举类型的变量,它的取值范围限定在 中的n个变量。如:WEEKDAY类型的两个变量w1,w2,它们只能Sun,Mon,Tue,Wed,Thu,Fri,Sat这七个符号常量中取值。,第三章 数据类型,枚举类型中的每个符号常量对应一个整数。两种对应关系:依此与整数0,1,2,n对应。用赋值号规定其对应关系。,第三章 数据类型,如:enum WEEKDAYSun,Mon,Tue,Wed,Thu,Fri,Sat;此枚举类型中:Sun,Mon,Tue,Wed,Thu,Fri,Sat对应的整数分别为:0,1,2,3,4,5,6,第三章 数据类型,如:enum SomeDigitsONE=1,TWO,FIVE=5,SIX,SEVEN;此枚举类型中:ONE=1,TWO=2,FIVE=5,SIX=6,SEVEN=7,第三章 数据类型,3、结构结构是一种用户自定义的类型,使用前必须先定义。,第三章 数据类型,结构类型的定义格式:struct 结构类型名 成员1;成员2;成员n;;,第三章 数据类型,如:struct Person char name10;int sex;int age;float pay;定义了一种结构类型后,可以用该类型来定义变量。如:Person p1;,第三章 数据类型,对结构变量进行赋值:对各成员进行赋值如:p1.name=”WangPin”;p1.sex=1;p1.age=35;p1.pay=1000.0;在定义结构变量时进行初始化如:Person p1=”WangPin”,1,35,1000、.,第四章 程序流程控制,一、复合语句 1、最常用的四类语句:(1)说明和定义语句。如:char a,b;(2)表达式语句 如:c=a+b;(3)流程控制语句(4)异常处理语句,第四章 程序流程控制,2、复合语句 包含在一对 的语句序列。如:int i=4;couti;,第四章 程序流程控制,二、流程控制 1、流程控制 控制程序中语句的执行顺序。2、流程控制方式:顺序控制、分支控制、循环控制。,第四章 程序流程控制,三、顺序流程 程序中的语句按先后顺序依此执行。如(1)int i;(2)cini;(3)couti2;计算机按语句的先后顺序依此执行(1)(2)(3),第四章 程序流程控制,四、分支流程(一)if 语句 1、格式一:if(条件)语句;功能:如果条件为真,则执行语句;否则什么都不做。,第四章 程序流程控制,例1:#include void main()float score;cin score;if(score=60)cout”及格”;,第四章 程序流程控制,2、格式二:if(条件)语句1 else 语句2功能:如果条件为真,则执行语句1;条件为假,则执行语句2。,第四章 程序流程控制,例2:#include void main()float score;cin score;if(score=60)cout”及格”;else cout”不及格”;,第四章 程序流程控制,3、if语句的嵌套:if语句中又含有if语句。例3:#include void main()float score;cin score;if(score=60)if(score=90)cout=80)cout”良好”;else cout”及格”;else cout”不及格”;注:else总是与离它最近的尚未配对的if配对。,第四章 程序流程控制,4、if多分支结构通过规范化的if嵌套所构成的多分支结构。,if嵌套放在else之后,第四章 程序流程控制,格式:if(条件1)语句1 else if(条件2)语句2 else if(条件3)语句3 else if(条件n)语句n【else 语句n+1】,第四章 程序流程控制,例4:#include void main()float score;cin score;if(score100)cout”输入错误!”;else if(score 60)cout”不及格”;else if(score 70)cout”及格”;else if(score 80)cout”中等”;else if(score 90)cout”良好”;else cout”优秀”;,第四章 程序流程控制,二switch语句 1、格式:switch(表达式)case 常量表达式1:语句1;case 常量表达式2:语句2;case 常量表达式n:语句n;【default:语句n+1;】,第四章 程序流程控制,2、执行顺序:先计算switch语句中表达式的值,然后在case 语句中寻找值相等的常量表达式,并以此为入口,由此开始 顺序执行。如果没有找到 相等的常量表达式,且default 后的语句n+1存在,则执行语句n+1,否则什么都不做。,第四章 程序流程控制,3、五点注意:(1)case后表达式的值必须是整型的。(2)各常量表达式的值不能相同。(3)每个case语句的分支可以有多条语句,但不必用。,第四章 程序流程控制,(4)每个case语句只是一个入口标号,并不能确定执行的终止点,因此每个case分支的最后最好加上break语句,用来结 束当前switch语句的执行;否则会从入口点开始一直执行到switch语句的结束。(5)当若干分支需要执行相同操作时,可以使多个case分支共用一组语句。,第四章 程序流程控制,例5:根据整型变量dayoftheweek(0-6)值输出其表示的星期几的英语单词。(无break语句)Switch(dayoftheweek)case 0:cout”Sunday”;case 1:cout”Monday”;case 2:cout”Tuesday”;case 3:cout”Wednesday”;case 4:cout”Thursday”;case 5:cout”Friday”;case 6:cout”Saturday”;default:cout”Unknown week day”;,第四章 程序流程控制,若dayoftheweek的值为4,则输出结果为:ThursdayFridaySaturdayUnknown week day,第四章 程序流程控制,(有break语句)Switch(dayoftheweek)case 0:cout”Sunday”;break;case 1:cout”Monday”;break;case 2:cout”Tuesday”;break;case 3:cout”Wednesday”;break;case 4:cout”Thursday”;break;case 5:cout”Friday”;break;case 6:cout”Saturday”;break;default:cout”Unknown week day”;break;;,第四章 程序流程控制,若dayoftheweek的值为4,则输出结果为:Thursday,第四章 程序流程控制,(三)if多分支结构和switch语句的改写 改写条件:switch语句中每个非空语句序列 的最后一个语 句为break语句。,第四章 程序流程控制,例6:例5的后一个switch语句可改写为if多分支结构 if(dayoftheweek=0)cout”Sunday”;else if(dayoftheweek=1)cout”Monday”;else if(dayoftheweek=2)cout”Tuesday”;else if(dayoftheweek=3)cout”Wednesday”;else if(dayoftheweek=4)cout”Thursday”;else if(dayoftheweek=5)cout”Friday”;else if(dayoftheweek=6)cout”Saturday”;else cout”Unknown week day”;,第四章 程序流程控制,五、循环流程(一)while语句 1、格式:while(循环条件)循环体注:循环体是单个语句,或者是复合语句。,第四章 程序流程控制,2、执行过程:当循环条件为真时,执行循环体,否则退出循环。3、流程图(见右上图),循环条件?,循环体,Y,N,第四章 程序流程控制,例7:#include void main()int sum=0;int i=1;while(I=100)int sum=sum+i;i+;cout”sum=”sum;程序功能:计算并输出从1加到100的和。输出结果:sum=5050,第四章 程序流程控制,(二)dowhile语句 1、格式:do 循环体 while(循环条件);,第四章 程序流程控制,2、执行过程:循环执行语句,直到循环条件为假时,退出循环。3、流程图(见右上图),循环体,循环条件?,Y,N,第四章 程序流程控制,例8:#include void main()int sum=0;int i=1;do sum=sum+i;i+;while(i=100)cout”sum=”sum;,第四章 程序流程控制,3、dowhile语句与while语句唯一的区别:while语句的循环体有可能一次不执行。dowhile语句的循环体至少执行一次。,第四章 程序流程控制,(三)for语句1、格式:for(循环初始化;循环条件;循环参数调整)循环体,第四章 程序流程控制,2、执行过程:(1)进行循环初始化;(2)判断循环条件;(3)如果循环条件为真,则执行循环体、对 循环参数调整,然后转向步骤(2);如 果循环条件为假,则结束循环。,第四章 程序流程控制,3、流程图:,循环初始化,循环条件?,循环体,循环参数调整,Y,N,第四章 程序流程控制,例9:#include void main()int sum=0;for(int i=1;i=100;i+)sum=sum+i;cout”sum=”sum;,第四章 程序流程控制,3、for语句和while语句的区别:(1)for语句一般用于循环次数已知的情况;(2)while语句不仅可以用于循环次数已知 的情 况,也可以用于循环次数未知的情况;(3)一切用for语句实现的循环都可以用while语句来代替,反之不可以。,第四章 程序流程控制,六、转向语句(一)break语句(break;)功能:循环体中的break语句使程序流程跳出 所在的循环语句,转而执行循环语句的 下一条语句;如果存在多重循环,则 break只能从它所在层的循环语句中跳出,并不能跳出所有的循环。,第四章 程序流程控制,例10:计算并输出从键盘输入的若干个整数的平均值,以0作为输入的结束标志。若从键盘输入10 15 20 则输出:sum/num=15.0,第四章 程序流程控制,例10:#include void main()int sum=0;/sum存放输入的整数的和 int inval;/inval存放当前输入的整数 int num=0;/num存放输入的整数个数 while(1)cininval;if(inval=0)break;sum=sum+inval;num+;cout”sum/num=”(float)sum/num;,第四章 程序流程控制,(二)continue语句(continue;)功能:循环体中的continue语句表示结束 当前的一次循环,跳转到循环开始 处,继续执行下一次循环。,第四章 程序流程控制,例11:从键盘输入若干个整数,计算并 输 出其中正数的平均值,以0作 为输入的结束标志。若从键盘输入10-15 15-30 20 则输出:sum/num=15.0,第四章 程序流程控制,例11:#include void main()int sum=0;int inval;int num=0;while(1)cininval;if(inval=0)break;if(inval 0)continue;sum=sum+inval;num+;cout”sum/num=”(float)sum/num;,第四章 程序流程控制,(三)goto语句格式:goto 标号;标号:功能:将程序的执行转移到标号处。例12:将例10中的break语句用goto语句代替。,第四章 程序流程控制,例12:#include void main()int sum=0;int inval;int num=0;while(1)cininval;if(inval=0)goto loop;sum=sum+inval;num+;loop:cout”sum/num=”(float)sum/num;,第五章 函数,一、函数概述1、函数:将大的程序分成功能相对独立的小模块,每一个模块称为函数。2、函数分类,用户定义的函数,标准库函数,第五章 函数,二、函数定义,返回类型 函数名(函数参数表)/函数头函数体例1:int max(int x,int y)if(x=y)return x;else return y;,第五章 函数,(一)返回类型1、函数返回结果值的数据类型。2、返回类型可以是除数组以外的 任意数据类型。3、若函数的返回类型为void,则表示此函数无返回值。,第五章 函数,4、若函数有返回值,则在函数体中应 有return语句:return(表达式);或 return 表达式;若函数无返回值,则在函数体中可 以没有return语句,也可以用空的return语句:return;,第五章 函数,(二)函数名,1、函数名应是一个非保留字的标识符。2、函数名代表一个函数。3、函数命名时,应该尽量使名字能代表 函数所完成的功能。,第五章 函数,(三)函数参数,1、函数参数是函数完成功能所需要的输入信息。2、函数参数可有0个或多个,参数之间用,隔开。3、每个函数参数由参数类型和参数名来表示;参数类型可以是任意数据类型,参数名是非保留字的标识符。,第五章 函数,4、函数定义中的函数参数称为形式参数,函数调用中的函数参数称为实在参数。函数的形式参数和实在参数在类型和 数量上应该保持一致。,第五章 函数,(四)函数体,1、函数体是函数功能的实现部分。2、函数体由一系列语句构成,这些语句包含在一对 中。3、定义在函数体中的变量或常量是局部量,只能在定义它们的函数中使用;定义在任何函数外的变量或常量是全 局 量,它可以在所有的函数中使用。,第五章 函数,三、函数调用,(一)函数调用就是暂时中断现有程序 的运行,转去执行被调用函数,当被调用函数执行结束之后,再 返回到中断处继续执行。(二)函数调用格式:函数名(实在参数表),第五章 函数,例2:#include int max(int x,int y)if(xy)return x;else return y;void main()int val1,val2;cinval1val2;coutmax(val1,val2);,程序功能:从键盘输入两个整数,输出两者中较大的一个。如:从键盘输入:3 5 则屏幕输出:5 注:函数调用本身也可以看成是一个表达式。,第五章 函数,第五章 函数,四、程序运行时的内存分布,(一)程序的内存区域1、程序代码区:存放函数编译成的二 进制代码。2、全局数据区:存放全局变量和静态 变量。3、堆:存放动态数据。4、栈:存放局部数据。,第五章 函数,(二)每次进行函数调用时,内存应存放 以下信息:,1、当前函数的运行状态和返回地址;如果是main函数,则保存操作系统的当前状态和返回地址。2、被调用函数的参数。3、被调用函数的局部变量。,第五章 函数,(三)每进行一次函数调用,系统应作 如下工作:,1、建立被调用函数的栈空间。2、保存调用函数的运行状态和返回地址。3、将实在参数的值传递给被调用函数。4、将程序控制交给被调用函数。,第五章 函数,(四)当一个函数执行结束之后,系统 应作如下工作:,1、如果函数有返回值,将函数的返回值放到 一个临时的变量空间。2、根据栈顶记录的信息,恢复调用函数的运 行状态。3、释放栈顶空间。4、根据函数的返回地址,继续调用函数的运 行。注:在不再需要所申请的内存空间时,一定要及时释放。,第五章 函数,五、函数的参数,(一)函数参数的传递 1、函数调用时:实在参数 形式参数 2、函数参数的传递方式:按值传递 按地址传递 按引用传递,第五章 函数,(二)main函数的参数,1、main函数一般情况下无参数。2、main函数若有参数,则规定其有两个参数,其中一个参数是字符串数组,另一个参数是整数。字符串数组就是输入的命令,整数就是字符串的个数。通常这两个参数的名字称作argc和argv。即:void main(int argc,char*argv);,第五章 函数,六、const参数、const返回值与const函数,(一)const参数 1、出现在函数参数中的const表示在函数体中不能对这个参数做修改。2、const通常用来限制函数的指针参数、引用参数和数组参数。如:int strcmp(const char*str1,const char*str2);,第五章 函数,(二)const返回值,1、函数返回值为const,只有用在函数值为 引用类型的情况。2、const返回值的函数调用不能放在赋值号 的左边。如:const int(),第五章 函数,(三)const函数,1、在函数头后面加上const,表示这个 函数是一个只读函数。2、const函数通常作为类的成员函数,表示此函数不能改变类对象的成员 变量的值。如:void printmessage(char*msg)const;,第五章 函数,七、作用域,(一)作用域就是标识符在程序中能使用的 范围。(二)c+中标识符的作用域与标识符的声明 位置密切相关。一个标识符的作用域一 般开始于 标识符的声明处,而结束位置 取决于标识符声明在程序中的位置。,第五章 函数,(三)作用域分类:文件作用域、局部作用域、类作用域(四)局部作用域 1、当标识符的声明出现在函数定义中时,它将具有局部作用域。,第五章 函数,2、五种情况:(1)函数参数的作用域从函数头开始到 函数定义结束。(2)函数体中定义的局部变量的作用域 从变量定义开始,到函数定义结束。,(3)如果函数体中定义的局部变量定义 在一个复合语句中,则变量作用域 从变量定义开始,到该复合语句结束。(4)在for语句的初始化表达式中定义的 变量的作用域取决于编译器的实现,在ANSIc+中规定其作用域在for语 句范围之内。,第五章 函数,第五章 函数,(5)在函数中定义的标号语句(与goto语 句配合使用)的作用域是整个函数体,因为goto语句可能跳转到函数内的任何 一处。,第五章 函数,例3:从键盘输入一个整数n,计算并输出n!#includedouble factorial(int n)/n作用域开始double retVal=1;/retVal作用域开始 for(int i=1;i=n;i+)/i作用域开始 retVal*=i;/i作用域结束return retVal;/n,retVal作用域结束,void main()/END作用域开始 double fact;/fact作用域开始 do int n;/n作用域开始 cinn;if(n=0)goto END;fact=factorial(n);cout n”!=”factendl;while(1);/n作用域结束END:cout”Thank you!n”;/fact,END作用域结束,第五章 函数,第五章 函数,(五)文件作用域,1、在所有函数定义之外说明的标识符具有 文件作用域,其作用域从说明点开始,一直延伸到文件结束。2、在头文件中定义的变量的作用域可以看 成从#include该头文件开始的位置到程 序结束。,例4:#include/cin,cout的作用域开始double factorial(int n)/factorial的作用域开始 void main()/main的作用域开始/cin,cout,factorial和main的作用域结束。,第五章 函数,第五章 函数,(六)覆盖问题,1、如果作用域重叠,则局部变量将覆盖 全局变量,作用域小的局部变量将覆 盖同名的作用域大的局部变量。,第五章 函数,例5:#includeint x;void addx()x+;coutxendl;int x=5;coutxendl;void main()int x=10;coutxendl;addx();coutxendl;x+;coutxendl;,运行结果为:10151011,第五章 函数,2、若函数的参数和函数的局部变量 名字相同,则同样满足:作用域小的覆盖同名的作用域大的。,第五章 函数,例6:#includevoid func(int a)coutaendl;if(a=10)int a=5;coutaendl;void main()func(10);,运行结果为:105,第五章 函数,3、如果要在局部变量的作用域范围内 访问具有文件作用域的变量,可以 使用域运算符,第五章 函数,八、函数原型,(一)格式:返回类型 函数名(形式参数表);,第五章 函数,注:1、函数原型中无函数体部分。2、以分号;作为结束标志。3、函数原型必须和函数定义完全一致,即函数的参数个数、参数类型、返 回值类型都必须一致。4、函数原型中形式参数的名字可写

    注意事项

    本文(c++面向对象程序设计(完整课件).ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开