




已阅读5页,还剩65页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+语言程序设计,主 讲: Email:,目录,概述 C+简单程序设计 函数 类与对象 C+程序的结构 数组、指针与字符串 继承与派生,多态性 群体类 群体数据的组织 流类库与输入/输出 异常处理 MFC库与Windows程序开发概述,1. 概述,计算机程序设计语言的发展 程序设计方法的发展 面向对象的软件开发 信息的表示与存储 程序的开发过程,1.1 计算机程序设计语言的发展,计算机系统的构成 硬件 软件 程序指令的集合 文档相关的数据 程序设计语言的发展 机器语言可被硬件系统直接识别 汇编语言将机器指令映射为助记符 高级语言屏蔽机器细节,抽象式语言 FORTRAN、BASIC、PASCAL、C、C+,面向对象的语言,更为直观地描述客观事物(对象)以及它们之间的关系 将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性和行为,形成类 LISP、Simula67、Smalltalk、CLU、Ada、Modula-2 C+:在C语言基础上扩充的,1.2 程序设计方法的发展,结构化程序设计(面向过程的语言) 设计思路:自顶向下、逐步求精 程序结构:由模块形成的树形结构 基本组成结构:顺序、选择、循环 面向对象的方法 设计思路:对客观事物的抽象 程序特点:对类(对象的存在形式)进行结构化程序设计 类提供简单的对外接口,C+语言中的基本概念,对象 属性、行为 类 具有相同属性和行为的一组对象的集合 封装 隐藏对象的内部细节 继承 特殊类的对象具有一般类的全部属性与服务 多态性 对象被继承后所表现出的与基类中已定义行为不同的行为方式,1.3 面向对象的软件开发,面向对象的分析(OOA) 抽象 面向对象的设计(OOD) 描述 直接的OOA中的对象 与实现相关的辅助对象设计 面向对象的测试(OOT) 以类作为基本测试单位 面向对象的软件维护(OOSM),1.4 信息的表示与存储,计算机的数字系统 几种进位记数制之间的转换 信息的存储单位 二进制的编码表示 定点数和浮点数 数的表示范围 非数值信息的表示,计算机的数字系统,数字系统的表示特征 基数R 权 十进制数字系统 256.47=2x102+5x101+6x10-1+7x10-2 二进制数字系统 1011.01 易于物理实现 运算简单 机器可靠性高 通用性强可实现数字运算及逻辑运算,几种进位记数制之间的转换,R进制轮换为十进制 十进制转换为R进制 二、八、十六进制的相互转换,信息的存储单位,位(bit) 字节(byte) 1 byte = 8 bit K:1K=1024byte M:1M=1024K G:1G=1024M 字(word) 8位、16位、32位等 机器字长 32位、64位等,二进制数的编码表示,原码符号-绝对值表示 反码 正数的反码与原码相同 负数反码的符号位与原码相同,其余各位取反 补码 例: X=+01011 X原=001011 X反=001011 X补=001011 X= -01011 X原=101011 X反=110100 X补=110101 X=+0.1011 X原=0.1011 X反=0.1011 X补=0.1011 X= -0.1011 X原=1.1011 X反=1.0100 X补=1.0101,补码,模数 在模数系统中互为补数的两个数 补码表示 求反加1 补码运算法则 符号可作为数值参加运算,定点数和浮点数,计算机的浮点表示方式 N=MxRE R:基数 E:数N的阶码 M:数N的尾数,数N的全部有效数字,其位数反映数N的精度 阶码和尾数都是带符号位的数,可采用不同的码制表示法 例:阶码4位,用补码表示;尾数12位,用原码表示 0 010 1 1100 表示-0.11x22 1 101 0 1100 表示0.11x2-3,数的表示范围,整数的表示范围 m位整数,1位符号位 用原码或反码表示,最大值为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=128 EBCDIC码(Extended Binary Coded Decimal Interchange Code) 28=256,1.5 程序的开发过程,编辑源程序 编译目标程序 翻译程序:汇编程序、编译程序、解释程序 连接运行程序 运行,2. C+简单程序设计,C+概述 基本数据类型和表达式 数据的输入、输出 算法的基本控制结构 自定义数据类型,C+概述,C+特点 程序实例 字符集 词法记号,C+特点,全面兼容C,因此具有C语言的全部优点 语言简洁 结构化控制语句 程序执行效率高 同时具有高级语言与汇编语言的优点(良好的可读性、可移植性、可直接访问物理地址) 支持面向对象的方法,程序实例,求自然数110之和。 #include void main() int i=1, sum=0; do sum+=i; i+; while(i=10); cout“sum=“sumendl; ,字符集,英文字母:AZ,az 数字字符:09 特殊字符: 空格 ! # % . , ( ) ,词法记号(一),关键字C+中预定义的单词(p21) 标识符程序员声明的单词 以大写字母、小写字母或下划线( _ )开始 可以由大写字母、小写字母、下划线( _ )或数字组成 大小写字母代表不同的标识符 不能是C+关键字 例:合法标识符 Rectangle, Draw, _No1 不合法标识符 No.1, 3a, 5st,词法记号(二),文字 直接使用符号表示的数据,包括数字、字符、字符串、布尔文字 运算符 用于实现各种运算的符号 例:+,-,*,/,+,- 分隔符 分隔各个词法记号或程序正文 ( ) , : ; 空白符 空格、制表符、换行符和注释的总称,基本数据类型和表达式,基本数据类型 常量 变量 符号常量 运算符与表达式,基本数据类型,bool charsigned char, unsigned char int (signed) short, (unsigned) short (signed) int, (unsigned) int (signed) long, (unsigned) long float double long double 修饰符:signed 和 unsigned,常量(一),整型常量 十进制:若干09的数字 八进制: 0若干07的数字 十六进制: 0x若干09、A-F(大小写均可)的数字 实型常量 一般形式,如12.5,-12.5 指数形式,如0.345E+2,.123E-2, 12.E2,常量(二),字符常量 单引号括起来的单个字符,如a,?,Z 转义字符 a响铃 n换行 t水平制表符 v垂直制表符 b退格 r回车 字符 ”双引号 单引号 用八进制或十六进制ASCII码表示字符,如x61表示a nnn 八进制形式 xnnn 十六进制形式,常量(三),字符串常量 双引号括起来的字符序列,如“This is a string” 存储形式 字符串 “CHINA” C H I N A 0 字符串 “0” 0 字符 a a 布尔常量 true、false,变量,变量的数据类型和初值 变量在使用前需要先声明其类型和名称,声明形式: 数据类型 变量名1,变量名2,变量名n; 如: int num,total; float c,r,h; 变量的存储类型 auto 采用堆栈分配内存空间 register 存放在通用寄存器中 extern 在所有函数和程序段中都可使用 static 在内存中以固定地址存放,在整个程序运行期间有效,符号常量,为常量命名 符号常量在使用之前要先声明,声明形式: const 数据类型说明符 常量名=常量值; 或 数据类型说明符 const 常量名=常量值; 如:const float pi=3.1415926; 符号常量在声明时一定要赋初值 符号常量在程序中间不能改变其值,运算符与表达式,表达式定义: 一个常量或标识对象的标识符是一个最简单的表达式,其值是常量或对象的值 一个表达式的值可以用来参与其他操作,即用作其他运算符的操作数,这形成更复杂的表达式 包含在括号中表达式仍是一个表达式,其类型和值与未加括号时的表达式相同 双目运算符(一元运算符) 操作数1 运算符 操作数2 如:a+b 单目运算符(二元运算符) 如:!a a+ -count,运算符与表达式(一),算术运算符与算术表达式 由算术运算符、操作数和括号构成的表达式 双目运算符:+,-,*,/,% 单目运算符:-,+,- 赋值运算符与赋值表达式 带有赋值运算符的表达式 赋值运算符:= +=,-=,*=,/=,%=,=,&=,=,|= 逗号运算与逗号表达式 一般表现形式: 表达式1,表达式2 按从左到右的顺序依次求解,运算符与表达式(二),逻辑运算与逻辑表达式 用关系运算符将两个表达式连接起来,就是关系表达式,一种简单的逻辑表达式 关系运算符及其优先次序: 、=、 =、!= 优先级相同(较高) 优先级相同(较低) 用逻辑运算符将关系表达式连接起来构成较复杂的逻辑表达式 逻辑运算符及其优先次序: !(非) &(与) |(或) 高 低 逻辑表达式的结果类型:bool,运算符与表达式(三),条件运算符与条件表达式 唯一的三目运算符:? 表达式形式: 表达式1 ?表达式2 :表达式3 sizeof操作符 计算某种类型的对象在内存中所占的字节数 sizeof(类型名) sizeof(表达式),运算符与表达式(四),位运算 按位与 & 按位或 | 按位异或 按位取反 移位:左移 运算符优先级(表2-4) 括号单目运算符 算术运算逻辑运算赋值运算,运算符与表达式(五),混合运算时数据类型的转换 隐式转换 char short int unsigned long unsigned long float double 低高 强制类型转换 语法形式: 类型说明符(表达式) 或 (类型说明符)表达式,数据的输入、输出,I/O流 预定义流对象:cin、cout 预定义的插入符和提取符 cout表达式表达式 简单的I/O格式控制 Dec Hex Oct Ws Endl Ends setpresision(int) setw(int),算法的基本控制结构,顺序结构 选择结构 if语句 switch语句 循环结构 do-while语句 while语句 for语句,基本控制结构,选择结构的实现 循环结构的实现 循环结构与选择结构的嵌套 其他控制语句,基本控制结构 用if语句实现选择结构,用if语句实现选择结构 if (表达式) 语句1 else 语句2 或 if (表达式) 语句,基本控制结构 多重选择结构的实现(一),嵌套的if语句 if (表达式1) if (表达式2)语句1 else 语句2 else if (表达式2)语句3 else 语句4,基本控制结构 多重选择结构的实现(二),if else if 语句 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else 语句n,基本控制结构 多重选择结构的实现(二),switch语句 switch (表达式) case 常量表达式1:语句1 case 常量表达式1:语句2 case 常量表达式n:语句n default:语句n+1 表达式可以是整型、字符型、枚举型 各常量表达式的值不能相同 每个case分支可以有多条语句,但不必用 每个case分支只有入口,没有出口 可使用多个case分支共用一组语句,以完成相同操作,基本控制结构选择结构例: 输入一个年份,判断是否闰年,#include void main(void) int year; bool IsLeapYear; cout year; IsLeapYear = (year % 4 = 0 ,基本控制结构选择结构例: 比较两个数x,y的大小,#include void main() int x,y; coutxy; if (x!=y) if (xy) couty“endl; else cout“xy“endl; else cout“x=y“endl; ,基本控制结构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; break; case 6: cout “Saturday“ endl; break; default: cout “Day out of range Sunday Saturday“ endl; break; ,基本控制结构 循环结构的实现,循环结构 while while (表达式) 语句 注意:在循环体应包含改变条件表达式的语句 do-wihle do 语句 while (表达式) 注意:在循环体应包含改变条件表达式的语句 for for (表达式1;表达式2;表达式3) 语句 注意:表达式1,2,3都可以省略,分号不能省略,基本控制结构 循环结构与选择结构的嵌套,选择结构的嵌套 循环结构的嵌套 循环结构与选择结构相互嵌套,基本控制结构 循环结构与选择结构相互嵌套例: 读入一毓整数,统计出正整数个数i和负负整数个数j,读入0结束,#include void 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 语句标号,自定义数据类型,类型定义语句typedef typedef 已有类型名 新类型名表; 枚举类型enum enum 枚举类型名 变量值列表; 结构体struct struct 结构名 数据类型说明符1 成员名1; 数据类型说明符2 成员名2; 数据类型说明符n 成员名n; ;,自定义数据类型,联合体union union 联合名 数据类型说明符1 成员名1; 数据类型说明符2 成员名2; 数据类型说明符n 成员名n; ;,自定义数据类型结构体程序举例 例2-14:有三只动物,都具有重量和身长两个属性,现在需要对它们的重量和身长赋值,并且输出它们的重量,#include struct animal int weight; int feet; ; int main() ,animal dog1,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届云南省文山壮族苗族自治州八年级英语第二学期期末预测试题含答案
- 蒙古准格尔旗2025年七年级英语第二学期期中综合测试模拟试题含答案
- 连云港市租房合同协议书
- 2025届山东省莒南县七年级英语第二学期期末考试模拟试题含答案
- 揭阳市榕城区2025年英语七下期中复习检测模拟试题含答案
- 黑龙江省哈尔滨市第十七中学2025年八下英语期末监测试题含答案
- 护理服务内涵课件
- 中考语文试题及答案期末
- 产床买卖合同协议书
- 租赁合同补偿协议书范本
- 安徽省合肥市45中学2025届七年级数学第二学期期末监测模拟试题含解析
- 中学生成就目标导向下的学习满意度影响机制探讨
- 预防医学知识试题及答案汇编
- 法人变更交接协议书
- 地七年级下册全册知识要点总复习-2024-2025学年七年级地理教学课件(人教版2024)
- 财务培训:AI与财税合规的未来
- 全国农业行业职业技能大赛(农业技术员)理论考试题(附答案)
- 直招军官面试题库及答案
- 2025至2030中国磷石膏市场行情走势监测及未来发展展望报告
- 青少年足球训练营未来三年计划
- 2025建设工程施工专业分包合同(示范文本)-建设工程专业分包合同(示范文本)
评论
0/150
提交评论