1、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
2、最简单的C+程序1.3 C+程序的构成和书写形式1.4 C+程序的编写和实现1.5 关于C+上机实践,*1.1 从C到C+,产生背景:最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的。 产生过程 时间:19721973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie C标准 标准C: K&R合著The C Programming Language ANSI C: 1983年 87 ANSI C: 1987年,*1.1 从C到C+,产生背景:最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的
3、。 产生过程 时间:19721973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie C标准 标准C: K&R合著The C Programming Language ANSI C: 1983年 87 ANSI C: 1987年,C语言的主要特点是: 语言本身简洁、使用灵活方便; 既有高级语言的特点,又具有汇编语言的特点; 程序的可移植性好; 程序的语法结构不够严密,程序设计的自由度大;C语言存在的一些缺陷或不足,如: C语言对数据类型检查的机制比较弱; 缺少支持代码重用的结构; 难以适应开发特大型的程度等等。,*1.1 从C
4、到C+,printf(“%d”,i); /i为整型变量,正确,输出i的值 printf(“%d”,f); /把单精度变量f在存储单元中的信息按整数解释并输出 printf(“%d”, “C+”); /输出字符串“C+”的起始地址 scanf(“%d”, ,C+Bell(贝尔)实验室于20世纪80年代初在C语言的基础上开发成功。第一个真正的C+编译系统是1988年诞生的。C+保留了C语言原有的优点,增加了面向对象的机制。C+是由C发展而来的,与C兼容。 C+既可用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。,*1.1 从C到C+,功能扩充。增加了
5、面向对象的机制。 面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。,C+对C的“增强”,例1.1 输出一行字符: “This is a C+ program.”。 程序如下: #include /包含头文件iostream using namespace std; /使用命名空间std int main( ) coutThis is a C+ program.; return 0; 在运行时会在屏幕上输出以下一行信息: This is a C+ program.,*1.2 最简单的C+程序,包含文件,主函数,函数体开始,函数体结束,输出流,在屏幕上打印引号内的字符串,分号,一条完整语句
6、的结束符,注释或说明,文件iostream的作用是向程序提供输入或输出时所需要的一些信息。iostream是i-o-stream 3个词的组合,从它的形式就可以知道它代表“输入输出流”的意思,“using namespace std; ” 的意思是“使用命名空间std”。C+标准库中的类和函数是在命名空间std中声明的,因此程序中如果需要用到C+标准库(此时就需要用#include命令行),就需要用“using namespace std; ”进行声明,表示要用到命名空间std中的内容。,例1.2 求a和b两个数之和。 可以写出以下程序: / 求两数之和 (本行是注释行) #include /
7、预处理命令 using namespace std; /使用命名空间std int main( ) /主函数首部 /函数体开始int a,b,sum; /定义变量cinab; /输入语句sum=a+b; /赋值语句couta+b=sumendl; /输出语句return 0; /如程序正常结束,向操作系统返回一个零值 /函数结束,如果在运行时从键盘输入 123 456 则输出为 a+b=579,*1.2 最简单的C+程序,例1.3 给两个数x和y,求两数中的大者。 本程序包括两个函数:主函数main和被调用的函数max。 #include /预处理命令 using namespace std;
8、 int max(int x,int y) /定义max函数 /max函数体开始int z; /变量声明,定义本函数中用到的变量z为整型if(xy) z=x; /if语句,如果xy,则将x的值赋给zelse z=y; /否则,将y的值赋给zreturn(z); /将z的值返回,通过max带回调用处 /max函数结束,*1.2 最简单的C+程序,int main( ) /主函数 /主函数体开始int a,b,m; /变量声明cinab; /输入变量a和b的值m=max(a,b); /调用max函数,将得到的值赋给m coutmax=mn; /输出大数m的值 return 0; /如程序正常结束,
9、向操作系统返回一个零值 /主函数结束程序运行情况如下: 注意输入的两个数据间用一个或多个空格间隔,不能以逗号或其他符号间隔。,18 25 (输入18和25给a和b) max=25 (输出m的值),例1.4 包含类的C+程序。 #include / 预处理命令 using namespace std; class Student / 声明一个类,类名为Student private: / 以下为类中的私有部分 int num; / 私有变量num int score; / 私有变量score public: / 以下为类中的公用部分 void setdata( ) / 定义公用函数setdata
10、 cinnum; / 输入num的值 cinscore; / 输入score的值 ,“类(class)”把一组数据和有权调用这些数据的函数封装在一起,包含两种成员: 数据:称为数据成员函数:称为成员函数。是用来对数据成员进行操作的。 一个类是由一批数据以及对其操作的函数组成的。,在这里声明Student类时,把类中的数据和函数分为两种不同性质的数据成员和函数成员:即 private(私有的)和public(公用的)。体现数据的封装性和信息隐蔽。 把全部数据(num, score)指定为私有的,把全部函数(setdata, display)指定为公用的。在大多数情况下,会把所有数据指定为私有,以
11、实现信息隐蔽。,void display( ) / 定义公用函数displaycoutnum=numendl; / 输出num的值coutscore=scoreendl; /输出score的值; ; / 类的声明结束 Student stud1,stud2; /定义stud1和stud2为Student类的变量,称为对象 int main( ) / 主函数首部 stud1.setdata( ); / 调用对象stud1的setdata函数 stud2.setdata( ); / 调用对象stud2的setdata函数 stud1.display( ); / 调用对象stud1的display函
12、数 stud2.display( ); / 调用对象stud2的display函数return 0; ,具有“类”类型的变量称为对象,1001 98.5 (输入学生1的学号和成绩) 1002 76.5 (输入学生2的学号和成绩) num=1001 (输出学生1的学号) score=98.5 (输出学生1的成绩) num=1002 (输出学生2的学号) score=76.5 (输出学生2的成绩),一个C+程序可以由一个程序单位或多个程序单位构成。每一个程序单位作为一个文件。在程序编译时,编译系统分别对各个文件进行编译,因此,一个文件是一个编译单元。在一个程序单位中,可以包括以下几个部分 : 预处
13、理命令(#include, #define, 条件编译)。 全局声明部分(在函数外的声明部分)。在这部分中包括对用户自己定义的数据类型的声明和程序中所用到的变量的定义。 函数。函数是实现操作的部分,因此函数是程序中必须有的和最基本的组成部分。每一个程序必须包括一个或多个函数,其中必须有一个(而且只能有一个)主函数(main函数)。,1.3 C+程序的构成和书写形式,并不要求每一个程序文件都必须具有以上3个部分,不需要时可以省略 (包括函数)。一个函数由两部分组成: 函数首部。即函数的第一行。如函数max,int max (int x, int y) 函数类型 函数名 参数类型 形参名 参数类型
14、 形参名 一个函数名后面必须跟一对圆括号(作为函数的标识),形参不需要时可以缺省,如int main( )。 函数体。即函数首部下面的大括号内的部分。一般包括:局部声明部分 (在函数内的声明部分)。包括对本函数中所用到的变量类型声明、函数声明和变量定义。 执行部分。由若干个执行语句组成,用来进行有关的操作,以实现函数的功能。,语句包括两类。一类是声明语句,另一类是执行语句。 语句是实现操作的基本成分,显然,没有语句的函数是没有意义的。C+语句必须以分号结束。一个C+程序总是从main函数开始执行的,与main函数在整个程序中的位置无关。类(class)是C+新增加的重要的数据类型,可以实现面向
15、对象程序设计方法中的封装、信息隐蔽、继承、派生、多态等功能。在一个类中可以包括数据成员和成员函数,他们可以被指定为私有的(private)和公用的(public)以及被保护的(protected)属性。私有的数据成员和成员函数只能被本类的成员函数所调用。被保护的子类的对象可以调用。,C+程序书写格式自由,一行内可以写几个语句, 一个语句可以分写在多行上。一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。 可以用“/*/”对C+程序中的任何部分作注释。有效范围为可以是多行。用“/”作注释时,有效范围只有一行,即本行有效,不能跨行。因此,一般习惯是: 内容较少的简单注释常用“/
16、”,内容较长多行注释常用“/*/ ”。,1.4 C+程序的编写和实现,高级语言编译过程,源程序 (文本文件) *.CPP,目标文件 (二进制文件) *.OBJ,可执行文件 (二进制文件) *.EXE,库文件 (各种函数),F7,compile,link,编译过程: 1)启动Visual C+,选择“文件”菜单中的“新建”命令,选择“文件”标签中的“C+ Source File”选项。 2)选择源程序存放的目录和输入源程序名,单击“确定”。 3)在编辑器中编写源程序。 4)单击F7或“编译”中的“重建全部”编译源程序,若编译通过,单击“执行”,在DOS屏上看结果,任按一键返回编辑器。,1.5 关
17、于C+上机实践,22,启动VC+编译系统,23,VC+编译系统界面,单击“File”菜单中“New”命令,24,选择“Files”选项卡,选择C+源文件命令,输入文件名,输入文件存放位置,单击选择驱动器,选择驱动器或目录,25,C+源文件编辑界面,输入C+源代码,26,可以将此源代码另起文件名存盘,27,选择编译命令,将源文件.cpp编译成.obj文件,28,如果编译出错,会出现提示信息,指出错误的位置及种类,错误所在行,错误的原因,29,双击错误所在行,光标移到该行,30,运行link命令,生成可执行文件,连接通过后,单击该命令运行程序,31,运行结果显示在DOS屏上,注意:不可以在软盘上运行程序!应该把保存在软盘中的源文件拷贝到硬盘的目录中再运行!,