收藏 分享(赏)

C++1-new.ppt

上传人:ysd1539 文档编号:7016708 上传时间:2019-05-01 格式:PPT 页数:57 大小:458KB
下载 相关 举报
C++1-new.ppt_第1页
第1页 / 共57页
C++1-new.ppt_第2页
第2页 / 共57页
C++1-new.ppt_第3页
第3页 / 共57页
C++1-new.ppt_第4页
第4页 / 共57页
C++1-new.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

1、1,第一章 概述,软件学院 张振琳,C+语言程序设计,2,课程目标,会用Visual C+6.0集成开发环境编写和调试程序; 掌握C+语言的概念、语法规则和编程方法; 理解面向对象程序设计的基本思想; 会用面向对象的程序设计方法,开发简单的应用程序。,3,第一章 C+概述,1.1 C+发展简史 1.2 简单的C+程序实例 1.3 基本语法成分 1.4 数据的输入和输出 1.5 编译预处理 1.6 Visual C+简介,4,1.1 C+发展简史,C+在国内通常被读做“C加加”,而在欧美国家通常读做“C PLUS PLUS”,该语言的前身是C语言。1972年,Bell实验室的丹尼斯里奇为了编写U

2、NIX设计的了C语言。C语言迅速成为应用最广泛的系统程序设计语言。,5,C语言被公认为是非常好的一种高级语言,但它也有一些缺陷,例如检查机制相对薄弱、缺少支持代码重用的语言结构,造成用C语言开发大程序较困难。为了克服C语言存在的缺点, Bell实验室的比样尼斯卓司朱开始对C语言进行改进和扩充,将“类”的概念引入了C语言,构成了最早的C+语言。,6,C,Simula 67,带类的C,类,基础,1979年,C+ 1.0,1985年,C+ 2.0,1989年,C+ 3.0,1993年,类及派生类 公有和私有 构造函数,析构函数 友元 内联函数 赋值运算符的重载,虚函数 函数和运算符的重载 引用 常量

3、Const,多重要继承 保护成员 对象的初始化与赋值的机制 抽象类 静态成员函数 CONST成员函数,模板,7,C+与C的区别很多初学者认为C+仅仅是C语言的扩充与补充,这是错误的认识。 C+与C语言最大的不同是在于解决问题时的思维方式, C+采用面向对象思维,而C语言则采用面向结构思维。 面向结构思维就是将一个大程序分成若干个很小的结构,每个结构都完成了一个或多个功能,所有结构集合起来就可以完成一个大程序的编写工作。,8,C+与C的区别面向结构的编程思想在20世纪80年代前期比较流行,但是到80年代后期,它的弊端暴露出来了。 在程序维护性方面存在缺陷。 几乎没有支持代码重用的语言结构。 随着

4、软件工程的发展,软件越来越大,面向结构程序设计带来的问题也越来越多,越来越严重。所以提出了面向对象的设计思想。,9,C+与C的区别面向对象的编程思想有如下优势: 支持面向对象的机制 可重用性、可扩充性、可维护性、可靠性都有很大提高。,10,C+的应用领域web开发已经是脚本语言的天下; 企业级开发已经是java和.NET的天下; 系统级开发采用C/C+; 各种语言都有自己的强项或特点,语言本身并不重要,重要的是思想,就像武侠小说中的高手一样随便摘根草草都能要你命;不过从学习来讲,先学C+,再学其他语言就很有优势,早期很多JAVA程序员就是C+转行过来的,java也保留了很多C+的东西,11,C

5、+的应用领域操作系统: Microsoft: 一般而言微软的产品都带有不同程度的VC+色彩,下面列出一些: Windows XP、 Windows NT(NT4 and 2000)、 Microsoft Office、 Internet Explorer、 Visual Studio (Visual Studio的一些部分,诸如基类库配装.NET框架用C#编写,但是C#编译器用C+编写)、Exchange、SQL IBM: OS/400、K42: 一种高性能开源的多处理器操作系统内核 设备驱动程序: Sun: HotSpot 、Java虚拟机用C+编写(这是一个技术前沿的性能换代产品,用来取代

6、用C编写的传统虚拟机。) Sun公司编译器的主要部分用C+编写。,12,C+的应用领域 游戏:星际争霸,魔兽争霸,魔兽世界,微软:所有游戏。 图形处理:TrackEye 和TEMA, 世界上顶尖动作分析软件 (基于数字图像处理)。多数汽车厂商用它分析碰撞试验效果,也有的汽车厂商和飞机厂商用它来分析新模型性能。 Maya 用于制作电影特效, 包括星球大战前传I,蜘蛛侠,指环王,精灵鼠小弟等。科学计算: Geant4:粒子干涉模拟,用于高能物理、核物理试验,太空和医疗应用的工具箱。火星探测器自动驱动系统 (包括场景分析和路线预测)以及很多地面支持软件。 网络软件:C+拥有很多成熟的用于网络通信的库

7、,其中最具有代表性的是跨平台的、重量级的ACE库,该库可以说是C+语言最重要的成果之一,在许多重要的企业、部门甚至是军方都有应用。 分布式应用: Google: 网络搜索引擎、 Amadeus: 正在运行中最大的欧洲非军用数据中心 (每秒超过5000个交易,连接20万个终端,24/7负载)大多数开发用C+语言。所有基于Unix服务器的应用全部用C+开发;AT&T:美国最大的电信供应商其中的800 服务,配置系统,网络失败应急系统 Catia v5,很领先的CAD软件, 所有近来的空中客车 (A380),还有波音787的软件全部用C+编写,13,C+的应用领域 移动(手持)设备。 Apple:搜

8、索器(Finder)、 IOKit设备驱动 、 AppleWorks、 iPad用户接口 嵌入式软件: MAN B&W Diesel A/S:用于大型和巨型轮船。 两个巨大的柴油机(超过10万马力)电子控制燃料注入系统和排气阀控制系统。中等规模的严格实时嵌入式系统,完全24/7分布式容错恢复 。除了几百行汇编,其余全部用高质量的C+代码编写。 发动机和船板机器的几个巨大的支撑系统全部用C+编写。 几个内部的高级商业应用,用于发动机设计和设计信息存储。 Medimage:所有产品,从医疗图像显示系统到从一个机器到其他机器通信服务软件,通信用不论用modem还是TCP/IP都用C+编写 。该产品支

9、持的平台有Mac OS和Windows。,14,C+的学习特点C+是为了解决C语言带来的问题而创造的,C语言是C+的基础,C+与C语言在很多方面是兼容的。 对于C语言不同基础,有不同的学习方法: 较好的同学:重点是转换思维方式; 一般的同学:需要对一些模糊知识点巩固; 薄弱的同学:全当自己没有学过C,无需转换。,15,C+的版本以及安装问题通常使用Microsoft Visual C+ 6.0,值得注意的是,有些中文版的编译器偶尔出现不能编译的错误,是汉化所致。具体的安装方法很简单,按照提示进行即可。,16,1.2 简单的C+程序实例,例:简单的屏幕输出小程序 #include int mai

10、n() std:cout“我喜欢C+n”;return 0; /这是一段输出“我喜欢C+”的小程序。,17,1.2 C+程序说明预处理语句,1.字符#,这是预处理标志,用来对文本进行预处理操作。预处理标志表示该行代码要最先进行处理,所以,它在编译器编译代码之前运行。 2.include是个预处理指令,表示将其后面尖括号内的文件读入。 3.文件iostream(输入输出流)是个标准库,它包含了众多的成员函数,每个函数都有自身的作用。比如,cout就是其中之一。,18,1.2 C+程序说明-main函数,4.main函数是主函数,每个c+程序都一个main函数。 5.每个函数都要标明其返回值类型。

11、main函数的返回值被标为int,也就是说,main函数结束后,要向操作系统返回一个整数。 6.“”表示函数的开始,“”表示函数的结束。,19,1.2 C+程序说明输出语句,7.用标准函数中的cout输出一行信息。 cout语句格式:cout表达式表达式; 语句功能:将表达式的值一个接一个地显示在屏幕上 说明:“ ” 左移运算符,用于连接cout与表达式,语句中可以有多个表达式,且用分隔.8.“n”是格式符号,其作用是换行并将光标定位到第2行的开头。,20,1.3 输出语句的使用,21,1.3 输出语句的使用,22,1.3 输出语句的使用,“t”也是一个格式符,该符号是制表符,作用相当于按一下

12、TAB键,此处的作用是使后面输出的数据对齐。 endl是系统提供的函数,实现回车换行的作用.在标准库中还有一个cin对象,它用来接收键盘输入,其用法与cout相反,cin后面加右移运算符“”.,23,1.4 std:的介绍,前面的例子中可以发现cout和endl之前总有一个std: std:是一个命名空间标识符,C+标准库中的函数或者对象都是在命名空间std中定义的。所以我们要使用的标准库中的函数或者对象都要用std来限定。 使用标准库文件iostream时,要写上std,如果不喜欢重复使用std,也可以有另外的方法。 1、在main函数的开头使用两行语句: using std:cout; u

13、sing std:enl; 2、在main函数的开头使用一行语句: using namespace std;,24,1.4 std:的介绍,方法1: #include int main() using std:cout;using std:endl;cout“五年级一班数学成绩表n“;cout“第一名徐帆的成绩:t“100;coutendl;cout“第二名张有的成绩:t“90+9;coutendl;return 0; ,25,1.4 std:的介绍,方法2: #include int main() using namespace std;cout“五年级一班数学成绩表n“;cout“第一名徐

14、帆的成绩:t“100;coutendl;cout“第二名张有的成绩:t“90+9;coutendl;return 0; ,26,1.4 std:的介绍,方法3: #include int main() cout“五年级一班数学成绩表n“;cout“第一名徐帆的成绩:t“100;coutendl;cout“第二名张有的成绩:t“90+9;coutendl;return 0; ,27,1.5 iostream与iostream.h的区别,iostream.h为非标准的输入输出流,.h的头文件是c语言格式的,由于当时还没有命名空间这个说法,也就不存在std这个命名空间标识符。 iostream为标准

15、输入输出流,它是C+规范的带有命名空间的头文件,它包含在std命名空间内。,28,1.5 iostream与iostream.h的区别,C+中引入命名空间(namespace)这个概念的目的是为了减少和避免命名冲突。,29,1.6 重名问题,#include namespace a /定义命名空间a int b=5; namespace c /*定义命名空间b*/ int b=8; int main() int b=3;std:coutb“ “a:b“ “c:bstd:endl;return 0; ,30,1.6 重名问题,考虑程序的输出是什么?,3 5 8,31,总结: (1) C+程序是一

16、个或多个函数构成的, main函数一定要有。 不管有多少个函数,执行从main函数开始,也在main函数中结束。 (2) 在一个函数内,语句是从上到下顺序执行的。 (3) 单行注释可用/,多行注释可用/* */,它们只是增加程序的可读性。 (4) 书写形式自由。一行内可以写多条语句,一条语句也可以分写在不同行上。每个语句的最后必须是一个分号 。 (5) C +语言中大小写字母是不同的。,32,1.7 初步了解函数,函数是完成一定功能的执行代码段,它是c+中的重要概念,也是程序设计的重要手段。,输出函数如下: void show() std:cout“hello world“; void 表示该

17、函数仅仅有执行功能,而不会返回一个值。 show是函数名,()列出该函数需要的参数。,33,一个简单例子,例子: #include void show() std:cout“hello world“; Int main() std:cout“main函数开始n”; show(); std:cout“main函数结束n”; return o; ,34,输出结果,输出: main函数开始 hello world main函数结束注意:main函数与普通函数的区别,一般情况下,普通函数需要被激活或者调用才能起作用,而main函数则由操作系统直接调用。,35,函数的传参,#include using

18、namespace std; int add(int x,int y) return x+y; int main() int a,b,c; couta; cinb; c=add(a,b); cout“a+b= “cendl; return 0; ,36,函数运行结果,37,函数的声明与定义,在程序中使用函数时,必须先声明它然后再定义,声明的目的是告诉编译器将要定义的函数的名字,返回值的类型以及参数。而定义则是告诉编译器这个函数的功能是什么。 演示函数声明与定义的例子如下:,38,#include using namespace std; int add1(int x,int y); /函数声明

19、int main() int i=3,j=4; cout“i= “iendl; cout“j= “jendl; cout“i+j=“add1(i,j)endl; return 0; int add1(int x,int y) /函数定义 return x+y; ,39,40,函数的声明仅仅是提供程序员和编译器该函数的一些基本信息,它的参数名没有实际意义,因此x,y也可以省略不写:int add(int,int)函数声明与定义的区别:声明只是告诉编译器将要有这样一个函数,在内存中并不为这个函数分配内存; 定义使会给这个函数分配内存。,41,局部变量,在函数内部声明的变量为局部变量,局部变量的意思

20、 即该变量只存活在该函数中,如果函数调用结束,则变量的寿命也结束。,42,#include using namespace std; void swap(int ,int ); int x=3,y=4; int main() int x=3000,y=4000;cout“在main函数中,调用swap函数之前,x的值为:“x“,y的值为:“yendl;swap(x,y);cout“在main函数中,调用swap函数之后,x的值为:“x“,y的值为:“yendl;return 0; void swap(int x,int y) cout“在swap函数中,调用swap函数之前,x的值为:“x“,

21、y的值为:“yendl;int z;z=x;x=y;y=z;cout“在swap函数中,调用swap函数之后,x的值为:“x“,y的值为:“yendl; ,43,运行结果,44,全局变量,在任一函数外部定义的变量为全局变量。 全局变量对程序中的任何函数都有效,包括main()函数。,#include using namespace std; void func(); int x=3,y=4; int main() cout“main函数中n“;cout“x:“x“ y:“y;coutendl;func();return 0; void func() cout“func函数中n“;cout“x:

22、“x“ y:“y; ,46,#include using namespace std; void func(); int x=3,y=4; int main() int x=5,y=6;cout“x:“x“ y:“y;return 0; ,47,思考,考虑两个程序的输出是相同的吗? 应该分别是什么?,48,1.8 基本语法成分,1. 基本符号:(1) 字母:52个AZ az(2) 数字字符:10个0 9(3) 下划线 _ 。(4) 特殊符号:一般作运算符,如+、-、*、/、& 2关键字有特定含义的、专用的单词。如int、char、break、for、define等。不能作变量名、符号常量名、函

23、数名、类名等。,49,3. 标识符:由字母、数字和下划线三种字符组成。但必须以字母或下划线开头。合法标识符。A2 student area_of_circle num _dd Int不合法标识符2A A-B area of circle M.D int 大小写字母不等价,习惯上:变量名小写,符号常量大写。 关键字不能作标识符用。例如:int、define等关键字不能作为标识符用。 定义标识符时最好能简洁且“见名知义”,以提高程序的可读性。如min表示最小值,average表示平均值,day表示日期。 在C+中,标识符中不能有汉字,但是字符串和注释可以有汉字。,50,1.9 编译预处理,头文件:

24、.h 如stdio.h、iostream.h 函数说明、常量定义作用:头文件的内容插入到源文件(.cpp)文件中。 (1)#include 从系统指定的文件夹中找 (2)#include “文件名“从当前文件夹中找,再到系统指定的文件夹中找 注意:一条文件包含命令只能包含一个文件,编写源程序,预处理,编译,连接,执行,预处理程序,编译程序,51,1.6 Visual C+简介,项目工作区,输出窗口,代码窗口,52,简单C+程序的编写、运行过程1创建一个空工程;Win32 Console Application C+ Source File 2创建一个C+源文件,输入源程序;3进行编译、连接、运

25、行。编译|编译TEST.cpp CTRL+F7编译|构建TEST.exe F7编译|执行TEST.exe CTRL+F5,53,编译连接后生成的主要文件,54,程序调试1语法错误错误信息 D:TESTTEST.CPP(6) : error C2146: syntax error : missing ; before identifier cin警告信息D:TESTTEST.CPP(6) : warning C4244: = : conversion from const double to int, possible loss of data2逻辑错误3调试设置断点:Insert/Remove

26、 Breakpoint F9运行到断点:编译|开始调试|去 F5,55,习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式,main( ) . ,main( ) int i , j , sum;sum=0;for(i=1; i10;i+)for(j=1;j10;j+)sum+=i*j ;coutsumendl; ,优秀程序员的素质之一:使用TAB缩进对齐有足够的注释有合适的空行,格式特点:,56,1.一个C语言源程序可以由一个或多个源文件组成。 2.每个源文件可由一个或多个函数组成。 3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。 4.源程序中的预处理命令通常应放在源文件或源程序的最前面。 5. 每一个语句都必须以分号结尾。但预处理命令、函数头和花括号“”之后不能加分号。 6.标识符、关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。 7.注释不产生编译代码,注释符/* */不能嵌套。,结构特点:,57,课后练习,实验篇 实验一,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报