版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一讲 C+语言概述,2,第一讲 C+语言概述,C+语言的简史 C+语言支持的程序设计方法 C+语言程序开发的步骤 C+语言的编程环境 C+程序的基本结构,C+语言程序设计,3,从C语言到C+语言,C语言的起源 美国贝尔实验室的Dennis Ritchie在1972年开发的 用于设计UNIX操作系统 其前身是B语言(Ken Thompson于1970年为第一个UNIX系统开发的语言) C语言的标准 美国国家标准化组织(ANSI)于1983年成立了一个委员会(X3J11),以确定C语言的标准。 该标准(ANSI C)于1989年被正式采用,即C89。 最新的版本在1999年发布,即C99。,C+
2、语言概述,4,从C语言到C+语言,C语言以其如下的特点风靡了全世界 语言简洁、紧凑,使用方便、灵活。 C语言只有32个关键字,程序代码书写形式自由。 有丰富的运算符和数据类型。 可以直接访问内存地址,能进行位操作。 生成的目标代码质量高,程序运行效率高。 可移植性好。,C+语言概述,5,从C语言到C+语言,C语言的局限性 数据类型检查机制相对较弱,这使得程序中的一些错误不能在编译阶段被发现。 C本身几乎没有支持代码重用的语言机制,因此一个程序员精心设计的程序,其代码很难为其它程序所用。 当程序的规模达到一定程度时,程序员很难控制程序的复杂性。,C+语言概述,6,从C语言到C+语言,C+语言的起
3、源 1980年,贝尔实验室的Bjarne Stroustrup开始对C进行改进和扩充。 1983年正式命名为C+。 C+包含了整个C(C89),C是建立C+的基础。 C+包括C的全部特征和优点,同时增加了对面向对象程序设计和通用程序设计的支持。 C+语言的标准 1998年ANSI/ISO联合委员会发布了C+的国际标准。 2011年发布了C+的最新标准(C+11)。,C+语言概述,7,C+语言程序的开发过程,一般分成五个步骤 定义程序目标 设计程序 编写代码 编译 运行、测试和调试程序,C+语言概述,8,C+语言程序的开发过程,定义程序目标 在开始解决问题之前,程序的开发人员必须彻底了解问题是什
4、么,对即将要创建的程序要做的事情有个清晰的认识。 这需要仔细考虑以下问题 程序需要什么信息 程序需要执行哪些计算和操作 程序应该报告什么信息 例如,计算任意一个圆环的面积 提出问题,明确目标 圆环是什么?如何计算面积?需要什么数据?计算精度?,C+语言概述,9,C+语言程序的开发过程,设计程序 决定程序如何去解决问题。 需要考虑 如何给程序提供必要的数据 程序中如何表示数据 用什么方法来处理数据 程序如何组织 程序怎样报告结果 完成这个程序需要多长时间 应该用一般的概念考虑设计中的问题,而不是考虑具体的代码。,C+语言概述,10,C+语言程序的开发过程,编写代码 编写代码来实现前面的设计,即用
5、C+语言来表示程序设计。 需要开发人员熟练掌握C+语言的知识。 可以在草稿纸上勾画自己的想法或书写代码,但最终必须将代码输入计算机。 输入代码所采用的机制则取决于具体的编程环境。 一般来说,需要使用文本编辑器(例如Windows的记事本程序)来创建一种文件,称为源文件 源文件包含程序设计的C+语言表示形式(称为源程序或源代码),C+语言概述,11,C+语言程序的开发过程,编译 把C+语言源程序转换成机器语言表示的程序。 这种程序可以直接被计算机理解和执行,所以称之为可执行程序,放在可执行文件中。 编译的具体细节取决于使用的编程环境。 C+语言分两步完成这一工作:编译和链接。 编译器将源代码转换
6、为目标代码,并存在目标文件中。 链接器将目标代码与其他代码结合起来生成可执行文件。 这种把编译和链接分开来做的方法便于程序的模块化。 可以分别编译程序的各个模块,然后用链接器把编译过的模块结合起来。 这样,如果需要改变一个模块,则不需要重新编译所有其他模块。,C+语言概述,12,C+语言程序的开发过程,运行、测试和调试程序 运行包含可执行程序的文件。 在不同的系统中运行程序的方式可能不同。 例如,Windows的控制台和资源管理器。 对程序进行仔细的检查,看程序是否在做该做的事,是否得到预期的结果。 比较好的做法是为验证程序的正确性设计一个测试计划。 越早做越好,因为它有助于理清程序员的思路。
7、 程序中的错误被称为bug,调试(Debug)就是要找到并消除错误。,C+语言概述,13,C+语言的编程环境,开发程序的具体操作取决于使用的编程环境 因为C+语言在许多环境中都是可用的,所以它是可移植的。 例如UNIX、Linux、Windows和MacOS。 C+语言编程环境包括一系列程序。 编辑器 编译器 链接器 运行和调试环境,C+语言概述,14,C+语言的编程环境,编辑器 使用一个文本编辑器程序输入源代码,并将代码保存在源文件中。 一般,C+程序的源文件名称的扩展名是.cpp或.cxx等。 例如welcometoyou.cpp和Hello.cpp。 该名称应该遵循特定的操作系统的命名规
8、则。 例如,MS-DOS要求基本名包含的字符数不能大于8,所以welcometoyou.cpp不是合法的DOS文件名。 Windows允许长文件名,所以welcometoyou.cpp是合法的Windows文件名。,C+语言概述,15,C+语言的编程环境,编译器 编译器接收源文件,生成目标文件,扩展名为.obj。 编译器还会检查输入的程序是否是有效的C+语言程序。 如果编译器发现错误,就会报告出错,且不能生成可执行程序。 这时就必须修改错误代码,然后再编译。 显然,为了能迅速找到错误,理解特定编译器的报错信息是一项有用的技能。,C+语言概述,16,C+语言的编程环境,链接器 目标代码虽然已经是
9、机器代码,但还不能被执行。 缺少下面两样东西 启动代码:相当于程序和操作系统之间的接口。 库函数的代码:库文件中包含许多函数的目标代码。 链接器的作用就是将这三个元素(目标代码、启动代码和库代码)结合起来,并将它们放在一个文件中,即可执行文件,扩展名为.exe。,C+语言概述,17,Windows的C+语言编程环境,Windows的C+语言编程环境 Windows并不包含C+编译器,所以需要获得并安装一个C+编译器。 许多现代的编译器都是集成开发环境(Integrated Development Environment,IDE)的一部分。 包括编辑器、编译器、链接器 还包括一个符号调试程序在内
10、的运行支持系统。 许多软件厂商都提供了基于Windows的集成开发环境 Microsoft公司的Visual C+ Borland公司的C+ Builder 还可以用一些免费且开源的软件建立开发环境 Eclipse + CDT + MinGW,C+语言概述,18,C+语言编程实验环境,实验环境 Windows操作系统 Windows XP/7 Visual C+编程工具 Visual C+ 6.0/2010 使用微软免费提供的2010学习版就可以了 微软公司开发的C/C+语言集成开发环境 可以创建多种类型的应用程序 推荐:Windows 7 + VC2010,C+语言概述,19,Visual
11、C+ 2010简介,程序文件管理的概念 解决方案(solution) .sln 可以包含多个工程 项目(project) .vcxproj 一个项目就是一个程序 可以包含多个文件 文件(file) 源文件(.cpp) 头文件(.h) ,C+语言概述,解决方案,项目,项目,20,Visual C+ 2010简介,举例演示Visual C+ 2010的基本操作 创建Win32控制台应用程序 启动 创建项目(默认创建新解决方案) 创建源文件,并添加到项目 生成项目或解决方案 运行程序 调试,C+语言概述,21,C+语言程序的基本结构,一个简单的C+语言程序 需求:在屏幕上显示一行文字。 源程序 运行
12、结果,C+语言概述,/ This is my first C+ program #include using namespace std; void main() cout“C+ is very useful.; coutendl; coutI like it.“; ,C+ is very useful. I like it.,22,C+语言程序的基本结构,C+语言源程序中使用的字符来自C+语言的字符集。 字符集(Character set)来自ASCII表 52个大小写字母(Letters) A B C D E F G H I J K L M N O P Q R S T U V W X Y
13、Z a b c d e f g h i j k l m n o p q r s t u v w x y z 10个数字(Digits) 0 1 2 3 4 5 6 7 8 9 空白符(Blanks) 空格符、制表符、回车符、换行符 图形符号(Graphic characters) ! # % : , . / ?,C+语言概述,23,C+语言程序的基本结构,关键字(Keywords)是C+语言中的词汇。 也称为保留字(Reserved words) C89的32个关键字 int、long、short、float、double、char、unsigned、signed、const、void、vol
14、atile、enum、struct、union、if、else、goto、switch、case、do、while、for、continue、break、return、default、typedef、auto、register、extern、static、sizeof C+增加了不少关键字(关键字总数约70多) class、this、virtual、private、protected、public、friend、using、namespace、operator、template、new、delete、,C+语言概述,24,C+语言程序的基本结构,标识符(Identifiers)是程序中引用对象
15、的名称。 用来标识变量、符号常量、数组、函数、结构体、共用体、自定义类型、类、对象等。 命名规则 只能包括大小写字母、数字和下划线; 首字符必须是字母或下划线; 但不鼓励以下划线开头 长度没有限制; 不能使用关键字。,C+语言概述,25,C+语言程序的基本结构,C语言中原有的规则和语句在C+中仍可继续使用,但C+又增添了很多新的风格。 C+程序是大小写“敏感”的。 注释 程序中可以采用两种注释形式: /*/ 多行注释:注释可以写成多行。 / 单行注释:注释只能写成一行,它可单独占一行,也可写在某行程序代码的末尾。,C+语言概述,/ This is my first C+ program,26,
16、C+语言程序的基本结构,函数 一个C+的程序是由一到若干个函数构成的。 必须有且仅有一个名称为main的函数存在。 main()函数是程序运行的起点,即程序从main()函数开始执行。 一个C+的函数是由两部分构成的,即函数头和函数体。 函数头是对函数的说明,包括了函数的返回值的类型、函数的名称、圆括号、形参及形参的类型说明。 函数体由一对大括号 括起来,其内容是由若干条语句构成,函数体的内容决定了该函数的功能。,C+语言概述,void main() ,27,C+语言程序的基本结构,编译预处理命令 例如,文件包含命令。 头文件 可以使用带扩展名的头文件名,也可以使用不带扩展名的头文件名(推荐)
17、。 例如 #include #include 可以包含C标准库的头文件 #include #include ,C+语言概述,#include ,28,C+语言程序的基本结构,名称空间(namespace) 解决名称冲突的问题。 std是标准库的名称空间,包含标准库中出现的对象的名称。 可以使用域运算符:来引用名称空间中定义的对象名称。 std:cout 可以使用using语句使名称空间中的所有名称可直接使用。 using namespace std; using std:cout;/ 只是使得可以用短名称引用cout 如果使用#include 则不需使用using语句。,C+语言概述,usin
18、g namespace std;,29,C+语言程序的基本结构,控制台数据输出 可以使用printf( )函数。 推荐使用输出流对象cout进行数据的输出。 cout数据 cout对象能识别数据的类型,并将其值转换成书写的字符串形式输出。 在使用cout时,需要在程序中包含iostream.h文件。,C+语言概述,cout“C+ is very useful.; coutendl; coutI like it.“;,30,C+语言程序的基本结构,包含多个函数的C+语言程序 需求:找出三个整数中的最大数。 源程序,C+语言概述,#include using namespace std; / 声明
19、一个函数max_value,用来找出2个整数中的较大数 int max_value(int, int); void main() int a, b, c; / 定义3个变量,用来保存输入的3个整数 int result; / 保存找到的最大数,31,C+语言程序的基本结构,包含多个函数的C+语言程序 源程序(续),C+语言概述,coutabc; / 用输入流对象读取用户输入的数据 / 调用max_value函数找出3个整数中的最大数 result = max_value(max_value(a,b),c); / 输出最终结果 couty)?x:y; / 计算出x和y中的较大数,作为结果返回 ,
20、32,C+语言程序的基本结构,包含多个函数的C+语言程序 运行结果,C+语言概述,Input 3 integers: 23 54 18 The maximum value is 54.,33,C+语言程序的基本结构,控制台数据输入 可以使用scanf( )函数。 推荐使用输入流对象cin进行数据的输入。 cin变量; cin变量1变量2变量n;,C+语言概述,cinabc;,34,C+语言程序的基本结构,C+语言小程序的基本结构,C+语言概述,35,程序的测试与调试,程序错误 编译时错误 语法错误 编写的代码未遵循C+的语法规则。 编译器可以检查。 类型错误 链接时错误 链接器检查并报告。 运
21、行时错误 在程序运行时执行了无法处理的操作。 逻辑错误 程序不能按照预期的方式运行,不能产生预期的结果。,C+语言概述,36,程序的测试与调试,程序测试 审查和运行程序,检测程序是否存在错误。 测试步骤 在编译前仔细检查程序的源代码,看看是否有明显的错误。 查看编译器发现的语法错误。 查看链接器报告的错误。 对于逻辑错误可以采用正确输出测试。 在各种情况下进行大量测试发现尽可能多的运行时错误。 想找出所有错误是不切实际的,但应该可以排除大部分错误,让程序运行在可接受的错误率下。,C+语言概述,37,程序的测试与调试,程序调试 找到和消除错误。 调试方法 采用手工方式来跟踪程序。 在程序中的关键
22、点放置输出语句来显示变量的值。 使用调试器。 设置断点 单步执行,C+语言概述,38,程序的测试与调试举例,测试并调试下面的程序。 问题:输入两个数,计算它们的和。 源代码,C+语言概述,#include void main() float a, b, c; printf(input a, b:n); scanf(%f%f); c = a + b; printf(“The sum is %fn, c); ,39,程序的测试与调试举例,测试并调试下面的程序。 插入输出语句,显示程序状态。,C+语言概述,#include void main() float a, b, c; printf(inpu
23、t a, b:n); scanf(%f%f); /*调试用的语句,根据它的执行结果可以判断出错的位置(在本条语句的前面,还是在后面)*/ printf(“a=%f, b=%fn”, a, b); c = a + b; printf(“The sum is %fn, c); ,40,C+语言支持的程序设计方法,C+语言支持多种程序设计方法 结构化程序设计 面向过程程序设计 面向对象程序设计 通用程序设计,C+语言概述,结构化程序设计举例:“猜数”游戏程序。 在一次游戏中,程序产生一个1100间的随机数,然后让用户去猜,直到用户猜对为止。在游戏过程中可以给用户适当的提示。,41,C+语言支持的程序
24、设计方法,C+语言概述,?,50,80,65,58,42,C+语言支持的程序设计方法,面向过程程序设计举例:“井”子棋游戏 游戏规则: 双方轮流下子 每次一方只能在某一个空格处下一颗棋子 胜负判断: 若棋盘的某一行,或某一列,抑或某一对角线上的三个格子被某一方的棋子占据,则该方胜利; 否则,为平局,C+语言概述,43,C+语言支持的程序设计方法,面向过程程序设计举例:“井”子棋游戏 人机对弈过程分析,C+语言概述,C+语言支持的程序设计方法,面向过程程序设计举例:“井”子棋游戏 定义过程,C+语言概述,初始化棋盘,显示棋盘,玩家走一步,判断胜负,计算机走一步,判断胜负,C+语言支持的程序设计方
25、法,面向过程程序设计举例:“井”子棋游戏 定义模块 根据过程的复杂程度这一步是可选的,采用模块程序设计方法。,C+语言概述,46,C+语言支持的程序设计方法,面向过程程序设计举例:“井”子棋游戏 设计数据结构和算法(对每一个模块),C+语言概述,怎么表示?,怎么判断?,计算机如何决策?,47,C+语言支持的程序设计方法,面向对象程序设计举例:简易绘图程序 创建窗口,可以在其中绘制多种图形(直线、折线、三角形、矩形和多边形等)。 可以改变指定图形的颜色、位置和大小。,C+语言概述,48,C+语言支持的程序设计方法,面向对象程序设计举例:简易绘图程序 绘图程序在一次执行过程中需要或会产生什么“东西
26、(对象)”?(寻找数据) 例如: 长2厘米的红色实线 一个蓝色的三角形,三边的长度分别为 一个半径为5厘米的圆 哪些对象是相似的?相似的对象具有哪些共同的属性和功能?(抽象) 例如: 直线的位置和长度由两个点确定 所有形状都有颜色属性和显示(绘出自己)功能 ,C+语言概述,49,C+语言支持的程序设计方法,面向对象程序设计举例:简易绘图程序 设计和定义一组类。(创建新的数据类型) 窗口类(XWindow)(绘图程序窗口,提供绘图区) 各种图形类(XShape)(描述所有图形的公共属性和功能) 直线类(XLine)(描述所有直线的公共属性和功能) 折线类(XPolyline)() 三角形类(XTriangle)() 矩形类(XRectangle)() ,C+语言概述,50,C+语言支持的程序设计方法,面向对象程序设计举例:简易绘图程序 程序执行过程中,根据类创建所需要的对象,并向对象发送消息,完成绘图操作。(实现程序),C+语言概述,/ 创建一条直线 XLine line(XPoint(200, 100), XPoint(300, 100); / 在窗口中绘
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年知识经济时代的控制挑战
- 肾内科慢性肾病腹膜透析护理培训
- 65岁老年人服务规范
- ICU:重症监护护理措施指南
- 2026广东广州花都城投住宅建设有限公司第二次招聘项目用工人员4人备考题库及一套答案详解
- 动物科普讲堂课件
- 过传统节日 扬民族精神
- 2026中国统计信息服务中心(国家统计局社情民意调查中心)招聘10人备考题库附参考答案详解【b卷】
- 2026浙江事业单位统考温州市洞头区招聘22人备考题库及参考答案详解【研优卷】
- 2026北京首华物业管理有限公司招聘2人备考题库附答案详解【能力提升】
- 口腔X线检查的防护
- 2025年风电场“两票”(操作票、工作票)考试试卷及答案
- 2026年西安电力机械制造公司机电学院单招职业技能考试题库及答案1套
- 《制氢现场氢安全管理规范》
- 长期照护师基础知识考核试卷及答案
- 《二氧化碳转化原理与技术》课件 第0-8章 二氧化碳转化原理与技术-二氧化碳光催化转化
- 2025年湖北咸宁市中考数学试题(附答案)
- 高标准农田建设工程质量专项整治技术手册
- 《用图表呈现数据》教学设计-2025-2026学年青岛版(2024)小学信息技术四年级上册
- 飞行计算机讲解
- 中华人民共和国传染病防治法(2025版)解读
评论
0/150
提交评论