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

上传人:xt****7 文档编号:17037402 上传时间:2020-11-07 格式:PPT 页数:442 大小:2.28MB
收藏 版权申诉 举报 下载
c++面向对象程序设计(完整课件).ppt_第1页
第1页 / 共442页
c++面向对象程序设计(完整课件).ppt_第2页
第2页 / 共442页
c++面向对象程序设计(完整课件).ppt_第3页
第3页 / 共442页
资源描述:

《c++面向对象程序设计(完整课件).ppt》由会员分享,可在线阅读,更多相关《c++面向对象程序设计(完整课件).ppt(442页珍藏版)》请在装配图网上搜索。

1、C+面向对象 程序设计 C+面向对象程序设计 教材 : C+参考大全 学时 :40(理论 )+24(实践 ) 考试 :70%(笔试 )+30%(平时 ) 第一章 C+编程基础 一、程序语言的发展 1、机器语言(用二进制代码表示) 2、汇编语言(用符号表示) 3、高级语言(类似自然语言) 第一章 C+编程基础 二、 C+与 C的联系 1、 C+是在 C的基础上发展而来, 是带类的 C语言。 2、 C语言支持结构化程序设计, C+ 语言支持面向对象程序设计。 3、结构化程序设计的思想: 功能分解 ,并逐 步求精。 面向对象程序设计的本质: 把数据和处理数据的过程 看成一个整体 对象。 第一章 C+

2、编程基础 第一章 C+编程基础 三、 C+中几个重要概念 1、程序:数据 +操作 2、数据类型:不同的数据组织方式 得到不同的数据类型 3、表达式:操作符 +操作数 4、语句控制:数据操作的流程 第一章 C+编程基础 四、开发一个 C+程序的四个步骤: 1、编辑(产生源文件,扩展名为 CPP) 2、编译(产生目标文件,扩展名为 OBJ) 3、 连接(产生执行文件,扩展名为 EXE) 4、运行 第一章 C+编程基础 五、集成开发环境( IDE) 1、定义: 集文字处理、编译、连接、项目管理、程 序排误等多功能为一体的软件开发工具 。 2、常见的集成开发环境: Borland C+,Visual

3、C+ 第一章 C+编程基础 六、程序风格 1、良好的编程风格,不仅有利于 自己对程序的调 试,而且会大 大增加程序的可复用机会。 第一章 C+编程基础 2、注释 ( 1)定义:为增加程序的可读性而在 程序中附加的说明性文字。 ( 2)形式 : 以符号 /打头,只占一行。 C+特有的注释形式。 包含在符号 / 与 /之间,可占多行。 继承 C的注释形式。 第一章 C+编程基础 六、程序风格 3、命名(为常量、变量、函数取名) ( 1)名字必须符合标识符的规范。 ( 2)标识符:由字母、数字、下划线组成, 而且 只能以字母、下划线打头。 ( 3)名字不能是保留字(系统有固定用途 的标识符)。 (

4、4)字母的大小写有区别。 ( 5)名字最好能表达一定的含义。 第一章 C+编程基础 4、编排 编排时使用缩进、空行、空格 使程序更清晰。 第一章 C+编程基础 七、简单性原则 1、可以用一句话说清楚的,不要用一页 纸 去说明,可以用一个简单的语句完 成的功能,不要用许多语句来完成。 2、不要写太长的函数,可以用函数调用 来缩短函数的定义。 3、不要写太长的语句,可以用多条语句 来代替一条语句。 第一章 C+编程基础 4、如果文件太长,将它分成几个小文件。 5、不要用太多的嵌套,可以考用 switch 语句或者引入新的函数来解决问题。 6、定义类时,一个文件放一个类的定义。 第一章 C+编程基础

5、 八、一致性原则 1、变量的命名应该有意义。 2、在程序中加上适当的注释。 3、利用缩进使程序清晰。 4、相关的内容组织在一起。 5、能简单,则简单。 第二章 基本 C+程序结构 例 1: #include void main( ) cout ” 同学们 ,你们好 ! ”; 程序功能 :在屏幕上显示输出 同学们 ,你们好 ! 说明一 说明二 说明三 说明四 说明五 说明六 第二章 基本 C+程序结构 一、编译预处理命令 #include 1、 #:预处理命令的标志。 2、 #include:包含命令; 把一个文本文件的内容插入到该命令处。 3、 命令参数; 给出要插入文件的文件名。 返回 第二

6、章 基本 C+程序结构 二、头文件:以 h为扩展名的文本文件 如果程序文件中引用到的函数、变量、 常量、对象、数据类型等是由别的文件 提供的,则必须在程序文件的开始部分 用 #include命令把有关的头文件包含进来。 返回 第二章 基本 C+程序结构 三、函数(具有特定功能的程序模块) 1、定义格式: 返回类型 函数名(形式参数表) 函数体 void main ( ) cout ” 同学们 , 你们好 ! ”; 返回 第二章 基本 C+程序结构 ( 1)类型修饰符 :函数返回值的类型。 ( 2)函数名:非保留字的标识符。 ( 3)形式参数表:由一系列用逗号隔 开的参数组成。 ( 4)函数体:

7、包含在一对 中的语句序列。 第二章 基本 C+程序结构 2、主函数( main函数) 每个程序中至少要有一个函数,这个不可缺少 的函数就是主函数,约定主函数名为: main ( 1)程序由一个或多个函数组成。 ( 2)如果程序中只有一个函数,则 一定是 main函数。 ( 3)如果程序中有多个函数,则有 且仅有一个为 main函数。 第二章 基本 C+程序结构 ( 4) main函数是程序的入口,程序是从 main函数开始执行的。 ( 5) main函数的返回值 void:无返回值。 int: 有 返回值。 ( 0表示程序正常结束 非 0表示程序非正常结束) 第二章 基本 C+程序结构 四、

8、C+语句 基本语句:以分号;作为结束标志。 复合语句:包含在 中的基本语句序列。 返回 第二章 基本 C+程序结构 五、常量 数据的一种重要表现形式,常量的值 不可改变 1、整型常量(整型常数)如: 123 2、实型常量(实型常数)如: 1.23 3、字符常量(用 括起的一个 字符) 如: a 第二章 基本 C+程序结构 4、字符串常量(用 ” ” 括起的 字符序列) 如: ” student ” 5、枚举 常量 注:除字符串常量中引号内的字符以及 注释外,其它字符必须是半角字符。 尤其注意不要误用中文标点。 返回 第二章 基本 C+程序结构 六、 cout和数据的显示输出 1、 cout:

9、连接显示器的输出流对象。 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 100end

10、l200; 则这两个语句的输出结果相同: 100 200 第二章 基本 C+程序结构 四点注意: 1、要输出的字符串需要用双引号 ” ” 括起 来。但输出到屏幕上时,双引号 ” ” 并 不显示。 2、语句的最后要用分号 ;表示结束。 第二章 基本 C+程序结构 3、换行符号 n 和换行控制符 endl写法 不同,但效果相同。 4、可以作为输出内容的不止是字符串,还 可以是数、表达式等等。 返回 第二章 基本 C+程序结构 例 2: #include void main( ) float radius,circum; const float PI=3.14; cinradius; circum=

11、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、常值变量

12、 在一般变量定义前加上保留字 const 如: const float PI=3.14; 注:常值变量定义时必须初始化,且值 不可改变。常值变量名通常大写。 第二章 基本 C+程序结构 1、定义:由操作符和操作数按照一定 的语法规则组 成的符号序列。 如: 2* PI*radius /算术表达式 circum=2* PI*radius /赋值表达式 注:最简单的表达式: 常量,变量,函数调用。 二、表达式 返回 第二章 基本 C+程序结构 2、优先级和结合性: 优先级:不同操作符出现在同一表达式中, 谁先运算的级别。 如: a+b c / 优先级高于 + 结合性:同等优先级的操作符出现在同一表

13、 达式中,谁先运算的规定。 如: a+b-c /从左到右 第二章 基本 C+程序结构 3、表达式语句: 表达式后加 ; 如: circum=2* PI*radius; 4、 C+表达式的写法: ( 1)所有字符写在同一水平线上。 ( 2)乘号: 除号: / ( 3)算术运算符不可省略。 第二章 基本 C+程序结构 5、表达式的值 ( 1)算术表达式 算术运算符: +, -, , /, % %(取模操作符): 求两整数相除后所得的余数。 如: 22%7=1 第二章 基本 C+程序结构 若两操作数都为整数,则计算结果为整数。 如: 345/10=34 若两操作数有一个为实数,则计算结果 为实数。

14、如: 345.0/10=34.5 第二章 基本 C+程序结构 ( 2)赋值表达式: 赋值操作符 = 赋值表达式格式 变量 =表达式 如: circum=2 PI radius 第二章 基本 C+程序结构 赋值表达式的值:赋值操作符左边表达 式的值。 如: cout(x=5):输入操作符(提取操作符) 键盘输入语句的格式: cin 变量 【 变量 】 ; 返回 第二章 基本 C+程序结构 1、 【 】 中内容可有可无,若有,可重复多次。 如: int a,b,c; cina; cinabc; 2、格式中 cin后跟的是变量,不可是常量或 表达式。 如: cin100;( ) cin100+200

15、;( ) 注:若在程序中用到 cin或 cout,则在程序中应 有 #include 第三章 数据类型 一、 C+数据类型分类图 数 据 类 型 基本数据类型 整型( int) 浮点型 (float) 字符型 (char) 双精度型 (double) 无值 (void) 构造数据类型 引申数据类型 指针 (*) 引用 ( 则表示 radius 将要占用 4个字节的存储空间,并且对这 个空间的值的存放和解释都按小数进行。 第三章 数据类型 2、修饰符号 long(长型符 ) short(短型符 ) signed(有符号型 ) unsigned(无符号型 ) 第三章 数据类型 使用修饰符号后的基本

16、数据类型 所属类型 加修饰符后 的类型 16位计算机 中所占字节 数 简写 char char 1 unsigned char 1 signed char 1 char 第三章 数据类型 所属类型 加修饰符后 的类型 16位计算 机中所占 字节数 简写 int int 2 unsigned int 2 signed int 2 int 所属类型 加修饰符后的类 型 16位计 算机中 所占字 节数 简写 short int short int 2 short unsigned short int 2 signed short int 2 第三章 数据类型 所属类型 加修饰符后 的类型 16位计算

17、 机中所占 字节数 备 注 long int long int 4 long unsigned long int 4 signed long int 4 第三章 数据类型 所属类型 加修饰符后 的类型 16位计算 机中所占 字节数 备 注 实型 float 4 double 8 long double 10 第三章 数据类型 第三章 数据类型 3、基本数据类型 ( 1) void:实际上不能算是一种数据 类型,它表示根本就没有值,通 常用于表示函数没有返回值。 第三章 数据类型 ( 2)整型 整数的三种表示方式: 十进制:无前缀 如: 12 八进制: 0前缀 如: 012 十六进制: OX(或

18、 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;(

19、) 第三章 数据类型 尽管整数和字符可以在一定范围内 相互赋值,但它们表示的含义不同, 一个表示整数,而另一个表示字符。 第三章 数据类型 例 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: 第三章 数据类型 特殊字符(转义字符):以 开头的字符序列。 名称 符号 名称 符号 空字符

20、0 水平制表 t 换行 n 垂直制表 v 换页 f 问号 ? 回车 r 反斜线 回格 b 单引号 响铃 a 双引号 ” 第三章 数据类型 如: cout” How are you!”; 则屏幕输出: How are you! cout” ”How are you! ” ”; 则屏幕输出: ” How are you! ” 第三章 数据类型 字符串(用 ” ”括起来的字符序列) 0:字符串结束符;不显示,但占一 个 字节的存储空间。 如: ” Hello ” 内存表示为: H e l l o 0 第三章 数据类型 如: ” 0”与 0的差别: ” 0”为字符串,内存表示为: 0为字符,内存表示为

21、: 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定义成一个可存放

22、50个整 数的整型数组。 第三章 数据类型 下标访问 通过下标访问操作符 访问指定的数组 元素。 若数组元素个数为 n,则下标范围是: 0n-1 如: grade0表示该数组的第一个元素。 grade49表示该数组的最后一个元素。 第三章 数据类型 2、枚举 枚举是一种用户自定义的类型,使用前必 须先定义。 枚举类型的定义格式: enum 枚举类型名 常量 1,常量 2, ,常 量 n; 如 :enumWEEKDAYSun,Mon,Tue,Wed,Thu, Fri,Sat; 第三章 数据类型 定义了一个枚举类型后 ,就可以用该 类型来定义变量 . 如 : WEEKDAY w1,w2=sat;

23、第三章 数据类型 某一枚举类型的变量,它的取值范围限 定在 中的 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,

24、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;

25、第三章 数据类型 对结构变量进行赋值: 对各成员进行赋值 如: 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; ( 3) couti 2

26、; 计算机按语句的先后顺序依此执行 ( 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 ma

27、in( ) 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多分支结构

28、通过规范化的 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 (

29、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 后的语

30、句 n+1存在, 则执行语句 n+1,否则什么都不做。 第四章 程序流程控制 3、五点注意: ( 1) case后表达式的值必须是整型的。 ( 2)各常量表达式的值不能相同。 ( 3)每个 case语句的分支可以有多条语句, 但不必用 。 第四章 程序流程控制 ( 4)每个 case语句只是一个入口标号,并 不能确定执行的终止点,因此每个 case 分支的最后最好加上 break语句,用来结 束当前 switch语句的执行;否则会从入口 点开始一直执行到 switch语句的结束。 ( 5)当若干分支需要执行相同操作时,可 以使多个 case分支共用一组语句。 第四章 程序流程控制 例 5:根据

31、整型变量 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”; ; 第四章 程序流程控制 若 dayofthewe

32、ek的值为 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 ”

33、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 ”

34、 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

35、(循环条件) 循环体 注:循环体是单个语句 ,或者是复合语句。 第四章 程序流程控制 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(循环条件) ;

36、第四章 程序流程控制 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(循环初始化;循环条件

37、;循环参数调整) 循环体 第四章 程序流程控制 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

38、语句一般用于循环次数已知的情况; ( 2) while语句不仅可以用于循环次数已知 的情 况,也可以用于循环次数未知的情况; ( 3)一切用 for语句实现的循环都可以用 while语句来代替,反之不可以。 第四章 程序流程控制 六、转向语句 (一) break语句 (break;) 功能:循环体中的 break语句使程序流程跳出 所在的循环语句,转而执行循环语句的 下一条语句;如果存在多重循环,则 break只能从它所在层的循环语句中跳出, 并不能跳出所有的循环。 第四章 程序流程控制 例 10:计算并输出从键盘输入的若干个整 数的平均值,以 0作为输入的结束标志。 若从键盘输入 10 15

39、 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语句表示结束 当前的一次循环,跳转

40、到循环开始 处,继续执行下一次循环。 第四章 程序流程控 制 例 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

41、; 第四章 程序流程控 制 (三 )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=”=y) return x; else return y; 第五章 函数 (一)返回类型 1、函数返回结果值

42、的数据类型。 2、返回类型可以是除数组以外的 任意数据类型。 3、若函数的返回类型为 void, 则表示此函数无返回值。 第五章 函数 4、若函数有返回值,则在函数体中应 有 return语句 : return (表达式 ); 或 return 表达式 ; 若函数无返回值,则在函数体中可 以没有 return语句 ,也可以用空的 return语句 : return; 第五章 函数 (二 )函数名 1、函数名应是一个非保留字的标识符。 2、函数名代表一个函数。 3、函数命名时,应该尽量使名字能代表 函数所完成的功能。 第五章 函数 (三)函数参数 1、函数参数是函数完成功能所需要的输入信息。 2

43、、函数参数可有 0个或多个,参数之间用,隔开。 3、每个函数参数由参数类型和参数名来表示; 参数类型可以是任意数据类型,参数名是非保留 字的标识符。 第五章 函数 4、函数定义中的函数参数称为形式参数, 函数调用中的函数参数称为实在参数。 函数的形式参数和实在参数在类型和 数量上应该保持一致。 第五章 函数 (四)函数体 1、函数体是函数功能的实现部分。 2、函数体由一系列语句构成,这些语 句包含在一对 中。 3、定义在函数体中的变量或常量是局 部量,只能在定义它们的函数中使用; 定义在任何函数外的变量或常量是全 局 量,它可以在所有的函数中使用。 第五章 函数 三、函数调用 (一)函数调用就

44、是暂时中断现有程序 的运行,转去执行被调用函数, 当被调用函数执行结束之后,再 返回到中断处继续执行。 (二)函数调用格式: 函数名 (实在参数表) 第五章 函数 例 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 注: 函数调用本身也可以看成是一个表达式。 第五章 函数 第五章 函数 四、程

45、序运行时的内存分布 (一)程序的内存区域 1、程序代码区:存放函数编译成的二 进制代码。 2、全局数据区:存放全局变量和静态 变量。 3、堆:存放动态数据。 4、栈:存放局部数据。 第五章 函数 (二)每次进行函数调用时,内存应存放 以下信息: 1、当前函数的运行状态和返回地址; 如果是 main函数,则保存操作系统的 当前状态和返回地址。 2、被调用函数的参数。 3、被调用函数的局部变量。 第五章 函数 (三)每进行一次函数调用,系统应作 如下工作: 1、建立被调用函数的栈空间。 2、保存调用函数的运行状态和返回地址。 3、将实在参数的值传递给被调用函数。 4、将程序控制交给被调用函数。 第

46、五章 函数 (四)当一个函数执行结束之后,系统 应作如下工作: 1、如果函数有返回值,将函数的返回值放到 一个临时的变量空间。 2、根据栈顶记录的信息,恢复调用函数的运 行状态。 3、释放栈顶空间。 4、根据函数的返回地址,继续调用函数的运 行。 注: 在不再需要所申请的内存空间时,一定要及 时释放。 第五章 函数 五、函数的参数 (一)函数参数的传递 1、 函数调用时:实在参数 形式参数 2、函数参数的传递方式: 按值传递 按地址传递 按引用传递 第五章 函数 (二) main函数的参数 1、 main函数一般情况下无参数。 2、 main函数若有参数,则规定其有两 个参数,其中一个参数是字

47、符串数组, 另一个参数是整数。字符串数组就是 输入的命令,整数就是字符串的个数。 通常这两个参数的名字称作 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、函数返回值为

48、 const,只有用在函数值为 引用类型的情况。 2、 const返回值的函数调用不能放在赋值号 的左边。 如: const int 则: min(a,b)=4;( ) 第五章 函数 (三) const函数 1、在函数头后面加上 const,表示这个 函数是一个只读函数。 2、 const函数通常作为类的成员函数, 表示此函数不能改变类对象的成员 变量的值。 如: void printmessage(char*msg) const; 第五章 函数 七、作用域 (一)作用域就是标识符在程序中能使用的 范围。 (二) c+中标识符的作用域与标识符的声明 位置密切相关。一个标识符的作用域一 般开始于

49、 标识符的声明处,而结束位置 取决于标识符声明在程序中的位置。 第五章 函数 (三)作用域分类: 文件作用域、局部作用域、类作用域 (四)局部作用域 1、当标识符的声明出现在函数定义中时, 它将具有局部作用域。 第五章 函数 2、五种情况: ( 1)函数参数的作用域从函数头开始到 函数定义结束。 ( 2)函数体中定义的局部变量的作用域 从变量定义开始,到函数定义结束。 ( 3)如果函数体中定义的局部变量定义 在一个复合语句中,则变量作用域 从变量定义开始,到该复合语句结束。 ( 4)在 for语句的初始化表达式中定义的 变量的作用域取决于编译器的实现, 在 ANSIc+中规定其作用域在 for

50、语 句范围之内。 第五章 函数 第五章 函数 ( 5)在函数中定义的标号语句(与 goto语 句配合使用)的作用域是整个函数体, 因为 goto语句可能跳转到函数内的任何 一处。 第五章 函数 例 3:从键盘输入一个整数 n,计算并输出 n! #include double factorial(int n) /n作用域开始 double retVal=1; / retVal作用域开始 for(int i=1;in;if(n=0) goto END; fact=factorial(n); cout n”!=”factendl; while(1); /n作用域结束 END: cout ”Thank

51、 you!n”; /fact,END作用域结束 第五章 函数 第五章 函数 (五)文件作用域 1、在所有函数定义之外说明的标识符具有 文件作用域,其作用域从说明点开始, 一直延伸到文件结束。 2、在头文件中定义的变量的作用域可以看 成从 #include该头文件开始的位置到程 序结束。 例 4: #include /cin,cout的作用域开始 double factorial(int n) / factorial的作用域开始 void main( ) / main的作用域开始 / cin,cout , factorial和 main的作用域结束。 第五章 函数 第五章 函数 (六)覆盖问题

52、1、如果作用域重叠,则局部变量将覆盖 全局变量,作用域小的局部变量将覆 盖同名的作用域大的局部变量。 第五章 函数 例 5: #include int x; void addx( ) x+;coutxendl; int x=5; coutxendl; void main( ) int x=10; coutxendl; addx( ); coutxendl; x+;coutxendl; 运行结果为: 10 1 5 10 11 第五章 函数 2、若函数的参数和函数的局部变量 名字相同,则同样满足: 作用域小的覆盖同名的作用域大的。 第五章 函数 例 6: #include void func(in

53、t a) coutaendl; if(a=10) int a=5; couta=y) return x; else return y; 此函数定义所对应的函数原 型为: int max(int ,int ); 第五章 函数 (二)作用: 函数原型为函数调用提供所需的接口信息。 注: 1、若函数定义在函数调用之前,则函数原 型可要可不要。 2、若函数定义在函数调用之后,则必须使 用函数原型。 第五章 函数 (三)必须使用函数原型的情况 1、多文件程序 2、函数之间的递归调用。 3、使用函数库。 第五章 函数 九、特殊的函数用法 (一)内联函数 1、内联函数在定义或声明时在前面 加上保留字 inline 例 8: inline int max(int a,int b)

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!