收藏 分销(赏)

第1章 C++语言基础.ppt

上传人:s4****5z 文档编号:14005692 上传时间:2026-05-26 格式:PPT 页数:51 大小:223.50KB 下载积分:10 金币
下载 相关 举报
第1章 C++语言基础.ppt_第1页
第1页 / 共51页
第1章 C++语言基础.ppt_第2页
第2页 / 共51页


点击查看更多>>
资源描述
*,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,第1章,C+,语言基础,C+,是一种以,C,语言为基础开发的高级语言,一般认为,C,是,C+,的一个子集,或基础语言,但二者又是完全独立的。,C+,适合大型程序的开发与设计,C,则适合于更底层的项目开发,1.1 C+,语言概述,1.1.1,标准,C+,C+,发明者:,Bell,实验室,Bjarne,Stroustrup,博士,C+,第一定义:“带类的,C”,C+,保留了,C,作为一个子集,C+,从,Simula,语言引入了类的概念,包括派生类和虚函数;借鉴了,Algol,语言的运算符重载等特性。,1.1.1,标准,C+(,续),起初,,C+,编译系统只是一个预编译系统。,1988,年,出现一个真正的,C+,编译系统。,1998,年,,ISO/ANSI C+,标准正式通过并发布。,总体上,,C+,是一种混合语言,是集过程化设计、面向对象、基于对象和泛型算法等多种技术于一体的编程语言。,学习,C+,最重要的是集中关注概念,不要迷失在语言的技术细节中。,1.1.2 C+,语言的简单程序,#include,using namespace std;,int,main(),int,x=10,y=20;,int,z=,x+y,;,cout,“sum is”z,endl,;,return 0;,输出结果:,sum is 30,1.1.2 C+,语言的简单程序(续),1 main,函数与程序结构,一个完整的程序有且只能有一个,main(),主函数或入口函数,标准,C+,要求,main,函数的声明类型为,int,,,只要在末尾加上,return 0;,1.1.2 C+,语言的简单程序(续),C+,的程序结构,预处理命令部分,函数声明部分,类型定义部分,main,函数定义,其它函数定义,函数由函数体构成,一般包括变量定义、输入、运算和输出等内容。,1.1.2 C+,语言的简单程序(续),2,头文件包含与名字空间,固定写法:,#include,/,头文件包含,using namespace std;,/,名字空间声明,可以将一个名字空间理解成包含若干定义的一个区域的名字。,标准,C+,所有定义都属于名字空间,std。,1.1.2 C+,语言的简单程序(续),3,注释,+的“,块注释,”:,*,和,*,为分界符号,与中的用法一致。,+的“,行注释,”:以,/,符号开始到一行的结束。,使用注释符时的注意事项:,标志符/和*,/和/之间不可以分开。,注释符对“/*”和“*/”不可以嵌套。,注释符/之后的注释结束于本行。,/和/*与*/可以嵌套使用。,1.1.2 C+,语言的简单程序(续),思考题:下列程序是否正确?,#,include,using namespace std;,int,main(),/*,下面程序将在终端上输出/*你好*/的字样*/,cout,“,你好!”,endl,;,/*/,输出字符*/,return 0;,/*/,正常返回,1.1.2 C+,语言的简单程序(续),4,输入输出对象,使用,I/O,流必须要包含“,iostream,”,头文件。“#,include”,告诉,C+,编译器,将文件,iostream,内容插到此程序中。,iostream,中定义了一组标准类,输入输出流(,I/O stream),类。,流八位的字节序列。,cout,是标准输出流类的一个预定义的对象,代表控制台输出设备(,console out),如:显示器。,cin,是,cout,的反义词,控制台输入,如键盘。,1.1.2 C+,语言的简单程序(续),cin,与,cout,说明,用来取代,scanf,和,printf,,,更安全、更方便。,1 格式控制符与输出数据的类型不一致,2,scanf,(),的第二个参数应是一个指针参数,以上错误,C,编译器不能检查出来。,#,include,void main(),int,i;,float f;,scanf(“%f”,i,);,printf(“%d”,f,);,#,include,using namespace std;,void main(),int,i;,float f;,cin,i;,cout,”在,C+,中仍保持,C,中“,右移,”功能,但用于输入时扩充了其功能,表示将从标准输入流(键盘)读取的数值传送给右方指定的变量。,如:,cin,x;,/,键盘输入的数据自动转换为变量,X,的类型,并存入变量,X,内。,可以,连续输,,如,cin,abc;,不用顾忌类型。它按书写顺序从键盘上提取所要求的数据,并存入对应的变量中。,用,cin,输入时,要注意使用,间隔符,(空格、回车、,Tab,键)。,1.1.2 C+,语言的简单程序(续),cout,中运算符“”在,C+,中保持,C,中“,左移,”功能,表示将右方变量的值写到标准输出流,cout,(,即屏幕)中。“”允许用户连续输出一串数据或表达式。,可以使用格式控制(与,C,兼容),,默认的转换基数是十进制。,如:,dec,(,十进制),hex(,十六进制),oct,(,八进制),endl,t,n,等。,1.1.2 C+,语言的简单程序(续),C,中换行用,n;,C+,中换行用,endl,;,如:,cout,x,endl,;,cout,yn;,等价于,printf(“%dn”,x,);,#,include,using namespace std;,void main(),int,x=25;,cout,hex,x,dec,x,oct,xn;,输出结果:19 25 31,1.1.2 C+,语言的简单程序(续),5 灵活的局部变量声明,下面局部变量声明是否正确?为什么?,f(),int,i;,i=10;,int,j;,j=25;,/,1.1.2 C+,语言的简单程序(续),6,编码习惯,尽量保持好的书写风格是必须养成的习惯。,要注意程序的书写格式,如缩进格式和成对符号的对齐排列等。,1.2,面向对象的程序设计思想,C,向,C+,过渡的实质是由,过程化程序设计,思想向,面向对象程序设计,的思想的转变。,程序设计语言的发展,硬件发展,软件危机,结构化程序设计,软件工程,面向对象技术,机器码,低级,高级;,1.2.1 过程化的程序设计,面向过程编程,它是早期的程序设计范型,它考察整个设计过程,以,功能分解,为中心。,面向过程的特征,早期程序设计者认为:,程序=数据结构 +算法,这个公式贯穿于整个程序设计的始终,无论程序是系统程序还是模块程序。,1.2.1 过程化的程序设计(续),过程化的问题处理思路形成了一套有效的程序设计方法,称为,结构化方法,。,程序设计采用自顶向下,逐步细分的方法展开。,模块化,使用三种基本控制结构:顺序、选择、循环。,三种结构的共同点:每种结构只有,一个入口,和,一个出口,。,1.2.1 过程化的程序设计(续),过程化方法应用举例:,int,main(),开始函数();,绘制画面函数(初始棋局);,重复下述步骤,走棋函数(黑子);,如果(判断输赢(棋局)已定出输赢)停止重复;,走棋函数(白子);,绘制画面函数(棋局);,如果(判断输赢(棋局)已定出输赢)停止重复;,输出结果函数(棋局);,结束函数();,1.2.1 过程化的程序设计(续),面向过程的不足,强调功能分解,为了实现功能,有时数据结构屈从于算法,,结果造成数据结构和过程的分离,。,由于过程化设计中的数据与过程是相互独立的,一个过程完全可以作用到并不相关的数据上,也不能保证对数据操作的合理性,数据对于算法完全是被动的。,此种操作是一种“,谓语宾语,”结构。,对于庞大、复杂的程序难以开发和维护,1.2.2,面向对象的程序设计,面向对象编程,是一种以对象为中心的,程序设计范型,。也可以说是一套概念和想法,它与,面向过程,程序设计相对应,是一种用计算机程序来描述实际问题的思路。,面向对象的特征,OO(Object,-Oriented),程序设计者认为:,程序=对象 +消息,这个公式表明面向对象的程序以对象为程序组成单位,以消息为动力(驱动)。,1.2.2,面向对象的程序设计(续),面向对象方法应用举例:,int,main(),定义对象,包括黑棋选手,白棋选手,裁判,组织者;,裁判确定比赛开始();,组织者绘制画面();,重复下述步骤,黑棋选手.走棋();,如果(裁判.判断输赢()已定出输赢)停止重复;,白棋选手.走棋();,组织者.绘制画面();,如果(裁判.判断输赢()已定出输赢)停止重复;,组织者.输出结果();,裁判.确定比赛结束();,1.2.2,面向对象的程序设计(续),面向对象的好处,以对象为单位组织程序,更,接近人思维,方式,,OO,借鉴了认知论的观点。,不同对象各司其职,对象自身行为的实现方式的改变不会影响到其它对象,对象间通过互通消息实现合作。,从实现上看,对象的每次操作都是在该对象接收到一定消息后的自主行为(用“对象.函数名”形式表示),具有“主语谓语”的形式。,1.2.2,面向对象的程序设计(续),面向对象和面向过程,两者不是对立的,面向对象是面向过程发展到一定阶段的产物,是程序设计的,高级阶段,,面向对象以面向过程为,基础,。,二者的适合情况,对于一些简单的问题,基于过程的解决方法是十分有效的。,对于大型、复杂的系统,采用面向对象的方法更能显示出优势,有利于利用对象构成软件“,积木插件,”,进而在一定的程度上解决软件重用的难题。,1.3,面向对象程序设计的主要特点,面向对象系统最突出的特征,封装性、继承性、多态性,(三个特性),封装的概念和数据抽象(类)密切相关,现实中的例子,人们使用录音机,,只要,知道键的,功能,即可(放音、录音、停止、倒带等),,不需要,知道这些功能是如何,实现,的,也不需要知道其内部电路或构造。,1.3,面向对象程序设计的主要特点(续),1,类与封装,类的概念,类是,一组,具有相同属性和行为特征的,对象的抽象,描述。,类和对象的关系,抽象和具体,的关系,类是多个对象的归纳和总结(分类的结果),对象又是类的个体实物,一个对象就是类的一个,实例,。,1.3,面向对象程序设计的主要特点(续),类和对象,类型和变量,类和对象实际上就是,C,的数据类型和变量,只不过在,C+,中,,统称,为类和对象。,对象的状态,类没有具体的值,对象才有,对象的这些具体的值称为对象的,状态,。,类 对象,实例化,声明,1.3,面向对象程序设计的主要特点(续),对象状态举例:,Teacher,LiMing,;,LiMing.age,=,30,;,LiMing.degree,=“,doctor,”;,LiMing.title,=“,professor,”;,名称,LiMing,age,30,degree,doctor,title,professor,1.3,面向对象程序设计的主要特点(续),类的结构,类的结构和对象的组成是严格对应的!,类中的成分有两种:数据成员和成员函数。,类,数据成员,对应对象的,属性,,也叫做,成员变量,。,成员函数,对应对象的,方法,,是类功能的载体。,1.3,面向对象程序设计的主要特点(续),类的结构实例,数据成员,成员函数,class,Teacher,int,age;,char*degree;,char*title;,public,:,void Study();,void Teach();,int,TellAge,();,;,1.3,面向对象程序设计的主要特点(续),*,类和对象的作用周期,类只在源程序的代码中出现,它是编译器生成对象的,说明书,,并不会在运行的程序中出现,即类只在,编译时存在,;,对象作为类的实例是在运行的程序中出现,并占有内存空间,它是,程序运行时存在的实体,,是机器指令操作的内容。,1.3,面向对象程序设计的主要特点(续),对象的特性,对象是面向对象程序设计的最重要的,细胞和基石,,它有如下的特性:,1,封装性,隐藏内部细节,2,模块独立性,实体的抽象(类),3,动态连接性,消息机制,4,易维护性,更新在边界内,1.3,面向对象程序设计的主要特点(续),对象的交互,现实世界的对象并非孤立的实体,它们间存在着,联系,,从而构成不同的系统。,面向对象程序设计中,对象之间的联系我们称之为,对象的交互,。,对象交互的实现,在,OOP,中,对象交互的实现要用到一个重要的工具:,消息,。,1.3,面向对象程序设计的主要特点(续),对象交互图示,消息,对象的交互中介(请求或通知),消息传递,面向对象的程序设计中,对象协作机制,对象1,对象2,消息,1.3,面向对象程序设计的主要特点(续),消息传递与调用,实际上,对象的消息传递对应于程序设计中的,过程(函数)调用,。,比如:键盘对象的按键消息传给显示对象,消息的发送和接收,发送消息的对象为,发送者,或,请求者,,接收消息的目标对象为,接收者,或,服务者,(有处理消息的能力)。,1.3,面向对象程序设计的主要特点(续),消息的处理简单模型,消息的处理就是过程(函数)的,执行,。,某过程,Teacher t;,/,t.Study,(,实参,);,/,return 0;,;,代码后半部分,消息传递给,t,代码前半部分,某过程,代码在中,对象,t,的内容,/执行代码,Study(,参数),1.3,面向对象程序设计的主要特点(续),消息的内容组成,包含有接收者的,名字,,请求的,方法,,一个或多个,参数,。,消息机制可以扩充的很复杂,消息的性质,1、一消息可以发给多个对象,2、一对象可以接受多个消息,3、对象可以响应消息,也可不响应,1.3,面向对象程序设计的主要特点(续),2,继承,类间的承袭关系,继承所表达的是对象类之间的相互关系,这种关系让某类对象可以使用另外一类对象的特征和能力。,父母,孩子,继承,1.3,面向对象程序设计的主要特点(续),继承类之间的几个特性,1 类间具有,共享的特征,(数据和代码共享),2 类间具有差别和,新增部分,(非共享内容),3 类间具有,层次结构,假如有类,B,继承类,A,,则类,B,的对象具有类,A,的一切特征,,此时,类,A,为,基类,或,父类,或,超类,,类,B,为,派生类,或,子类,基类,派生类,继承,1.3,面向对象程序设计的主要特点(续),继承机制的优点,1,代码重用,,,避免重复开发,2,增强一致性,,,统一的处理接口和界面,3,代码进化,,,高效的扩充功能,为程序员提供了一种,组织、构造,和,重用,类的方法。,1.3,面向对象程序设计的主要特点(续),继承的分类,从继承源上分,继承分为,单继承,和,多继承,窗口,对话框,玩具,车,玩具车,单继承 多继承,1.3,面向对象程序设计的主要特点(续),继承的分类,从继承内容上分,继承分为,取代继承、包含继承、受限继承,和,特化继承,1,取代继承,子类覆盖了父类的内容,2,包含继承,子类含有父类(的内容),3,受限继承,子类退化父类的内容,4,特化继承,子类比父类有更多内容,1.3,面向对象程序设计的主要特点(续),继承与封装的关系,封装是继承的基础,;,继承是封装的发展,,是为了更好的、更大规模的封装。,继承和封装的相似性,它们都提供了,共享代码,的手段:都是通过,this,指针,来完成程序运行时的代码共享。,1.3,面向对象程序设计的主要特点(续),3,多态,面向对象系统中,不同的,对象,收到,相同的消息,时产生多种,不同行为方式,的现象。,C+,语言支持两种多态性,编译时多态性,和,运行时多态性,C+,中,,编译时多态,是通过,重载,实现的,而,运行时多态,是通过,虚函数,实现的。,1.3,面向对象程序设计的主要特点(续),重载的概念,重载是指用,一个标志符,(符号)来实现,多个功能,或行为的现象。,重载包括,函数重载,和,运算符重载,函数重载,使用同一个名字的多个函数定义。,运算符重载,符号使用的重新定义。,实质同函数重载,。,1.3,面向对象程序设计的主要特点(续),重载的目的,更好地表达,行为共享,,重载的函数或运算符一般都具有,相似的操作,。,重载的直接益处,减少了程序员的记忆负担。,例如:,print(char,*);,print(“Hello,”);,print(int,);print(50);,1.3,面向对象程序设计的主要特点(续),面向对象语言应该具有下述特征:,支持类和对象(包括特性,如,封装,等),提供类间的,继承,机制,支持,多态,(重载机制),上述实际上就是面向对象系统的,三大特性,。,1.4 C+,集成化开发环境,C+Builder 6.0,Visual C+6.0,第1章 结束,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服