资源预览内容
第1页 / 共64页
第2页 / 共64页
第3页 / 共64页
第4页 / 共64页
第5页 / 共64页
第6页 / 共64页
第7页 / 共64页
第8页 / 共64页
第9页 / 共64页
第10页 / 共64页
第11页 / 共64页
第12页 / 共64页
第13页 / 共64页
第14页 / 共64页
第15页 / 共64页
第16页 / 共64页
第17页 / 共64页
第18页 / 共64页
第19页 / 共64页
第20页 / 共64页
亲,该文档总共64页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,1.1,C+,语言概述,1.1.1,从,C,到,C+,1.1.2 C+,面向对象的特性,1.1.3,C+,的词法与规则,1.1.4,C+,程序结构的组成,1.1.5,C+,程序的开发步骤,返回首页,1.1 C+语言概述1.1.1 从C到C+返回首页,1,1.1.1,从,C,到,C+,C+,语言源于,C,语言,而,C,语言是在,B,语言的基础上发展起来的。,1960,年出现了一种面向问题的高级语言,ALGOL 60,,,但它离硬件比较远,不宜用来编写系统软件。,1963,年英国剑桥大学推出了,CPL,(,Combined Programming Language,),语言,后来经简化为,BCPL,语言。,1970,年美国贝尔(,Bell,),实验室的,K.Thompson,以,BCPL,语言为基础,设计了一种类似于,BCPL,的语言,取其第一字母,B,,,称为,B,语言。,1972,年美国贝尔实验室的,Dennis M.Ritchie,为克服,B,语言的诸多不足,在,B,语言的基础上重新设计了一种语言,取其第二字母,C,,,故称为,C,语言。,返回本节,1.1.1 从C到C+C+语言源于C语言,而C语言是在B,2,1.1.2 C+,面向对象的特性,1,C+,支持数据封装,支持数据封装就是支持数据抽象。在,C+,中,类是支持数据封装的工具,对象则是数据封装的实现。,2,C+,类中包含私有、公有和保护成员,C+,类中可定义三种不同访问控制权限的成员。一种是私有(,Private,),成员,另一种是公有(,Public,),成员,还有一种是保护(,Protected,),成员。,3,C+,中通过发送消息来处理对象,C+,中是通过向对象发送消息来处理对象的,每个对象根据所接收到的消息的性质来决定需要采取的行动,以响应这个消息。,1.1.2 C+面向对象的特性1C+支持数据封装,3,4,C+,中允许友元破坏封装性,类中的私有成员一般是不允许该类外面的任何函数访问的,但是友元便可打破这条禁令,它可以访问该类的私有成员(包含数据成员和成员函数)。,5,C+,允许函数名和运算符重载,C+,允许一个相同的函数名或运算符代表多个不同实现的函数,这就称函数或运算符的重载,用户可以根据需要定义函数重载或运算符重载。,6,C+,支持继承性,C+,中可以允许单继承和多继承。,7,C+,支持动态联编,C+,中可以定义虚函数,通过定义虚函数来支持动态联编。,返回本节,4C+中允许友元破坏封装性返回本节,4,1.1.3,C+,的词法与规则,1,C+,的字符集,C+,中含有以下字符:数字,小写字母,大写字母,运算符,特殊字符,不可印出字符,。,2,词与词法规则,(,1,)标识符。,(,2,)关键字。,(,3,)运算符和分隔符。(,4,)字符串。,(,5,)常量。,(,6,)注释。,3书写格式,(,1,)一般情况下每个语句占用一行。,(,2,)不同结构层次的语句,。,(,3,)表示结构层次的大括弧,。,(,4,)适当加些空格和空行。,1.1.3 C+的词法与规则1C+的字符集,5,表,1-1,C+,的标准保留字,返回本节,表1-1 C+的标准保留字返回本节,6,1.1.4,C+,程序结构的组成,C+,程序结构的基本组成包括以下几个部分:,(,1,)预处理命令,,C+,提供了三类预处理命令:宏定义命令、文件包含命令和条件编译命令。,(,2,)输入输出,,C+,程序中总是少不了输入和输出语句,实现与程序内部的信息交流。,(,3,)函数,(,4,)语句,(,5,)变量,(,6,)其他,1.1.4 C+程序结构的组成C+程序结构的基本组成包,7,下面用一个简单的程序例子来分析,C+,程序的构成。,例1-2:,C+,程序构成示例。,/*-,C+,程序构成示例,- */ /,注释,#,define PI 3.1415926 /,宏定义命令,定义符号常量,PI,#include /,文件包含命令,void main()/,主函数,double length,area,radius;/,定义变量,coutPlease input radius:radius;/,输入语句,length=2*PI*radius;,area=PI*radius*radius;,coutlength=lengthendl/,输出语句,area=areaendl;,返回本节,下面用一个简单的程序例子来分析C+程序的构成。返回本节,8,1.1.5,C+,程序的开发步骤,1,编辑,是指把按照,C+,语法规则编写的程序代码通过编辑器(,Borland C+ 5.05,,,Visual C+ 6.0,,,Turbo C+ 3.0,),输入计算机,并保存。,2,编译,将编辑好的,C+,源程序通过编译器转换为目标文件(,OBJ,文件)。即生成该源文件的目标代码。,3,链接,将用户程序生成的多个目标代码文件(,.,obj,),和系统提供的库文件(,.,lib,),中的某些代码连接在一起,生成一个可执行文件(,.,exe,)。,4,执行,把生成的可执行文件运行,在屏幕上显示运行结果。用户可以根据运行结果来判断程序是否出错。,返回本节,1.1.5 C+程序的开发步骤1编辑返回本节,9,1.2,基本数据类型和表达式,1.2.1,数据类型概述,1.2.2,常量,1.2.3,变量,返回首页,1.2 基本数据类型和表达式1.2.1 数据类型概述返回,10,图1-1,C+,数据类型,图1-1 C+数据类型,11,1.2.1,数据类型概述,1,基本数据类型,基本数据类型有,4,种:整型(,int,)、,浮点型(,float,)、,字符型(,char,)、,逻辑型(,bool,)。,2,空类型,void:,用于显示说明一个函数不返回任何值。,3,构造类型,又称为组合类型,它是由基本类型按照某种规则组合而成的。,4,指针类型:,变量用于存储另一变量的地址,而不能用来存放基本类型的数据。,5,类类型,:,是体现面向对象程序设计的最基本特征,也是体现,C+,与,C,最大的不同之处。,返回本节,1.2.1 数据类型概述1基本数据类型返回本节,12,1.2.2,常量,1,整型常量,整型数据表示通常意义上的整数,整型常量可以用十进制、八进制或十六进制表示。,2,浮点数常量,浮点数也称为实型数。只能以十进制形式表示。共有两种表示形式:小数表示法和指数表示法。,3,字符常量与字符串常量,(,1,)字符常量。,(,2,)转义字符。,(,3,)字符串常量。,1.2.2 常量1整型常量,13,4,逻辑常量,逻辑常量是逻辑类型中的值,,Visual C+,用保留字,bool,表示逻辑类型,该类型只含有两个值,即整数,0,和,1,,用,0,表示逻辑假,用,1,表示逻辑真。,5,枚举常量,枚举常量是枚举类型中的值,即枚举值。枚举类型是一种用户定义的类型,只有用户在程序中定义它后才能被使用。,6,地址常量,指针类型的值域是,0,2,32,-1,之间的所有整数,每一个整数代表内存空间中一个对应单元(若存在的话)的存储地址,每一个整数地址都不允许用户直接使用来访问内存,以防止用户对内存系统数据的有意或无意的破坏。,4逻辑常量,14,表1-2 常用的特殊字符,返回本节,表1-2 常用的特殊字符 返回本节,15,1.2.3,变量,1,变量命名,变量的命名要遵守以下规则:,(,1,)不能是,C+,保留字。,(,2,)第一个字符必须是字母或下划线,中间不能有空格。,(,3,)变量名除了使用,26,个英文大小写字母和数字外,只能使用下划线。,(,4,)一般不要超过,31,个字符。,(,5,)变量名不要与,C+,中的库函数名、类名和对象名相同。,1.2.3 变量1变量命名,16,2,变量定义和说明,变量定义是通过变量定义语句实现的,该语句的一般格式为:, =,;,2变量定义和说明,17,3,变量初始化,变量初始化一般采用两种方式。,第一种方式是在定义变量时可以给变量赋一个初值,例如:,int a=3;,float b=3.4;,const int c=5;,第二种方式是先定义变量,然后通过赋值语句使变量初始化,例如:,int a;,a=3;,返回本节,3变量初始化返回本节,18,1.3,运算符与表达式,1.3.1,运算符,1.3.2,表达式,1.3.3,数据类型转换,返回首页,1.3 运算符与表达式1.3.1 运算符返回首页,19,C+,语言的运算符按其在表达式中与运算对象的关系(连接运算对象的个数)可分为:,l,单目运算符(一元运算符,只需一个操作数),l,双目运算符(二元运算符,需两个操作数),l,三目运算符(三元运算符,需三个操作数),C+语言的运算符按其在表达式中与运算对象的关系(连接运算对,20,1.3.1,运算符,1,算术运算符,2,赋值运算符,3,关系运算符,4,逻辑运算符,5,自增、自减运算符,6,条件运算符,7,位运算符,8,sizeof,运算符(求字节运算符),9,逗号运算符,1.3.1 运算符1算术运算符,21,1,算术运算符,算术运算符包括双目运算符和单目运算符两种。包括:,l,+,加法运算符,或正值运算符,如,1+2,,,+3,),l,-,(,减法运算符,或负值运算符,如,1-2,,,-3,),l,*,(,乘法运算符,如,1*2,),l,/,(,除法运算符,如,1/2,),l,%,(,模运算符或称求余运算符,如,7%3=1,),1算术运算符 算术运算符包括双目运算符和单目运算符两种。包,22,2,赋值运算符,(,1,)赋值运算符“,=,”的一般格式为:,变量,=,表达式,;,(,2,)赋值表达式本身的运算结果是右侧表达式的值,而结果类型是左侧变量的数据类型。,(,3,)赋值运算符的结合性是从右至左的,因此,,C+,程序中可以出现连续赋值的情况。,(,4,)复合运算符:,2赋值运算符(1)赋值运算符“=”的一般格式为:,23,3,关系运算符,(,1,)关系运算符用于两个值进行比较,运算结果为,true,(,真)或,false,(,假),分别用值非,0,(,true,),或,0,(,false,),表示。,(,2,)关系运算符都是双目运算符,其结合性是从左到右,,、,、,=,运算符的优先级相同,,= =,和,!=,运算符的优先级相同,前者运算的优先级高于后者。,(,3,)关系运算符的优先级低于算术运算符。,3关系运算符(1)关系运算符用于两个值进行比较,运算结果为,24,4,逻辑运算符,C+,中的逻辑运算符为:,&,(逻辑与),,|,(逻辑或),,!,(逻辑非)。逻辑表达式的结果为真则为,1,,结果为假则为,0,。,逻辑非(,!,)是单目运算符,逻辑与(,&,)和逻辑或(,|,)是双目运算符。,逻辑非的优先级最高,逻辑与次之,逻辑或最低。,逻辑运算真值表如表,1-3,所示。,4逻辑运算符C+中的逻辑运算符为:&(逻辑与), |,25,表1-3 逻辑运算真值表(真为非0,假为0),表1-3 逻辑运算真值表(真为非0,假为0),26,5,自增、自减运算符,(,1,)自增(,+,)、自减(,-,)运算符为变量的增,1,和减,1,提供了紧凑格式。,(,2,)自增、自减运算符都是单目运算符,其作用是使变量的值增,1,或减,1,。,(,3,)自增、自减运算符有四种应用格式:,(,4,),C+,编译器在处理时尽可能多的自左向右将运算符结合在一起。,(,5,)在调用函数时,实参的求值顺序一般为自右向左。而不是,PASCAL,语言那样自左向右。,5自增、自减运算符(1)自增(+)、自减(-)运算符为,27,6,条件运算符,(,1,)条件运算符“,?:,”是,C+,中惟一的三目运算符,其形式为:,表达式,1 ?,表达式,2 :,表达式,3,(,2,)条件运算符的结合性是自右向左。,(,3,)条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。,6条件运算符(1)条件运算符“?:”是C+中惟一的三目运,28,7,位运算符,(,1,)位(,bit,),是计算机中表示信息的最小单位,一般用,0,和,1,表示。,(,2,)位运算符是对其操作数按其二进制形式逐位进行运算,参加位运算的操作数必须为整数。,7位运算符(1)位(bit)是计算机中表示信息的最小单位,,29,8,sizeof,运算符(求字节运算符),(,1,),sizeof,运算符是单目运算符,用于计算运算对象在内存中所占字节的多少,它有两种形式:,sizeof(,类型标识符,);,sizeof,表达式,;,(,2,),sizeof,可以接受的类型标识符很多,如,sizeof(int),表示求整型数据在内存中所占字节数。,8sizeof运算符(求字节运算符)(1)sizeof运算,30,9,逗号运算符,(,1,)逗号运算符用于将多个表达式连在一起,并将各表达式从左到右的顺序依次求值,但只有其最右端的表达式的结果,作为整个逗号表达式的结果。,(,2,)逗号表达式的一般格式为:,表达式,1,表达式,2,表达式,n,返回本节,9逗号运算符(1)逗号运算符用于将多个表达式连在一起,并将,31,1.3.2,表达式,1,算术表达式,2,逻辑表达式,3,关系表达式,4,赋值表达式,5,条件表达式,6,逗号表达式,返回本节,1.3.2 表达式1算术表达式返回本节,32,1.3.3,数据类型转换,1,隐式类型转换,隐式类型转换是由编译器自动完成的类型转换,2显式类型转换,显式类型转换是由程序员显式指出的类型转换,转换形式有两种:,类型名(表达式),(类型名)表达式,1.3.3 数据类型转换1隐式类型转换,33,图1-2 数据类型转换的顺序,返回本节,图1-2 数据类型转换的顺序 返回本节,34,1.4,程序的基本控制结构,1.4.1,顺序结构,1.4.2,选择结构,1.4.3,循环结构,1.4.4,转移语句,返回首页,1.4 程序的基本控制结构1.4.1 顺序结构返回首页,35,1.4.1,顺序结构,1,表达式语句,2,输入,/,输出(,I/O,),3,复合语句,1.4.1 顺序结构1表达式语句,36,1,表达式语句,表达式是指用运算符连接各个运算对象,合乎语法规则的式子。在,C+,程序中,几乎所有的操作运算都通过表达式来实现,而表达式语句也就成了,C+,程序中最简单也是最基本的一类语句。,(,1,)空语句。,(,2,)赋值语句。,(,3,)函数调用语句,1表达式语句表达式是指用运算符连接各个运算对象,合乎语法规,37,2,输入,/,输出(,I/O,),(,1,)输入。,当程序需要执行键盘输入时,可以使用抽取操作符“,”从输入流,cin,中抽取键盘输入的字符和数字,并把它赋给指定的变量。,(,2,)输出。,当程序需要在屏幕上显示输出时,可以使用插入操作符“,a;,if(a0),cout,正数,endl;,else,cout,不是正数,a;,if(a0),cout,正数,endl;,else,if(a0),cout,负数,endl;,else,cout,零,endl;,例1-5:判断用户的输入,根据输入数值是大于0、等于0、小于,42,2,switch,语句,switch,语句的语法格式为:,switch,(,整数表达式),case,常量表达式,1,:,;,case,常量表达式,2,:,;,case,常量表达式,n,:,;,default,:,;,2switch语句switch语句的语法格式为:,43,例如,根据考试成绩的等级输出百分制分数段:,char grade;,/,switch (grade),caseA: cout 85100n;break;,caseB: cout 7084n;break;,caseC: cout 6069n;break;,caseD: cout 60n;break;,default: cout errorn;break;,例如,根据考试成绩的等级输出百分制分数段:,44,有几点说明:,(,1,),default,语句是可缺省的。,(,2,),switch,后面括号中的表达式只能是整型、字符型或枚举型表达式。,(,3,)在各个分支中的,break,语句起着退出,switch,语句的作用。,(,4,),case,语句起标号的作用。标号不能重名,所以每一个,case,常量表达式的值必须互不相同,否则就会出现编译错误。,(,5,)当多个分支需要执行同一操作时,可以使多个,case,语句共用一组语句序列。,(,6,)各个,case,(,包括,default,),语句的出现次序可以任意。,(,7,)每个,case,语句中可以有多条语句组成相应的语句序列,但不必用, ,。,有几点说明:,45,例1-6:,读入一行字母,求其中元音字母出现的次数。,#,include ,#include ,void main( ),char c;,int count=0;,while (c=getche()!=n),例1-6:读入一行字母,求其中元音字母出现的次数。,46,switch (c) ,case a:,case A:,case e:,case E:,case i:,case I:,case o:,case O:,case u:,case U: count+;break;,coutcountendl;,返回本节,switch (c) 返回本节,47,1.4.3,循环结构,C+,提供了三种循环控制语句:,while,语句,,do,while,语句,,for,语句。三种语句都由相似的三部分组成:进入循环的条件,循环体,退出循环的条件;完成的功能也类似。所不同的只是三者进入与退出循环的方式不同。,while,语句:当条件满足时进入,重复执行循环体,直到条件不满足时退出。,1.4.3 循环结构C+提供了三种循环控制语句:whil,48,1,while,语句,1,while,语句,while,语句的语法格式为:,while,(,条件表达式),循环体;,它的含义为:首先对条件表达式进行判断,若判断结果为假(,false,,,0,),,则跳过循环体,执行,while,结构后面的语句。若判断结果为真(,true,,,非,0,),则进入循环体,执行其中的语句序列。,while,循环由,4,个部分组成:循环变量初始化,判断条件,循环体,改变循环变量的值。,1while语句 1while语句,49,例如,计算,sum=1+2+3+,+10,的,while,循环结构如下:,sum=0;,i=1; /,循环变量初始化,while (i=10) /,判断条件, /,循环体,sum=sum+i;,i+; /,改变循环变量的值,例如,计算sum=1+2+3+10的while循环结构如,50,例1-7:,输入一行字符,求其中字母、数字和其他符号的个数。,解:,#,include ,#include ,void main( ),char c;,int letters=0,digit=0,others=0;,cout=a & c=A & c=0 & climit,程序如下:,#,include ,void main(),int i=0,sum=0;,float limit;,cout limit;,do ,i+;,sum+=1/i;, while sum=limit;,cout10),break;,等价于:,for (i=1; 5 ; i+),sum+=i;,if (i10),break;,例如,求和运算: for (i=1; ; i+) /,56,例1-9:,输出菲波那切数列的前,20,项。即前两项为,1,,以后每一项为前两项之和。,#,include ,void main(),int i1=1,i2=1,i3,i;,couti1 i2 ;,for (i=3;i=20;i+),i3=i1+i2;,couti3 ;,i1=i2;,i2=i3;,返回本节,例1-9:输出菲波那切数列的前20项。即前两项为1,以后每一,57,1.4.4,转移语句,1,break,语句,break,语句的作用是:结束当前正在执行的循环(,for,、,while,和,do,while,),或多路分支(,switch,),程序结构,转而执行这些结构后面的语句。,2,continue,语句,continue,语句的作用是:结束当前正在执行的这一次循环(,for,、,while,和,do,while,),,接着执行下一次循环。即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。,3,goto,语句,goto,语句的语法格式为:,goto,标号,;,1.4.4 转移语句1break语句,58,例如,下面的代码在执行了,break,之后,继续执行“,a+=1;,”,处的语句,而不是跳出所有的循环。,for ( ; ; ),for ( ; ; ),if (i=1),break;,a+=1; /break,跳至此处,/,例如,下面的代码在执行了break之后,继续执行“a+=1;,59,for ( ; ; ),for ( ; ; ),if (i=1),break;,a+=1; /break,跳至此处,/,for ( ; ; ),60,例1-10:,编程求,50100,内的素数,#,include ,#include ,#define MIN 51,#define MAX 100,void main ( ),int i,j,k;,for (i=MIN;i=MAX;i+=2) /,素数必是奇数,例1-10:编程求50100内的素数,61,k=int (sqrt(double(i);,for (j=2;j=k+1),cout i;,coutendl;,输出结果为:,53 59 61 67 71 73 79 83 89 97,62,例1-11:,编程从键盘上输入的,10,个数中所有正数之和。,#,include ,void main( ),int num; sum=0;,coutplease input number:;,for (int i=1;inum;,if (num0),continue;,sum+=num;,cout sum=sumendl;,例1-11:编程从键盘上输入的10个数中所有正数之和。,63,例如:求,1,加到,10,的总和。,i=1; sum=0;,loop:,sum+=i+;,if (i=10),goto loop;,cout the sum is sum endl;,返回本节,例如:求1加到10的总和。返回本节,64,
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6