C程序设计实验指导与题解课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C程序设计实验指导与题解课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实验 指导 题解 课件
- 资源描述:
-
1、2016“”C+程序设计程序设计北京理工大学北京理工大学计算机科学技术学院计算机科学技术学院赵清杰赵清杰2008.7“”C+程序设计程序设计 清华大学出版社,清华大学出版社,2008“”主要内容第1章 C+语言概述 第2章 C+编程基础 第3章 函数与函数模板 第4章 类与类模板 第5章 运算符重载 第6章 继承与派生 第7章 多态 第8章 异常处理 第9章 C+标准库 “”第1章 C+语言概述“”第1章 C+语言概述 本章简单介绍C+语言的特点以及C+标准库的主要构成。 列举一个简单的C+程序。程序的编辑、编译、连接与运行,并介绍Visual C+ 6.0开发环境下建立标准C+控制台应用程序
2、的步骤。“”第1章 C+语言概述 1.1 C+语言的特点1.2 C+标准库简介1.3 简单的C+程序1.4 程序的编辑、编译、连接与运行1.5 小结“”1.1 C+语言的特点支持过程式程序设计 procedural programming支持基于对象的程序设计 object-based programming支持面向对象的程序设计 object-oriented programming支持泛型程序设计 generic programmingC+是一门支持多种编程方法的程序设计语言:是一门支持多种编程方法的程序设计语言:“”1.1 C+语言的特点过程式程序设计通过一组算法建立问题的模型,程序的构
3、成就是“算法+数据”。C+能够兼容C语言,但做了很多改进,例如对类型要求更加严格,输入输出更方便,增加了新的运算符,允许函数和运算符重载,增加了引用类型,提供inline、const等关键字。总之,在支持过程式程序设计方面,比C语言更安全、功能更强、使用更方便。基于对象程序设计,主要特征是抽象和封装。它允许将数据和操作封装在一起,形成抽象数据类型,如类。把占据一块内存的类的实例称为该类型的对象。基于对象的程序设计就是建立对象和通过公有接口与对象联系的过程。“”1.1 C+语言的特点抽象、封装、继承与多态是面向对象程序设计的主要特征。在类与对象的基础上,C+通过继承和动态绑定机制扩展了抽象数据类
4、型。通过从基类派生出子类,使用户无需修改原有的程序就可以重用已有的资源,并能够进一步修改或增添功能。动态绑定机制通过定义虚函数,使处于不同类层次的同名函数,在程序运行时才被决定应该调用哪一个。泛型程序设计,将算法从特定的数据类型中抽象出来,使算法通用于不同的数据类型。泛型程序在代码重用、组织性、可维护性以及效率等方面表现出很强的优势。C+的模板语法机制,为范型程序设计奠定了关键基础。“”第1章 C+语言概述 1.1 C+语言的特点1.2 C+标准库简介1.3 简单的C+程序1.4 程序的编辑、编译、连接与运行1.5 小结“”1.2 C+标准库简介C+标准库(Standard Library)定
5、义了一些可供直接使用的函数、类、对象等。这些定义分别放在不同的头文件中,我们使用时只要包含相应的头文件即可。以前的C头文件和C+头文件名都是以“.h”做后缀的,如和。新的C+标准头文件名不带后缀。以字母c开头的标准头文件(如)等价于原来的C头文件。标准头文件中定义的标识符(如类名、函数名、对象名)都归属于名字空间std,使用时要加前缀“std:”进行限制,或者使用using声明或using指令。C+标准库主要包括流类、string、容器类、使用容器的泛型算法、数值运算、C标准库、语言支持功能等。 “”1.2 C+标准库简介图图1-1 C+标准库构成标准库构成 “”1.2 C+标准库简介C+(语
6、言)与Visual C+(C+的开发环境)我们要学习的是C+这门计算机语言的语法知识、编程方法以及如何使用C+标准库。不同企业的开发环境一般也为用户提供一个基础类库,如Microsoft Visual C+的MFC(Microsoft Foundation Class Library),Borland C+ Builder的VCL(Visual Component Library)等。软件开发人员也可以编写自己的类库。本书我们只涉及C+标准库,而对不同的开发环境及其类库不做具体介绍。“”第1章 C+语言概述 1.1 C+语言的特点1.2 C+标准库简介1.3 简单的C+程序1.4 程序的编辑、
7、编译、连接与运行1.5 小结“”1.3 简单的C+程序/*/例1-1. 计算圆面积的C+程序/数据描述:半径和面积均为实数/数据处理:(a)从键盘输入半径r;/(b)计算面积= r2;(c)向屏幕输出半径和面积/* “”1.3 简单的C+程序“”1.3 简单的C+程序上述程序运行后,屏幕上显示:Please input radius:如果我们从键盘输入:3屏幕上将显示:radius = 3area = 28.2743“”1.3 简单的C+程序例例1-2. 数据的输出# include using namespace std;int main() cout a number in decimal
8、: dec 15endl; cout in octal: oct 15 endl; cout in hex: hex 15 endl; cout a floating-point number: 3.14159endl; cout a char: A endl; return 0; “”第1章 C+语言概述 1.1 C+语言的特点1.2 C+标准库简介1.3 简单的C+程序1.4 程序的编辑、编译、连接与运行1.5 小结“”编辑:源文件的扩展名为.cpp编译预处理过程预处理过程编译过程编译过程词法分析:单词词法分析:单词语法分析:构造程序的格式语法分析:构造程序的格式符号表:程序中的各种符号及
9、它们的属性符号表:程序中的各种符号及它们的属性错误处理程序:错误处理程序:生成目标代码:目标文件的扩展名为生成目标代码:目标文件的扩展名为.obj连接:可执行文件扩展名为.exe运行 1.4 程序的编辑、编译、连接与运行“”源程序源程序.cpp目标文件目标文件.obj可执行文可执行文件件.exe编译器编译器连接器连接器#include文件文件C+库文件库文件1.4 程序的编辑、编译、连接与运行“”1.4 程序的编辑、编译、连接与运行C+编程环境:编程环境:Windows平台下C+的集成开发环境:Visual C+6.0Visual S Borland C+ BuilderLinux下可以采用命
10、令行开发C+程序vi 编辑源文件gcc 编译源文件“”1.4 程序的编辑、编译、连接与运行启动Visual C+6.0开发环境;创建一个新项目;建立C+源程序文件;编辑C+源程序文件内容;编译,连接,调试,执行;关闭工作空间。 Visual C+ 6.0开发环境下,建立标准C+控制台应用程序的步骤:“”第1章 C+语言概述 1.1 C+语言的特点1.2 C+标准库简介1.3 简单的C+程序1.4 程序的编辑、编译、连接与运行1.5 小结“”1.5 小结C+是一门支持多种编程方法的程序设计语言,它不仅支持过程式程序设计,还支持基于对象的程序设计、面向对象的程序设计以及泛型程序设计。熟悉并学会使用
11、C+标准库。至少熟悉一种C+开发环境。“”第2章 C+编程基础“”第2章 C+编程基础介绍C+语言的基本概念和基本语法,内容包括C+的词法规则、数据类型、表达式及语句、预处理命令、名字空间等,并通过例子说明相应的语法知识,在此基础上使大家能够编写出简单的C+程序。 “”第2章 C+编程基础2.1 C+的词法规则2.2 C+的数据类型2.3 表达式与语句2.4 预处理命令2.5 名字空间2.6 小结“”2.1.1 C+的字符集的字符集 大小写的英文字母:az,AZ 数字字符:09 特殊字符:2.1 C+的词法规则“”2.1.1 C+的字符集的字符集基本ASCII码是美国标准信息交换码,把128个
12、字符与7位二进制数码对应。C+把字符和它的码值同等看待,字符对应的数值就是该字符的ASCII码。 参见例2-1。2.1 C+的词法规则“”2.1.2 词汇词汇关键字是C+预定义的单词,表达特定的含义,不允许重定义。 C+关键字参见表2-2。2.1 C+的词法规则 C+的词汇包括关键字、标识符、运算符、分隔符、文字等。“”2.1.2 词汇词汇标识符是程序员声明的单词,例如函数名、类名、对象名等。要求:1)以字母或者下划线开始;2)由字母、数字或者下划线组成。其中区分大/小写,且不能使用预定义的关键字。 如_mybook、MyBook、My_book2是合法的,而2a、x+y、new非法。2.1
13、C+的词法规则“”2.1.2 词汇词汇运算符是指实现各种运算的符号,如+、-、*、/等。 在C+中,运算符是预定义的函数的名字,这些函数对参与运算的数值进行规定的运算,得到一个结果值。2.1 C+的词法规则“”2.1.2 词汇词汇分隔符用于分割各个单词或者程序正文。如:空格、制表(Tab键产生的字符)、换行、逗号、冒号、分号、圆括号、花括号、注释符等。文字在程序中直接表示常量值,包括数字、字符、字符串和布尔文字。2.1 C+的词法规则“”第2章 C+编程基础2.1 C+的词法规则2.2 C+的数据类型2.3 表达式与语句2.4 预处理命令2.5 名字空间2.6 小结“”基本数据类型是C+预定义
14、的数据类型,或称为内置数据类型:布尔型(bool)、字符型(char)、整型(int)、浮点型(float, double)、空类型(void)。可用signed、unsigned修饰字符型和整型,long可用来修饰整型和双精度浮点型,short可以修饰整型。用户自定义数据类型:在基本数据类型或者已定义的数据类型基础上,用户根据自己的需要,构造出的新类型。如:枚举、联合、结构、类等。将数据与操作数据的算法(函数)封装在一起所建立的类型,又被称作抽象数据类型,在C+中通常指类类型。在已定义的数据类型基础上,结合某些修饰符(如、*、&、())或者关键字(如const),可以得到扩展数据类型,如数组
15、、指针、引用等。2.2 C+的数据类型“”布尔型(bool),或逻辑型,占用1个字节,其值只能是真(true)或假(false)两种情况,一般用“1”表示true,用“0”表示false。字符型(char),表示单个ASCII字符或者相应的整数值,占用1个字节。在内存中以ASCII码值的形式存储。整型(int),修饰符short、long、signed、unsigned。浮点型(float, double),即实数,单精度、双精度和长双精度。空类型(void),表示函数无返回值、或者指针所指对象的类型不明确。2.2.1 基本数据类型“”基本数据类型所占用的内存情况参见表2-3。可以通过运算符s
16、izeof,测试在自己的机器环境下某种数据类型或对象所占用的内存大小。如 sizeof(float); 参见例2-2。2.2.1 基本数据类型“”常量:在程序运行过程中,其值不可改变。包括:文字常量、宏定义的符号常量、const常量等。变量:在程序运行过程中,其值可以改变。2.2.2 常量与变量“”布尔文字,true,false整型文字,例如,-1000L表示长整数,1000UL表示无符号长整数,U和L不分前后。八进制表示0767L ,十六进制表示0 x76fL等。浮点型文字,12.5,.65F, 2.5E-3,1e+5F,.28E12L 字符文字,(1)A,4;(2)用八进制或十六进制的AS
17、CII码值表示:如A又可以表示为101,或者x41;(3)如n表示换行符,参见表2-4。字符串文字,a,book ,以字符 0结尾。因此,字符 a 占一个字节,而字符串a占两个字节。1. 文字常量文字常量 2.2.2 常量与变量“”变量(或对象)一般具有名称(通过new创建的对象没有名称)、类型、数值、地址这四个要素。定义变量时,系统会在内存中为该变量分配一块连续区域,变量的地址就是该区域的首地址。C语言中习惯使用“变量”这个术语。C+中的对象,强调的是分配好的、具体的一块内存区域,并且具有唯一的地址。每个对象都与一个特定的数据类型相关联,这个类型决定了相关内存的大小、布局、能够存储在该区域的
18、值的范围以及可以对该区域进行哪些操作等。数据类型不仅包括基本数据类型,更重要的是抽象数据类型。2. 变量与对象变量与对象 2.2.2 常量与变量“”C+规定,标识符(如对象名、类名、函数名等)在使用之前要先进行声明或定义。声明是告诉编译器“这个标识符在某处进行了定义”。定义是说“在这里建立对象、函数等”,并分配相应的存储空间。大多数情况下对象声明也就是定义,只有对全局对象进行extern声明时例外。 float f1, f2, f3, f4; float f = 2.5; 或者 float f(2.5); 类对象通过调用构造函数进行初始化。 2. 变量与对象对象的声明和定义变量与对象对象的声明
19、和定义2.2.2 常量与变量“”作用域指标识符在程序正文中的有效范围,例如函数域、类域、名字空间域、文件域(编译单元内有效,一个包含内嵌头文件内容的完整.cpp文件就是一个编译单元)等。一对花括号之间的代码构成一个程序块,在程序块内定义的对象是局部对象,局部对象的作用域从对象的定义点开始,到程序块结束为止。函数(包括主函数)内部定义的对象都是局部对象。可见性讨论的是标识符能否被使用。在具有包含关系的局部作用域中,同名的内层对象将屏蔽外层对象。这时外层对象的标识符是不可见的。在同一作用域中不能对同一个标识符多次定义。 2. 变量与对象标识符的作用域和可见性变量与对象标识符的作用域和可见性2.2.
20、2 常量与变量“”2. 变量与对象标识符的作用域和可见性变量与对象标识符的作用域和可见性2.2.2 常量与变量“”在函数、类等之外定义的对象,默认情况下的作用范围具有全局性,即在整个程序运行期间起作用,所以称之为全局对象。在局部作用域内,同名的局部对象将屏蔽全局对象。如果想在局部作用域内使用全局对象,则应利用作用域运算符“:” 。参见例2-4 。如果一个程序包含多个编译单元,那么在一个编译单元中定义的全局对象,不仅在该编译单元可用,在其他编译单元也可以使用,但要先进行extern声明。参见例2-5 。对于包含多个编译单元的程序,如果想使全局对象只在定义它的编译单元中起作用,则可以在定义时声明它
21、为static。参见例2-6 。2. 变量与对象标识符的作用域和可见性变量与对象标识符的作用域和可见性2.2.2 常量与变量“”程序中的对象,一般在需要时被创建,不需要时则从内存中删除。在创建和删除之间所经历的时间称为对象的生存期。一般,局部对象的生存期与它的作用域同在,全局对象的生存期与程序的整个执行过程同在。如果想使一个对象在整个程序执行过程中都存在,同时又不希望像全局对象那样存在安全隐患,这时可声明static局部对象。声明静态局部对象时,一般要进行初始化。参见例2-7 。2. 变量与对象对象的生存期变量与对象对象的生存期2.2.2 常量与变量“”一般局部对象的作用域从对象的定义点开始,
22、到它所在的程序块结束为止;生存期与作用域同在。静态局部对象的作用域与一般局部对象相同;生存期与整个程序同在。一般全局对象在程序的任意地方都可以使用;生存期与整个程序同在。静态全局对象具有文件作用域;生存期与整个程序同在。用new建立的堆对象,其作用域和生存期由用户确定。关于作用作用域与生存期的总结:关于作用作用域与生存期的总结:2.2.2 常量与变量“”定义对象时,auto、register、static、extern是影响对象存储类型的几个关键字。存储区域类型:(1) 静态存储区,全局对象、静态对象和函数一般存储于该区域,存储区在程序开始执行之前分配,在程序的整个运行期间都存在。(2) 栈区
23、(stack),程序执行期间进行内存分配。一般局部变量存于栈区。(3) 堆区(heap),也称为动态存储区。程序运行时用new申请内存,由程序员负责何时用delete释放内存。不同存储类型的对象,被分配在不同的内存区域参见例2-8 。2. 变量与对象对象的存储变量与对象对象的存储2.2.2 常量与变量“”在C+标准化之前,当需要用符号表示常量时,常用#define宏命令来定义,例如: #define PI 3.14159标准C+中用const定义常量,与定义变量的语法类似,只是在前面多了一个关键字const。 const double pi = 3.14159;常量必须进行初始化,而且常量的值
24、不能改变。全局const量,默认具有文件作用域,这一点与一般全局对象不同。如果想使一个const在整个程序可用,那么定义时就要带extern声明。3. 常量常量 2.2.2 常量与变量“”volatile的语法与const类似。关键字const告诉编译器“不要改变我”,而关键字volatile则告诉编译器“我可能会改变”。当编译器不进行优化时,volatile不起作用;但当优化代码时,用该关键字则可以防止出现错误。4. volatile2.2.2 常量与变量“”在基本数据类型基础上,用户可以根据需要构造出新的数据类型,如枚举、联合、结构、类等,这些都可以称为自定义数据类型。一旦定义了一种新的数
25、据类型,我们就可以使用这种新类型。2.2.3 自定义数据类型“”枚举类型是若干个有名字的整型常量的集合,如: enum Shape C I R C L E =1 0 , S Q U A R E = 0 , RECTANGLE=10;花括号内的标识符是枚举常量,多个枚举常量之间用逗号分隔;枚举常量的类型为Shape,具有整数值,可用来初始化或更新Shape类型的对象。如: Shape sh = SQUARE; /对象sh初值为SQUARE sh = RECTANGLE; /sh值改为RECTANGLE 2.2.3 自定义数据类型1. 枚举枚举“”枚举常量的值,最前边的一个默认为为0,其后的值依次
展开阅读全文