收藏 分享(赏)

第6章 程序设计基础.ppt

上传人:tkhy51908 文档编号:8010171 上传时间:2019-06-04 格式:PPT 页数:72 大小:3.98MB
下载 相关 举报
第6章 程序设计基础.ppt_第1页
第1页 / 共72页
第6章 程序设计基础.ppt_第2页
第2页 / 共72页
第6章 程序设计基础.ppt_第3页
第3页 / 共72页
第6章 程序设计基础.ppt_第4页
第4页 / 共72页
第6章 程序设计基础.ppt_第5页
第5页 / 共72页
点击查看更多>>
资源描述

1、第6章 程序设计基础,-计算机学院,2,第6章 程序设计基础,纲要,3,6.1 概述,4,6.1 概述,6.1.1 程序与程序设计 计算机是依靠硬件和软件的配合进行工作的,硬件是计算机系统的基础,软件附着在硬件上,指挥和控制硬件工作。 那么,软件是什么呢?软件 = 计算机程序 + 文档资料,软件安装说明书 用户使用手册 有关技术资料、服务信息等,5,6.1.1 程序与程序设计 那么什么是计算机程序呢? 事实上,为了能让计算机解决实际问题并完成预定功能,人们需要按照解题步骤和功能要求,从计算机的指令系统中选出相关的指令并进行编排(称为编程),形成一组有序的指令集合。 所以,计算机程序就是计算机为

2、完成某一任务所必须执行的一系列指令的集合。计算机程序 = 一系列指令的集合,6.1 概述,6,6.1 概述,6.1.1 程序与程序设计 下面就是用于两个变量的值交换的一段程序:void swap(int m, int n) int temp; /*定义名叫temp的整型变量*/temp=m; m=n; n=temp; /*交换变量m和n的值*/ 而用程序设计语言(也称计算机语言)来编写计算机程序的过程就叫程序设计。上面这段程序就是用C程序设计语言编写的。,7,6.1 概述,6.1.2 程序设计语言的发展 计算机程序设计语言经历了从机器语言、汇编语言到高级语言的发展历程。,1GL,2GL,3GL

3、,4GL,8,6.1 概述,6.1.2 程序设计语言的发展 1.机器语言 机器语言是计算机诞生和发展初期使用的语言。机器语言程序是由和的二进制代码按一定规则组成的,并能被机器直接理解和执行的指令集合。 例如,计算A=8+12的机器语言程序如下:10110000 00000111 :把8放入累加器A中00101100 00001100 :12与累加器A中的值相加,结果 仍放入A中11110100 :结束,停机,9,6.1 概述,6.1.2 程序设计语言的发展 1.机器语言 机器语言编写的程序不仅难读、难懂、难修改,而且不同机器使用的指令系统也不尽相同,所以现在已经没有人使用机器语言直接编程了。

4、当然,机器语言也有其优点,编写的程序代码不需要翻译,因此占用空间少,执行速度快。,10,6.1 概述,6.1.2 程序设计语言的发展 2.汇编语言 汇编语言开始于20世纪50年代初。为了克服机器语言的缺点,人们将机器指令的代码用英文助记符来表示,例如用ADD表示加、JMP表示程序跳转等。 例如,计算A=8+12的汇编语言程序如下:MOV A , 8 : 把8放入累加器A中ADD A , 12 : 12与累加器A中的值相加,结果仍放入A中HLT : 结束,停机,11,6.1 概述,6.1.2 程序设计语言的发展 2.汇编语言 汇编语言克服了机器语言难读、难懂的缺点,同时又保持了其编程质量高,占存

5、储空间少,执行速度快的优点。故在编写系统软件和过程控制软件时,仍经常采用汇编语言。 但汇编语言仍然是面向机器的语言。使用汇编语言编程需要直接安排存储,规定寄存器和运算器的动作次序等。此外,不同计算机的指令长度、寻址方式、寄存器数目等都不一样,所以汇编语言程序的通用性较差。,12,6.1 概述,6.1.2 程序设计语言的发展 2.汇编语言 汇编语言编写的程序(源程序),必须经过汇编程序(一种语言处理程序)翻译成计算机所能识别的机器语言后,才能被计算机执行 。,13,6.1 概述,6.1.2 程序设计语言的发展 3.高级语言 从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,它接

6、近于数学语言或自然语言,同时又不依赖于计算机硬件,编出的程序能在所有计算机上通用。经过努力,1954年,第一个完全脱离机器硬件的高级语言FORTRAN语言问世了。 高级语言的表示形式近似于自然语言,对各种公式的表示近似于数学公式。而且,一条高级语言语句的功能往往相当于十几条甚至几十条汇编语言的指令,程序编写相对比较简单。因此,在工程计算、数据处理等方面,人们常用高级语言来编写程序。,14,6.1 概述,6.1.2 程序设计语言的发展 3.高级语言 用高级语言编写的程序称为高级语言源程序,也不能直接执行,必须经过语言处理程序的解释或编译后才能执行。,15,6.1 概述,6.1.2 程序设计语言的

7、发展 4.非过程化的程序语言 人们称高级语言是第代语言,其特点是面向过程。面向过程是指用户在程序中不但要说明解决什么问题,还要告诉计算机如何去解决。 计算机技术的发展要求新一代的计算机语言能够根据用户说明的问题,智能化的去自动寻找解决方案,具有这种功能的语言称为第4代语言(FourthGeneration Language,4GL)。目前4GL尚未发展成熟,主要面向基于数据库应用的领域,还不适用于科学计算、高速实时系统和系统软件等的开发。,16,6.1 概述,6.1.3 常见的程序设计语言第一个高级程序设计语言是FORTRAN语言,它是由美国IBM公司在20世纪50年代开发出来的。之后,随着计

8、算机应用的发展,先后出现了COBOL、BASIC、PASCAL、C、C+、Java等高级语言。 1. FORTRAN语言由美国著名的计算机先驱人物约翰巴克斯( John Wamer)于1954年提出。FOUTRAN是FORmula TRANslator的缩写,意思是“公式翻译机”。顾名思义,该语言主要用于科学计算。FORTRAN自推出之日起,版本不断更新,功能不断增强,目前在工程应用领域,FORTRAN仍然被广泛使用。,6.1 概述,6.1.3 常见的程序设计语言 2. COBOL语言COBOL(COmmon Business Oriented Language, 通用事务处理语言)是在美国国

9、防部推动下,由政府机构和工业界联合开发的一种语言,于1960年正式推出,主要用于商业数据处理。COBOL语言曾经使用非常广泛,20世纪70年代近一半的程序是用COBOL语言编写的。当前,在商业领域, COBOL语言仍然占有重要席位。,18,6.1 概述,6.1.3 常见的程序设计语言 3. BASIC语言BASIC(Beginners All-purpose Symbolic Instruction Code, 初学者的通用符号指令代码)是1964年由美国的John G. Kemeny和 Thomas E. Kurtz 在FORTRAN语言的基础上开发的。由于简单易学,BASIC语言得到了广泛

10、普及。Microsoft公司对BASIC可谓是一往情深,从早期微型机上内置的BASIC,到80年代产生的第一个编译版本Quick BASIC,直到目前非常流行的Visual Basic,一直没有中断过对BASIC语言的的改进。最新出现的Visual Basic. NET,是采用Microsoft的. NET技术的Visual Basic语言。,19,6.1 概述,6.1.3 常见的程序设计语言 4. PASCAL语言PASCAL是由瑞士计算机科学家Niklaus Wirth 设计的一种语言,1968年提出后被全世界广泛接受。这个语言的名字是为了纪念著名的法国数学家,也是计算科学的先驱Blais

11、e Pascal而起的。由于结构小巧、语法严谨、数据类型丰富,从20世纪70年代末往后的很长一段时间里, PASCAL成为世界范围的计算机专业教学语言。20世纪80年代,随着C语言的流行,PASCAL走向了衰落。目前,在商业上仅有Borland公司仍在开发基于PASCAL语言系统的Delphi,它使用了面向对象与软件组件的概念,主要用于开发商用软件。,20,6.1 概述,6.1.3 常见的程序设计语言 5. C与C+语言是由美国贝尔实验室的Kennet L. Thompson和Dennis M. Ritchie于1972年设计开发的,当时主要用于编写UNIX操作系统。后来由于其功能丰富、使用灵

12、活、执行速度快、可移植性强,迅速成为最广泛使用的程序设计语言之一。C语言既可以用来开发系统软件,也可以用来开发应用软件,应用领域很广泛。例如,在中国广泛使用的计算机辅助设计软件AutoCAD、数学软件系统Mathematica等,以及许多语言编译系统本身,其软件系统的全部或部分都是用C语言开发的。C语言已经成为最重要的软件系统开发语言之一。,21,6.1 概述,6.1.3 常见的程序设计语言 5. C与C+语言1980年,贝尔实验室的Bjarne Stroustrup对C语言进行了扩充,加入了面向对象的概念,并于1983年改名为 C+。目前,C+已经成为应用最广的面向对象程序设计语言。Micr

13、osoft公司的Visual C+和Borland公司的 C+ Builder是C+语言最常用的开发工具,利用这些开发工具,可以高效率的开发出复杂的Windows应用程序。最新出现的C#语言使用了C+的语法和语义,是基于Microsoft公司推出的新一代软件开发环境.NET平台的高级程序设计语言。,22,6.1 概述,6.1.3 常见的程序设计语言 6. Java语言Java是Sun公司开发的一种跨平台的网络编程语言,于1995年正式发布。其语言风格与C+接近,但舍弃了C+中一些不常用或容易被误用的成分,如指针等。Java语言最主要的特点是,同一个Java程序不用重新编译就可以在不同平台的计算

14、机上运行。Java在网络上的独特优势以及其跨平台的特点,使得它已经成为Internet上最受欢迎的编程语言之一。,23,6.1 概述,6.1.3 常见的程序设计语言 7.网页设计类语言 目前,最常用的3种动态网页设计语言有ASP(Active Server Pages)、JSP(Java Server Pages)、PHP(Hypertext Preprocessor)。三者都提供在 HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。 ASP是一个Web服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的Web服务应用程序。ASP支持VBScript、JScript

15、等脚本语言。 JSP是用Java语言作为脚本语言的,并可以在Servlet和JavaBean的支持下,完成功能强大的站点程序。PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C、Java和Perl语言的语法,并融合PHP自己的特性,使Web开发者能够快速地写出动态生成页面。,24,6.2 算法,25,著名的计算机科学家沃思曾提出:程序 数据结构算法1) 数据结构:是指程序中要指定数据的类型和数据的 组织形式。2) 算法:是指对数据进行操作的方法和步骤的描述。 但实际上,一个完整的程序除了以上两个必备要素之外,还应当采用一定的程序设计方法进行设计,并用某种计算机语言来表示。程序=数据结

16、构+算法+程序设计方法+语言工具和环境其中,算法是程序的核心。,6.2 算法,26,6.2 算法,6.2.1 算法的基本概念 广义的说,为解决一个问题而采取的方法和步骤,就称为“算法”。本书所关心的当然只限于“计算机算法”。所谓的计算机算法就是使用计算机来解决一个问题时所采取的特定方法和步骤。 例如,要求出1+2+3+100的和,可设计如下的计算机算法。,27,6.2 算法,6.2.1 算法的基本概念 例如,要求出1+2+3+100的和,可设计如下的计算机算法。设两个变量:一个变量sum用来存放求和的结果,另一个变量i用来存放每次被加的数值;S1:使0=sum;S2:使1=i ;S3:使i的值

17、累加到sum中,即sum+i=sum ;S4:使i的值加1,i+1=i ;S5:如果i=100,返回S3继续执行;否则,算法结束。最后得到的sum的值就是要求的和。,28,6.2 算法,6.2.1 算法的基本概念 算法设计完成后,用某种程序设计语言描述出来就是计算机程序了。算法与程序设计语言及程序的关系如图6.3所示。,29,6.2.2 算法的特征 1确定性对于任意的一组输入,包括合理的输入与不合理的输入,总能得到预期的输出。 2可行性算法中的每一步操作都必须是可执行的,也就是说算法中每一步都能通过手工或机器在有限时间内完成。 3输入一个算法有0个或多个输入,在算法运算开始之前给出算法所需数据

18、的初值,这些输入取自特定的对象集合。 4输出作为算法运算的结果,一个算法产生一个或多个输出,输出是同输入有某种特定关系的量。 5有穷性一个算法总是在执行了有穷步的运算后终止,即该算法是可达的。,6.2 算法,30,6.2 算法,6.2.3 算法的表示方法 算法有很多种表示方法,常用的有自然语言、流程图、N-S图、伪代码等。 1. 自然语言用人们日常使用的语言,即自然语言来描述算法通俗易懂,但存在以下缺陷:(1)易产生歧义,往往要根据上下文才能判别其确切含义;(2)语句繁琐、冗长,尤其是描述包含选择和循环的算法时,不太方便。因此,一般不用自然语言来描述算法,除非是很简单的问题。,31,6.2 算

19、法,6.2.3 算法的表示方法 2. 流程图流程图是用如图6.4所示的一些图框、线条以及文字说明来描述算法。流程图表示的算法形象、直观,便于交流。因此被广泛使用。,32,6.2 算法,6.2.3 算法的表示方法 3. N-S图N-S图是一种简化的流程图,去掉了流程图中的流程线,全部算法写在一个矩形框内。N-S图三种基本结构顺序结构、选择结构、循环结构的符号如图6.5所示。N-S图表示算法直观、形象,且比流程图紧凑易画。实际应用中也经常采用。,33,6.2 算法,6.2.3 算法的表示方法 4. 伪代码用流程图和N-S图表示算法直观易懂,但画起来比较费事,尤其当设计一个复杂算法并需要反复修改时,

20、就更加麻烦。为了设计算法时方便,常用一种称为伪代码的工具。所谓“伪代码”就是用介于自然语言和计算机语言之间的文字和符号来描述算法。伪意味着假,因此用伪代码写的算法是一种假代码不能被计算机所理解,但便于转换成某种语言编写的计算机程序。用伪代码写算法并无固定的、严格的语法规则,只要意思表达清楚,书写格式清晰易读即可。,34,6.2 算法,6.2.4 算法的评价评价一个算法主要有两个指标:时间复杂度和空间复杂度。 时间复杂度:是从算法效率的角度来考虑的,指依据算法编写出的程序在计算机上运行所消耗的时间。常常从算法中选取一种基本操作,以该基本操作重复执行的次数作为算法的时间复杂度,记作T(n) 。 空

21、间复杂度:指依据算法编写出的程序在计算机上运行时所占存储空间的大小。通常也用算法所占辅助存储空间大小的数量级来表示算法的空间复杂度,记作S(n)。,35,6.2 算法,6.2.5 算法的应用举例 例6.1 某公司对所属的100员工进行了年度绩效考核,现在要求统计出考核分数在85分以上的员工人数,并将这些员工的工号和考核分数输出。 为了用计算机解决此问题,我们首先假设:用表示员工工号,1代表第一个员工的工号,ni代表第i个员工的工号;用g表示考核分数,gi代表第i个员工的考核分数;用count表示考核分数在85分以上的员工人数。 然后设计如下算法,算法可采用自然语言、流程图、N-S图、伪代码中的

22、任何一种来描述。,36,6.2 算法,6.2.5 算法的应用举例 1.自然语言表示S1:使1=i , 0=count ;S2:输入ni和gi;S3:使i+1=i ;S4:如果ii ;S6:如果gi = 85, count+1=count,并输出ni和gi;S7:使i+1=i ;S8:如果i=100,返回S6继续执行;S9:输出count 。,37,6.2 算法,6.2.5 算法的应用举例 2. 流程图表示,38,6.2 算法,6.2.5 算法的应用举例 3. N-S图表示,39,6.2 算法,6.2.5 算法的应用举例 4. 伪代码表示begin /*算法开始*/1=i , 0=countwh

23、ile ii; 1=i;while i=85 count+1=count , print ni and gii+1=I print count /*输出统计出的人数*/end /*算法结束*/,40,6.2.6 数据结构数据是信息的载体,它是计算机程序加工的“原料”。数据类型是指具有相同性质的计算机数据的集合,在这个数据集合上可以进行一系列的操作。数据类型可以分为两种类型,一种是原子数据类型,这种类型是由计算机语言提供的,如整数类型、实数类型、字符类型等。 例6-2:记录某同学大学英语课程的成绩。该问题中涉及的数据就只是一个数值,要用计算机对其进行表示和处理是比较简单的,用恰当的数据类型来描述

24、就可以了。float s; /*定义一个实数类型的变量,用来存储某同学的英语成绩*/s = 74.5; /*把某同学的英语成绩存储到此变量中,就可进行后续的处理和操作*/,6.2 算法,41,6.2.6 数据结构另一种数据类型是结构数据类型,这种类型是程序设计语言提供的一种描述数据元素间逻辑关系的机制,可由计算机语言提供,也可由用户自己定义。如例6-1,统计出公司年度绩效考核分数在85分以上的员工人数。 要解决该问题,首先要记录下公司所属100个员工的年度绩效考核分数。这些数据并不是一个简单的数值,而是具备相同数据类型,即实数类型,并且有着顺序逻辑关系的一组数据。所以可定义数组这种结构数据类型

25、来存放这组数据。 float g100; /*定义一个实数类型的数组g,其中有100个数组元素,可以用来存储100个员工的年度绩效考核分数*/,6.2 算法,42,6.2.6 数据结构对于复杂的数据,在计算机中不能只用上面提到的一种简单的数据类型来描述,因为它们除了含有数据本身的一些属性外,数据间的逻辑关系也非常密切。要想管理好这些数据,就要搞清楚它们之间的逻辑关系,并把这些关系恰当地表示出来,这就必然要用到数据结构的概念。 数据结构就是用来描述数据以及数据之间的相互关系的。这里的关系,具体地讲就是数据的组织形式,关系通常包含如下两个方面的内容: 数据之间的逻辑关系,即数据的逻辑结构; 数据元

26、素及其关系在计算机存储器内的表示,即数据的存储结构。,6.2 算法,43,6.3 程序设计的步骤,广义的程序设计并不是简单的编写程序,它是一个过程,包含了一系列的步骤。,对于一个功能相对简单的计算任务来说,编写程序的过程就可以称为程序设计。程序设计的一般步骤如图6.8所示。,44,6.3 程序设计的步骤,1. 分析问题当需要编写一个计算机程序前,首先要搞清楚为什么要编写这个程序,这个程序要干什么用,需要完成什么功能。,例6.2 问题描述:王欣同学毕业后找到一份高薪的工作,但好像总觉得钱不够花。于是他决定管理好自己的账目,以便能够存下一些钱买房子。首先,他准备清查一下一年来,每个月银行的结余是多

27、少,然后算算平均每个月有多少结余。,1.程序名称:计算月平均结 余; 2.程序目的:通过计算一年的月平均结余,来帮助他管理好自己的账目; 3.功能要求:从控制台读入12月的结余,然后计算平均值并输出。钱数以元为单位表示,精确到分。,45,6.3 程序设计的步骤,2.设计算法假设用f变量来存放每个月的的结余,用sum变量来存放12个月结余的总和,i变量来控制循环。算法的流程图描述如图6.9所示。,46,6.3 程序设计的步骤,3. 选择程序设计语言一般来说,不同的语言可以完成同样的任务,因此选择什么语言都行。但是,在实际工作中,人们往往会综合各种要求选择最适合的语言。例如:如果时间紧迫,可能就会

28、选择开发效率高或自己熟悉的语言(如Visual Basic语言);如果对程序响应要求高,可能就会选择运行效率高的语言(如C语言);如果要求在多种平台上使用,可能就会选择移植性好的语言(如Java语言)。针对例6.2,我们可以选择C语言作为程序设计语言。,47,6.3 程序设计的步骤,4. 编写程序代码选定程序设计语言后,就可以以算法为蓝本,编写程序代码实现要求的功能。编写程序代码就是根据所选定的语言所规定的词汇、语法规则、构词语句来编辑程序。编辑程序可以用一般的文字编辑软件,如记事本、写字板等。但为了提高效率,人们通常使用软件厂家提供的专门的集成开发环境。例如,Borland公司的Turbo

29、C 2.0/ Turbo C+ 3.0等均可用于编写C语言程序。,48,6.3 程序设计的步骤,4. 编写程序代码#include void main() /*主函数,每个C语言程序必须有一个主函数*/ int i; /*定义一个整数类型的变量,用它来控制循环*/float f , sum=0.0 ; /*定义两个浮点类型的变量,可以存放带小数点的数值*/for (i=0; i12; i+) /*循环输入每个月的结余,并求出总和*/ scanf(“%f”, /*计算并输出12个月的平均结余,结果精确到分*/,49,6.4 程序设计的方法,50,6.4 程序设计的方法,6.4.1 结构化程序设计

30、方法及应用举例 在计算机刚出现的早期,它的价格昂贵、内存很小、速度不高。为了节约资源,程序中大量使用GOTO语句,使得程序结构混乱、可读性及可维护性差、通用性更差。,51,6.4 程序设计的方法,6.4.1 结构化程序设计方法及应用举例 结构化程序设计的概念最早由荷兰科学家E. W. Dijkstra在1966年提出:任何程序都基于顺序、选择、循环三种基本的控制结构,并且程序具有模块化特征,每个程序模块具有惟一的入口和出口。 这为结构化程序设计的技术奠定了理论基础。,52,6.4 程序设计的方法,6.4.1 结构化程序设计方法及应用举例 结构化程序设计主要包括两个方面:(1) 在软件设计和实现

31、过程中,提倡采用自顶向下、逐步细化的模块化程序设计原则;(2) 在代码编写时,强调采用单入口单出口的三种基本控制结构,避免使用GOTO语句。,53,6.4 程序设计的方法,6.4.1 结构化程序设计方法及应用举例 例6.3 编程实现:输入两个正整数,求出它们的最大公约数和最小公倍数。 1. 采用“自顶向下,逐步细化”的方法进行问题分析,54,6.4 程序设计的方法,6.4.1 结构化程序设计方法及应用举例 2. 采用“模块化”结构进行程序设计每个过程都可以作为一个程序模块来设计。程序中的子模块在语言中通常用函数来实现。因此图6.12所示的四个模块可分别用三个函数实现。,55,6.4 程序设计的

32、方法,6.4.1 结构化程序设计方法及应用举例 2. 采用“模块化”结构进行程序设计 Gcd函数:用“辗转相除法”求两个正整数的最大公约 数。设有两个正整数m,n,则:S1:先将m,n中的较大值放入m中;S2:计算m/n的余数r;S3:若r=0,说明m可被n整除,最大公约数即为n;S4:若r0,令n=m,r=n;S5:重复步骤S2S4,直到r=0,此时的n即为最大公约数; Lcm函数:最小公倍数 = 两数乘积/最大公约数,56,6.4 程序设计的方法,6.4.1 结构化程序设计方法及应用举例 3. 采用三种基本控制结构编写程序(以C语言为例) #include “stdio.h”void ma

33、in() /*主函数:完成输入和输出*/ int Gcd(int, int); /*函数声明*/int Lcm(int, int, int); /*函数声明*/int m, n, g, l ;scanf(“%d, %d”, /*输出最小公倍数*/,57,6.4 程序设计的方法,6.4.1 结构化程序设计方法及应用举例 3. 采用三种基本控制结构编写程序(以C语言为例) int Gcd(int m, int n) /*Gcd函数:求出两个数的最大公约数*/ int r , temp;if (nm) /*选择结构*/temp=m; m=n; n=temp; /*顺序结构,实现两个数交换,确保大的放

34、在变量m中*/while (r=m%n)!=0) /*循环结构,实现“辗转相除法”*/ m=n;n=r; return n; /*n即为求得的最大公约数*/ Int Lcm(int m, int n, int g) /*Lcm函数:求出两个数的最小公倍数*/ return(m*n/g); ,58,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 面向对象的程序设计方法是20世纪80年初提出的,它的精髓就在于程序的组织与构造。用结构化程序设计方法解决问题,是将问题分解为过程。 而用面向对象的方法解决问题,是将复杂系统抽象为一个个“对象”,以“对象”为思考问题的出发点:涉及哪个对

35、象的功能,便由哪个对象自己去处理;不同对象之间通过消息或事件发生联系;对象依据接收到的消息或事件进行工作。 本节将介绍面向对象程序设计方法中最简单的概念:对象、消息、事件、事件驱动等 。,59,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 1.对象-什么是对象?对象是现实世界中可以独立存在、可以区分的实体,也可以是一些概念上的实体。如一本书、一个人、一所学校,甚至一个地球,这些都是对象。还有一些抽象事件,如一次演出、一次球赛、一次借书等也都可以看作是对象。 -如何描述对象呢?对象名:每个对象应该有一个名字以区别于其他对象;属性:是用一组状态来描述的对象的某些特征;方法:是

36、对对象属性的各种操作,每一个操作决定对象的一种功能或行为。,60,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 1.对象例如,“王宇”和“演唱会”是两个不同的对象,可以如表 6.1这样来描述它们。,61,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 2.消息在面向对象的系统中,对象与对象之间并不是彼此孤立的,它们之间存在着联系。对象之间的联系是通过消息来传递的。假设“王宇”想参加“演唱会”,但不清楚演唱会的具体时间。那么“王宇”就可以问“演唱会”。这种“问”可以认为是“王宇”向“演唱会”发出一个消息。“演唱会”在收到消息后,会执行“回答演出时间”这个

37、方法来做出相应回答。当一个对象需要其他对象为其服务时,便可向那个对象发出请求服务的消息。收到消息的对象会根据这个消息执行相应的功能。,62,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 3.事件那么,什么是事件呢?所谓事件就是一些能够激活对象功能的动作。 例如,在学校,上课的“铃声响起”是一个事件,老师听到铃声就要准备开始讲课。有同学“举手”也是一个事件,老师看到举手就会请同学起立发言。可见,不同的事件往往引发对象不同的动作。把日常生活中的事件概念引入计算机,不难理解用户按键、单击鼠标、打开文件、关闭文件等都是发生在计算机上的事件。这些事件体现了人与机器之间的联系,计算机

38、依据用户产生的这些事件执行相应的程序。,63,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 4.事件驱动在传统的面向过程的应用程序中,代码的执行总是从第一行开始,随着程序流程执行代码的不同部分。程序执行的先后次序由设计人员编写的代码决定,用户无法改变程序的执行流程。而在面向对象的程序设计中,程序是由若干个规模较小的事件过程组成。当程序处于运行状态时,特定事件的发生将引发对象执行相应的事件过程。例如,用户单击一个按钮时,可能引发一段程序的执行;当用户关闭文件时,可能又引发另外一段处理程序执行。,64,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 4.事

39、件驱动例如,下面这段VB程序代码就只有当用户用鼠标单击(Click)命令按钮(Command1)时才会被执行,这就所谓的事件驱动机制 。 Private Sub Command1_Click()Dim m As Integer, n As IntegerDim t As Integerm = Val(Text1.Text)n = Val(Text2.Text) End Sub,65,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例目前,这种“对象消息”的面向对象的程序设计模式有取代传统的“数据结构算法”的面向过程的程序设计模式的趋向。当然,面向对象的程序设计并不是要抛弃结构化

40、程序设计方法,而是站在比结构化程序设计更高、更抽象的层次上解决问题。当所要解决的问题被分解为低级代码模块时,仍需要结构化编程的方法和技巧,但是,面向对象的程序设计模式在分解一个大问题为小问题时采取的思路与结构化方法是完全不同的。,66,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例采用面向对象技术的开发过程一般分为面向对象分析( Object Oriented Analyzing, OOA)、面向对象设计(Object Oriented Designing, OOD)和面向对象编程(Object Oriented Programming, OOP)三个阶段。,67,6.4

41、程序设计的方法,6.4.2 面向对象程序设计方法及应用举例面向对象分析(OOA):是一种软件开发过程分析的方法学。当使用OOA的时候,必须把软件开发过程中的每样东西都想成类。从类中建立的每个新的个体称为类的一个实例。OOA的过程主要关心怎样导出系统需要的类。面向对象设计(OOD)阶段的焦点是软件系统的“如何/怎样”的问题。设计阶段的典型问题包括“这个类如何收集数据”、“这个类如何计算”以及这个类如何打印报表。面向对象的编程(OOP)是采用面向对象的语言具体实现 OOD的设计。在Windows环境下常用的面向对象的程序设计语言有:C+、Java、Visual Basic等。虽然它们风格各异,但都

42、具有共同的思维和编程模式。,68,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 下面结合一个例子,简单说明在实际应用中如何使用面向 对象的程序设计方法进行程序设计。例6.4 用面向对象程序设计方法编程实现:输入两个正整数,求出它们的的最大公约数和最小公倍数。这个简单问题的编程(以Visual Basic为例)可分两步进行。(1)界面设计(2)代码编写,69,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 (1)界面设计,70,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 (2)代码编写 Private Sub Command1_C

43、lick()Dim m As Integer, n As Integer 定义m, n为整数类型的变量Dim t As Integer, r As Integerm = Val(Text1.Text) 把Text1文本框输入的内容转换为数值后存入变量m中n = Val(Text2.Text) 把Text2文本框输入的内容转换为数值后存入变量n中If m n Then 若mn,则交换两个变量的值,确保较大的值存入m中t = mm = nn =t End If,71,6.4 程序设计的方法,6.4.2 面向对象程序设计方法及应用举例 (2)代码编写t = m * n 计算m和n的乘积并存入变量t中r = m Mod n 计算m整除n的余数并存入变量r中Do While r 0 “辗转相除”求最大公约数m = n: n = r: r = m Mod nLoopText3.Text = n 把求得的最大公约数n用Text3这个文本框输出Text4.Text = t / n 把求得的最小公倍数用Text4这个文本框输出 End Sub,72,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报