《经典PPT-C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《经典PPT-C语言程序设计.ppt(70页珍藏版)》请在三一办公上搜索。
1、C+语言程序设计,主 讲:Email:,目录,概述C+简单程序设计函数类与对象C+程序的结构数组、指针与字符串继承与派生,多态性 群体类 群体数据的组织 流类库与输入/输出 异常处理 MFC库与Windows程序开发概述,1.概述,计算机程序设计语言的发展程序设计方法的发展面向对象的软件开发信息的表示与存储程序的开发过程,1.1 计算机程序设计语言的发展,计算机系统的构成硬件软件程序指令的集合文档相关的数据程序设计语言的发展机器语言可被硬件系统直接识别汇编语言将机器指令映射为助记符高级语言屏蔽机器细节,抽象式语言FORTRAN、BASIC、PASCAL、C、C+,面向对象的语言,更为直观地描述
2、客观事物(对象)以及它们之间的关系将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性和行为,形成类LISP、Simula67、Smalltalk、CLU、Ada、Modula-2C+:在C语言基础上扩充的,1.2 程序设计方法的发展,结构化程序设计(面向过程的语言)设计思路:自顶向下、逐步求精程序结构:由模块形成的树形结构基本组成结构:顺序、选择、循环面向对象的方法设计思路:对客观事物的抽象程序特点:对类(对象的存在形式)进行结构化程序设计类提供简单的对外接口,C+语言中的基本概念,对象属性、行为类具有相同属性和行为的一组对象的集合封装隐藏对象的内部细节继承特殊类的对象具有一
3、般类的全部属性与服务多态性对象被继承后所表现出的与基类中已定义行为不同的行为方式,1.3 面向对象的软件开发,面向对象的分析(OOA)抽象面向对象的设计(OOD)描述直接的OOA中的对象与实现相关的辅助对象设计面向对象的测试(OOT)以类作为基本测试单位面向对象的软件维护(OOSM),1.4 信息的表示与存储,计算机的数字系统几种进位记数制之间的转换信息的存储单位二进制的编码表示定点数和浮点数数的表示范围非数值信息的表示,计算机的数字系统,数字系统的表示特征基数R权十进制数字系统256.47=2x102+5x101+6x10-1+7x10-2二进制数字系统1011.01易于物理实现运算简单机器
4、可靠性高通用性强可实现数字运算及逻辑运算,几种进位记数制之间的转换,R进制轮换为十进制十进制转换为R进制二、八、十六进制的相互转换,信息的存储单位,位(bit)字节(byte)1 byte=8 bitK:1K=1024byteM:1M=1024KG:1G=1024M字(word)8位、16位、32位等机器字长32位、64位等,二进制数的编码表示,原码符号-绝对值表示反码正数的反码与原码相同负数反码的符号位与原码相同,其余各位取反补码例:X=+01011X原=001011 X反=001011 X补=001011X=-01011X原=101011 X反=110100 X补=110101X=+0.1
5、011X原=0.1011 X反=0.1011 X补=0.1011X=-0.1011X原=1.1011 X反=1.0100 X补=1.0101,补码,模数在模数系统中互为补数的两个数补码表示求反加1补码运算法则符号可作为数值参加运算,定点数和浮点数,计算机的浮点表示方式N=MxRER:基数E:数N的阶码M:数N的尾数,数N的全部有效数字,其位数反映数N的精度阶码和尾数都是带符号位的数,可采用不同的码制表示法例:阶码4位,用补码表示;尾数12位,用原码表示0 010 1 1100 表示-0.11x221 101 0 1100 表示0.11x2-3,数的表示范围,整数的表示范围m位整数,1位符号位用
6、原码或反码表示,最大值为2m-1-1,最小值为-(2m-1-1)用补码表示,最大值为2m-1-1,最小值为-2m-1,数的表示范围,定点数的表示范围定点小数,小数点左边一位表示符号,小数点右边N位用原码表示:-(1-2-n)(1-2-n)用补码表示:-1(1-2-n)浮点数的表示范围阶码用r位整数(补码)表示,尾数用n位定点小数(原码)表示,浮点数范围是:-(1-2-n)x2(2r-1-1)-1+(1-2-n)x2(2r-1-1),非数值信息的表示,ASCII码27=128EBCDIC码(Extended Binary Coded Decimal Interchange Code)28=256
7、,1.5 程序的开发过程,编辑源程序编译目标程序翻译程序:汇编程序、编译程序、解释程序连接运行程序运行,2.C+简单程序设计,C+概述基本数据类型和表达式数据的输入、输出算法的基本控制结构自定义数据类型,C+概述,C+特点程序实例字符集词法记号,C+特点,全面兼容C,因此具有C语言的全部优点语言简洁结构化控制语句程序执行效率高同时具有高级语言与汇编语言的优点(良好的可读性、可移植性、可直接访问物理地址)支持面向对象的方法,程序实例,求自然数110之和。#includevoid main()int i=1,sum=0;do sum+=i;i+;while(i=10);coutsum=sumend
8、l;,字符集,英文字母:AZ,az数字字符:09特殊字符:空格!#%.,(),词法记号(一),关键字C+中预定义的单词(p21)标识符程序员声明的单词以大写字母、小写字母或下划线(_)开始可以由大写字母、小写字母、下划线(_)或数字组成大小写字母代表不同的标识符不能是C+关键字例:合法标识符 Rectangle,Draw,_No1 不合法标识符No.1,3a,5st,词法记号(二),文字直接使用符号表示的数据,包括数字、字符、字符串、布尔文字运算符用于实现各种运算的符号例:+,-,*,/,+,-分隔符分隔各个词法记号或程序正文(),:;空白符空格、制表符、换行符和注释的总称,基本数据类型和表达
9、式,基本数据类型常量变量符号常量运算符与表达式,基本数据类型,boolcharsigned char,unsigned charint(signed)short,(unsigned)short(signed)int,(unsigned)int(signed)long,(unsigned)longfloatdoublelong double修饰符:signed 和 unsigned,常量(一),整型常量十进制:若干09的数字八进制:0若干07的数字十六进制:0 x若干09、A-F(大小写均可)的数字实型常量一般形式,如12.5,-12.5指数形式,如0.345E+2,.123E-2,12.E2,
10、常量(二),字符常量单引号括起来的单个字符,如a,?,Z转义字符a响铃n换行t水平制表符v垂直制表符b退格r回车字符”双引号单引号用八进制或十六进制ASCII码表示字符,如x61表示annn 八进制形式xnnn 十六进制形式,常量(三),字符串常量双引号括起来的字符序列,如“This is a string”存储形式字符串“CHINA”C H I N A 0字符串“0”0字符 aa布尔常量true、false,变量,变量的数据类型和初值变量在使用前需要先声明其类型和名称,声明形式:数据类型 变量名1,变量名2,变量名n;如:int num,total;float c,r,h;变量的存储类型au
11、to采用堆栈分配内存空间register存放在通用寄存器中extern在所有函数和程序段中都可使用static在内存中以固定地址存放,在整个程序运行期间有效,符号常量,为常量命名符号常量在使用之前要先声明,声明形式:const 数据类型说明符 常量名=常量值;或 数据类型说明符 const 常量名=常量值;如:const float pi=3.1415926;符号常量在声明时一定要赋初值符号常量在程序中间不能改变其值,运算符与表达式,表达式定义:一个常量或标识对象的标识符是一个最简单的表达式,其值是常量或对象的值一个表达式的值可以用来参与其他操作,即用作其他运算符的操作数,这形成更复杂的表达式
12、包含在括号中表达式仍是一个表达式,其类型和值与未加括号时的表达式相同双目运算符(一元运算符)操作数1 运算符 操作数2如:a+b单目运算符(二元运算符)如:!a a+-count,运算符与表达式(一),算术运算符与算术表达式由算术运算符、操作数和括号构成的表达式双目运算符:+,-,*,/,%单目运算符:-,+,-赋值运算符与赋值表达式带有赋值运算符的表达式赋值运算符:=+=,-=,*=,/=,%=,=,&=,=,|=逗号运算与逗号表达式一般表现形式:表达式1,表达式2按从左到右的顺序依次求解,运算符与表达式(二),逻辑运算与逻辑表达式用关系运算符将两个表达式连接起来,就是关系表达式,一种简单的
13、逻辑表达式关系运算符及其优先次序:、=、=、!=优先级相同(较高)优先级相同(较低)用逻辑运算符将关系表达式连接起来构成较复杂的逻辑表达式逻辑运算符及其优先次序:!(非)&(与)|(或)高 低逻辑表达式的结果类型:bool,运算符与表达式(三),条件运算符与条件表达式唯一的三目运算符:?表达式形式:表达式1?表达式2:表达式3sizeof操作符计算某种类型的对象在内存中所占的字节数sizeof(类型名)sizeof(表达式),运算符与表达式(四),位运算按位与&按位或|按位异或 按位取反 移位:左移 运算符优先级(表2-4)括号单目运算符 算术运算逻辑运算赋值运算,运算符与表达式(五),混合运
14、算时数据类型的转换隐式转换char short int unsigned long unsigned long float double低高强制类型转换语法形式:类型说明符(表达式)或(类型说明符)表达式,数据的输入、输出,I/O流预定义流对象:cin、cout预定义的插入符和提取符cout表达式表达式简单的I/O格式控制DecHexOctWsEndlEndssetpresision(int)setw(int),算法的基本控制结构,顺序结构选择结构if语句switch语句循环结构do-while语句while语句for语句,基本控制结构,选择结构的实现循环结构的实现循环结构与选择结构的嵌套其他
15、控制语句,基本控制结构用if语句实现选择结构,用if语句实现选择结构if(表达式)语句1else 语句2或if(表达式)语句,基本控制结构多重选择结构的实现(一),嵌套的if语句if(表达式1)if(表达式2)语句1else 语句2elseif(表达式2)语句3else 语句4,基本控制结构多重选择结构的实现(二),if else if 语句if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else 语句n,基本控制结构多重选择结构的实现(二),switch语句switch(表达式)case 常量表达式1:语句1case 常量表达式1:语句2case 常量表
16、达式n:语句ndefault:语句n+1表达式可以是整型、字符型、枚举型各常量表达式的值不能相同每个case分支可以有多条语句,但不必用 每个case分支只有入口,没有出口可使用多个case分支共用一组语句,以完成相同操作,基本控制结构选择结构例:输入一个年份,判断是否闰年,#include void main(void)int year;bool IsLeapYear;cout year;IsLeapYear=(year%4=0,基本控制结构选择结构例:比较两个数x,y的大小,#includevoid main()int x,y;coutxy;if(x!=y)if(xy)coutyendl;
17、else coutxyendl;else coutx=yendl;,基本控制结构switch选择结构例:输入一个06的数,转换成星期输出,#include void main(void)int day;cin day;switch(day)case 0:cout Sunday endl;break;case 1:cout Monday endl;break;case 2:cout Tuesday endl;break;case 3:cout Wednesday endl;break;case 4:cout Thursday endl;break;case 5:cout Friday endl;
18、break;case 6:cout Saturday endl;break;default:cout Day out of range Sunday.Saturday endl;break;,基本控制结构循环结构的实现,循环结构whilewhile(表达式)语句注意:在循环体应包含改变条件表达式的语句do-wihle do 语句while(表达式)注意:在循环体应包含改变条件表达式的语句forfor(表达式1;表达式2;表达式3)语句注意:表达式1,2,3都可以省略,分号不能省略,基本控制结构循环结构与选择结构的嵌套,选择结构的嵌套循环结构的嵌套循环结构与选择结构相互嵌套,基本控制结构循环结构
19、与选择结构相互嵌套例:读入一毓整数,统计出正整数个数i和负负整数个数j,读入0结束,#includevoid main()int i=0,j=0,n;coutn;while(n!=0)if(n0)i+=1;if(nn;cout正整数个数:i 负整数个数:jendl;,基本控制结构其他控制语句,break语句从循环体和switch语句内跳出continue语句结束本次循环goto语句goto 语句标号,自定义数据类型,类型定义语句typedeftypedef 已有类型名 新类型名表;枚举类型enumenum 枚举类型名 变量值列表;结构体structstruct 结构名数据类型说明符1 成员名1
20、;数据类型说明符2 成员名2;数据类型说明符n 成员名n;,自定义数据类型,联合体unionunion 联合名数据类型说明符1 成员名1;数据类型说明符2 成员名2;数据类型说明符n 成员名n;,自定义数据类型结构体程序举例例2-14:有三只动物,都具有重量和身长两个属性,现在需要对它们的重量和身长赋值,并且输出它们的重量,#include struct animal int weight;int feet;int main(),animal dog1,dog2,chicken;dog1.weight=15;dog2.weight=37;chicken.weight=3;dog1.feet=4
21、;dog2.feet=4;chicken.feet=2;,自定义数据类型结构体程序举例例2-14:,cout The weight of dog1 is dog1.weight n;cout The weight of dog2 is dog2.weight n;cout The weight of chicken is chicken.weight n;return 0;,自定义数据类型结构体、联合体例2-15:适用于描述战斗机、轰炸机、运输机的结构体,struct aircraft int wingspan;/翼幅int passengers;/乘客union/无名联合作为结构体的内嵌成员float fuel_load;/战斗机装载的燃料float bomb_load;/轰炸机装载的炸弹int pallets;/运输机的货盘;fighter,bomber,transport;,3.函数,函数的定义与使用内联函数带默认参数的函数函数重载函数模板使用C+系统函数,4.类与对象,函数,5.C+程序的结构,函数,6.数组、指针与字符串,函数,7.继承与派生,函数,8.多态性,函数,9.群体类,函数,10.群体数据的组织,函数,11.流类库与输入/输出,函数,12.异常处理,函数,13.MFC库与Windows程序开发概述,函数,