第 6 章 系统实现_第1页
第 6 章 系统实现_第2页
第 6 章 系统实现_第3页
第 6 章 系统实现_第4页
第 6 章 系统实现_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

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

文档简介

1、管理信息系统主讲邹凯 博学笃行 盛德日新6第六章 系统实现了解结构化程序设计方法掌握发展及选择程序设计语言的熟练掌握程序设计风格的要求理解程序设计的技巧了解软件文档的编写要求第六章 系统实现6.1 编程方法介绍6.2 程序设计语言的选择6.3 程序设计的风格6.4 程序设计的技巧6.5 系统实现阶段的文档 第六章 系统实现系统实现是在系统分析、系统设计的基础上,将系统设计的每一个细节,用计算机语言(或开发工具)完整地表达出来,以便在计算机上实现该系统。一般将在计算机上实现的系统称为新系统。新系统是建设的最终目标,是能在计算机上运行的程序。新系统既要能很好地体现原系统的功能又要能很好地在计算机上

2、运行。新系统的实现是对系统分析、系统设计阶段工作的检验,又是取得用户对新系统信任的关键阶段。系统的规模越大,新系统的实现就越复杂。为此,程序设计人员要具有比较丰富的程序设计经验,具有良好的程序设计风格和丰富的编程技巧。系统实现的主要任务是进行编程语言的选择、程序的编写与调试。6.1 程序设计方法介绍6.1.1 结构化程序的结构6.1.2 自顶向下、逐步求精6.1.3 模块化6.1.4 面向对象的程序设计方法6.1.5 CS结构和BS结构 6.1 程序设计方法介绍 用计算机对任何问题进行求解,都要把问题转化成计算机能够识别的语言程序,即进行程序设计。程序设计方法指的是按一定的规则书写程序结构,研

3、究的是程序设计的有关原则和方法。目前软件设计中,广泛采用结构化程序设计方法,这是一种公认的较好的程序设计方法。其主要思想可以概括为:自顶向下、逐步求精和模块化。6.1.1 结构化程序的结构 一个好的计算机程序,应具备开发费用低、结构清晰、调试容易、易维护和执行效率高等特点。为了避免过去那种“个人作坊”式的程序设计方法,规范程序的结构,提高程序的灵活性,在结构化程序设计方法中规定了程序设计中的一些基本原则,使程序设计“有章可循”。原则之一:使用单入口、单出口的程序控制结构。结构化程序设计方法中规定了三种基本结构,即顺序结构、选择结构和循环结构。这三种基本结构在程序中都只有一个入口和一个出口,即“

4、单入口、单出口”结构。这样就能确保不论一个程序中包含多少个控制结构,整个程序仍能保持一条清晰的线索。1)顺序结构 顺序结构的特点是:计算机按书写的先后次序,自上而下逐条顺序执行程序语句,中间没有选择或重复执行的过程,如图6.1。语句1语句2语句3 图6.1 顺序结构的执行2)选择结构 选择结构的特点是:在程序执行过程中出现了分支,要根据不同情况选择其中一个分支执行。如图6.2,图6.2(a)是if-else结构,图6.2(b)是if结构,if结构没有else分支,也叫不平衡的分支结构。(a) if-else结构 n n y y 条件 语句1语句2 条 件语句1(b) if结构图6.2 选择结构

5、的执行3)循环结构 循环结构的特点是:在程序执行过程中,一条或多条语句被重复执行多次(包括次),执行的次数由循环条件确定,如图6.3。循环结构一般可分为两种类型:while循环类型和until循环类型。条件 循环体n 循环体条件ny注:循环体是由一条或多条语句构成的程序体。目前,大多数程序设计语言都支持结构化程序设计方法中规定的三种基本结构,并可由相应的语句实现。例如在语言中,if-else语句实现选择结构,While语句和do-while语句实现循环结构。 (a) while循环类型 (b) until循环类型 图6.3 循环结构6.1.1 结构化程序的结构说明:为了满足程序设计的实际需要,

6、结构化程序设计方法还允许使用扩展程序结构,这种扩展的程序结构不在三种基本结构之列,但也符合单入口、单出口原则,在实际应用中也经常使用。在程序中往往用来表达比较复杂的事务结构,能够使程序易于理解和提高程序的清晰性。例如:语言中的elseif结构的程序流程如6.4。6.1.1 结构化程序的结构条件1条件2条件3语 句 1语 句 2语 句 3语 句 4图6.4 elseif结构6.1.1 结构化程序的结构 在许多情况下,在程序的循环过程中当满足某种条件时,需要立即从循环中转移出来,这时从程序结构上看,可能会出现两个出口的情况。但这种结构对程序的清晰度并没有多大影响,相反还可以提高程序的执行效率,缩短

7、程序执行时间。所以在实际应用中,允许使用这种结构来控制程序的执行。不少高级语言中都设有从循环中转移出来的语句。例如语言中的break语句。6.1.1 结构化程序的结构无条件转移语句goto语句,公认为是对程序清晰性影响最大的语句。对goto语句不加限制地使用,会造成整个程序杂乱无章,甚至使程序无法理解或难以进行维护。目前一致认为,对于初学者要禁止使用goto语句,对比较有经验的程序员可以有限制地使用goto语句来提高程序效率,例如将goto语句的转移范围限制在同一程序结构内部。6.1.2 自顶向下、逐步求精 所谓自顶向下、逐步求精,就是指在程序设计初期,首先要对程序的功能有一个全面的理解,继而

8、将其分解为若干个子功能,再分析每一个子功能,并继续分解直至不需再分解为止,然后对每一个子功能进行相应的算法设计,最终实现每一个子功能所需的程序结构及方法。 这种方法有助于程序员全面理解程序应完成的功能,通过子功能的分解可以使程序员掌握整个程序的结构,了解各个子功能及上、下级程序之间的数据接口。6.1.2 自顶向下、逐步求精 对于一些初学者,往往养成一种不良习惯,即在对问题没有完全理解的情况下就着手编写语言程序,往往事倍功半,甚至程序写到最后才发现整体结构不正确。只能全部推翻重来,造成人力、财力上的浪费。这种失败的例子屡见不鲜。对于一个成熟的程序员来说,在对要解决的问题有了全面理解后,应先使用程

9、序设计的表达工具(如程序流程图、PAD图、N-S图、伪代码等)对问题进行描述,最后再使用具体的计算机语言把问题表达出来,调试成功后在计算机上运行。6.1.3 模块化 把一个较大的程序,分解成若干个彼此相对独立的功能模块,这个过程称为模块化。在前面讲到的将程序功能分解为子功能,最终实现时可将一个子功能分解为若干模块,或将多个子功能合并为一个模块。也就是说子功能与模块之间并非是一一对应关系。也可以将某一个多处用到的功能设计成一个独立模块供其他程序调用。例如:将求两个数的最大公约数设计成一个独立程序,供其它程序调用。很多计算机语言中都提供子程序,函数等程序设计方法,这些都是支持模块化程序设计的体现。

10、6.1.3 模块化 模块化程序设计能将较大的程序分解为一个个较小的程序,使程序员能够集中精力解决一个个较小的程序,继而完成整个程序的设计。模块化程序设计也使多人合作完成一个较大的程序成为可能。在模块化程序设计中,要注意模块划分的科学性。一般认为一个模块完成一个功能最好,模块的大小也应控制在一个人能够掌握的范围内。另外,还要注意模块之间的关系,模块之间应尽量保持简单的数据联系,这样有利于每一个模块进行单独调试和程序在维护中进行查错和排错。6.1.3 模块化 总之,结构化程序设计方法,就是采用自顶向下、逐步求精的方法对问题进行分析、分解,实现时采用模块化的程序设计方法,采用单入口、单出口的程序结构

11、来构造程序,使设计出的程序能正确地完成应有的功能,并且便于调试和维护。6.1.4 面向对象的程序设计方法 结构化程序设计方法是一种面向数据处理过程的方法,它把数据和过程分离为相互独立的实体。而面向对象的程序设计方法是在本质上不同于结构化方法的一种新方法。面向对象程序设计既吸取了结构化方法的优点,又考虑了现实世界与对象空间的映射关系。 6.1.4 面向对象的程序设计方法面向对象的基本程序结构被称为对象。面向对象方法将客观世界看成由许多不同种类的对象构成的。例如:可以将学校简单看作由老师和学生构成的,老师和学生就是不同的对象。每个对象都有自己的内部状态和内部运动规律,不同的对象之间相互联系相互作用

12、,构成了完整的客观世界。通常用数据描述对象的内部状态,并规定了对数据的操作。当对象接受到其他对象发送来的消息时,可进行相应的操作,从而改变其内部状态。性质相同的对象称为类。类具有封装性、继承性和多态性。6.1.4 面向对象的程序设计方法 程序员在程序设计时,将所要解决的问题分解为若干个类和对象,定义对象的属性和功能,再用消息来描述对象之间的相互联系。将问题中相互联系、相互作用的实体用对象和消息在程序中反映出来,这就是面向对象程序设计方法的主要思想。 面向对象的程序设计语言必须支持抽象数据类型。现在已经有多种语言支持面向对象的程序设计方法。而且每种语言都有完善的软件开发工具。C+中有MS C+、

13、Turbo C+、Borland C+、Visual C+,Pascal中有Turbo Pascal、Object Pascal,Basic中有Visual Basic等。 面向对象的设计方法具有抽象性,可重用性等特点。在今后的程序设计中将逐步占据主导地位。6.1.5 C/S结构和B/S结构 随着网络技术,特别是国际互联网技术的发展,计算机的应用已经从单机环境发展到网络上的应用。越来越多的软件要求在网络环境下运行。管理信息系统也经历了从单机向网络环境发展的过程。更多的管理信息系统是在网络环境下实现信息的收集、传递和加工等功能的。所以,管理信息系统的软件结构应充分考虑到在网络环境下的运行效率、可

14、扩展性和可维护性等指标。即使最初开发的系统不需要在网络环境下运行,也应考虑到将来系统扩展或向网络环境移植的可行性。在系统实现阶段,选择程序设计方法和程序设计语言时都应考虑到系统的运行环境和移植的问题。 目前,应用比较多的软件结构有C/S结构和B/S结构两种。随着计算机技术的发展,B/S结构将逐步取代C/S结构,成为软件结构的主流。1) C/S 结构 C/S结构指的是客户机服务器(Client/Server)模式的软件结构。产生于九十年代前期,当时是局域网环境中MIS应用系统的主流结构。应用程序分为服务器端程序和客户机端程序。服务器程序负责管理数据资源(如数据库等),并接受客户机的服务请求(如数

15、据的查询或更新等),向客户机提供所需的数据或服务。客户机程序面向用户,接受用户的应用请求,并通过一定的协议或接口与服务器进行通信,将服务器提供的数据等资源经过处理后提供给用户。如图6.5。1) C/S 结构图6.5 C/S结构服务器客户机1客户机n用户1用户nHUB1) C/S 结构 C/S结构能够通过网络环境完成数据资源的共享,适合管理信息系统的一般应用,并且系统的开发费用较低、开发周期短。同时,它也存在很多的缺点。使得C/S结构的应用受到了很大的限制。其缺点如下:(1)C/S结构只能适用于中、小规模的局域网。对于大规模的局域网和广域网就不能胜任了。这就限制了这种软件结构的普遍适用性。(2)

16、当局域网中的用户数量增加,频繁访问服务器中的数据资源时,服务器的负载急剧增加。系统性能明显下降。1) C/S 结构(3)由于C/S结构的应用程序存在于服务器端和客户机端,并且二者要协同工作。这就给系统的维护工作带来了很多麻烦。通常在对应用程序进行修改、升级时,必须同时对两端的应用程序做出相应的修改,还要更新所有客户端的应用程序。使系统管理和维护工作难以进行。 所以,C/S结构的应用程序虽然具有开发费用低、开发周期短等优点,但不具有普遍适用性,系统性能不能得到保证,系统的可扩展性难以实现。 近几年,B/S结构的应用不断得到普及,它能很好地克服C/S结构的缺点,越来越多地应用在管理信息系统中。2)

17、 B/S 结构 Web服务器客户机1客户机n用户1用户n交换机图6.6 B/S结构应用服务器数据库服务器由于Web技术迅速发展,C/S体系结构由单一的两个层次,扩展到由表示层(Browser)、功能层(Web Server)与数据库服务层(DB Server)构成的三层分布式结构,即浏览器服务器(Browser/Server,简称B/S)模式的软件结构。B/S结构采用Internet/Intranet技术,使用统一的通信协议TCP/IP和统一的基于Web浏览器的用户界面,适用于广域网环境。一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,这种结构通常设有数据库服务器、Web服务器、应用

18、服务器等。应用程序主要存放在服务器中,客户端只需要配置标准的浏览器。如图6.6。2) B/S 结构图6.6 B/S结构Web服务器客户机1客户机n用户1用户n交换机应用服务器数据库服务器B/S结构具有以下特点: 由于B/S结构采用Internet/Intranet技术,以TCP/IP作为通信协议,可以适用于局域网和广域网环境,具有普遍适用性。 B/S结构中的各服务器分别进行数据处理、业务处理和Web页面组织。使系统负载均衡分布。当用户增加时,不会引起系统性能的明显下降。 由于客户端都是标准的浏览器,各服务器分工明确,所以,整个系统易于扩展,容易管理。 与C/S结构相比,B/S结构具有显著的优势

19、。所以,在管理信息系统的开发中,应以目前公认比较好的B/S结构作为软件结构。6.2 程序设计语言的选择6.2.1 程序设计语言的发展6.2.2 程序设计语言的选择 6.2 程序设计语言的选择 在系统实现阶段,首先要进行的一项重要工作,就是选择适当的程序设计语言。自60年代以来已出现了数千种不同的程序设计语言,其中有一小部分得到了广泛的应用。随着计算机技术的发展和对计算机软件需求的不断增长,程序设计语言也不断更新换代。也就是说开发人员所能够使用的程序设计语言越来越多,那么从中选择一种合适的语言就显得尤为重要。6.2.1 程序设计语言的发展 随着计算机功能的不断丰富和计算机在社会中的广泛应用,程序

20、设计语言也经历了由低级到高级、由难学难用到易学易用的发展过程。语言的发展大致可分为代。 1) 第一代语言机器语言在计算机产生初期,人们直接利用硬件系统提供的指令系统编写“程序”来控制计算机的运行。指令是计算机硬件能理解的语言,因此通常把指令系统称为机器语言。这种语言都是用代码“”和“”组成的。一般采用在纸卡上打孔的方式,通过读卡机输入计算机。用机器语言写成的“程序”难以理解,而且由于各种计算机的指令系统差别很大,用机器语言编写的“程序”就只能用于特定的计算机。现在几乎没有人再用这种语言来编写程序了。2) 第二代语言汇编语言由于机器语言难以记忆和理解,所以人们采用助记符来表示指令中的操作码和操作

21、数,这种助记符形式的指令系统被称为汇编语言。汇编语言基本与指令系统一一对应。在汇编语言输入到计算机中要经过一个汇编语言到机器语言的转换过程,这个过程称为汇编。为了提高汇编语言的效率,人们又设计了宏指令,即用一条指令来描述若干条指令,具有宏指令的汇编语言称为宏汇编。2) 第二代语言汇编语言汇编语言用助记符代替了机器语言中的“”和“”构成的操作码,例如:用“ADD”表示操作码“加”。使更多的人能够看懂程序,也提高了编写程序的效率。但从总体上来说汇编语言仍然没有脱离指令系统,相对于人的语言它更靠近机器语言,所以汇编语言与机器语言一起被称为面向机器的语言,都是低级语言。2) 第二代语言汇编语言与后来兴

22、起的高级语言相比,汇编语言仍是难以阅读和理解,一般也不能在不同的机型上通用。现在汇编语言主要用于编写与硬件特征相关或对程序执行时间和空间都有严格限制的程序。如操作系统中的中断处理程序和I/O设备的驱动程序等。有时也用于不同语言编写的程序之间的接口。3) 第三代语言高级语言 60年代初以后,陆续推出了更接近人类语言、有一定语法规则的计算机语言,被称为高级语言。用高级语言书写的算术表达式与人们的书写习惯差不多,而且可以将复杂的算法,按语法规则写成源程序。源程序再经过解释程序或编译程序的翻译,转换成计算机硬件可识别的目标程序。程序设计人员不必掌握计算机的硬件结构和记忆机器指令。3) 第三代语言高级语

23、言因为用高级语言编写的程序是对问题求解过程的描述,所以又称为面向过程的语言。高级语言的种类很多,不下千种,并且还在不断增加。随着计算机技术的发展,有些语言不能适应社会的需要逐渐被淘汰,也有些语言被广泛应用,至今不衰。现简述如下:3) 第三代语言高级语言 FORTRAN语言。1954年IBM公司程序师约翰巴科斯(J.Backus)设计了一种用于科学计算的“公式翻译语言(FORmula TRANslator)”,即FORTRAN语言。它是使用最早的高级语言。在科学计算领域有重要地位。FORTRAN语言具有充分表达包含算术运算和逻辑运算的常用科学计算等问题的能力,语言结构简单。 3) 第三代语言高级

24、语言 FORTRAN提供整数、实数、双精度数、复数和布尔数等数据类型。程序由一个主程序和一组子程序(包括函数)组成,主、子程序独立编译,把各个独立编译得到的目标用链接程序连接起来,即可运行。程序中各程序块之间可进行参数传递,也可通过公用语句和等价语句来实现数据的共用。 3) 第三代语言高级语言FORTRAN语言自50年代至今已先后推出多个版本,较有影响的是标准FORTRAN、FORTRAN77、FORTRAN8X。FORTRAN77引入了字符类型,增加了处理字符型常数变量及数组的能力,而且在结构化控制结构方面作了很大的改进,引入了结构化分支语句if-else-endif、if-then-end

25、if,表达能力大为提高。但数据类型不够丰富,难以支持复杂的数据结构。3) 第三代语言高级语言 BASIC语言。20世纪60年代初期,美国达特默斯学院约翰凯梅尼(J.Kemeny)和托马斯卡茨(T.Kurtz)在简化FORTRAN的基础上,研制出一种“初学者通用符号指令代码”(Beginners All purpose Symbolic Intruction Code),简称BASIC。可用于一般的数值计算和事务处理。由于其简单易懂、适用面广、具有交互功能,曾一度被广泛应用。3) 第三代语言高级语言我国曾把BASIC语言作为计算机的入门语言,对计算机语言的普及起过巨大作用。它的早期版本不支持结构

26、化程序设计,不区分数据类型,执行速度慢,曾一度衰落。后来推出的TRUE BASIC、QBASIC等版本,在保留了简单易学特点的基础上,支持结构化程序设计,并完善了语言功能,使之又成为流行的计算机语言。3) 第三代语言高级语言 PASCAL语言。1971年,瑞士联邦技术学院尼克劳斯沃尔斯(N.Wirth)教授发明了另一种简单明晰的电脑语言,这就是以帕斯卡的名字命名的PASCAL语言。PASCAL语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言。它提供了丰富的数据类型、灵活的数据结构构造能力和结构化的程序结构。广泛用于科学计算、数据处理以及系统软件的开发。 3) 第三代

27、语言高级语言它具有完备的控制结构,丰富的数据类型和数据结构,语言表达能力强,结构清晰。由于PASCA语言系统、全面、清晰地体现了程序设计语言的基本概念,国内外众多院校将PASCAL作为教学语言。后来推出的TURBO PASCAL更加完善了PASCAL的功能,并为用PASCAL开发软件提供了集成化的开发环境,将编辑、调试、编译集于一身,使PASCAL语言成为人们所喜爱的高级语言之一。 3) 第三代语言高级语言 PASCAL在现代语言中影响深远,Ada就是来源于PASCAL的一个程序设计系统,但风格又绝对不同于PASCAL,克服了PASCAL许多局限和不足,支持结构化程序结构。它提倡用一致的设计方

28、法以及恰当的风格开发软件,是表达能力很强的通用程序设计语言。Ada是针对大型实时、嵌入式计算机系统设计的。Ada不仅是一种程序设计语言,它和Ada环境一起构成非常强有力的工具。美国国防部将其定为全军统一的程序设计语言。3) 第三代语言高级语言 C语言。1972年AT&T贝尔实验室的两位科学家邓尼斯里奇(D.Ritchie)和他的合作者肯汤姆森(K.Thompson),共同发明了著名的计算机语言C。最初它是用作UNIX操作系统的开发语言。与其它语言相比,C语言有其显著的优点。3) 第三代语言高级语言它支持结构化程序设计,控制结构与数据结构完备,有丰富的运算符和数据类型,移植力强,编译质量高。用C

29、语言编译程序产生的目标程序,其执行效率可与汇编语言产生的目标文件相媲美。C语言既有高级语言的优点,又有低级语言的特点,应用领域很宽广,适用于编写应用程序,又适合编写操作系统、编译系统等系统软件。3) 第三代语言高级语言目前,使用较多的TURBO C,它是一个集编辑源程序、调试、编译、试运行于一身的集成化环境。C语言是一种理想的结构化语言,用它能编写出结构紧凑、执行高效、风格优美的程序。一般认为C语言是计算机程序设计人员应该学会使用的一门语言,很多高等院校都将C语言作为计算机专业的必修课。3) 第三代语言高级语言 COBOL语言。1959年5月,美国五角大楼委托格雷斯霍波博士领导一个数据系统语言

30、委员会(Conference on Data System Language,简称CODASYL),设计了面向商业的通用语言(Common Business Oriented Language),即COBOL语言。3) 第三代语言高级语言COBOL最重要的特征是语法与英文很接近,可以让不懂电脑的人也能看懂程序。COBOL能方便地处理数值数据和文字数据,它是描述事务数据处理方面的标准化语言。COBOL语言的一个重要而明显的特征是它采用类似于英语的语法,使得程序便于阅读,程序具有较好的自说明能力,有利于文档化管理。3) 第三代语言高级语言COBOL程序的结构由标识部、环境部、数据部和过程部四部分组

31、成。标识部:用以注明程序名和作者姓名并给出其它的注释作为程序文件的说明。环境部:含有如程序和外部数据文件间联系等依赖于机器的程序说明。数据部:包含了对数据的描述。过程部:包含了算法的描述。3) 第三代语言高级语言 这四部分把依赖和独立于机器的程序分开,把数据描述和算法描述分开,从而使每一部分均可独立修改而不影响到另外部分,保证了最高通用性。 COBOL除用于商用和行政管理用外,还可用作表生成、数据通信与大型程序设计。70年代中期,COBOL引入了结构化思想及CODASYL的数据库功能,为COBOL的应用开拓了更广阔的领域。 还有一些语言一般只适用于某些特殊领域,通常具有特殊的语法形式,称之为专

32、用语言。例如专用于处理数组和向量的APL语言,用于数控机床的APT语言,用于微处理器软件开发的FORTH语言以及用于处理符号和表的LISP语言等。这些语言在各自领域发挥了巨大作用。4) 第四代语言 高级语言的发展大大促进了计算机的广泛应用。高级语言中既有通用语言,又有为某一特定应用领域设计的专用语言。但从根本上说,高级语言仍是面向过程的语言。强调“程序结构符合问题的结构”,即用程序来详细描述问题的求解过程,告诉计算机每一步应该“怎样做”。为了进一步提高编程效率,人们在寻求一种更高级的新语言,即甚高级语言,或称为第四代语言(4GL,fourth-generation language)。4) 第

33、四代语言第四代语言能使程序员直接按一定的规则写出问题的要求,无需列出算法过程。由计算机自动根据其要求生成相应的程序执行。也就是只需说明“做什么”而不必详细描述“怎样做”。第四代语言应具有很强的数据管理能力和丰富的非过程化命令语句。关系数据库查询语言SQL就具备第四代语言的基本特征。 4) 第四代语言例如:在表(或称数据库)SC中有学号、课号、成绩三个属性(或字段)要求检索学习了课号为“C2”课程的学生学号和成绩。用SQL语言编写程序如图6.7。 SELECT 学号,成绩 FROM SC WHERE 课号=C2; 图6.7 SELECT语句应用 该程序可以理解为“从SC中找出课号为“C2”的所有

34、学号和成绩”。可以看出,用SQL语言编写的程序,只是描述了问题是什么,而并未给出解决该问题的方法。可以用FOXBASE表示该问题的求解过程如图6.8。4) 第四代语言 use sc do while .not.eof() if 课号=C2 ? 学号,成绩 endif skip enddo 图6.8 FOXBASE程序片段可见第四代语言只给出问题的描述,而不象面向过程的高级语言要给出问题的求解过程,所以第四代语言也称为面向问题的语言。4) 第四代语言 在网络技术迅猛发展阶段,诸多面向网络服务的语言如雨后春笋般涌现,如描述语言(Jscript,VBScript)、置标语言(XML,HTML, SG

35、ML)、模型语言(UML)、体系结构描述语言(ADL)等,特别是Sun公司发明的Java语言,更是号称与平台无关。微软公司在Visual Studio.Net软件包中发布了最新语言Visual C#(读作C sharp)。Visual Studio.NET开发工具包含了还有Visual Basic.NET、Visual C+.NET,它的新特性将使其成为在Microsoft.NET Framework-微软下一代Web应用程序开发平台进行构建的完整的开发环境。4) 第四代语言从目前情况看,网络时代最重要的三种编程语言是Java、XML和C#。它们之间的竞争正在如火如荼地展开,并开始引起编程方法

36、的变化,例如出现“面向构件”或“面向Web服务”的方法。 Java是一个广泛使用的网络编程语言 ,它是一种新的计算概念。作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构,具有可移植性、健壮性、安全性,并且提供了并发的机制,具有很高的性能。并且最大限度地利用了网络,Java的小应用程序(applet)可在网络上传输而不受 CPU和环境的限制。另外,Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统。4) 第四代语言 XML,称为可扩展标记语言(Extensible Markup Language),是一种可以用来创建自己的标记的语言。它由万维网协会(W3C)创建,用来克

37、服 HTML(即超文本标记语言)的局限。和 HTML 一样,XML 基于 SGML(标准通用标记语言)。XML 是为 Web 设计的,它将数据与外观分离,因而相同的XML数据可通过使用不同的外观文件以多种方式显示。XML协议是一组用于设计数据格式和结构的规则和方法,它易于生成便于不同的计算机和应用程序读取的文件。因此,XML正迅速成为使用Internet传输数据的流行方式。4) 第四代语言C#语言自C/C+演变而来,它现代、简单、完全面向对象和类型安全。减少了C+的一些特性,不再有宏、模板和多重继承。新增了严格的类型安全、版本控制、垃圾收集等功能。允许使用可应用于任何对象的类型化可扩展元数据。

38、可以定义域特定属性并将其应用于任何语言元素(类、接口等)。还包括一些精细功能使其成为出色的 Internet 编程工具。C#将会变成为用于编写“下一代窗口服务(NGWS )”应用程序的主要语言。6.2.2 程序设计语言的选择 程序设计语言的选择直接关系到新系统的质量。作为有经验的程序员应该了解各种常用高级语言的特点,掌握选择语言的标准,以便根据问题的需要,合理地选择适当的程序设计语言。常用以下几项作为语言选择的标准。 1) 应用领域 每种语言都有自己的适用领域。FORTRAN适用于科学领域;COBOL语言适用于事务处理领域;C语言适用于系统软件的开发;汇编语言适用于系统软件的开发或实时处理程序

39、;FOXBASE系列语言适用于计算复杂度较低的管理信息系统。一般的通用语言都具有进行简单的计算和事务处理能力。若所涉及的是专业领域,则应优先选用专用语言。6.2.2 程序设计语言的选择 2) 运行环境 新系统的运行环境包括硬件环境和软件环境。硬件环境是指计算机的处理速度、硬盘空间、显示器的分辨率、外部设备的配备情况等。对于档次较低的计算机只能使用对硬件要求不高的语言。同时还要考虑到该语言在今后硬件升级时,是否容易用更好的语言对程序进行改写。 软件环境是指新系统在运行时所需要的支持软件。如操作系统、汉字系统、软件开发工具等。若运行在WINDOWS下,应考虑选用支持WINDOWS设计风格的语言,这

40、样设计出来的程序会有比较好的界面。若运行在DOS环境下,则应考虑与所选用的汉字系统兼容性好且能设计出良好界面的语言。另外,拥有完善的开发工具的语言,会提高程序开发的速度,降低开发费用。6.2.2 程序设计语言的选择 3) 程序员是否熟悉 程序设计中应选用有发展前途的语言,但也不能一味追求流行的语言。要根据程序员的知识结构,若能在短时间内熟悉一门新语言,则应选用公认的好语言。否则应优先选用程序员比较熟悉的语言。另外,在语言的选择中还要考虑计算的复杂性,执行效率等。6.3 程序设计的风格6.3.1 坚持采用结构化的程序设计方法6.3.2 注重源程序的书写规则6.3.3 给出明确的数据说明6.3.4

41、 遵循规则的语句结构6.3.5 设计友好的输入输出6.3.6 良好风格的编码原则 6.3 程序设计的风格 所谓程序设计的风格,就是程序员在程序设计中喜欢或习惯使用的表达程序主题的方式。早期的程序设计强调效率,而不注重程序的清晰度,造成程序难以理解,甚至无法进行维护。自70年代以来,人们认识到注重程序的清晰结构、简洁明了的算法设计,对提高程序的质量和程序的可维护性,有着至关重要的作用。 6.3 程序设计的风格强调程序设计风格很有必要,计算机程序设计是一项人类的活动,编写的程序是为人们阅读、理解、使用甚至修改的,Pascal设计者沃尔斯教授十分重视程序设计风格的养成,他坚信“教给学生们以表达他们思

42、维的语言,会深深地影响他们思维和创造发明的习惯,而正是这些语言本身的混乱直接影响着学生们的程序设计的风格”。他这里所指的“这些语言”,是当时那些主要用于程序设计教学的计算机语言,因此他所设计的Pascal语言,是一种优良的程序设计教学语言,可以用来培养学生严谨、清晰的程序设计风格和良好的习惯,并促使他们从中领会和理解精细的程序设计技巧。 6.3 程序设计的风格 程序设计风格的好坏很大程度上影响到程序质量的好坏。良好的程序设计风格可以使程序结构清晰合理,并且使程序代码便于维护。培养良好的程序设计风格对于编程人员来说非常重要,这也是需要经过长期的实践才能养成的,下面简述程序设计风格的要求。6.3.

43、1 坚持采用结构化的程序设计方法 结构化的程序设计方法是从结构化分析方法中引申出来的,它强调使用标准的程序控制结构,即单入口、单出口的控制结构。程序基本控制结构包括顺序结构、分支结构、循环结构(参见6.1.1小节)。 大多数高级语言提供了多于种基本结构的控制结构,它们也符合单入口、单出口的原则,通常称这种结构为扩展的程序控制结构。以C语言为例,它除了if-else基本选择结构外,还提供了elseif结构和switch结构,循环结构除了while基本结构外,还提供了do-while结构和for结构。 6.3.1 坚持采用结构化的程序设计方法 例如:用elseif结构代替if-else结构的嵌套,

44、如图6.9。 if (ab) if (ay) a=b; a=x; else if (xy) else a=x; a=y; el else a=y; a=b; (a)if-else结构的嵌套 (b)elseif结构 图6.9 用elseif结构代替if-else结构的嵌套6.3.1 坚持采用结构化的程序设计方法 可见扩展的程序控制结构elseif可消除if-else结构嵌套所引起的模糊理解。图6.9(a)中用if-else结构所编制的程序,因为两重if-else结构的嵌套使if-else的匹配变得模糊,不易理解。而图6.9(b)中用elseif结构编写的程序可完成同样功能,而且提高了可读性,容易

45、理解。 结构化程序设计语言中一般还提供转移语句,包括限定转移语句(如C语言中的break语句、continue语句)、无条件转移语句(如goto语句)。限定转移语句一般被限定在一个程序结构内,往往不会影响程序的清晰性,并有提高效率功能,可以在程序中使用。6.3.1 坚持采用结构化的程序设计方法例如:用break语句提前退出循环,如图6.10。 i=1; while (i9999) break; i=i+1; 图6.10 用break语句提前退出循环 在图6.10中,按照循环条件,循环应执行100次。当循环满足一定条件时 (sum9999),用break语句提前退出循环。6.3.1 坚持采用结构

46、化的程序设计方法 对于无限定转移语句goto语句,应尽量避免使用。专家们一直把goto语句视为破坏程序清晰性的罪魁祸首。因为goto语句可以无限制地将程序的执行顺序由某处转到另一处,也无论是否在同一控制结构内,甚至可以在多个程序间进行,严重破坏了结构化程序结构的单入口、单出口的原则。6.3.1 坚持采用结构化的程序设计方法当然,goto语句也不是完全不能用,比如可以将goto语句用于出错处理。一旦程序执行中出现错误,马上转移到出错处理程序上,及时对错误进行处理,最大限度地降低错误造成的损失。结构化程序中允许有goto语句,但它只能在本程序块内使用,不允许从一个结构转移到另一个结构。总之,有规律

47、地使用goto语句也可以收到一些特殊效果,但在一般的情况下,应避免使用。6.3.2 注重源程序的书写规则 源程序的主要内容是用程序设计语言构造的程序,但为了提高程序的可读性和可维护性,源程序的书写也要有一定的规则。 1) 符号的命名 变量是由程序员在程序中定义的一些符号,虽然变量名称原则上是在一定规则内由程序员任意定义的,但不主张使用类似于a、b、a1、b1等这样的变量名,变量的命名应选用一些有实际意义的名词,如name、age、car、code等。 例如将数据库学生字段的结构定义为如下形式:s(c,n,x,s)。在没有任何说明的情况下,几乎无法知道这个数据库字段的确切含义。但若把该数据库的字

48、段改写为:s(code,name,sex,score),则几乎无需什么说明就能知道字段所代表的含义。6.3.2 注重源程序的书写规则 目前,越来越多的高级语言可以支持长变量名,程序员可以设计出比较直观的变量名。有意义的变量名不仅能增加整个程序的自我说明,而且使变量容易记忆,当需要用到某个变量时,不必再把前面的程序翻出来,查看这个变量是怎么拼写的。在变量名长度有一定限制的情况下,应采用有意义标识符的词头,并且整个程序中变量的缩写规则应保持一致。 另外,由于目前汉字的输入仍较英文困难,所以在变量命名时,应减少汉字的用量,包括给数据库中的字段命名。 2) 程序内部文档书写规则 所谓程序内部文档是指源

49、程序中书写的为了便于阅读,使程序结构清晰易懂,而在必要的地方增加的注释。6.3.2 注重源程序的书写规则在源程序中应采用分层缩进方式,充分体现出程序的结构,在容易引起混淆的地方可适当增加空行,提高源程序的可理解性。 例如:图6.11中为两个程序片断。 if (z0) if (z0) x=3; if (y0) x=3; else x=5; else x=5; z=1; z=1; if (z=y0) x=3; if (z=ym) n=n-m; /*用辗转相减法求m,n的最大公约数*/ if(mn) m=m-n; printf(result=%dn,n);6.3.2 注重源程序的书写规则必要的注释能

50、帮助别人更好地理解程序,但也不是注释越多越详细越好。过多的注释,不仅对程序的理解没有任何好处,反而把程序搞得难以阅读。在显而易见的地方也无需注释,比如在循环体中n=n+1的后面加上注释“循环变量加”,明显有画蛇添足之感。程序中的注释是与源程序相对应的。在修改程序时若被注释的程序段做了修改或被删除,则注释也应做相应的改动,以保持注释和源程序的一致性。6.3.3 给出明确的数据说明程序中的注释,由于篇幅比较小,只能作为提示性的说明。为了便于阅读程序,便于维护程序,就应将程序中用到的子程序、数据文件、变量等名称进行统一规范的说明。同类名称放在一起并按字典顺序排列,方便查找。变量一般要说明变量名称、含

51、义、数据类型、数据的组成。例如变量XH含义为学号,字符型数据、数据由8位数字字符组成、前两位表示年度、第三四位表示系号、第五位表示专业号、第六位表示班号、后两位表示序号。6.3.4 遵循规则的语句结构 程序是由语句组成的,为了保证程序的清晰性,就要从细节做起。每条语句的书写也应遵循一定的规则。1) 每行只写一条语句不应为了让程序显得紧凑而在一行里写多条语句,即使是顺序结构的语句。如果这样,会严重影响分层缩进所产生的程序结构层次。如图6.13。 n=1; n=1; while (n=100) while (n=100) x=n+1;y=x*(x-1);n=n+1; printf(“%d”,y)

52、x=n+1; y=x*(x+1); n=n+1; printf(“%d”,y); (a)一行多条语句 (b) 每行只写一条语句 图6.13 每行只写一条语句6.3.4 遵循规则的语句结构2) 尽量使用直观的表达式if (!(a=b) x=5; x=5; else else y=5; y=5; (a) (b) 图6.14 尽量不使用否定的条件表达式图6.14(a)中的程序,使用了否定的条件表达式,这样的表达式很难理解,应改为图6.14(b)中的程序。在构造表达式时,适当增加圆括号作分隔符,体现出表达式的运算顺序。例如a=1+b%4!=0应写为a=1+(b%4!=0)。此外,还应注意:应尽可能利用

53、语言库中已有的函数;全局变量能不用则不用;避免浮点数(实数)比较相等;使用多分支结构处理多入口的选择结构等。6.3.5 设计友好的输入输出 输入输出往往是程序与用户间的界面,输入输出的方式应尽量符合用户的习惯。并且注意以下原则:1) 输入格式输入格式应与用户的原有习惯相似,界面力求保持一致,并可作必要改进让用户少输入汉字和重复数据。例如在库存管理系统中,输入的入库单、出库单应与手工填写的单据基本一致。库中已有的货物名称可以让用户只输入货物号或从选择框中选择的方法输入,不让用户重复输入汉字。6.3.5 设计友好的输入输出2) 输入的数据要有有效性检验可以在程序中设定输入的长度、类型,由程序来检验

54、输入数据的有效性。但只有这些还是不够的,在用户输入完数据后,可以让用户再确认一次。若输入的数据量比较大,则可以采用多终端重复输入数据的方法。不同终端输入的数据进行比较,相同的为有效数据,不同的为输错的数据。并给出明确的提示,由用户重新输入正确的数据。这种形式多用于输入考试成绩(如中考、高考后的学生成绩)。3) 在输入数据前应给出明显的提示让用户清楚地知道什么时候该输入数据。在输入数据时,可在屏幕底部给出数据的说明,让用户知道需输入什么样的数据。6.3.5 设计友好的输入输出4) 数据的输入方式 大多数的数据输入可以使用键盘进行,但在某些情况下也可以采用其他方式。如用软盘来传递数据。随着办公自动

55、化技术的发展,现在已经可以实现用语音进行录入,也可以借助其他设备进行数据的输入,如扫描仪等。在网络技术高度发达的今天,网上进行数据的传输,也是常用的输入手段之一。在程序设计时都应考虑到。有时需提供多种方式供用户选择。5) 程序的输出 程序的输出可以区分为屏幕输出、打印输出和其他方式输出。屏幕输出,包括屏幕上出现的一切信息,如图形、文字及整体的布局。屏幕的输出应保持友好的界面,不出现用户难以理解的专业术语。屏幕输出的信息应准确、简捷,不应让用户无所适从。屏幕信息还要保持连续性,在需要用户等待时,应给出相应的提示,如“正在进行计算,请稍候”,并给出程序的进度指示。不能让用户不知道计算机在做什么、什

56、么时候能做完。在程序执行中出现错误或可能出现错误时,应给出醒目的提示,并告诉用户应该怎样避免错误的产生和怎样降低可能造成的损失。5) 程序的输出 打印输出的信息一般包括报表、报告等。在输出前,要让用户能够预览要输出的有关数据及输出格式。输出时应提示用户共有多少信息需要输出,和已输出信息占总信息量的比例。打印输出一般要求能检测出打印机的状态,如缺纸、未联机等,并给出醒目的提示,让用户进行相应的操作后继续打印。所有打印的报表、报告要与用户的习惯或统一的标准一致。 其他方式的输出包括网络上的信息传递、传真、电子邮件等。在产生输出前应给出这次输出的目的地和具体内容,经确认后再进行输出。在程序设计期间也

57、应尽可能考虑到用户可能用到的输出方式,并对其做详细研究。 程序的输入输出,是计算机与用户直接交互的关键所在,这不仅关系到用户操作的方便与否,也涉及到程序和传输数据的正确性、安全性、适时性等,是程序设计过程中的一个重要环节。6.3.6 良好风格的编码原则 根据众多软件开发人员所总结的经验,以及在教学过程中的上机指导实践,归纳、提炼出来一些能够体现优良风格的编码原则,不一定全面,供开发人员编写程序时借鉴,有些条文可能是从不同角度、以不同提法来阐明同一个论点。参见P122程序设计风格是在长期的程序设计中养成的。所以必须在平时的程序设计中严格按照以上要求进行设计,逐渐养成良好的程序设计风格,这样有助于

58、提高程序的质量和可维护性。此外,由于程序设计语言各有特点,所以程序员必须对所使用的语言有足够的了解,并能充分发挥语言的特点,使程序设计风格更加完善。 6.4 程序设计的技巧6.4.1 选择好的算法6.4.2 算法的优化6.4.3 把握问题的实质6.4.4 充分利用语言特点6.4.5 模块化与重复使用 6.4 程序设计的技巧 程序设计的主要目的是解决问题,为了更好地解决问题,在进行程序设计过程中应该掌握一定的程序设计技巧,包括对系统分析与设计的充分理解,熟练运用编程语言,综合运用文字、声音、图像,并彼此协调。应能对所用算法进行优化,使程序有较高的效率。6.4.1 选择好的算法算法是在有限步骤内求

59、解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。一个算法应该具有以下五个重要的特征: 有穷性:一个算法必须保证执行有限步之后结束;确切性:算法的每一步骤必须有确切的定义;可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身限定了初始条件;输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;6.4.1 选择好的算法算法是程序设

60、计的灵魂。可以这么说,无论是在结构化程序设计中,还是在面向对象的程序设计中,没有算法的程序不可能是一个高水平的程序。窗体的形状、大小涉及到算法;控件自身以及与其它控件的诸多关系需要计算;字符串的查找、截取和替换更离不开算法。求解问题的算法可能有多种,而采用哪种算法则直接影响到程序的执行效率,好的算法可以有效地使用系统资源并且提高执行效率。6.4.1 选择好的算法例如:求正整数x,y的最大公约数。人工求解时采用的算法是:将x,y分解为因数的积,然后找出“公共因数中的最大者”。比如x=6,y=8,有x=2x3,y=2x4=2x2x2,所以最大公约数是2。经过分析知道最大公约数小于或等于x,y中的较

温馨提示

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

评论

0/150

提交评论