C第三版温秀梅第1章绪论.ppt_第1页
C第三版温秀梅第1章绪论.ppt_第2页
C第三版温秀梅第1章绪论.ppt_第3页
C第三版温秀梅第1章绪论.ppt_第4页
C第三版温秀梅第1章绪论.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+语言程序设计,课程的性质、任务与要求,C+语言是从C语言发展演变而来的。它包含了C的全部功能,并克服了C的不足,是目前使用广泛的程序设计语言。它包含两部分内容: 1. C+结构化程序设计基础知识及设计方法(18章) 2. C+面向对象的基本思想及设计方法(912章) 课程要求:通过学习能在VC环境下编程、调试程序(编辑、编译、连接、运行程序)。 考核方法:期末全院统考(统一命题、统一时间、统一阅卷)。,第1章 绪 论,1.1 程序设计概述 1.2 C+语言发展史简介 1.3 C+语言的基本语法成份 1.4 C+程序的开发步骤和结构 附录A 程序的调试与运行,1.1 程序设计概述,1.1.1 计算机程序设计语言的发展,1.机器语言:由一条条二进制代码组成(面向机器). 2.汇编语言:由一些助记符号代替二进制代码(同上). 3.高级语言:由一些命令或语句组成(面向过程).,程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。,是计算机自身的语言,是计算机唯一能够直接理解执行的语言。机器语言程序是由一系列指令组成的,指令是计算机可识别的逐条执行的基本命令。,用计算机语言编写的程序称为源程序。汇编程序把汇编语言翻译成机器语言的过程称为汇编。汇编的结果是生成目标程序,目标程序经过连接后生成可执行文件,由计算机执行。,CPU指令系统,由0、1序列构成的指令码组成 如:10000000 加 10010000 减,用助记符号描述的指令系统 如 ADD A, B,面向机器的语言,程序设计是数据被加工的过程,客观世界可以分类,对象是类的实例 对象是数据和方法的封装 对象间通过发送和接受消息发生联系,程序设计关键是定义类,并由类派生对象,翻译程序,编译方式: 是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。,解释方式: 是指源程序输入计算机后,解释程序对源程序边扫描边解释,解释一句,计算机执行一句,并不产生目标程序。,50年代的程序都是用指令代码或汇编语言编写的,这种程序的设计相当麻烦,编制和调试一个稍大一点的程序常常要花费很长时间,培养一个熟练的程序员更需经过长期训练和实习,这种局面严重影响了计算机的普及应用。 60年代高级语言的出现大大简化了程序设计,缩短了解题周期,因此显示出强大的生命力。这个时期,随着计算机的应用日益广泛地渗透到各学科和技术领域,发展了一系列不同风格的、为不同目标服务的程序设计语言。其中较为著名的有FORTRAN、COBOL、ALGOL、LISP、PL/1、PASCAL等十几种语言。高级语言的蓬勃兴起,使得编译和形式语言理论相应日趋完善,这是该时期的主要特征。但就整个程序设计方法而言,并无实质性的改进。,1.1.2 程序设计的发展历程,自60年代末到70年代初,出现了大型软件系统,如操作系统、数据库,这给程序设计带来了新的问题。大型系统的研制需要花费大量的资金和人力,可是研制出来的产品却可靠性差,错误多,且不易维护和修改。人们称这种现象为“软件危机”。 为了克服60年代出现的软件危机,1968年北约组织提出“软件工程”的概念。对程序设计语言的认识从强调表达能力为重点转向以结构化和简明性为重点,将程序从语句序列转向相互作用的模块集合。1969年,E.W.Dijkstra首先提出了结构化程序设计的概念,强调从程序结构和风格上来研究程序设计。用结构化程序设计的方法编写出来的程序不仅结构良好,易写易读,而且易于证明其正确性。,1.1.2 程序设计的发展历程,进入80年代,由于一系列高技术的研究,迫切要求大型的软件系统作为支撑。他们所用的数据类型也超出了常规的结构化数据类型的范畴,提出对图象、声音、规则等非结构化信息的管理。由于结构化语言的数据类型较为简单,所以不能胜任对非结构化数据的定义与管理,采用过程调用机制也不够灵活,独立性较差。 为了适应高技术发展的需要,消除结构化编程语言的局限,自80年代以来,出现了面向对象程序设计流派,研制出了多种面向对象编程语言(简称为OOPL),如Ada,Smalltalk,C+和当前使用在Internet上的平台无关语言Java等。,1.1.2 程序设计的发展历程,由于OOPL的对象、类具有高度的抽象性,所以它能很好地表达任何复杂的数据类型,也允许程序员灵活地定义自己所需要的数据类型。类本身具有很完整的封装性,可以使用它作为编程中的模块单元,满足模块独立自治的需求。再加上继承性和多态性,更有助于简化大型软件和大量重复定义的模块,增强了模块的可重用性,提高了软件的可靠性,缩短了软件的开发周期。,1.1.2 程序设计的发展历程,程序设计,我们写的程序主要由两个不同方面构成: (1)算法的集合(也就是解决问题的指令集合) (2)配合算法以提供解决方案的数据 算法与数据间的关系被称为程序设计的思维模式。 两种主要的程序设计思维: 结构化程序设计 面向对你程序设计,11,1.自顶向下、逐步求精:结构化程序设计的主要思想是功能分解并逐步求精。当一些任务复杂以至无法描述时,可以将它拆分为一系列较小的功能部件,直到这些完备的子任务小到易于理解的程度。这种方法叫“自顶向下,逐步求精”。 2.模块化设计:在拿到一个程序模块(实际上是程序模块的任务书)以后,根据程序模块的功能将它划分为若干个子模块。这个过程采用自顶向下方法来实现。 3.结构化编码:在设计好一个结构化的算法之后,还要善于进行结构化编码。即用高级语言语句正确地实现顺序、选择、循环三种基本结构。,1.1.3 结构化程序设计,程序的任务是描述问题并解决问题,可用下面的式子表示程序: 程序=数据结构+算法+程序设计语言+语言环境,结构化程序设计的主要思想是功能分解并逐步求精。 为什么要采用结构化? 在于定义一组结构完善的程序代码及程序流控制,以帮助程序设计人员更快、更正确地开发程序。 模块化设计 就是用函数来包装程序代码,让程序不再需要从无到有,若有现成的函数可用时,直接在程序里调用该函数即可,这样可以让程序代码被重用,并加快开发的时间 。 流程控制结构 使用三种控制结构来控制执行流程,13,顺序结构 选择结构 循环结构,14,1.1.4 面向对象程序设计,面向对象程序设计将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理,它采用了数据抽象和信息隐藏技术。在面向对象程序设计中可以用下面的式子表示程序: 程序=对象+对象+对象 对象=算法+数据结构+程序设计语言+语言环境,OOP以结构化程序设计 为基础,并对它加以改进后所形成的。 本质是使用封装的概念将数据与程序代码作为一个模块,这样构成的的一个模块称作是对象、类 以类为基础,通过分门别类的观念,也就是使用继承来更进一步地将上层的数据与程序代码交由下面类来分享,即重用。 所以可以把OOP想象成是披上了面向对象层的结构化程序设计,换句话,构成OOP的底层仍然是结构化程序设计的组件,只不过这些组件都披上了面向对象层所加的外衣。 OOP三大法则:封装、继承、多态,16,1.对象:是计算机内存中的一块区域,通过将内存分块,每个模块(即对象)在功能上相互之间保持相对独立。当对象的一个成员函数被调用时,对象执行其内部的代码来响应这个调用,这使对象呈现出一定的行为。 2.面向对象:客观世界是由各种各样的实体,也就是对象组成的。每种对象都有自己的内部状态和运动规律,不同对象间的相互联系和相互作用就构成了各种不同的系统,并进而构成整个客观世界。按照这样的思想设计程序,就是面向对象的程序设计。 3.面向对象程序设计:是在面向过程的程序设计基础上的质的飞跃。面向对象的技术在系统程序设计、数据库及多媒体应用等领域都得到广泛应用。 4. 面向对象程序设计的特点:抽象性、封装性、继承性和多态性,1.1.4 面向对象程序设计,1.2 C+语言发展史简介,C语言具有以下一些特点: (1)语言简洁、紧凑,使用方便、灵活。 (2)运算符和数据结构丰富,具有结构化的控制语句,生成的目标代码质量高,程序执行效率高。 (3)语法限制不太严格,程序设计自由度大。 (4)与其他高级语言相比,具有可以直接访问物理地址,能进行位运算的优点,适合解决有实时要求的问题。 (5)与汇编语言相比,具有良好的可读性和可移植性。 (6)以函数为基础实现程序的结构化设计,支持大型程序的多文件构成及单个文件独立编译。,1.2 C+语言发展史简介,C+语言具有如下一些特点: (1)支持面向对象程序设计 (2)支持泛型程序设计 (3)C+语言提供了功能强大的标准模板库 (4)C+语言是一种更好的“C语言”,1.3 C+语言的基本语法成分,1.3.1 C+语言的字符集 1.3.2 C+语言的标识符 1.3.3 C+语言的关键字 1.3.4 C+语言的运算符 1.3.5 C+语言的分隔符 1.3.6 C+语言的空白符,1.3.1 字 符 集,C+字符集是由下列字符组成的: (ASCII码字符集的子集) 大小写英文字母:a z A Z 10 个 数 字 :0 9 特殊字符: 空格 ! % ? ( ) 用C+字符集中字符可以构造各种词法符号。,1.3.2 标 识 符,标识符是一个字符序列,用来标记变量名、常量名、函数名、对象名和类型名等。 标识符由大小写字符、0 9的数字和下划线组成,标识符的命名规则如下: (1)以字母或下划线打头。 (2)其后可跟零个或多个字母、数字或下划线。 例如:name、day、NAME、prg_1 、a_1、b1、double_list、等都是合法的标识符; 而2b、D$7、name 1、x+y则是不合 法的标识符。,使用标识符时注意: (1)在C+语言中,大小写字母不等价。如MAX、Max和max是不同的标识符。习惯上符号常量用大写字母表示, 变量名用小写字母表示。 (2)最好不要定义以下划线打头的标识符,以免和C+系统库中的符号冲突。 (3)不要在标识符内部使用连续的两个下划线。 (4)标识符取名时不能与C+的关键字同名, 也不能与系统预先定义的标准标识符(如标准函数)同名。 (5)标识符要有意义、见名知义、简洁、易区分,以便程序易读,编程时不易犯错误。如max表示最大值,date表示日期等,以提高程序的可读性。 一般选用相应英文单词或拼音的缩写形式,尽量不要使用简单的符号,如a、b、c、x、y和z等。 (6)标识符的有效长度随系统而异。,1.3.3 关 键 字,注意:C+中关键字必须是小写的,在程序设计时经常用到,但不可以作为一般标识符使用。,花括号: 用来为函数体、复合语句等定界。 分号:用作语句之间的分隔符或结束符。 逗号:用作变量之间或对象之间的分隔符, 或用作函数的多个参数之间的分隔符。 空格:用作单词之间的分隔符。,1.3.5 分 隔 符,空白符是空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称。 空白符用于指示词法记号的开始和结束位置。C+程序可以不必严格地按行书写,凡是可以出现空格的地方,都可以出现换行。 书写程序时,要力求清晰、易读。因为一个程序不仅要让机器执行,还要让人阅读,同时便于修改、维护。 注释是对程序的注解和说明,目的是为了便于程序的阅读和分析。,1.3.6 空 白 符,1.4 C+程序的开发步骤和结构,编辑 编译预处理 编译 连接 运行与调试,1.4.1 C+程序开发步骤,使用编辑器编辑C+源程序,自动执行源程序中的预处理命令,编译预处理命令主要包括文件包含、宏定义和条件编译,负责将源程序翻译为机器语言代码(目标程序),生成目标程序文件,目标文件的扩展名为“.obj”。,将目标文件同缺失函数的代码连接起来,生成可执行文件,扩展名为“.exe”。,运行时,可执行文件由操作系统装入内存,然后CPU从内存中读出程序执行,错误,编译错误 : 在编译阶段出现的错误。,运行错误: 在程序运行过程中出现的错误称为运行时错误,也称逻辑错误。,1.4 C+程序的开发步骤和结构,1.4.2 C+程序的结构,【例1.1】编写程序,输出“Hello World!”字符串。 /* *功能:显示输出“Hello World!”字符串 * */ #include / 编译预处理命令 using namespace std; / 使用标准名空间std /*以下是主函数*/ int main() / 主函数 cout“Hello World!“endl; return 0; ,例1.2 从键盘上输入两个数,求这两个数的最大值(例1.cpp) #include /编译预处理命令 int max(int x,int y) /求两个数的最大值函数 int t; if (xy) t=x; else t=y; return t; / return语句将t的值返回给主调主函数main( ) /*以下是主函数*/ void main( ) /主函数 int a,b; /定义两个基本整型变量 coutab; int m; m=max(a,b); /调用求最大值的函数 cout“最大值=“mendl; ,一个简单的C+程序,C+源程序(扩展名为.cpp)包括编译预处理命令、注释和函数等内容。,编译预处理命令:以“#”号开头的行都是编译预处理行,且在一行中,只能写一行编译预处理指令。,为了使程序的结构清晰,一般将数据类型及类的定义、函数的说明等放在一个源代码文件中,成为头文件,其扩展名为.h(或.hpp)。头文件可由系统提供,用户可直接使用;也可由用户根据需要自己编写头文件。系统提供的头文件用括起来如,而用户自己定义的头文件用“ ”括起来。,被调函数 (自定义函数),主调函数,程序的运行结果: 请输入两个数: 5 9 最大值=9,库函数(标准函数):定义在各系统头文件中,如:标准数学函数定义在math.h头文件中,而字符串处理函数定义在string.h头文件中等。, int t; if (xy) t=x; else t=y; return t; ,C+中采用如下两种注释方法: 使用“/”符号进行注释:从“/”符号后面字符开始直至它所在行结束,所有字符都为注释信息(适用于注释一行信息)。 使用一对“/*”和“*/”符号进行注释:在“/*”和“*/”之间的所有字符都为注释信息(适用于注释多行信息) 。 说明:在生成执行程序时,C+忽略注释,并把每一个注释都看做是空格。两种注释都可以放在程序的任一位置。,1. 注 释,编译预处理命令的功能是使编译程序在对源程序进行通常的编译之前,先对这些命令进行预处理,然后将预处理的结果和源程序一起进行通常的编译处理,以得到目标代码。 注意:C+语言中的编译预处理命令都是以#打头的,在一行中只能写一条编译预处理命令;编译预处理命令不是C+语句,不能以分号结尾,而是以换行结尾。 程序中的 # include是编译预处理命令,作用是在编译之前,将文件iostream中的代码嵌入到程序中该命令所在的地方,作为程序的一部分,iostream文件中声明了程序所需要的输入和输出操作的有关信息。cin、cout、和操作的有关信息就是在该文件中声明的。,2. 编译预处理,C+提供名字空间将相同的名字放在不同空间中来防止命名冲突。,标准C+提供的所有组件都放在标准名字空间std中,使用名字空间std有以下三种方法:,(1)利用using namespace使用名字空间 格式:using namespace std;,(2)用域运算符 : 为对象分别指定名字空间std, 格式: std:cout“Hello World!“std:endl;,(3)用using与域运算符指定名字空间, 格式: using std:cout;,3. 名字空间(名空间,namespace),C+程序是由函数驱动的,一个C+程序可由一个main函数和若干个其他函数组成, 其中必须有且仅有一个主函数main(),主函数可位于程序中的任意位置,C+程序总是从主函数开始执行,主函数执行完毕,则整个C+程序执行完毕。主函数是由操作系统调用的。 函数是C+程序的基本单位。 函数由函数说明部分和函数体两部分组成。,4. 函数,函数的组成,函数的说明部分:包括函数名、函数返回值类型和函 数的形式参数。例如: int main ( ),函数返回值类型,函数名,函数体部分:用一对 表示函数体的开始和结束位置, 是用于完成某种功能的语句的集合,一般包括变量定 义和执行语句(数据描述和操作描述)。 在C+语言的函数体中,一个变量必须先定义后 使用,但变量的定义可出现在第一次使用之前的任意 位置。C+中每一条语句都是以分号 ; 结束的。,函数体为空则称该函数为空函数,空函数不完 成任何功能,一般是为以后开发系统及完善程 序功能预留的。函数体中也可以没有数据描述 部分而只有操作描述。,5. C+程序的书写格式,1.C+程序的书写格式比较自由,一般一行写一条语句。对于短语句也可一行写多个,中间用“;”分隔。对于长语句也可将一条语句分写在多行上,分行原则是不能将一个单词分开,也不要将双撇号引用的一个字符串分开。 2.为了程序书写得清晰,提高程序的可读性,一般采用缩进格式。即同一层次语句要对齐,不同层次语句要缩进若干个字符(24个)。例如循环体中的语句和选择体中的语句要缩进对齐。 3.花括号的书写方法较多, 常用的是每个花括号占一行,并与使用花括号的语句对齐,花括号内的语句采用缩格书写的方式;另有一种形式是花括号与所括内容占一行。,习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式,main( ) . . . . ,main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; coutsumendl; ,优秀程序员的素质之一: 使用TAB缩进 对齐 有足够的注释 有合适的空行,格式特点:,file.exe,附录A 程序的调试与运行,程序代码的录入, 生成源程序*.cpp,语法分析查错,翻译生成目标程序*.obj,与其它目标程序或库链接装配,生成可执行程序*.exe,一、 C+程序的编辑、编译、连接过程和运行 1编辑 编辑是将编写好的C+源程序输入到计算机中,生成磁盘文件的过程。 2编译和连接过程 C+是以编译方式实现的高级语言。C+程序的实现,必须要使用某种C+语言的编译器对程序进行编译。 3运行 一个C+的源程序经过编译和连接后生成了可执行文件。运行可执行文件可在编译系统下选择相关菜单项来实现。也可以再采用其他方法。,38,二、 Visual C+ 6.0版本的基本用法,本节不是详细讲述VC+编译系统的具体使用方法。只是为了能够实现C+的程序,简单介绍C+程序在该编译系统下如何编译和运行。 1Visual C+ 6.0启动后的用户界面 选择菜单“开始/程序/Microsoft Visual Studio 6.0 / Microsoft Visual C+ 6.0”,得到Visual C+ 6.0启动后的用户界面,如图所示。,39,2.编辑C+源程序 编辑C+源程序时,选择“文件”菜单项,出现一个下拉式菜单,如图所示,再选择该菜单中的“新建”选项(热键为Ctrl+N),打开“新建”窗口。 3. 选择“文件新建文件 C+ Source File”,就可以编辑C+源程序,如图所示,输入源程序。,40,4编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论