《C++程序设计入门基础.ppt》由会员分享,可在线阅读,更多相关《C++程序设计入门基础.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+程序设计程序设计课程概述课程性质:通识基础课课程目标:理解并熟练运用C语言进行结构化程序设计理解并熟练运用C+语言进行面向对象程序设计课程安排:50%课堂讲授;50%上机实验课程考核:平时成绩40%;期末笔试60%课程内容第一部分 C语言数据类型运算符基本语句函数指针第二部分 C+语言类和对象引用友元继承多态和虚函数抽象类模板运算符重载I/O流参考书目教材 C+程序设计教程 钱能 清华大学出版社参考书目 C语言程序设计 谭浩强 清华大学出版社 面向对象的理论与C+实践 王燕清华大学出版社 第一章 概述程序设计语言程序与算法结构化程序设计面向对象程序设计1.1 程序设计语言机器语言汇编语言高
2、级语言CC+JavaBasicC#1.1 程序设计语言C+编程流程 程序编辑编译链接可执行文件1.2 程序与算法程序代码算法求解特定问题的一组有限的操作序列 程序程序=算法算法+数据结构数据结构1.3 结构化程序设计顺序结构选择结构循环结构1.4 面向对象程序设计出现的原因面向对象的基本概念封装继承多态第一个C+程序#includeint main()cout“Hello,World!”“新建”选择“C+Source File”,输入文件名,点“确定”程序调试第二个C+程序#includeint main()int x,y;/*定义变量x和y*/cout“请输入x的值:”x;cout“请输入y
3、的值:”y;cout“x+y=”x+yendl;/输出相加之和 return 0;编程风格缩进对齐写注释总结第二章第二章 数据类型、数据类型、运算符、表达式运算符、表达式什么是数据类型数据类型:一定的数据在计算机的内部表示;该数据所表示的值的集合;在该数据上的一系列操作。2.1 数据类型整型字符型枚举型布尔型浮点型字符串型数组指针和引用(*)常量和变量常量:程序运行过程中不能被改变的量如:整型常量(如12、0、-3为整型常量)实型常量(4.6、-1.23为实型常量)字符常量(a、d字符常量)常量和变量变量:在程序运行过程中,其值可以被改变的量称为变量。每个变量都必须有一个名字变量名,变量命名遵
4、循标识符命名规则:变量命名的规定:+语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。变量必须先定义后使用2.1.1 整型各整型的范围:取决于不同的编译器 类型 类型说明符 长度 数的范围 基本型 int 4字节 -231231-1 短整型 short 2字节 -215215-1 长整型 long 4字节 -231231-1 无符号整型 unsigned 4字节 0232-1 无符号短整型 unsigned short 2字节 0 216-1 无符号长整型 unsigned long 4字节 0(232-1)2.1.1 整型整型字面值分八进制,十进制和十六进制
5、不同表示如:0123 /8进制 0 x12af3 /16进制 12345 /10进制 超过表示范围的整型数其值不可预料或者出错如:int a=12345678912345678912345;/错2.1.1 整型整型数的操作:+,-,*,/,%,=,!,=,=,=,&,|,&=,|=,&,|,&=,|=,!=,=,+=,-=,*=,/=,%=,+,-,,,?:2.1.1 整型变量说明的一般形式为:变量说明的一般形式为:类型说明符 变量名标识符,变量名标识符,.;int a,b,c;/a,b,c为整型变量long x,y;/x,y为长整型变量unsigned int p,q;/p,q为无符号整型变
6、量2.1.2 字符型用一对单引号括起来的单个字符,称为字符常量字符变量的类型关键字为char,一般占用1字节内存单元字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。可作为整数和字符两种形式输出,可对字符进行整数运算(ASCII码值)语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的转义字符。2.2 字符型语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的转义字符。其它如下表其它如下表:字符形式ntvbrf dddxxh功能换行横向跳格(即跳到下一个输出区)竖向跳格退格回车走纸换页反斜杠字符“”单引
7、号(撇号)字符1到3位8进制数所代表的字符1到2位16进制数所代表的字符2.1.2 字符型 输出形式与整型数不同:int a=65;char b=65;couta“n”;coutb“n”;结果为:65 A2.1.3 枚举型自定义整数区间,甚至列举单个整数值 enum Week Mon,Tue,Wed,Thu,Fri,Sat,Sun;最大特点是可以给每个值指定一个在程序中直接使用的标记(枚举符)编程中将其当作整数常量用如:int a=6;if(a=Sun)cout“Sundayn”;2.1.4 布尔型表示范围仅含整数和1,也可以表示成true和false,相当于:因为条件表达式、逻辑运算的结果都
8、是因为条件表达式、逻辑运算的结果都是或,所以,相当大数量的表达式的值与或,所以,相当大数量的表达式的值与布尔型对应布尔型对应例:例:bool a=3 /true bool b=0 /false2.1.5 浮点型浮点型常量的表示方法小数形式:0.123指数形式:3e-32.1.5 浮点型浮点型分为:单精度(float型)双精度(double型)长双精度型(long double)类型 位数 数的范围 有效数字float 32 10-37 1038 67 位double型 64 10-30710308 1516位long double 128 10-4931104932 1819位2.1.5 浮点
9、型浮点型变量的赋值float f1=19.2fdouble f2=19.2(1)语言允许在定义变量的同时使变量初始化。如如:int a=3;/指定为整型变量,初值为 float f=3.56;/指定为浮点型变量,初值为.56 char c=a;/指定为字符变量,初值为a小结小结(2)可以使被定义的变量的一部分赋初值。如如:int a,b,c=5;表示指定、为整型变量,但只对初始化,c的初值为(3)如果对几个变量赋以同一个初值,应写成:int a=3,b=3,c=3;表示、的初值都是。不能写成 int a=b=c3;练习1用户输入圆的半径,求出圆的面积并输出。#include#includein
10、t main()double r,mj;cout请输入圆的半径:r;mj=3.14*r*r;cout圆的面积是:mjendl;return 0;练习2输入矩形的长和宽,求矩形的周长并输出。#includeint main()double x,y,zc;cout请输入矩形的长:x;cout请输入矩形的宽:y;zc=2*x+2*y;cout矩形的周长是:zcendl;return 0;2.1.6 数组数组是同类元素的集合,它的元素排列在连续的空间中,按下标来标记描述数组必须给出元素类型,元素个数元素个数必须在编程时确定,任何变量都不允许数组的定义格式为:类型名 数组名常量表达式数组下标从0开始2.
11、1.6 数组例:int aa;/表示int a97;int n=100;int an;/错:元素个数必须预知 const int n=100;int an;/ok int a ;/错:无元素个数 int a =1,2,3,4,5 ;/ok:通过初始化确定元素个数2.1.6 数组 数组初始化可选,但须遵循语法无初始化的数组按规定取默认值 int array15=1,2,3,4,5,6;/错:初始值个数超元素个数int array25=1,2,3,4 ;/错:不能以逗号方式省略int array35=1,2,3,;/错:同上int array45=;/错:初始值不能为空int array55=1,
12、2,3 ;/ok:后面元素取0int array65=0;/ok:元素全为0int array75;/ok:元素值不确定int a35=1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 ;2.1.6 数组二维数组二维数组的定义格式为:类型名 数组名常量表达式常量表达式intint a34;/a a34;/a为为34(334(3行行4 4列列)的数组的数组float b510;/bfloat b510;/b为为510(5510(5行行1010列列)的数组的数组2.1.6 数组二维数组的初始化分行赋值分行赋值,如:如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;
13、全部数据全部数据写在一个大括号内,如写在一个大括号内,如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;部分元素赋值部分元素赋值,如如:int a34=1,5,9;仅仅对对a00、a10、a20赋赋值值,其其余余元元素素未未赋赋值值(编编译器自动为未赋值元素指定初值译器自动为未赋值元素指定初值02.1.6 数组二维数组的初始化如如果果对对全全部部元元素素赋赋初初值值,则则第第一一维维的的长长度度可可以以不指定不指定,但必须指定,但必须指定第二维第二维的长度。的长度。例例:int a34=1,2,3,4,5,6,7,8,9,10,11,12;与下面定义等价:与下面定义等价
14、:int a 4=1,2,3,4,5,6,7,8,9,10,11,12;练习3斐波那契数列如下斐波那契数列如下 F0=1 F1=1 Fn=Fn-1+Fn-2 使用数组求出斐波那契数列的前使用数组求出斐波那契数列的前5项,并输项,并输出。出。#includeint main()int F5;F0=F1=1;F2=F0+F1;F3=F1+F2;F4=F2+F3;cout斐波那契数列的前5项是:F0 F1 F2 F3 F4endl;2.1.7 字符串型C-串C语言中没有字符串类型char buffer7=“Hello!“;本质是一个字符数组Hello!0 72 101 108 108 111 33
15、02.1.7 字符串型知道了知道了C-C-串首地址串首地址,即可知道整个串即可知道整个串,所以所以可以用字符首址可以用字符首址(字符指针字符指针)来操作来操作C-C-串串,但但要注意,串的第一个字符与整个串的操作要注意,串的第一个字符与整个串的操作不同不同,如如,C-,C-串的输出操作串的输出操作:char*str=”Hello”;cout *str endl;/显示显示H cout str 的读入方式总是将前导的空格(所谓空格,即包括空格、回车、水平或垂直制表符等)滤掉,将单词读入,在遇到空格时结束本次输入getline总是将行末的回车符滤掉,将其整行输入对字串”Hello,How are
16、you?”的两种输入方式 for(string s;cins;)couts”“;coutsendl;string s;getline(cin,s);coutsendl;2.1.8 指针与引用指针是指针是一种特殊的变量一种特殊的变量,它是,它是存放地址存放地址的的指针必须初始化或者赋值(指向了数据)后,才能进行间接访问(间访)操作int*ip;int iCount=18;int*iPtr=&iCount;/初始化ip=&iCount;/赋值*ip=8;/间访操作20008地址:2000iCountip2000iPtr2.1.8 指针与引用为为表表示示指指针针变变量量和和它它指指向向的的变变量量之
17、之间间的的关关系系,用用指针运算符指针运算符“*”表示。表示。运算符运算符“&”表示取地址。表示取地址。例如例如int*num_pointer;int num=3;/*将将3直接赋给变量直接赋给变量num*/num_pointer=#/使使num_pointer指向指向num*num_pointer=3;/*将将3赋给指针变量赋给指针变量num_pointer所指向的变量所指向的变量*/2.1.8 指针与引用定义指针变量的一般形式为基类型基类型 *指针变量名;指针变量名;2.1.8 指针与引用下面都是合法的定义:float *pointer_;char*pointer_;可以用赋值语句
18、使一个指针变量得到另一个变量的地址,从而使它指向一个该变量。例如:例如:pointer_;pointer_;2.1.8 指针与引用(1)指针变量前面的指针变量前面的“*”,表示该变量的类型为指针型,表示该变量的类型为指针型变量。变量。(2)例例:float *pointer_1;(3)指针变量名是指针变量名是pointer_1,而不是而不是*pointer_1。(4)(2)在定义指针变量时必须指定在定义指针变量时必须指定基基类型。类型。(5)需要特别注意的是,只有整型变量的地址才能放到指需要特别注意的是,只有整型变量的地址才能放到指向整型变量的指针变量中。下面的赋值是错误的向整型变量的指针变量
19、中。下面的赋值是错误的(6)float a;(7)int *pointer_1;(8)pointer_1=&a;2.1.8 指针与引用指针加减整数的操作表示空间位置上的挪动,但是挪动的字节数与其数据类型相关:对float指针加6实际增加了24个字节对long int指针加5实际增加了20个字节对char指针减7实际减少了7个字节对double指针减2实际减少了16个字节2.1.8 指针与引用数组名本身就是表示元素集合的首地址数组名本身就是表示元素集合的首地址可以将数组名赋给指针可以将数组名赋给指针 int a3;a1=1;a2=2;a3=3;int*iP=a;cout*(iP+2)“n”;结果
20、为:32.1.8 指针与引用引用必须初始化,因为引用总是附属于某个实体引用必须初始化,因为引用总是附属于某个实体int someInt=5;int&rInt=someIne;/初始化修改引用的值,即是修改了附属的实体值修改引用的值,即是修改了附属的实体值int a=5;int&ra=a;ra=8;couta“n”;结果为:82.2 运算符运算符:狭义的运算符是表示各种运算的符号。运算符:狭义的运算符是表示各种运算的符号。C+语语言言运运算算符符丰丰富富,范范围围很很宽宽,把把除除了了控控制制语语句句和和输输入入/输输出出以以外外的的几几乎乎所所有有的的基基本本操操作作都都作作为为运运算算符符处
21、处理理,所所以以C+语语言言运运算算符符可可以以看看作作是是操操作作符符。C+语语言言丰丰富富的的运运算算符符构构成成C+语语言言丰丰富富的的表表达达式式(是是运运算算符符就就可可以以构构成成表表达达式式)。运运算符丰富、表达式丰富、灵活。算符丰富、表达式丰富、灵活。在在C+语语言言中中除除了了提提供供一一般般高高级级语语言言的的算算术术、关关系系、逻逻辑辑运运算算符符外外,还还提提供供赋赋值值运运算算符符,位位操操作作运运算算符符、自自增增自自减减运运算算符符等等等等。甚甚至至数数组组下下标标,函数调用都作为运算符。函数调用都作为运算符。2.2 运算符2.2 运算符C中各类运算符的优先级中各
22、类运算符的优先级:初等运算符初等运算符()、单目运算符单目运算符!、!、+、+、(类型类型)算术运算符算术运算符、/、%,+、关系运算符关系运算符、=,=、!=逻辑运算符逻辑运算符&、条件运算符条件运算符?:赋值运算符赋值运算符=、+=、=、=、/=、%=逗号运算符逗号运算符,2.2.1算术运算符和算术表达式基本的算术运算符基本的算术运算符:(加法运算符,或正值运算符,如:、)(减法运算符,或负值运算符,如:、)*(乘法运算符,如:*)(除法运算符,如:)(模运算符,或称求余运算符,两侧均应为整型数据,如:的值为)。2.2.1算术运算符和算术表达式算术表达式和运算符的优先级与结合性基本的算术算
23、术表达式和运算符的优先级与结合性基本的算术运算符运算符:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合+语法规则的式子,称为+算术表达式。运算对象包括常量、变量、函数等。例如例如:*.5a 是一个合法的表达式。强制转换强制转换是通过类型转换运算符来实现。一般形式:(类型说明符)表达式功能:把表达式的结果强制转换为类型说明符所表示的类型。(int)a 将将a的结果强制转换为整型量。的结果强制转换为整型量。(int)(x+y)将将x+y的结果强制转换为整型量。的结果强制转换为整型量。(float)a+b 将将a的内容强制转换为浮点数,再与的内容强制转换为浮点数,再与b相加相加无论隐式转
24、换,强制转换都是临时转换,不改变数据本身的类型和值。2.2.1算术运算符和算术表达式自增、自减运算符自增、自减运算符(+-)(+-)作用是使变量的值增或减如如:,(在使用之前,先使的值加 (减),(在使用之后,使的值加(减)2.2.1算术运算符和算术表达式i+i+与与+i+i的区别:的区别:是先执行后,再使用的值;是先使用的值后,再执行。例如:例如:;如果i的初值是3,则i的值先变成4,再赋给,j的值均为 ;如果i的初值是3,先将 i的值3赋给,的值为,然后变为2.2.1算术运算符和算术表达式注意:注意:(1)自增运算符(),自减运算符(),只能用于变量,而不能用于常量或表达式,(2)和的结合
25、方向是“自右至左”。自增(减)运算符常用于循环语句中使循环变量自动加。也用于指针变量,使指针指向下一个地址 2.2.1算术运算符和算术表达式语言中有的运算符为一个字符,有的运算符由两个字符组成,为避免误解,最好采取大家都能理解的写法。例如:不要写成i+j的形式,而应写成 (i+)+j的形式 2.2.2 赋值运算符和赋值表达式符号=为赋值运算符。一般形式:赋值表达式例:x=10 为一赋值表达式 其中又可以是一个赋值表达式。例:x=(y=10)相当于 y=10;x=y 由于赋值号为右结合性,于是()可省略,即为:x=y=10;例:a+=a =aa (设a12)又:a=5+(c=6)c=6,a=11
26、 a=(b=4)+(c=6)b=4,c=6,a=10 a=(b=10)/(c=2)b=10,c=2,a=5进一步,还可用复合赋值运算符作下列运算:步骤:aa144.a =a a a=a a a=12 144=132 a+=132 a=a+(132)=2642.2.2 逗号运算符和逗号表达式 一般形式:表达式1,表达式2,表达式3,表达式n其计算规则:先计算表达式1,再计算表达式2,.最后值为表达式n的值。例:a=35,a 4 则:先计算3 5,a15,a 4=60,结果为60。又如:(a=35,a 4),a+5结果为20(作为逗号表达式的值)a+5a 即 20a.3 5=15a a 4=60 (此时a值仍未变)