1、1 程序设计与程序设计与C语言全册配套完整语言全册配套完整 精品课件精品课件 2021-8-9 2 为什么学习程序设计?为什么学习程序设计? “ Everybody in this country should learn how to program a computer, because it teaches you how to think ” -Steve Jobs http:/ 3 为什么学习程序设计?为什么学习程序设计? o 学习一种计算机编程语言:由于语言语法、语学习一种计算机编程语言:由于语言语法、语 义的同质化,可以作为基础继续学习其他语言义的同质化,可以作为基础继续学习其他
2、语言 o 学习程序设计方法:面向过程、面向对象学习程序设计方法:面向过程、面向对象 o 培养运用计算机进行问题求解的能力:分析、培养运用计算机进行问题求解的能力:分析、 设计、编码、调试、测试、维护设计、编码、调试、测试、维护 o 训练计算机思维:抽象、建模、分解、有效(训练计算机思维:抽象、建模、分解、有效( 效率)、效率)、 4 主要教材主要教材 面向对象程序设计基础面向对象程序设计基础(第二版第二版) 李师贤 李文军 周晓聪 李宏新 林瑛 编著 高等教育出版社 5 目录 o 第一章第一章程序设计与程序设计与C C语言初步语言初步 o 第二章第二章基本数据类型基本数据类型 o 第三章基本控
3、制结构第三章基本控制结构 o 第四章函数第四章函数 o 第五章类与对象第五章类与对象 o 第六章复合数据类型第六章复合数据类型 o 第七章继承机制第七章继承机制 6 目录 o 第八章第八章多态性多态性 o 第九章类属机制第九章类属机制 o 第十章第十章 C+的输入输出的输入输出 o 第十一章面向对象软件构造第十一章面向对象软件构造 o 第十二章结束语第十二章结束语 7 教学安排 章节章节教学内容教学内容课堂教授课堂教授实验实验课外课外 第一章第一章程序设计与程序设计与C C语言初步语言初步22 第二章第二章基本数据类型基本数据类型322 第三章第三章基本控制结构基本控制结构324 第四章第四章
4、 函数函数626 第六章第六章复合数据类型复合数据类型636 第五章第五章类与对象类与对象636 第七章第七章继承机制继承机制524 第八章第八章多态性多态性525 第九章第九章类属机制类属机制524 第十章第十章 C+的输入输出的输入输出425 第十一章第十一章面向对象软件构造面向对象软件构造042 第十二章第十二章结束语结束语001 8 主要参考书 o 基础篇基础篇 nC+程序设计语言(程序设计语言(Special Edition) Bjarne Stroustrup 高高 等教育出版社,等教育出版社,Pearson Education出版集团(出版集团(2001.8) nC+程序设计教程
5、(第二版)程序设计教程(第二版) 钱能钱能 清华大学出版社(清华大学出版社( 2005.9) n C+程序设计教程程序设计教程(第二版第二版) 罗建军等罗建军等 高等教育出版社高等教育出版社 (2007.8) n程序设计教程程序设计教程用用C+语言编程语言编程陈家骏陈家骏 高等教育出版高等教育出版 社社(2008.7) n C+程序设计教程程序设计教程(第四版第四版)(美美) H.M.Deitel 等等 施平安施平安 译译 清华大学出版社清华大学出版社(2004.3) nC+程序设计程序设计(第二版第二版)郑莉等郑莉等 清华大学出版社清华大学出版社 (2001.7) nC+面向对象程序设计面向
6、对象程序设计 杜茂康等杜茂康等 电子工业出版社电子工业出版社(2007.5) nC+实用教程实用教程郑阿奇、丁有和等郑阿奇、丁有和等 电子工业出版社电子工业出版社(2008.1) 9 主要参考书 o 提高篇提高篇 nC+语言的设计与演化语言的设计与演化 Bjarne Stroustrup 机械工业出版机械工业出版 社社(2002.1) nC+编程思想编程思想第第1卷:标准卷:标准C+导引(第导引(第2版)版)机械工业机械工业 出版社出版社(2006.3) nC+精髓精髓软件工程方法软件工程方法李师贤等李师贤等 译译 机械工业出版社机械工业出版社 (2002.8) n大规模程序设计大规模程序设计
7、李师贤等李师贤等 译译 中国电力出版社中国电力出版社(2003.9) nC+程序设计开发与设计程序设计开发与设计刘勇刘勇 译译 人民邮电出版社人民邮电出版社(2002.8) nC+面向对象开发面向对象开发R.L. William等等 麻志毅等译麻志毅等译 机械工业出机械工业出 版社版社 (2002.9) nC+面向程序设计面向程序设计基础、数据结构与编程思想(第四版基础、数据结构与编程思想(第四版 ) Walter Savitch著著 周靖译周靖译 清华大学出版社(清华大学出版社(2003.12) n高质量程序设计指南高质量程序设计指南C+/C语言语言 林锐林锐 电子工业出版电子工业出版 社(
8、社(2002.6) 10 主要参考书 o 实践篇实践篇 nC+程序设计实验教程程序设计实验教程 李师贤李师贤 高等教育出版社高等教育出版社(2006.7) n计算机科学与技术专业计算机科学与技术专业软件系列课程实践教程软件系列课程实践教程 胡学钢胡学钢 、王浩、王浩 合肥工业大学出版社(合肥工业大学出版社(2003.6) nVisual C+6学习指南学习指南Chuck Sphar著著 前导工作室译前导工作室译 机械机械 工业出版社(工业出版社(1999.9) nVisual C+程序设计程序设计 陈志泊陈志泊 中国铁道出版社(中国铁道出版社(2008.9) nC+程序设计教程程序设计教程基于
9、基于Visual Studio 2008 刘冰等刘冰等 机机 械工业出版社(械工业出版社(2009.8) nC+程序设计课程设计程序设计课程设计 刘振安刘振安 机械工业出版社(机械工业出版社(2004.12 ) nC+程序设计实训(第程序设计实训(第2版)版) 李龙澍李龙澍 清华大学出版社(清华大学出版社( 2009.2) 11 分组安排 第第1组组樊星樊星 李连杰李连杰 杨天源杨天源 第第9组组朱余超朱余超 桂志超桂志超 王士琦王士琦 第第2组组朱吉祥朱吉祥 冯雨冯雨 郑少泽郑少泽 第第10组组李亚鸣李亚鸣 郭楷文郭楷文 邵近东邵近东 第第3组组刘睿刘睿 常彧博常彧博 李娜李娜 第第11组组
10、闫文斌闫文斌 周楠周楠 黄旌黄旌 第第4组组吴琳钰吴琳钰 高旭高旭 夏兆喆夏兆喆 第第12组组马正华马正华 刘骞刘骞 周丁周丁 第第5组组胡万里胡万里 侯超响侯超响 李莹李莹 第第13组组刘海林刘海林 王涛王涛 钱永辉钱永辉 第第6组组唐燊唐燊 朱瑞朱瑞 王永涛王永涛 第第14组组高志云高志云 张成鹏张成鹏 王海玥王海玥 第第7组组王文博王文博 宋玉杭宋玉杭 安辽源安辽源 第第15组组冯建渤冯建渤 狄清泰狄清泰 高垚高垚 第第8组组王强强王强强 郑森郑森 孙慧玲孙慧玲第第16组组张达张达 钟旭阳钟旭阳 陈宇杰陈宇杰 作业、课堂提问、讨论、上机、大作业等平时按小组考核计成绩作业、课堂提问、讨论、
11、上机、大作业等平时按小组考核计成绩 考试(机考、笔试)按个人考核计成绩考试(机考、笔试)按个人考核计成绩 12 分组安排 第第17组组冯利鑫冯利鑫 代童代童 赵怡赵怡第第24组组单遵波单遵波 罗琪罗琪 郑文滔郑文滔 第第18组组钟鑫钟鑫 胡书畅胡书畅 何皓何皓第第25组组汤文慧汤文慧 黄云黄云 郭永杰郭永杰 第第19组组叶云燕叶云燕 许鹏飞许鹏飞 胡祝江胡祝江第第26组组谢荣贤谢荣贤 岳鹏飞岳鹏飞 郭惠郭惠 第第20组组占澎洪占澎洪 王庆才王庆才 林孟孟林孟孟第第27组组常海鹏常海鹏 王曦皓王曦皓 许雪婷许雪婷 第第21组组刘号刘号 王吉新王吉新 陈志强陈志强第第28组组廉成豹廉成豹 彭培彭培
12、 王浩王浩 第第22组组陆义杰陆义杰 杨洋杨洋 刘兵刘兵第第29组组汤明空汤明空 戚宇豪戚宇豪 蒋怿蒋怿 董雨思董雨思 第第23组组许志刚许志刚 李炳辉李炳辉 苏强强苏强强 作业、课堂提问、讨论、上机、大作业等平时按小组考核计成绩作业、课堂提问、讨论、上机、大作业等平时按小组考核计成绩 考试(机考、笔试)按个人考核计成绩考试(机考、笔试)按个人考核计成绩 13 教学资源 精品课程网站:精品课程网站: http:/ 14 教学资源 在线答题在线答题网站:网站: http:/ 15 上机安排 地点:地点: 翡翠湖校区实验翡翠湖校区实验4号楼四楼号楼四楼 第第?机房机房 周次:周次: 第第6-16周
13、周 星期星期? 时间:时间: ? 16 课程成绩 o平时成绩:平时成绩:15% 作业、考勤(课堂、上机)、课堂提问、网站做题作业、考勤(课堂、上机)、课堂提问、网站做题 o实验上机:实验上机:35% 上机考试:上机考试:20% 大作业:大作业:15% o笔试:笔试: 50% 第一章第一章 程序设计与C语言初步 算法、实体与程序算法、实体与程序 程序设计方法与程序设计语言程序设计方法与程序设计语言 Backus-Naur范式范式 C+语言的程序结构语言的程序结构 面向对象程序设计思维方式面向对象程序设计思维方式 18 概述 o 程序程序:完成一定功能的指令或语句序列 o 程序设计程序设计:编写计
14、算机程序的活动 n 程序设计方法 n 程序设计语言 o 本课程以面向对象程序设计方法为核心,并 选用C+程序设计语言为工具来介绍程序设计 19 1.1 算法与程序 o 例例1.1.1: 求解最大公约数的欧几里德算法。 步骤1:如果p b+v,则令m=0,b=b并转向步骤 2;否则令m=m,b=b-m并终止。 步骤2:提示超额透支并终止。 23 1.1.2 实体 例例1.1.4: 银行账户实体。银行账户实体。 实体:银行账户。实体:银行账户。 属性:账号、户名、地址、密码、当前余额属性:账号、户名、地址、密码、当前余额b、透支限额。、透支限额。 行为:行为:1)存款)存款 输入:输入: 存款金额
15、存款金额m和当前余额和当前余额b。 输出:输出:无。无。 步骤:步骤: 令令b=b+m并终止。并终止。 2)取款)取款 输入:取款金额输入:取款金额m。 输出:已取金额输出:已取金额m 。 步骤步骤1:如果:如果mb+v,则令,则令m=0并转向步骤并转向步骤2; 否则令否则令m=m,b=b-m并终止。并终止。 步骤步骤2:提示超额透支并终止:提示超额透支并终止 24 1.1.2 实体 o 实体的概念:现实生活中的 客观事物(人、 动物、企业、部门等等) 。 o 实体的特点:一个实体应有一个名字,应有 描述这个实体特征的数据(状态),应有作 用于这些实体上面的操作(行为)。 25 1.1.3 程
16、序程序 o 程序就是算法的计算机实现!程序就是算法的计算机实现! o 用计算机程序来解决问题 o 数据在计算机内部的表示 n 计算机只能识别和理解二进制数:0和1 n 所有由计算机处理的数据都必须表示为二进制 数 26 1.1.3 程序程序 void main() int a, b, c; / a,b,c为变量,记录程序所需要的数据。为变量,记录程序所需要的数据。 cina; /输入输入a cinb; /输入输入b c=a+b; /计算计算a+b的和并存于的和并存于c中中 coutc; /输出输出c的值(即的值(即a+b的和)的和) 27 1.1.3 程序程序 程序在计算机内部的表示程序在计算
17、机内部的表示 o 机器语言:二进制指令 o 汇编语言:用简单的符号表示二进制指令 o 高级语言 n 要把高级语言程序翻译成计算机能理解的机器 语言 n 翻译 o 编译编译 o 解释解释 28 1.1.4 程序设计程序设计 程序设计:编写计算机程序的活动程序设计:编写计算机程序的活动 四方面的知识:四方面的知识: o 应用领域知识 o 程序设计方法 o 程序设计语言 o 程序设计环境与工具 29 1.2 程序设计的演变 1.2.1 早期的程序设计早期的程序设计 线性程序设计(手工作坊式)手工作坊式) BASIC程序程序 10 INPUT A,B 20 C=A+B 30 PRINT C 30 1.
18、2.2 结构化程序设计 n 采用三种基本结构:顺序、循环、选择分支顺序、循环、选择分支 n 单入口/单出口控制结构 n 以流程为主,围绕操作本身来设计 31 1.2.2 结构化程序设计 o 结构化程序设计的主要思想:由三种基本控制结构组成结构化程序设计的主要思想:由三种基本控制结构组成 程序程序 o 这三种结构的示意图如下:这三种结构的示意图如下: 32 1.2.2 结构化程序设计 33 1.2.2 结构化程序设计 可以看到可以看到,三种基本结构都具有以下特点三种基本结构都具有以下特点: 有一个入口。 有一个出口。 结构中每一部分都应当有被执行到的机会,也就 是说,每一部分都应当有一条从入口到
19、出口的路 径通过它(至少通过一次)。 没有死循环(无终止的循环)。 34 1.2.3 面向对象程序设计 围绕被操作的数据来设计围绕被操作的数据来设计 实体:现实生活中的客观事物(人、动物、企业、部门等等实体:现实生活中的客观事物(人、动物、企业、部门等等 )。)。 一个实体应一个实体应 有一个名字,应有描述这个实体特征的数据(有一个名字,应有描述这个实体特征的数据( 状态),应有作用于这些实体上面的操作(行为)。状态),应有作用于这些实体上面的操作(行为)。 对象:面向对象方法中的对象,是系统中用来描述客观事物对象:面向对象方法中的对象,是系统中用来描述客观事物 的一个实体,它是用的一个实体,
20、它是用 于构成系统的一个基本单位。于构成系统的一个基本单位。 C+使用使用类类来描述对象来描述对象 35 1.3 程序设计语言的定义程序设计语言的定义 1.3.1 语法和语义 o 语法语法(syntax):由程序语言基本符号组成程序中 各个语法成分的一组规则。 o 语义语义(semantics):程序设计语言中按语法规则 构成的各个语法成分的意义 。 36 1.3.2 1.3.2 字符集字符集 o 字符集字符集:任何一种语言都是建立在某一个有限的字符集:任何一种语言都是建立在某一个有限的字符集 上的。上的。C+语言使用的是语言使用的是ASCII字符集。字符集。 o 单词单词:由字符集中的若干字
21、符构成且具有某一特定含义:由字符集中的若干字符构成且具有某一特定含义 的字符序列。的字符序列。 o 保留字保留字:有些语言中预先规定一些单词具有特殊的意义:有些语言中预先规定一些单词具有特殊的意义 ,并保留其名字,不允许程序员另作它用,这种单词被,并保留其名字,不允许程序员另作它用,这种单词被 称为保留字。称为保留字。 o 关键字关键字:还有些语言规定一些特殊单词在一定的上下文:还有些语言规定一些特殊单词在一定的上下文 中具有预先定义的特殊意义,这种单词被称为关键字。中具有预先定义的特殊意义,这种单词被称为关键字。 37 注意注意 o C/C是大小写字母是敏感的,同一字母的 大写状态和小写状态
22、将视为26个不同字符。下 划线视为一个字母。 38 1.3.3 Backus-Naur1.3.3 Backus-Naur范式范式 o 形式化定义程序设计语言的语法一般包括一 个明确定义的字符集和一组有限的规则,这 些规则规定符号如何组成表达式、语义 和程 序等形式。 o 较常用的语法定义方法是Backus-Naur范式(简 写为BNF)和语法图。 39 1.3.3 Backus-Naur1.3.3 Backus-Naur范式范式 o 元符号:元符号:BNF规定了一些符号作为描述语法的机制 ,称作元符号,包括: := 表示“定义为”。 | 表示“或者”。 表示“任选”,即方括号内的内容可以出现一
23、次 或不出现。 表示“重复”,即花括号内的内容可以出现零次 或任意多次。 40 1.3.3 Backus-Naur1.3.3 Backus-Naur范式范式 o 终结符号:终结符号:BNF中不必定义的符号或字符串, 如如A、B、0、1等等 o 非终结符号:非终结符号:在用法规则中需要加以定义的语法变 量, 如字母、数字、标识符等如字母、数字、标识符等 41 1.3.3 Backus-Naur1.3.3 Backus-Naur范式范式 每一个非终结符号都必须有一个规则定义它,非终每一个非终结符号都必须有一个规则定义它,非终 结符号按规则总是可以展开为一串终结符号。结符号按规则总是可以展开为一串终
24、结符号。 例:标识符的BNF描述。 标识符 :=字母 字母 | 数字 字母 :=A | B | | Z | a | b | | z | _ 数字 :=0 | 1 | | 9 42 1.3.3 Backus-Naur1.3.3 Backus-Naur范式范式 整数的BNF描述 整数 := 正负号 无符号整数 无符号整数 := 数字 数字 正负号 := + | - 数字 := 0 | 1 | | 9 43 1.3.4 1.3.4 语法图语法图 o 语法图是与BNF等价的另一种语法描述方法,但比 BNF更加直观。 o 一条BNF可转换成一个语法图 44 1.3.4 1.3.4 语法图语法图 o BN
25、F转换为语法图的规则 (1) 每一个终结符号的出现对应于 (2) 每一个非终结符号X的出现对应于 X (3) 形如P := V1 V2 Vk则转换为 V1 V2 Vk 45 (4)形如P := V1 | V2 | | Vk则转换为 V1 V2 Vk 1.3.4 1.3.4 语法图语法图 46 (5) 形如P := V 则转换为 V (6) 形如P := V 则转换为 V 1.3.4 1.3.4 语法图语法图 47 1.3.4 1.3.4 语法图语法图 例:标识符可用以下语法图来定义 字母 字母 数字 48 1.4 C C语言的程序结构语言的程序结构 1.4.1 C+语言程序的组成 o 程序程序
26、:一个程序是实体的属性及行为在计算机 内的表示。 o 类类:是对一群具有相同属性,表现相同行为的 对象的描述 。 o 对象对象:具体的单个存在的实体。 o 主函数主函数:具有特定名字“main”函数,由它去激 活(调用)一个对象的行为(函数) 。 49 1.4.2. C+1.4.2. C+语言程序的基本结构语言程序的基本结构 o 例1:一个很特殊的例子-只有一个主函数 #include void main() coutComputer Science.n; 50 注意: o C+语言程序中有一个特殊的函数,称为主函主函 数数main( ),这是程序执行的入口,用于实现 单入口/单出口结构。 o
27、 一个一个C+语言程序有且只有一个主函数语言程序有且只有一个主函数 51 /银行帐户存取款程序银行帐户存取款程序 #include /利用函数库利用函数库iostream提供的操作在屏幕上输出数据提供的操作在屏幕上输出数据 class ACCOUNT float balance; /本帐户当前的余额本帐户当前的余额 public: /开设帐户,同时存入金额开设帐户,同时存入金额amount. ACCOUNT(float amount) balance=amount; /往帐户中存款,存款金额为往帐户中存款,存款金额为amount. void deposit(float amount) bala
28、nce=balance+amount; 例2:一个带有类完整的C+语言程序 52 /从帐户中取款,取款金额为从帐户中取款,取款金额为amount;如果取款成功则用如果取款成功则用1表示,否则表示,否则 用用0表示。表示。 int withdraw(float amount) if(amountbalance) /判断是否透支判断是否透支 return 0; /如果透支则不作取款,返回如果透支则不作取款,返回0表示取款不表示取款不 成功成功 else balance=balance-amount; /减少当前的存款余额减少当前的存款余额 return 1; /返回返回1表示取款成功表示取款成功
29、/查询帐户中当前的余额。查询帐户中当前的余额。 float get_balance() return balance; /返回当前的余额返回当前的余额 ; 53 /主函数主函数 main() /开设帐户开设帐户 ACCOUNT acc1(500); /开设第一个帐户开设第一个帐户acc1,同时存入同时存入500元元 ACCOUNT acc2(1500); /开设第二个帐户开设第二个帐户acc2,同时存入同时存入1500元元 /存款与取款存款与取款 acc1.deposit(255.5); /往帐户往帐户acc1中存入中存入255.5元元 acc2.deposit(500); /往帐户往帐户ac
30、c2中存入中存入500元元 acc2.withdraw(700); /往帐户往帐户acc2中取出中取出700元元 acc1.withdraw(700); /往帐户往帐户acc1中取出中取出700元元 acc2.withdraw(350); /往帐户往帐户acc2中取出中取出350元元 /查询余额并在屏幕上显示查询余额并在屏幕上显示 cout帐号帐号1的余额还有的余额还有acc1.get_balance()元元n; cout帐号帐号2的余额还有的余额还有acc2.get_balance()元元n; return 1; 54 C+程序的基本构成:程序的基本构成: o 由一个主函数,加上0个或者若干
31、个其它函数、0个 或若干个其它的类组成。 o 程序的执行总是从主函数开始,而不管主函数放在 程序的任何位置; o 由主函数调用其它函数(类的行为)、主函数执行 完,程序也就执行完。 归纳归纳 55 1.4.3 1.4.3 两种退化现象两种退化现象 o 只有函数,没有类。除主函数外,还可能有一些游离只有函数,没有类。除主函数外,还可能有一些游离 的函数,这些游离的函数不属于任何类。的函数,这些游离的函数不属于任何类。 只有函数,没有类的C程序。 #include /利用该库将数据输出到屏幕 int main() cout矩形的面积是”78*42balance) return 0; else ba
32、lance=balance-amount; return 1; float get_balance() return balance; ; 58 1.5 C+语言程序 o 源程序(源代码)源程序(源代码) n 用程序设计语言编写的程序存放在一个文本文件中。用程序设计语言编写的程序存放在一个文本文件中。 n 后缀为后缀为 .cpp o 目标程序(目标代码)目标程序(目标代码) n 用编译程序将源程序转换为计算机能理解的形式用编译程序将源程序转换为计算机能理解的形式 n 后缀为后缀为 .obj o 可执行代码可执行代码 n 把目标代码和现有的库通过链接程序产生可执行代码把目标代码和现有的库通过链接
33、程序产生可执行代码 n 后缀为后缀为 .exe 59 1.5 C+语言程序 开发一个C+程序的过程 源程序源程序目标程序目标程序 可执行代码可执行代码 库库 编译程序链接程序 .cpp .hpp .obj .exe 1.编辑编辑 2.编译编译 3.链接链接 4.运行运行 60 1.6 面向对象程序设计 1.6.1 面向对象程序设计过程 实体概念 现象 抽象 类 对象 具体 建模 模拟 61 1.6 面向对象程序设计 1.6.2 面向对象程序设计特征 o 数据封装 将一类数据和与该类数据相关的操作集合封装在一起 o 继承 低层次的类(子类)可以从它的高层次类(基类)中继承所有的数据 和操作 o
34、多态性 一个名字,多种语义;相同界面,多种实现。 62 习题 P.19 1-1,1-2,1-9 补充 下列语句完成两个变量a,b中数值的交换: c=a; a=b; b=c; 能否不借助变量c完成两个数的交换呢? 63 第二章第二章 基本数据类型 o 类型的作用 o 标识符命名风格 o 常量与变量 o 基本数据类型 o 运算符与表达式 o 隐式类型转换与强制类型转换 o 简单的输入输出 64 2.1 数据类型概述 2.1.1 2.1.1 类型类型 C+语言中,用语言中,用八进制、十六进制与十进制八进制、十六进制与十进制表示数据。表示数据。 o十进制十进制: :A = 496A = 496 o八进
35、制八进制: : 以以0 0前导前导A = 0760A = 0760 o十六进制十六进制: : 以以0 x0 x前导前导A = 0 x1F0A = 0 x1F0 在计算机中的存储形式都是在计算机中的存储形式都是 111110000111110000 数据类型:具有相同特性的所有数据的集合。用数据类型:具有相同特性的所有数据的集合。用 它来说明一个数据在数据分类中的归属。它来说明一个数据在数据分类中的归属。 65 2.1.2 类型的作用 o 数据类型:决定了数据类型:决定了数据的表示方式、占内存的数据的表示方式、占内存的 空间大小、取值范围以及对数据可以使用的操空间大小、取值范围以及对数据可以使用
36、的操 作作。 o C+中,所有的数据都属于特定的类型中,所有的数据都属于特定的类型 o 遵循遵循“先声明、后使用先声明、后使用”的原则的原则 66 2.1.3 C+语言的类型 o 在对类型的要求上程序设计语言分两类:在对类型的要求上程序设计语言分两类: o 强类型:编译时严格检查操作是否满足数据所属类型强类型:编译时严格检查操作是否满足数据所属类型 o 弱类型:弱类型: o C+语言介乎强与弱类型之间语言介乎强与弱类型之间 o C+数据类型数据类型 基本基本 类型类型 复合复合 类型类型 整型整型 字符型字符型 浮点型浮点型 枚举类型枚举类型 空类型空类型 单精度浮点型单精度浮点型 双精度浮点
37、型双精度浮点型 指针类型指针类型 引用类型引用类型 构造类型构造类型 函数类型函数类型 数组数组 结构体结构体 共用体共用体 67 2.2 保留字、标识符、常量与变量 2.2.1 单词单词 nC+程序中有五种单词:程序中有五种单词:保留字、标识符、常量、运算保留字、标识符、常量、运算 符符和和分界符分界符(包括空格、制表符、回车换行、注释、分号)(包括空格、制表符、回车换行、注释、分号)。 2.2.2 保留字保留字 n4848个保留字个保留字。 n保留字均是小写保留字均是小写 68 2.2 保留字、标识符、常量与变量 2.2.3 标识符标识符 n C+程序中使用程序中使用标识符标识符对程序中的
38、各个元素加以命名。对程序中的各个元素加以命名。 标识符是由字母或下划线开头的字母、数字与下划线的序列。标识符是由字母或下划线开头的字母、数字与下划线的序列。 n C+程序中区分大小写,例如程序中区分大小写,例如AccountAccount和和accountaccount是两个是两个 不同的标识符。不同的标识符。 2.2.4 选择合适的标识符选择合适的标识符 n 有意义的标识符。有意义的标识符。 n 两个单词组成的标识符两个单词组成的标识符 OpenWindow OpenWindow 或或 open_windowopen_window n 标识符的缩写标识符的缩写 69 一个简单的C+语言程序
39、#include void main( ) const float PI = 3.14 ; float Area; float r = 2 ; Area = PI * r * r ; /计算圆的面积计算圆的面积 coutThe area is : Area ; 输出结果:输出结果: The area is 12.560000 70 2.2.5 常量与变量 1、常量常量 常量常量在程序的执行过程中,其值不能被改变的量称为在程序的执行过程中,其值不能被改变的量称为常量常量 o 常量区分为不同的类型常量区分为不同的类型 n 整型常量:整型常量:10; 20; t = 5 ; n 浮点型常量:浮点型常
40、量:-1.2 n 字符常量:字符常量:A; ch = B; n 字符串常量:字符串常量:“Avafjfkslfjskljf” 71 2.2.5 常量与变量 2、变量变量 在程序执行过程中其值可以改变的量称为在程序执行过程中其值可以改变的量称为变量变量 o C+程序中程序中,所有变量都须先定义后使用所有变量都须先定义后使用 o 变量定义的方法(可连续定义同一类型的多个变量)变量定义的方法(可连续定义同一类型的多个变量)变量变量 名名( = 初值初值 ); int a,b,c; int a; int b; int c; o 变量通过赋值运算改变其值变量通过赋值运算改变其值 Area= PI * r
41、 *r ; A= 2 * 10 ; 72 2.2.6 简单的输入输出 o 输出:输出:将程序中的数据送到外部设备称为程序的输出将程序中的数据送到外部设备称为程序的输出 o 输入:输入:程序从外部设备获得一个变量的值称为输入程序从外部设备获得一个变量的值称为输入 o C+语言的输入输出语言的输入输出 n 利用库利用库iostream实现简单的输入输出实现简单的输入输出 n 使用使用iostream提供的库函数前,须加入:提供的库函数前,须加入: #include n 输出:输出:cout输出内容输出内容; 例:例:cout“半径为半径为” r “的圆面积为的圆面积为” 输入变量输入变量; 例:例
42、:cin r ; 73 2.2.6 简单的输入输出 注意:注意: o 由双引号括住的东西不经任何处理就输出,由双引号括住的东西不经任何处理就输出, 否则就输出变量或表达式的值。否则就输出变量或表达式的值。 74 2.3 基本数据类型 在C+程序基本数据类型: 字符类型、整数类型、浮点类型和空值类型 类型修饰符: signed unsigned short long 75 2.3 基本数据类型 类型类型类型名类型名字宽字宽取值范围取值范围有效位有效位 (有符号有符号)字符字符(signed) char1-128127 无符号字符无符号字符unsigned char10255 (有符号有符号)短整
43、短整型型(signed) short (int)2-32,76832,767(-215 215-1) (有符号有符号)整型整型(signed) int2 / 4-32,76832,767(-215 215-1) 无符号短整型无符号短整型unsigned short (int)2065,535 无符号整型无符号整型unsigned (int)2 / 4065,535(0 216-1) (有符号有符号)长整长整型型(signed) long (int)4-2,147,483,6482,147,483,647 无符号长整型无符号长整型unsigned long (int)404,294,967,29
44、5 单精度浮点型单精度浮点型float43.4E-383.4E+387位位 双精度浮点型双精度浮点型double81.7E-3081.7E+30815位位 长双精度浮点长双精度浮点 型型 long double103.4E-49321.1E+493219位位 76 数制数制 77 位权表示法位权表示法 数制数制 78 1011.0101)2=123+022+121+120+02-1+12- 2+0 2-3+12-4 数制数制 79 o八进制八进制 使用数字使用数字0 0、1 1、2 2、3 3、4 4、5 5、6 6、7 7等符号来表示数值等符号来表示数值 的,且采用的,且采用“逢八进一逢八进
45、一”的进位计数制的进位计数制 (7654.345)8=783+682+581+480+38-1+48- 2+5 8-3 o十六进制十六进制 使用数字使用数字0 0、1 1、2 2、3 3、4 4、5 5、6 6、7 7、8 8、9 9和和A A、B B、C C、D D 、E E、F F等符号来表示数值,其中等符号来表示数值,其中A A、B B、C C、D D、E E、F F分别表分别表 示数字示数字1010、1111、1212、1313、1414、1515。十六进制的计数方法为。十六进制的计数方法为 “逢十六进一逢十六进一” (5A8F)16=5163+A162+8161+F160 数制数制
46、80 o十进制整数转换为非十进制整数十进制整数转换为非十进制整数 除基取余法:除基取余法:“除基取余,先余为低(位),后余为除基取余,先余为低(位),后余为 高(位)高(位)” 2 2 2 2 2 2 155 127 6 13 0 1 3 11 1 0余数余数 数制间的转换数制间的转换 81 o十进制整数转换为非十进制整数十进制整数转换为非十进制整数 8 86 55 55 16 16 6 7 0 3 7 0 3 余数余数余数余数 数制间的转换数制间的转换 82 o十进制小数转换为非十进制小数十进制小数转换为非十进制小数 乘基取整法乘基取整法: :“乘基取整,先整为高(位),后整为低(乘基取整,
47、先整为高(位),后整为低( 位)位)” 2 0.625 0.25 1.25 0.5 2 1.0 2 1 整数整数 1 0 数制间的转换数制间的转换 83 o十进制小数转换为非十进制小数十进制小数转换为非十进制小数 数制间的转换数制间的转换 84 o十进制小数转换为非十进制小数十进制小数转换为非十进制小数 2 0.32 0.64 1.28 2 0.56 2 0 整数整数 0 1 0.28 2 1.121 数制间的转换数制间的转换 85 o非十进制数转换为十进制数非十进制数转换为十进制数 位权法:把各非十进制数按权展开,然后求和位权法:把各非十进制数按权展开,然后求和 数制间的转换数制间的转换 8
48、6 o二进制与八进制之间的转换二进制与八进制之间的转换 数制间的转换数制间的转换 87 o二进制与十六进制之间的转换二进制与十六进制之间的转换 数制间的转换数制间的转换 88 2.3.1 字符类型 1.1.字符常量字符常量 o 用单引号括起来的单个字符是字符型常量用单引号括起来的单个字符是字符型常量 A 、b、 、 9 o 使用转义字符来表示单引号本身、以及使用转义字符来表示单引号本身、以及ASCIIASCII码表中的控码表中的控 制字符(不可见字符)制字符(不可见字符) o 转义字符的表示方法:用单引号括住,以反斜杆转义字符的表示方法:用单引号括住,以反斜杆 开头开头 89 2.3.1 字符
49、类型 转义字符ASCII码含 义 a 0 x07响铃符(BEL - bell) n 0 x0A换行符(LF - Line Feed) t 0 x09水平制表符(HT - Horizontal Table) v 0 x0B垂直制表符(VT - Vertical Table) b 0 x08回退符(BS - Backspace) r 0 x0D回车符(CR - Carriage Return) f 0 x0C换页符(FF - Form Feed) 0 x5C反斜杠() ? 0 x3F问号(?) 0 x27单引号() 0 x22双引号() 90 2.3.1 字符类型 o 八进制的表示:八进制的表示:
50、ddd 1 1到到3 3位八进制数所代表的字符位八进制数所代表的字符 o 十六进制的表示:十六进制的表示: xdd 1 1到到2 2位十六进制数所代表的字符位十六进制数所代表的字符 字符字符A的表示方法:的表示方法: 数值型表示:数值型表示: 十进制表示十进制表示 65 八进制表示八进制表示 0101 十六进制表示十六进制表示 0 x41 字符型表示字符型表示 字符表示字符表示 A 八进制转义字符表示八进制转义字符表示 101 十六进制转义字符表示十六进制转义字符表示 x41 91 2.3.1 字符类型 2. 字符变量字符变量 char choice; char ch1, ch2; char