C++第一章

上传人:ning****hua 文档编号:243757302 上传时间:2024-09-30 格式:PPT 页数:33 大小:195.50KB
返回 下载 相关 举报
C++第一章_第1页
第1页 / 共33页
C++第一章_第2页
第2页 / 共33页
C++第一章_第3页
第3页 / 共33页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版副标题样式,C+,程序设计,中国高等院校计算机基础教育课程体系规划教材,谭浩强 编著,总 目 录,第1篇 基 本 知 识,第1章,C+,的初步知识,第2章 数据类型与表达式,第2篇 面向过程的程序设计,第3章 程序设计初步,第4章 函数与预处理,第5章 数组,第6章 指针,第7章 自定义数据类型,第3篇 基于对象的程序设计,第8章 类和对象,第9章 关于类和对象的进一步讨论,第10章 运算符重载,第4篇 面向对象的程序设计,第11章 继承与派生,第12章 多态性与虚函数,第13章 输入输出流,第14章,C+,工具,第1章,C+,的初步知识,第2章 数据类型与表达式,第1篇基 本 知 识,第1章,C+,的初步知识,*1.1,从,C,到,C+,*1.2,最简单的,C+,程序,1.3,C+,程序的构成和书写形式,1.4,C+,程序的编写和实现,1.5 关于,C+,上机实践,计算机诞生初期,人们要使用计算机必须用机器语言或汇编语言编写程序。世界上第一种计算机高级语言诞生于1954年,它是,FORTRAN,语言。先后出现了多种计算机高级语言。其中使用最广泛、影响最大的当推,BASIC,语言和,C,语言。,BASIC,语言是1964年在,FORTRAN,语言的基础上简化而成的,它是为初学者设计的小型高级语言。,C,语言是1972年由美国贝尔实验室的,D.M.Ritchie,研制成功的。它不是为初学者设计的,而是为计算机专业人员设计的。大多数系统软件和许多应用软件都是用,C,语言编写的。,*1.1 从,C,到,C+,但是随着软件规模的增大,用,C,语言编写程序渐渐显得有些吃力了。,C+,是由,AT&T Bell(,贝尔)实验室的,Bjarne,Stroustrup,博士及其同事于20世纪80年代初在,C,语言的基础上开发成功的。,C+,保留了,C,语言原有的所有优点,增加了面向对象的机制。,C+,是由,C,发展而来的,与,C,兼容。用,C,语言写的程序基本上可以不加修改地用于,C+。,从,C+,的名字可以看出它是,C,的超集。,C+,既可用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。,C+,对,C,的“增强”,表现在两个方面:,(1) 在原来面向过程的机制基础上,对,C,语言的功能做了不少扩充。,(2) 增加了面向对象的机制。,面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率。,不要把面向对象和面向过程对立起来,面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。,学习,C+,,既要会利用,C+,进行面向过程的结构化程序设计,也要会利用,C+,进行面向对象的程序设计。本书既介绍,C+,在面向过程程序设计中的应用,也介绍,C+,在面向对象程序设计中的应用。,例1.1 输出一行字符: “,This is a C+ program.”。,程序如下:,#,include /,包含头文件,iostream,using namespace std; /,使用命名空间,std,int,main( ),cout,This is a C+ program.;,return 0;,在运行时会在屏幕上输出以下一行信息:,This is a C+ program.,*1.2 最简单的,C+,程序,用,main,代表“主函数”的名字。每一个,C+,程序都必须有一个,main,函数。,main,前面的,int,的作用是声明函数的类型为整型。程序第6行的作用是向操作系统返回一个零值。如果程序不能正常执行,则会自动向操作系统返回一个非零值,一般为-1。,函数体是由大括号 括起来的。本例中主函数内只有一个以,cout,开头的语句。注意,C+,所有语句最后都应当有一个分号。,再看程序的第1行“#,include ”,,这不是,C+,的语句,而是,C+,的一个预处理命令,它以“#”开头以与,C+,语句相区别,行的末尾没有分号。,#,include ,是一个“包含命令”,它的作用是将文件,iostream,的内容包含到该命令所在的程序文件中,代替该命令行。文件,iostream,的作用是向程序提供输入或输出时所需要的一些信息。,iostream,是,i-o-stream 3,个词的组合,从它的形式就可以知道它代表“输入输出流”的意思,由于这类文件都放在程序单元的开头,所以称为“头文件”(,head file)。,在程序进行编译时,先对所有的预处理命令进行处理,将头文件的具体内容代替 #,include,命令行,然后再对该程序单元进行整体编译。,程序的第2行“,using namespace std; ”,的意思是“使用命名空间,std”。C,+,标准库中的类和函数是在命名空间,std,中声明的,因此程序中如果需要用到,C+,标准库(此时就需要用#,include,命令行),就需要用“,using namespace std; ”,作声明,表示要用到命名空间,std,中的内容。,在初学,C+,时,对本程序中的第1,2行可以不必深究,只需知道: 如果程序有输入或输出时,必须使用“#,include ”,命令以提供必要的信息,同时要用“,using namespace std;” ,,使程序能够使用这些信息,否则程序编译时将出错。,例1.2 求,a,和,b,两个数之和。,可以写出以下程序:,/ 求两数之和 (本行是注释行),#,include /,预处理命令,using namespace std; /,使用命名空间,std,int,main( ) /,主函数首部, /函数体开始,int,a,b,sum,; /,定义变量,cin,ab; /,输入语句,sum=,a+b,; /,赋值语句,cout,a+b,=sum,endl,; /,输出语句,return 0; /,如程序正常结束,向操作系统返回一个零值, /函数结束,本程序的作用是求两个整数,a,和,b,之和,sum。,第1行“/求两数之和”是一个注释行,,C+,规定在一行中如果出现“/”,则从它开始到本行末尾之间的全部内容都作为注释。,如果在运行时从键盘输入,123 456,则输出为,a+b,=579,例1.3 给两个数,x,和,y,,求两数中的大者。,在本例中包含两个函数。,#,include /,预处理命令,using namespace std;,int,max(int,x,int,y) /,定义,max,函数,函数值为整型,形式参数,x,y,为整型, /,max,函数体开始,int,z; /,变量声明,定义本函数中用到的变量,z,为整型,if(x,y) z=x; /if,语句,如果,xy,,则将,x,的值赋给,z,else z=y; /,否则,将,y,的值赋给,z,return(z,); /,将,z,的值返回,通过,max,带回调用处, /,max,函数结束,int,main( ) /,主函数, /主函数体开始,int,a,b,m,; /,变量声明,cin,ab; /,输入变量,a,和,b,的值,m=,max(a,b,); /,调用,max,函数,将得到的值赋给,m,cout,max=mn; /,输出大数,m,的值,return 0; /,如程序正常结束,向操作系统返回一个零值, /主函数结束,本程序包括两个函数:主函数,main,和被调用的函数,max。,程序运行情况如下:,18 25 (输入18和25给,a,和,b),max=25 (,输出,m,的值),注意输入的两个数据间用一个或多个空格间隔,不能以逗号或其他符号间隔。,在上面的程序中,,max,函数出现在,main,函数之前,因此在,main,函数中调用,max,函数时,编译系统能识别,max,是已定义的函数名。如果把两个函数的位置对换一下,即先写,main,函数,后写,max,函数,这时在编译,main,函数遇到,max,时,编译系统无法知道,max,代表什么含义,因而无法编译,按出错处理。,为了解决这个问题,在主函数中需要对被调用函数作声明。上面的程序可以改写如下:,#,include ,using namespace std;,int,main( ),int,max(int,x,int,y); /,对,max,函数作声明,int,a,b,c,;,cin,ab;,c=,max(a,b,); /,调用,max,函数,cout,max=cy) z=x;,else z=y;,return(z,);,只要在被调用函数的首部的末尾加一个分号,就成为对该函数的函数声明。函数声明的位置应当在函数调用之前。,下面举一个包含类(,class),和对象(,object),的,C+,程序,目的是使读者初步了解,C+,是怎样体现面向对象程序设计方法的。,例1.4 包含类的,C+,程序。,#,include /,预处理命令,using namespace std;,class Student /,声明一个类,类名为,Student,private: /,以下为类中的私有部分,int,num; /,私有变量,num,int,score; /,私有变量,score,public: /,以下为类中的公用部分,void,setdata,( ) /,定义公用函数,setdata,cin,num; /,输入,num,的值,cin,score; /,输入,score,的值,void display( ) /,定义公用函数,display,cout,num=num,endl,; /,输出,num,的值,cout,score=score,endl,; /,输出,score,的值,;,; / 类的声明结束,Student stud1,stud2; /,定义,stud1,和,stud2,为,Student,类的变量,称为对象,int,main( ) /,主函数首部,stud1.setdata( ); /,调用对象,stud1,的,setdata,函数,stud2.setdata( ); /,调用对象,stud2,的,setdata,函数,stud1.display( ); /,调用对象,stud1,的,display,函数,stud2.display( ); /,调用对象,stud2,的,display,函数,return 0;,在一个类中包含两种成员: 数据和函数,分别称为数据成员和成员函数。在,C+,中把一组数据和有权调用这些数据的函数封装在一起,组成一种称为“类(,class)”,的数据结构。在上面的程序中,数据成员,num,score,和成员函数,setdata,display,组成了一个名为,Student,的“类”类型。成员函数是用来对数据成员进行操作的。也就是说,一个类是由一批数据以及对其操作的函数组成的。,类可以体现数据的封装性和信息隐蔽。在上面的程序中,在声明,Student,类时,把类中的数据和函数分为两大类:,private(,私有的)和,public(,公用的)。把全部数据(,num,score,),指定为私有的,把全部函数(,setdata,display,),指定为公用的。在大多数情况下,会把所有数据指定为私有,以实现信息隐蔽。,具有“类”类型特征的变量称为“对象”(,object)。,程序中第1824行是主函数。,程序运行情况如下:,1001 98.5 ,(输入学生1的学号和成绩),1002 76.5 ,(输入学生2的学号和成绩),num=1001 (,输出学生1的学号),score=98.5 (,输出学生1的成绩),num=1002 (,输出学生2的学号),score=76.5 (,输出学生2的成绩),C+,程序的结构和书写格式归纳如下:,(1) 一个,C+,程序可以由一个程序单位或多个程序单位构成。每一个程序单位作为一个文件。在程序编译时,编译系统分别对各个文件进行编译,因此,一个文件是一个编译单元。,(2) 在一个程序单位中,可以包括以下几个部分:, 预处理命令。上节4个程序中都包括#,include,命令。, 全局声明部分(在函数外的声明部分)。在这部分中包括对用户自己定义的数据类型的声明和程序中所用到的变量的定义。,1.3,C+,程序的构成和书写形式, 函数。函数是实现操作的部分,因此函数是程序中必须有的和最基本的组成部分。每一个程序必须包括一个或多个函数,其中必须有一个(而且只能有一个)主函数(,main,函数)。,但是并不要求每一个程序文件都必须具有以上3个部分,可以缺少某些部分(包括函数)。,(3) 一个函数由两部分组成:, 函数首部,即函数的第一行。包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。,一个函数名后面必须跟一对圆括号, 函数参数可以缺省,如,int,main( )。,函数体,即函数首部下面的大括号内的部分。如果在一个函数中有多个大括号,则最外层的一对 为函数体的范围。,函数体一般包括:,局部声明部分 (在函数内的声明部分)。包括对本函数中所用到的类型、函数的声明和变量的定义。,对数据的声明既可以放在函数之外(其作用范围是全局的),也可以放在函数内(其作用范围是局部的,只在本函数内有效)。,执行部分。由若干个执行语句组成,用来进行有关的操作,以实现函数的功能。,(4) 语句包括两类。一类是声明语句,另一类是执行语句。,C+,对每一种语句赋予一种特定的功能。语句是实现操作的基本成分,显然,没有语句的函数是没有意义的。,C+,语句必须以分号结束。,(5) 一个,C+,程序总是从,main,函数开始执行的,而不论,main,函数在整个程序中的位置如何。,(6) 类(,class),是,C+,新增加的重要的数据类型,是,C+,对,C,的最重要的发展。有了类,就可以实现面向对象程序设计方法中的封装、信息隐蔽、继承、派生、多态等功能。在一个类中可以包括数据成员和成员函数,他们可以被指定为私有的(,private),和公用的(,public),属性。私有的数据成员和成员函数只能被本类的成员函数所调用。,(7),C+,程序书写格式自由,一行内可以写几个语句, 一个语句可以分写在多行上。,C+,程序没有行号,也不像,FORTRAN,或,COBOL,那样严格规定书写格式(语句必须从某一列开始书写)。,(8) 一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。,C+,还保留了,C,语言的注释形式,可以用,“,/*,*/,”,对,C+,程序中的任何部分作注释。在,“,/*,”,和,“,*/,”,之间的全部内容作为注释。,用,“,/,”,作注释时,有效范围只有一行,即本行有效,不能跨行。而用,“,/*,*/,”,作注释时有效范围为多行。只要在开始处有一个,“,/*,”,,在最后一行结束处有一个,“,*/,”,即可。因此,一般习惯是: 内容较少的简单注释常用,“,/,”,,内容较长的常用,“,/*,*/,”,。,一个程序从编写到最后得到运行结果要经历以下一些步骤。,1. 用,C+,语言编写程序,用高级语言编写的程序称为“源程序”(,source,program)。C,+,的源程序是以.,cpp,作为后缀的(,cpp,是,c plus,plus,的缩写)。,2. 对源程序进行编译,为了使计算机能执行高级语言源程序,必须先用一种称为“编译器(,complier)”,的软件(也称编译程序或编译系统),把源程序翻译成二进制形式的“目标程序(,object program)”。,1.4,C+,程序的编写和实现,编译是以源程序文件为单位分别编译的。目标程序一般以.,obj,或.,o,作为后缀(,object,的缩写)。编译的作用是对源程序进行词法检查和语法检查。编译时对文件中的全部内容进行检查,编译结束后会显示出所有的编译出错信息。一般编译系统给出的出错信息分为两种,一种是错误(,error);,一种是警告(,warning),。,3. 将目标文件连接,在改正所有的错误并全部通过编译后,得到一个或多个目标文件。此时要用系统提供的“连接程序(,linker)”,将一个程序的所有目标程序和系统的库文件以及系统提供的其他信息连接起来,最终形成一个可执行的二进制文件,它的后缀是.,exe,,是可以直接执行的。,4. 运行程序,运行最终形成的可执行的二进制文件(.,exe,文件),得到运行结果。,5. 分析运行结果,如果运行结果不正确,应检查程序或算法是否有问题。,图1.1,在了解了,C+,语言的初步知识后,读者最好尽快在计算机上编译和运行,C+,程序,以加深对,C+,程序的认识,并初步掌握,C+,的上机操作。,读者可以使用不同的,C+,编译系统,在不同的环境下编译和运行一个,C+,程序。但是需要强调的是,我们学习的是,C+,程序设计,应当掌握的是标准,C+,,而不应该只了解某一种“方言化”的,C+。,不应当只会使用一种,C+,编译系统,只能在一种环境下工作,而应当能在不同的,C+,环境下运行自己的程序,并且了解不同的,C+,编译系统的特点和使用方法,在需要时能将自己的程序方便地移植到不同的平台上。,1.5 关于,C+,上机实践,在本书的参考书,C+,程序设计题解与上机指导一书中简单介绍了在,Visual C+ 6.0,和,GCC,两种典型的环境下运行,C+,程序的方法。,请读者选择一种(如能做到两种更好),C+,编译系统,在该环境下输入和运行习题中的程序,掌握上机的方法和步骤。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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