VisualC程序设计教程第二章C语言基础和面向对课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《VisualC程序设计教程第二章C语言基础和面向对课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualC 程序设计 教程 第二 语言 基础 和面 课件
- 资源描述:
-
1、第2章 C+语言基础和面向对象n2.1 C+语言基础n2.2 类n2.3 面向对象的编程技术2.1 C+语言基础nVisual C+的基础是C+语言,利用Visual C+所编译、运行的程序,小到一个界面程序,大到一个大型软件,无一不是用C+语言写出来的。因此,要学好Visual C+,必须对C+语言有深入的了解。2.1.1 编程基础n1源文件源文件n源文件由语句组成。语句用来确定计算机要执行什么操作。例如,下面这一行语句完成了计算半径为10厘米的圆的面积:n area=3.14*10*10;n 每一个语句都要以分号结尾。n n2main函数函数nmain函数不返回数值,main函数中的第一行
2、将被计算机最先执行到。n 3数据的输出数据的输出n 当程序中出现cout可实现数据的输入。例如:n cina;n用户输入数值后,这个数值被存入变量a中。n5预处理预处理n#include预处理指令告诉编译器装入一个include文件。例如cin和cout被定义在称为iostream.h的文件中(其中.h是头文件的标准扩展名)。2.1.2数据类型nC+提供了许多预先定义的数据类型,用户可以把不同的数据类型组合起来构造更复杂的数据类型。n1基本数据类型nchar一一表示字符。如a、b和*都是字符。该类型数据占一个字节的空间。nfloat一一表示浮点数。即带有小数点的数字,例如3.14、-1.50和
3、20.0等等,浮点数有时也称作实数。浮点数的取值范围是3.1410-38到3.41038。该类型数据占四个字节的空间。ndouble一一表示双精度数。双精度数的取值范围是1.710-308到1.710308。该类型数据占八个字节的空间。nint表示整数。整数是不包含小数点的数。例如,0,3,30和-59都是整数,但是1.0不是整数。整数的取值范围是-32768到32767。该类型数据占二个字节的空间。n除上述一些常见的数据类型外,还有如下一些数据类型:nlong一一表示长整型数。取值范围是-2147483648到2147483647。该类型数据占四个字节的空间。nShort一一表示短整型数。取
4、值范围是-32768到32767。该类型数据占二个字节的空间。nunsigned一一表示无符号整型数。它表示数值总是正的整数。例如unsigned int类型的表示的范围是0到65535。nvoid一一无类型数,用来表明函数不返回值。如:void main()。2.1.2数据类型2聚合数据类型 C+语言还提供了几种聚合数据类型,包括数组、指针、结构、联合、位域和枚举。本书稍后章节将对部分类型做详细介绍。3类型安全性nC+对数据类型有严格的要求,如果把一个变量声明为一种类型,而在实际使用时又试图把它用作另外一种类型,编译器就会产生错误。这种对数据类型的严格要求称作类型安全性。例如:nint r;
5、nr=“Hello!”;n将会出错,因为r是整型,所以不能给它赋一个字符串,因此,应该明确告诉编译器把一种数据类型转换成另一种数据类型,这称作强制类型转换。要做到这一点,只需在被转换的项前面加入要转换的数据类型名。2.1.3 常量和变量n1常量常量n常量指的是在程序执行过程中不变的数据。它有两种形式,其一是数值形式,如:3.14、135、0.132e+02等;其二是标识符形式,称为符号常量。要使一个标识符成为符号常量,只须在声明前面加上const即可。例如:nconst int Length=3;nLength就是一个符号常量,其值为3。2.1.3常量和变量n2变量变量n变量指的是在程序执行过
6、程中其值可以变化的量,任何一个变量必须有确定的名称。只需通过变量的名称,便可以访问存储在变量内的信息。n变量名由字母、数字和下划线组成,但有以下一些限制:n变量名不能以数字开头;n变量名中不能有空格;n变量名中除了能使用26个英文字母外,只能使用“_”;n变量名不能与C+语言中的关键词同名。表2.1列出了Visual C+的关键词;n变量名不能与C+中的库函数名相同。3变量的作用域变量的作用域n变量的作用域是指变量在程序中的有效使用范围。根据变量的作用域,变量可分为全局变量和局部变量两种类型。n全局变量是指在函数外部所定义的变量。两个全局变量不能同名。n局部变量是在函数内部定义的变量。在函数开
7、始执行时,局部变量被生成了,并只能在该函数内部使用。当函数结束时,局部变量也随之消失。在函数内,一个名称只能代表一个变量,但是在另一个函数内,这个名称可代表另外一个变量。n在函数中所定义形式参数也是局部变量。nC+中的变量作用域的规则:n任何在函数内部定义的变量都是这个函数的局部变量。如果在函数中定义了一个变量,则当函数调用时,这个变量也随之生成,可在整个函数内部使用,并且当函数结束时随之消失。n函数的所有形参都是这个函数的局部变量。n在函数中,若局部变量和全局变量同名,则该函数所使用的是局部变量,而不是同名的全局变量。n如果在函数中使用了一个不属于该函数的局部变量,编译程序将寻找同名的全局变
8、量。在一个有某个局部变量的函数中,如果要访问一个与此变量同名的全局变量,则在变量名前加上:(作用域分辨符)。例如,有一个名为area的全局变量,且函数中包含了名为area的局部变量,那么用:area指的是全局变量,而用area指的是局部变量。2.1.4 运算符C+语言的运算符是告诉编译程序执行特定算术或逻辑操作的符号,C+语言内部运算符主要有三类:算术运算符、关系与逻辑运算符以及位操作运算符。1算术运算符算术运算符 C+算术运算符主要有:+、-、*、/、%、+、-、等,主要用于算术计算。这些运算符的使用相对简单,下面我们重点讲述+运算符。+运算符有两种形式,可以把它放在变量前面(这种增量运算称
9、为前增量),如+a,也可以把它放在变量后面(这种增量运算称为后增量),如a+。+a先把a的值增1,然后再引用a的值,+先引用a的值,然后a的值增加1。-运算符与+运算符类似。2关系运算符和逻辑运算符关系运算符和逻辑运算符n关系运算符用于关系运算,比较左右两个表达式的大小或是否相等,其运算结果为逻辑值“真”或“假”。逻辑运算符表示操作数的逻辑关系,其运算结果同样也是逻辑值“真”或“假”。表2.2介绍了在布尔表达式中常用的运算符。2.1.4运算符n3位操作运算符位操作运算符n位操作是对字节或字中的位(bit)进行测试、置位或移位处理,这里的字节或字是针对char和int类型而言。位操作不能用于fl
10、oat、double、long double、void或其他复杂类型。C+中的位操作符主要包括:&(与)、|(或)、(异或)、(补)、(右移)、(左移)。n4赋值运算符赋值运算符n利用赋值运算符=可以给一个变量赋值,例如:narea=3.14*10*10;n在赋值过程中,赋值号右边的表达式的值被传送到赋值号左边的变量中。可以在一个语句中使用多个赋值符,使多个变量获得相同的值.n表2-3所列出的就是常用的复合赋值运算符。2.1.4运算符2.1.4运算符5条件运算符条件运算符 条件运算符是由?和:合成实现的。条件 表达式具有如下形式:expr1?expr2:expr3 它的含义是:如果expr1为
11、真,就返回expr2的值。否则,返回expr3的值。6运算符的运算次序运算符的运算次序 表2.4列出了运算次序。表中的运算符按优先级从高到低的次序排列(最上方为最高优先级,最下方为最低优先级)。同一行运算符具有相同的优先级。2.1.5 C+语言的3种程序结构nC+语言的3种程序结构有:顺序结构、选择结构和循环结构。顺序结构是指计算从第一条语句到最后一条语句完全按顺序执行;选择结构是根据用户输入或中间结果去执行若干不同的任务;循环结构是指在程序的某处,需要根据某项条件重复地执行某项任务若干次或直到满足或不满足某条件为止。n1选择结构选择结构n选择控制语句主要包括ifelse语句和switch、c
12、ase语句。nif语句是在当条件为真时,执行一系列操作;当条件为假时,执行另外一系列操作,if的语法格式:2.1.5 C+语言的3种程序结构nif(expr)n sent1;nelsen sent2;nexpr代表表达式,例如i1。sent1和sent2代表语句,例如cost=cost+1。nexpr可以代表任何一个表达式,如果这个表达式为真,就执行sent1,否则,执行sent2。n还可以不要else来构成if语句,其形式是:nif(expr)n sent;n与if语句不同,switch、case语句专门处理多路分支的情况,其语法格式为:nSwitch(expr)ncase va11:sen
13、t 1;ncase val2:sent 2;nncase valn:sent nndefault:sent n+1;nn首先,确定expr的值并且与val1进行比较(val代表某个确定的值,如1或453)。如果expr与val1数值相等,那么就执行sent1和它后面的所有语句。如果expr与val1的数值不相等,那么expr再继续与va12比较,以此类推。如果没有与expr相匹配的值,那么就执行sent n+1。下面的程序段用于输出数字14的英文字符。nSwitch(n)ncase 1:coutone;break;ncase 2:couttwo;break;ncase 3:coutthree;
14、break;ncase4:coutfour;break;ndefault:cout”unknown number;nn注意,在每个case语句中都要使用break。2.1.5 C+语言的3种程序结构n2循环结构循环结构n循环结构主要包括for语句、while语句和do while语句。nfor语句用于反复执行某些语句,其语法格式如下:nfor(expr1;expr2;expr3)nsent;n先确定expr1表达式,expr1通常用于初始化循环中用到的变量;然后计算expr2表达式(每次进入循环都必须执行这一步);如果expr2为真,就执行sent,接着就执行expr3;然后再计算expr2表
15、达式;如果expr2为真,就重复上述步骤,直到expr2为假,循环就结束,程序继续执行for循环后面的语句。n如同for语句一样,while循环也是重复多次执行语句,其语法格式是:nwhile(expr)nsent;n在while循环开始时,先确定expr,如果表达式为真,就执行sent;然后,再确定expr,如果表达式仍为真,就再执行sent。这个过程一直持续到expr为假时为止。ndo-while语句的语法格式:ndon sent;nwhile(expr);ndo-while构成另一种循环控制,类似于while循环。两者的区别是,使用while循环,表达式在执行while内部语句之前进行判
16、定。因此,使用while有可能不执行任何语句。而do语句是先执行语句,再确定是否符合条件,以决定是否继续。如果条件为真,再次执行语句。否则,循环停止。2.1.6函数1函数的定义和调用函数的定义和调用2形式参数形式参数 函数中定义形参的方法如下:函数类型 函数名(data_type1 arg1,data_type2 arg2,.)3函数返回值函数返回值n函数要得到一个返回值,必须注意以下两点:n在声明函数时,函数名前面写上要返回数据的类型,而不要写void。n在函数中用return来返回函数的值。nreturn关键词可以起到立刻离开函数并返回一个值的作用。如果在一个函数的中间使用了return,
17、执行return命令后,return后面的程序代码就不被执行。2.1.7指针 指针是C+中一类非常重要的数据类型,它可以更好地表示复杂的数据结构,有些其他数据类型无法或很难实现的操作,都可以利用指针来完成。1指针的定义方法指针的定义方法定义一个指针变量格式如下:类型 *指针变量名;例如:int *pointer;定义一个整型指针变量pointer。2.1.7指针n2指针的地址指针的地址n使用指针之前,必须给它赋值,也就是说,必须把要指向的内存地址填入指针。n要把一个变量的地址送入指针变量,方法是:n指针变量=&变量;n该语句序列生成了一个称为pointer的整型指针,指针内填入了变量numbe
18、r的地址。n向一个指针变量赋值的过程中,必须保证指针变量的类型与所获得地址类型的一致性。例如,如果有一个指向一个整数的指针,只能在这个指针内填入整型变量的地址。n3复引用指针复引用指针n复引用指针是指引用指针变量所指向的存储单元,其方法是在指针名称前加一个*。例如程序段:nint*pointer;nint number=10;npointer=&number;ncoutValue;n在C+程序中经常可以看到“指针-成员”的表示法。n5动态分配内存动态分配内存n利用new命令可以动态地分配内存,其方法是:n指针=new 类型;n当使用new生成一个指针时,唯一能够记录这个内存地址位置的就是指针。
19、例如程序代码:nint*pointer;npointer=new int;n*pointer=15;npointer=new int;n在代码的最后一行为pointer分配了新的内存。虽然整数15仍然保留在内存内,但是,由于pointer存储的内容不再是数据15所在的地址,所以无法访问它。n如果不再使用为指针变量所分配的内存空间,就应释放这些空间,这个处理过程称为“释放内存”。方法是:ndelete 指针变量;2.1.7指针n6字符串与指针字符串与指针n字符串表示一个连续的字符序列。在处理字符串时,用指向字符串第一项的指针可以访问字符串。例如程序段:nchar*mystring=”Visual
20、 C+6.0”;n产生了一个内容为”Visual C+6.0”的字符串。变量mystring是指向这个字符串的指针。n用程序段:ncout mystring;n则可以输出字符串。2.1.8数组 数组可以生成包含相同类型的若干个变量。数组中的每个元素都有一个标号,称之为下标(index),使用数组的下标可以立即访问到数组中的任意一个数组元素。1数组的声明和数组元素的使用数组的声明和数组元素的使用在生成一个数组之前,需要声明数组中的元素数目。例如:int arr20;生成了一个具有20个数组元素的一维数组。其中第1个元素为arr0,最后一个元素为arr19。访问数组元素时,只需在变量名称后面的方括
21、号内写上数组的下标。例如:int arr20;arr0=20;arr1=3;Coutarr0;Cout3*arr1;输出结果为20和30。2.1.8数组n2数组初始化数组初始化n在声明数组时,把元素的值也同时输入,称为数组的初始化。例如:nint arr5=9,4,5,6,7;n初始化的结果是:arr0=9,arr1=4,arr2=5,arr3=6,arr4=7。n也可以任意输入几项的值。例如:nint arr5=9,4,5;n初始化的结果是:arr0=9,arr1=4,arr2=5,arr3=0,arr4=0。n3字符串数组字符串数组n在程序中也可以生成一个字符串数组并且对它进行初始化。下面
展开阅读全文