C++程序设计案例教程-PPT-new完整版课件全套ppt教学教程最全整套电子教案电子讲义.ppt
《C++程序设计案例教程-PPT-new完整版课件全套ppt教学教程最全整套电子教案电子讲义.ppt》由会员分享,可在线阅读,更多相关《C++程序设计案例教程-PPT-new完整版课件全套ppt教学教程最全整套电子教案电子讲义.ppt(451页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.1 面向对象程序设计 1.2 C+程序设计 1.3 C+程序的开发过程 1.4 面向对象程序的组成元素,第1章 绪论,1.5 C+程序的编译与调试 1.6 本章小结,返回目录,1.1 面向对象程序设计,面向过程程序设计的缺点:,缺点,出现背景,缺乏数据和代码的保护机制 这种程序设计方法缺乏代码重用机制,面向对象程序设计的优点:,按习惯对问题领域进行自然分解 注重需求分析和设计反复 数据抽象和信息隐蔽等机理使得对象内部实现与外界隔离,能对数据有效保护 继承使得代码重用成为可能 可维护性好,基本概念,什么是对象? 什么是类?,知识点概述,对象是系统中的基本运行实体,是有特殊属性(数据)和行为方
2、式(方法)的实体。,类是对具有公共的方法和一般特殊性的一组基本相同对象的描述。,基本概念,什么是消息? 什么是方法?,知识点概述,方法是对象本身内含的执行特定操作的函数或过程,消息(Message)用来请求对象执行某一处理或回答某些信息的请求,例如,一个汽车对象具有行驶这项操作,那么要让汽车以时速50公里行驶的话,我们需传递给汽车对象行驶及时速50公里的消息,以触发这个对象。,知识点概述,优缺点,优点:,符合认识论的观点 能尽量逼真地模拟客观世界及其事物 先进的开发方法 软件适应性广 以对象为中心的程序设计,缺点:,描述局限性 具体实现困难,知识点概述,理论基础,分类学基础 分类 聚合 泛化和
3、特化 思维科学基础 抽象思维过程 概念建模与抽象思维过程 方法学基础,基本特征,封装性(Encapsulation) 封装就是隐藏对象的属性和实现细节,仅对外提供公开接口 继承性(Inheritance) 继承描述的不同类型之间的一种关系,它可以扩展不同类型的功能,基本特征,多态性(Polymorphism) 多态指的是同一个操作作用于不同的对象,可以产生不同的效果 抽象性(Abstract) 抽象性是指将具有相同属性和行为的一组对象抽象为类,面向对象程序设计与面向过程程序设计,程序 =(模块 + 模块 + ),模块 =(算法)+(数据结构),程序 =(对象 + 对象 + ),对象 =(数据结
4、构 + 算法),面向对象程序设计与面向过程程序设计,方法与步骤,面向对象分析OOA 面向对象的设计OOD 面向对象的实现OOI,1.2 C+程序设计,返回目录,C+语言的产生,1982年, Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。开始这种语言被称为new C,后来改为C with Class,1983年12月,Rick Mascitti建议命名为CplusPlus,即C+。C+的发展大致可分为了三个阶段: 第一阶段从C+语言出现到1995年,这一阶段C+语言基本上是传统类型上的面向对象语言,并且依靠接近C语言的效率,在这期间Bj
5、ame博士完成了经典巨著The C+ Programming Language第一版;诞生了一个传世经典ARM;之后模板、异常、命名空间等相继被加入。 第二阶段从1995年到2000年,这一阶段由于STL库和后来的Boost库等程序库的出现,泛型程序设计在C+中比重越来越大,同时由于Java、C#等语言的出现和硬件的影响,C+受到了一定的冲击。 第三阶段从2000年至今,由于Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C+出现了发展上的又一个高峰。,C+简介,C+的特点,C+简介,C+的应用领域,应用程序平台,系统级框架,机器人及工业控制系统,高性能实时计算,手机智能设备,C
6、AD、CAE、CAM等,多媒体游戏等,航空航天系统等,C+语言的程序设计体系,1.3 C+程序开发过程,返回目录,面向过程程序举例,面向过程的程序是由函数构成的,其基本结构为:函数的定义+函数的调用,查看详情,程序1-1:输出字符串“Hello” #include /*函数功能:输出字符串“Hello” 函数名称:print 函数参数:str-字符指针 函数返回值类型:void */,void print(char* str) printf(“%f”,hello); int main() char* hello=“Hello”; print(hello);/函数调用 return 0; ,io
7、stream文件,第1行代码包含了输入输出头文件 iostream,它是标准的C+头文件,在旧的标准C+中,使用的是iostream.h,实际上这两个文件是不同的,在编绎器include文件夹里它是两个文件,并且内容不同。后缀为.h的头文件C+标准明确提出不支持了,早期在C+中调用.h头文件其实相当于调用的C标准库,为了和C语言区分开,C+标准规定不使用后缀.h的头文件,例如C语言中的string.h头文件,C+用cstring,C语言中的math头文件,C+使用cmath头文件。这不只是形式上的改变,其实现也有所不同。,返回,面向过程程序举例,#include #include using
8、namespace std; class Person/类的定义 private: String words;/类的数据成员 public: /成员函数定义 /*函数功能:给数据成员赋值 函数名称:setWords 函数参数:wordstring类型,C+中定义的字符串类 返回类型:void,空类型,表示没带回任何值给调用的函数 */,面向对象的程序是由对象构成的,要定义对象得先定义类。其基本结构:类的定义+类的使用,void setWords(string word) Words=word; /*函数功能:输出数据成员的值 函数名称:say 函数参数:void 返回类型:void */ vo
9、id say() Coutwords; ; int main() Person girl;/Person类对象的定义 girl.setWords(“How are you!”); /调用成员函数 girl.speak();/调用成员函数 system(pause); return 0; ;,面向过程程序举例,第一个C+程序,命名空间,命名空间实际上是由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间区域,把一些自己定义的变量、函数等标识符存放在这个空间中,从而与其他实体定义分隔开来。其定义格式如下所示:,namespace 空间名,namespace是定义命名空间的关键字,
10、空间名可以用任意合法的标识符,在内声明空间成员,例如定义一个命名空间A1,代码如下所示:,namespace A1 int a = 10; ,变量a只在A1空间内(作用域)有效,命名空间的作用就是建立一些互相分隔的作用域,把一些实体定义分隔开来。,下一页,1.4 面向对象程序的组成元素,返回目录,名字空间,解决命名冲突,使用方法:,利用using namespace 使用名字空间,using namespace std; 表明此后程序中的所有对象如没有特别声明,均来自名字空间std,多学一招: 匿名命名空间,用域分辨符:为对象分别指定名字空间,std:cout “Hello C+”std:en
11、dl;,使用using与域分辨符指定名字空间,using std:cout; 表明此后的cout对象如没有特别,均取自名字空间std中。,输入输出流,cin与cout,cin与提取运算符“”结合使用,读入用户的输入,可连续输入,以空白(包括空格、回车、TAB)为分隔符。 cout与插入运算符“”结合使用,打印消息。通常它还会与操纵符endl使用,endl的效果是结束当前行,并将与设备关联的缓冲区(buffer)中的数据刷新到设备中,保证程序所产生的所有输出都写入输出流中,而 不是仅停留在内存中。,返回,1.5 C+程序的编译与调试,返回目录,源程序的编译与运行,新建项目,添加源文件,编写代码,
12、案例代码,源程序的编译与运行,C+语言的编译环境有多种,如: Microsoft Vistual Studio,C+ Builder ,Qt Creator, Borland C+等,其中: Turbo C3.0,Borland C+3.1是在DOS环境下的编译系统。不同的编译器对C+的支持度是不一样的。由于Visual Studio 2013对C+标准的支持度达以99%,并且支持新标准C+11,所以本书使用Visual Studio 2013作为编译环境。 使用向导新建控制台项目 单击其中的“运行”按钮或按下Ctrl+F5组合键可以运行程序,程序的调试,程序中的错误分为编译错误,逻辑错误和运
13、行时错误 编译错误编译是就能找出来,因为它只是C+程序中的语法错误; 逻辑错误是程序功能上的一些错误,或编译器不能检测出的数组赿界错误; 运行时错误是运行过程中出现的错误,可能是内存没有释放可文件不能打开等错误。 单步调试是逐语句调试 断点调试,1.6 本章小结,(1)本章主要讲述了面向对象程序设计的思想与概念 (2)面向对象程序设计的方法。 (3)C+中输入输出的使用及C+的面向对象程序与面向过程程序的区别与联系。 (4)最后重点讲了C+程序的断点调试和单步调试。,2.1 C+数据类型 2.2 变量与常量 2.3 运算符与表达式 2.4 控制结构 2.5 数组 2.6 函数,第2章 C+基础
14、知识,2.7 结构体 2.8 联合体 2.9 指针 2.10 面向过程程序设计规范 2.11 菜单结构的设计与实现 2.12 本章小结,返回目录,2.1 C+数据类型,C+字符集,C+字符集,字母: az;AZ 数字: 0 1 2 3 4 5 6 7 8 9 其他符号: + - * / = , . _ : ; ? | ! # % int,int ,程序举例,void swap(int ,/函数的定义 void swap(int ,程序举例,int vals10;/定义的全局数组变量 int error = -1; int max = 0; int ,/*功能:返回x,y中的较大数*/ int
15、,返回目录,2.2 变量与常量,标识符与关键字,标识符:程序或系统定义的符号 用来作为变量名、常量名、函数名、类型名、文件名等。 由字母、数字、下划线组成,且由字母或下划线开头的字符串,中间不能有空格 _sum, sum, stu_name, price等为合法的标识符。 cout,52select,a lot,-W,sin 等为不合法标注符。 关键字:也称保留字 是C+编译器预定义的、具有固定含义的标识符,不允许另作它用,常用关键字,变量的定义与初始化,变量定义的语法: 变量的类型变量的名称; 初始化的方法 int a=; intb(1); int c;c=1;,常量与符号常量,常量通过关键
16、字const来定义 语法规则 const 变量类型变量名称; 或 const 变量类型变量名称=初始值; 如: const double pi=3.14;,返回目录,2.3 运算符与表达式,运算符,查看详情,1.算术运算符:+、-、*、 /、 %、+、- 2.赋值运算符:= 、+=、-= 、*= 、/=、%= 3.关系运算符:=、= 、!= 4.逻辑运算符:! 、 else if (条件表达式2) 语句2; else if (条件表达式n) 语句n; else 语句n+1;,单分支结构: if(条件表达式) 语句1; 双分支结构: if(条件表达式) 语句1; else 语句2; switch
17、语句 switch(判断表达式) case 常量表达式1: 语句1; break; case常量表达式2: 语句2; break; / default: 语句n+1; ,循环结构,三要素: 循环变量、循环体和循环终止条件 循环结构 for循环的一般结构 for(表达式1; 表达式2; 表达式3) 语句; while循环的一般结构 while (表达式) 语句; do-while循环的一般结构 do 语句; while (表达式);,程序举例,程序2-7:计算这一天是这一年的第几天,int monthDays = 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31
18、, 30, 31 ; int main() int year, month, day; cout year month day; int sumDays = day;/总天数 for (int i = 1; i month; i+) /忽略闰年 sumDays = sumDays + monthDaysi; cout year - month - day is cout year 年的第 sumDays 天n; system(pause);return 0; ,程序举例,程序2-8:输入两个整数m,n,计算其最大公约数,int main() int a, b; cout a b; int m
19、= a, n = b; int r = m%n; while (r != 0) m = n;n = r;r = m%n; cout a , b 的最大公约数是: n endl; system(pause);return 0; ,程序举例,程序2-9:用公式求的近似值,直到最后一项的绝对值小于10-8为止。,#include #include #include using namespace std; int main() double s = 0, t = 1; int sgn = 1, k = 1;,do s = s + t; k = k + 2; sgn = sgn*(-1); t = s
20、gn / double(k); while (fabs(t) 1e-8); cout setprecision(15) s * 4 endl; system(pause); return 0; ,返回目录,2.5 数组,一维数组,概念: 同一类型的多个数据分配一段连续的内存空间 定义: 数据元素类型数组变量名称数组元素的个数; 数据元素类型数组变量名称=初值,初值,.; 初始化: 全部初化,int a=1,2,3,4,5,6; 部分初始化,int a5=1,2,3,; 访问: 下标运算符,数组名下标,程序举例:数组使用,#include #include using namespace std
21、; int main() /数组逆置处理 int myArray = 1, 2, 3, 4, 5 ; int n = sizeof(myArray) / sizeof(myArray0);/计算数组元素的个数 int i, j,tmp; for (i = 0, j = n - 1; i j; i+, j-) tmp = myArrayi; myArrayi = myArrayj; myArrayj = tmp; for (i = 0; i n; i+) cout setw(5) myArrayi; cout endl; system(pause); return 0; ,二维数组,概念:数组的
22、元素又是数组,可看作矩阵 定义: 数据元素类型数组变量名称数组元素的行数数据元素的列数; 数据元素类型数组变量名称数据元素的列数=初值,初值,.; 初始化 分行初始化:例 int a3=1,4,5; 不分行初始化:例 int a3=1,2,3,4,5; 访问: 数组名下标下标,程序举例:设计二维数组程序,输出九九乘法表:,#include #include #include using namespace std; #define COL 10 #define COLUMN 10 int main() int mat COLCOLUMN = 0 ; int i, j; for (i = 1;
23、i COL; i+) /矩阵元素赋值,乘法表 for (j = 1; j = i; j+) mat ij = i*j; for (i = 1; i COL; i+) /输出乘法表 for (j = 1; j = i; j+) cout setw(3) j * i = mat ij; cout endl; ,/将结果写到文件中 ofstream outFile(res.txt);/定义输出文件流 for (i = 1; i COL; i+) for (j = 1; j = i; j+) /将结果写到输出文件流中 outFile setw(3) j * i = mat ij; outFile en
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 案例 教程 PPT new 完整版 课件 全套 教学 整套 电子 教案 讲义
限制150内