SE11程序设计语言及编码ppt课件_第1页
SE11程序设计语言及编码ppt课件_第2页
SE11程序设计语言及编码ppt课件_第3页
SE11程序设计语言及编码ppt课件_第4页
SE11程序设计语言及编码ppt课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、引言引言q软件工程编码阶段的义务是将详细设计翻译成计软件工程编码阶段的义务是将详细设计翻译成计算机可以算机可以“了解并且最终可运转的代码。了解并且最终可运转的代码。q根据根本机制可将程序设计言语分为过程式程序根据根本机制可将程序设计言语分为过程式程序设计言语、函数式程序设计言语、逻辑程序设计设计言语、函数式程序设计言语、逻辑程序设计言语和面向对象程序设计言语四类。言语和面向对象程序设计言语四类。q编码阶段不应单纯追求编码效率,而应全面思索编码阶段不应单纯追求编码效率,而应全面思索编写程序、测试程序、阐明程序和修正程序等各编写程序、测试程序、阐明程序和修正程序等各项任务。项任务。q影响编码质量的

2、要素包括编程言语、编程准那么影响编码质量的要素包括编程言语、编程准那么和编程风格,它们对程序的可靠性、可读性、可和编程风格,它们对程序的可靠性、可读性、可测试性和可维护性都将产生深远的影响。测试性和可维护性都将产生深远的影响。q通常把编码和测试统称为实现。通常把编码和测试统称为实现。q编码编码(Coding)(Coding):把软件设计翻译成计算机可以:把软件设计翻译成计算机可以了解的方式了解的方式用某种程序设计言语书写的程序用某种程序设计言语书写的程序q编码阶段涉及的问题编码阶段涉及的问题q言语选择言语选择q编码风格编码风格q编程准那么编程准那么q程序效率程序效率引言引言n目的目的n用选定的

3、程序设计言语将模块的过程用选定的程序设计言语将模块的过程性描画翻译为用该言语书写的源程序性描画翻译为用该言语书写的源程序n 编码编码n模块的过程性描画模块的过程性描画 源程序源程序n不可执行的可执行的不可执行的可执行的编码概述编码概述n 编码的过程编码的过程n熟习所选言语的功能和程序开发环境熟习所选言语的功能和程序开发环境 n仔细阅读设计文档详细设计仔细阅读设计文档详细设计 n弄清要编码的模块的外部接口与内部过弄清要编码的模块的外部接口与内部过程程 n 对编码产生的源程序的要求对编码产生的源程序的要求n正确可靠正确可靠n简明明晰简明明晰n有较高的执行效率有较高的执行效率编码概述编码概述n 效率

4、与明晰是一对矛盾的要求效率与明晰是一对矛盾的要求n要优先思索程序的明晰性和可了解性要优先思索程序的明晰性和可了解性对编码的有关阐明对编码的有关阐明编码编码要求要求明晰第一明晰第一(对大多数模块对大多数模块)效率第一效率第一(对个别模块对个别模块)用单入用单入/单出保证控制流的直线性单出保证控制流的直线性用限制用限制GOTO保证控制流的部分性保证控制流的部分性用用GOTO与其它技巧消除反复编码与其它技巧消除反复编码编码概述编码概述n设计是编码的先导,要复审设计设计是编码的先导,要复审设计n编码要熟习所用的言语编码要熟习所用的言语n要恰倒益处利用编程言语的特点要恰倒益处利用编程言语的特点n测试阶段

5、也要编写一些测试程序测试阶段也要编写一些测试程序对编码的有关阐明对编码的有关阐明编码概述编码概述编程规范编程规范q人们总是希望编制明晰、紧凑、高效的程序人们总是希望编制明晰、紧凑、高效的程序,但但这些特性在编码时往往相互矛盾这些特性在编码时往往相互矛盾,普通应依次思普通应依次思索以下原那么索以下原那么:q(1)编制易于修正、维护的代码编制易于修正、维护的代码q 主要措施是在模块化和面向对象详细设计的根主要措施是在模块化和面向对象详细设计的根底上底上,进一步按属性划分程序。进一步按属性划分程序。q(2)编制易于测试的代码编制易于测试的代码q 普通来说普通来说,人们总是经过运用条件编译语句尽人们总

6、是经过运用条件编译语句尽早设计出测试用例、采用一致的命名规那么管理早设计出测试用例、采用一致的命名规那么管理这些测试用例并适时地进展回归测试等一系列措这些测试用例并适时地进展回归测试等一系列措施提高程序的可测试性。施提高程序的可测试性。编程规范续编程规范续 (3)必需将编程与编文档的任务一致开来。一个程序必需将编程与编文档的任务一致开来。一个程序段的文档应包括以下内容段的文档应包括以下内容:代码的功能代码的功能;代码的完成者代码的完成者;代码在整个软件系统中的位置代码在整个软件系统中的位置;代码编制、复审的时间代码编制、复审的时间;保管代码的缘由保管代码的缘由;代码中如何运用数据构造和算法。代

7、码中如何运用数据构造和算法。(4)编程中采用一致的规范和商定编程中采用一致的规范和商定,降低程序复杂性降低程序复杂性(5)限定每一层的副作用限定每一层的副作用,减少耦合度减少耦合度(6)尽能够地重用尽能够地重用编码的风格编码的风格n追求追求“聪明和聪明和“技巧技巧提倡提倡“简明和简明和“直接直接 n运用规范的控制构造运用规范的控制构造 n明晰的前提下求取效率明晰的前提下求取效率 nMake it right before you make it faster.Make it right before you make it faster.nMake it clear before you ma

8、ke it faster.Make it clear before you make it faster.nKeep it right when you make it faster.Keep it right when you make it faster.n求快不忘坚持程序正确求快不忘坚持程序正确nKeep it simple to make it faster.Keep it simple to make it faster.n坚持程序简单以求快坚持程序简单以求快nDont sacrifice clarity for Dont sacrifice clarity for “efficie

9、ncy“efficiency. .n书写清楚,不要为书写清楚,不要为“效率牺牲清楚效率牺牲清楚q源程序代码的逻辑简明明晰、易读易懂是好程源程序代码的逻辑简明明晰、易读易懂是好程序的一个重要规范序的一个重要规范q程序具有良好的风格包括:程序具有良好的风格包括:q源程序文档化源程序文档化q数听阐明数听阐明q语句构造语句构造q输入输入/ /输出方法输出方法q同时要思索设计出的程序的执行效率问题同时要思索设计出的程序的执行效率问题编码的风格编码的风格(1)(1)符号名的命名符号名的命名 符号名即标识符,包括模块名、变量名、常量符号名即标识符,包括模块名、变量名、常量名、标号名、子程序名、数据区名以及缓

10、冲区名名、标号名、子程序名、数据区名以及缓冲区名等等 这些名字应能反映它所代表的实践东西,应有这些名字应能反映它所代表的实践东西,应有一定实践意义一定实践意义 例如,表示次数的量用例如,表示次数的量用TimesTimes,表示总量的用,表示总量的用TotalTotal,表示平均值的用,表示平均值的用AverageAverage,表示和的量用,表示和的量用SumSum等等 应中选择精炼的意义明确的名字。必要时可运应中选择精炼的意义明确的名字。必要时可运用缩写名字,但这时要留意缩写规那么要一致,并用缩写名字,但这时要留意缩写规那么要一致,并且要给每一个名字加注释且要给每一个名字加注释1 1、源程序

11、文档化、源程序文档化编码的风格编码的风格(2)(2)程序的注释程序的注释 夹在程序中的注释是程序员与日后的程序读夹在程序中的注释是程序员与日后的程序读者之间通讯的重要手段。者之间通讯的重要手段。 注释决不是可有可无的。注释决不是可有可无的。 一些正规的程序文本中,注释行的数量占到一些正规的程序文本中,注释行的数量占到整个源程序的整个源程序的1 13 3到到1 12 2,甚至更多。,甚至更多。 注释分为序文性注释和功能性注释。注释分为序文性注释和功能性注释。编码的风格编码的风格 通常置于每个程序模块的开头部分,它该当给出程序的通常置于每个程序模块的开头部分,它该当给出程序的整体阐明。有关工程包括

12、:整体阐明。有关工程包括:程序标题;程序标题;有关本模块功能和目的的阐明;有关本模块功能和目的的阐明;主要算法;主要算法;接口阐明:包括调用方式,参数描画,子程序清单;接口阐明:包括调用方式,参数描画,子程序清单;有关数据描画:重要的变量及其用途,约束或限制条件,以有关数据描画:重要的变量及其用途,约束或限制条件,以及其它有关信息;及其它有关信息;模块位置:在哪一个源文件中,或隶属于哪一个软件包模块位置:在哪一个源文件中,或隶属于哪一个软件包开发简历:模块设计者,复审者,复审日期,修正日期及有开发简历:模块设计者,复审者,复审日期,修正日期及有关阐明等。关阐明等。1)1)序文性注释序文性注释编

13、码的风格编码的风格 嵌在源程序体中,用以描画其后的语句或程嵌在源程序体中,用以描画其后的语句或程序段是在做什么任务,或是执行了下面的语句会序段是在做什么任务,或是执行了下面的语句会怎样样。而不要解释下面怎样做。怎样样。而不要解释下面怎样做。要点:要点:描画一段程序,而不是每一个语句描画一段程序,而不是每一个语句用缩进、空行或加框,使程序与注释容易区别用缩进、空行或加框,使程序与注释容易区别注释要正确注释要正确2)2)功能性注释功能性注释编码的风格编码的风格例如,例如,/ /* *ADD AMOUNT TO TOTALADD AMOUNT TO TOTAL* */ /TOTAL=AMOUNTTO

14、TAL=AMOUNTTOTALTOTAL此注释不好。此注释不好。 假设注明把月销售额计入年度总额,便使读者假设注明把月销售额计入年度总额,便使读者了解了下面语句的意图:了解了下面语句的意图:/ /* *ADD MONTHLY-SALES TO ANNUAL-TOTALADD MONTHLY-SALES TO ANNUAL-TOTAL* */ /TOTAL=AMOUNTTOTAL=AMOUNTTOTALTOTAL编码的风格编码的风格(3)(3)视觉组织空格、空行和移行视觉组织空格、空行和移行恰当地利用空格,可以突出运算的优先性,防止恰当地利用空格,可以突出运算的优先性,防止发生运算的错误。发生运

15、算的错误。自然的程序段之间可用空行隔开。自然的程序段之间可用空行隔开。移行也叫做向右缩格。移行也叫做向右缩格。对于选择语句和循环语句,把其中的程序段语句对于选择语句和循环语句,把其中的程序段语句向右做阶梯式移行。使程序的逻辑构造更加明晰。向右做阶梯式移行。使程序的逻辑构造更加明晰。编码的风格编码的风格例如,两重选择构造嵌套,写成下面的移行方式,例如,两重选择构造嵌套,写成下面的移行方式,层次就清楚得多。层次就清楚得多。 for(i=1for(i=1;i=ni=n;i+)i+) for(j=1 for(j=1;j=nj=n;j+)j+) aij aiji i* *10+j10+j;编码的风格编码

16、的风格 在设计阶段曾经确定了数据构造的组织及其在设计阶段曾经确定了数据构造的组织及其复杂性。在编写程序时,那么需求留意数听阐明复杂性。在编写程序时,那么需求留意数听阐明的风格。的风格。 为了使程序中数听阐明更易于了解和维护,为了使程序中数听阐明更易于了解和维护,必需留意以下几点:必需留意以下几点:数听阐明的次序该当规范化数听阐明的次序该当规范化阐明语句中变量安排有序化阐明语句中变量安排有序化运用注释阐明复杂数据构造运用注释阐明复杂数据构造2 2、数听阐明、数听阐明编码的风格编码的风格(1)(1)数听阐明的次序该当规范化数听阐明的次序该当规范化 数听阐明次序规范化,使数据属性容易查找,数听阐明次

17、序规范化,使数据属性容易查找,也有利于测试,排错和维护。也有利于测试,排错和维护。 原那么上,数听阐明的次序与语法无关,其原那么上,数听阐明的次序与语法无关,其次序是恣意的。但出于阅读、了解和维护的需求,次序是恣意的。但出于阅读、了解和维护的需求,最好使其规范化,使阐明的先后次序固定。最好使其规范化,使阐明的先后次序固定。编码的风格编码的风格(2)(2)阐明语句中变量安排有序化阐明语句中变量安排有序化例如,在例如,在FORTRANFORTRAN程序中数听阐明次序程序中数听阐明次序常量阐明常量阐明简单变量类型阐明简单变量类型阐明数组阐明数组阐明公用数据块阐明公用数据块阐明一切的文件阐明一切的文件

18、阐明在类型阐明中还可进一步要求。例如,可按如下顺在类型阐明中还可进一步要求。例如,可按如下顺序陈列:序陈列:整型量阐明整型量阐明实型量阐明实型量阐明字符量阐明字符量阐明逻辑量阐明逻辑量阐明编码的风格编码的风格 当多个变量名在一个阐明语句中阐明时,该当当多个变量名在一个阐明语句中阐明时,该当对这些变量按字母的顺序陈列。带标号的全程数据对这些变量按字母的顺序陈列。带标号的全程数据( (如如FORTRANFORTRAN的公用块的公用块) )也该当按字母的顺序陈列。也该当按字母的顺序陈列。例如,把例如,把 integer sizeinteger size,lengthlength,widthwidth

19、,costcost,priceprice写成:写成: integer costinteger cost,lengthlength,priceprice,sizesize,widthwidth编码的风格编码的风格(3)(3)运用注释阐明复杂数据构造运用注释阐明复杂数据构造 假设设计了一个复杂的数据构造,该当运用假设设计了一个复杂的数据构造,该当运用注释来阐明在程序实现时这个数据构造的固有特注释来阐明在程序实现时这个数据构造的固有特点。点。 例如,对链表构造和用户自定义的数据类型,例如,对链表构造和用户自定义的数据类型,都该当在注释中做必要的补充阐明。都该当在注释中做必要的补充阐明。编码的风格编码

20、的风格 在设计阶段确定了软件的逻辑流构造,但构在设计阶段确定了软件的逻辑流构造,但构造单个语句那么是编码阶段的义务。语句构造力造单个语句那么是编码阶段的义务。语句构造力求简单、直接,不能为了片面追求效率而使语句求简单、直接,不能为了片面追求效率而使语句复杂化。复杂化。(1)(1)在一行内只写一条语句在一行内只写一条语句 在一行内只写一条语句,并且采取适当的移在一行内只写一条语句,并且采取适当的移行格式,使程序的逻辑和功能变得更加明确。行格式,使程序的逻辑和功能变得更加明确。3 3、语句构造、语句构造编码的风格编码的风格(2)(2)程序编写首先该当思索明晰性程序编写首先该当思索明晰性 程序编写首

21、先该当思索明晰性,不要刻意追求程序编写首先该当思索明晰性,不要刻意追求技巧性,使程序编写得过于紧凑。技巧性,使程序编写得过于紧凑。例如,有一个用例如,有一个用C C语句写出的程序段:语句写出的程序段: AI=AIAI=AIATAT; AT=AIAT=AIATAT; AI=AIAI=AIATAT;此段程序能够不易看懂,有时还需用实践数据实验此段程序能够不易看懂,有时还需用实践数据实验一下。一下。编码的风格编码的风格实践上,这段程序的功能就是交换实践上,这段程序的功能就是交换AIAI和和ATAT中的中的内容。目的是为了节省一个任务单元。假设改一下:内容。目的是为了节省一个任务单元。假设改一下: W

22、ORK=ATWORK=AT; AT=AIAT=AI; AI=WORKAI=WORK;就能让读者一目了然了。就能让读者一目了然了。编码的风格编码的风格(3)(3)程序要能直截了当地阐明程序员的意图。程序要能直截了当地阐明程序员的意图。 程序编写得要简单,写清楚,直截了当地阐明程序编写得要简单,写清楚,直截了当地阐明程序员的意图。例如,程序员的意图。例如, for(i=1for(i=1;i=ni=n;i+)i+) for(j=1 for(j=1;j=nj=n;j+)j+) vij vij(i(ij) j) * * (j (ji)i)编码的风格编码的风格除法运算除法运算( () )在除数和被除数都是

23、整型量时,其结在除数和被除数都是整型量时,其结果只取整数部分,而得到整型量。果只取整数部分,而得到整型量。 当当i ij j时,时,i/j=0i/j=0 当当j ji i时,时,j/i=0j/i=0得到的数组得到的数组 当当ijij时,时,vij=(ivij=(ij)j)* *(j(ji)=0i)=0 当当i ij j时,时,vij=(ivij=(ij)j)* *(j(ji)=1i)=1这样得到的结果,这样得到的结果,v v是一个单位矩阵。是一个单位矩阵。编码的风格编码的风格写成以下的方式,就能让读者直接了解程序编写者写成以下的方式,就能让读者直接了解程序编写者的意图。的意图。for(ifor

24、(i1 1;i=ni=n;i+)i+) for(j for(j1 1;j=nj=n;j+)j+) if(i=j) vij if(i=j) vij1.01.0; elseelse vij vij0.00.0;编码的风格编码的风格(4)(4)除非对效率有特殊的要求,程序编写要做到除非对效率有特殊的要求,程序编写要做到明晰第一,效率第二。明晰第一,效率第二。 (5)(5)首先要保证程序正确,然后才要求提高速度。首先要保证程序正确,然后才要求提高速度。(6)(6)防止运用暂时变量而使可读性下降。防止运用暂时变量而使可读性下降。例如,有的程序员为了追求效率,往往喜欢把表达式例如,有的程序员为了追求效率,

25、往往喜欢把表达式AIAI1 1AIAI;写成写成 AIAIAIAI; X XAIAI1 1AIAI;这样将一句分成两句写,会产生意想不到的问题这样将一句分成两句写,会产生意想不到的问题编码的风格编码的风格(7)(7)让编译程序做简单的优化。让编译程序做简单的优化。(8)(8)尽能够运用库函数尽能够运用库函数(9)(9)防止不用要的转移。同时假设能坚持程序可读防止不用要的转移。同时假设能坚持程序可读性,那么不用用性,那么不用用GOTOGOTO语句。语句。编码的风格编码的风格 IF(X IF(XY) GOTO 30Y) GOTO 30 IF(Y IF(YZ) GOTO 50Z) GOTO 50 S

26、MALL SMALLZ Z GOTO 70 GOTO 7030 IF(X30 IF(XZ) GOTO 60Z) GOTO 60 SMALL SMALLZ Z GOTO 70 GOTO 7050 SMALL50 SMALLY Y GOTO 70 GOTO 7060 SMALL60 SMALLX X70 CONTINUE70 CONTINUE例如,有一个求三个数中最小值的程序:例如,有一个求三个数中最小值的程序:编码的风格编码的风格程序只需编写成:程序只需编写成: smallsmallx x; if ( y small ) smallif ( y small ) smally y; if ( z

27、small ) smallif ( z =a)if(char=a) if(char=z) if(char=z) cout“This is a letter cout“This is a letter。;。; elseelse cout“This is not a letter cout= 0 & char = 0 & char = 9 )不要让读者绕弯子想。不要让读者绕弯子想。编码的风格编码的风格(14)(14)尽能够用通俗易懂的伪码来描画程序的流程,尽能够用通俗易懂的伪码来描画程序的流程,然后再翻译成必需运用的言语。然后再翻译成必需运用的言语。(15)(15)数据构造要有利于

28、程序的简化。数据构造要有利于程序的简化。(16)(16)要模块化,使模块功能尽能够单一化,模块要模块化,使模块功能尽能够单一化,模块间的耦合可以明晰可见。间的耦合可以明晰可见。(17)(17)利用信息隐蔽,确保每一个模块的独立性。利用信息隐蔽,确保每一个模块的独立性。编码的风格编码的风格(18)(18)从数据出发去构造程序。从数据出发去构造程序。(19)(19)不要修补不好的程序,要重新编写。也不要不要修补不好的程序,要重新编写。也不要一味地追求代码的复用,要重新组织。一味地追求代码的复用,要重新组织。(20)(20)对太大的程序,要分块编写、测试,然后再对太大的程序,要分块编写、测试,然后再

29、集成。集成。(21)(21)对递归定义的数据构造尽量运用递归过程。对递归定义的数据构造尽量运用递归过程。编码的风格编码的风格 输入和输出信息是与用户的运用直接相关的。输入和输出信息是与用户的运用直接相关的。输入和输出的方式和格式该当尽能够方便用户的输入和输出的方式和格式该当尽能够方便用户的运用。一定要防止因设计不当给用户带来的费事。运用。一定要防止因设计不当给用户带来的费事。 因此,在软件需求分析阶段和设计阶段,就因此,在软件需求分析阶段和设计阶段,就应根本确定输入和输出的风格。系统能否被用户应根本确定输入和输出的风格。系统能否被用户接受,有时就取决于输入和输出的风格。接受,有时就取决于输入和

30、输出的风格。4 4、输入和输出、输入和输出编码的风格编码的风格 不论是批处置的输入输出方式,还是交互不论是批处置的输入输出方式,还是交互式的输入输出方式,在设计和编码时都应思索式的输入输出方式,在设计和编码时都应思索以下原那么:以下原那么:(1)(1)对一切的输入数据都要进展检验,识别错误对一切的输入数据都要进展检验,识别错误的输入,以保证每个数据的有效性;的输入,以保证每个数据的有效性;(2)(2)检查输入项的各种重要组合的合理性,必要检查输入项的各种重要组合的合理性,必要时报告输入形状信息;时报告输入形状信息;(3)(3)使得输入的步骤和操作尽能够简单,并坚持使得输入的步骤和操作尽能够简单

31、,并坚持简单的输入格式;简单的输入格式;编码的风格编码的风格(4)(4)输入数据时,应允许运用自在格式输入;输入数据时,应允许运用自在格式输入;(5)(5)应允许缺省值;应允许缺省值;(6)(6)输入一批数据时,最好运用输入终了标志,而输入一批数据时,最好运用输入终了标志,而不要由用户指定输入数据数目;不要由用户指定输入数据数目;(7)(7)在交互式输入时,要在屏幕上运用提示符明确在交互式输入时,要在屏幕上运用提示符明确提示交互输入的恳求,指明可运用选择项的种类和提示交互输入的恳求,指明可运用选择项的种类和取值范围。同时,在数据输入的过程中和输入终了取值范围。同时,在数据输入的过程中和输入终了

32、时,也要在屏幕上给出形状信息;时,也要在屏幕上给出形状信息;编码的风格编码的风格(8)(8)当程序设计言语对输入输出格式有严厉要当程序设计言语对输入输出格式有严厉要求时,应坚持输入格式与输入语句的要求的一求时,应坚持输入格式与输入语句的要求的一致性;致性;(9)(9)给一切的输出加注解,并设计输出报表格式。给一切的输出加注解,并设计输出报表格式。 输入输出风格还遭到许多其它要素的影输入输出风格还遭到许多其它要素的影响。如输入输出设备响。如输入输出设备( (例如终端的类型,图形例如终端的类型,图形设备,数字化转换设备等设备,数字化转换设备等) )、用户的熟练程度、用户的熟练程度、以及通讯环境等。

33、以及通讯环境等。编码的风格编码的风格 (1)(1)讨论效率的准那么讨论效率的准那么 程序的效率是指程序的执行速度及程序程序的效率是指程序的执行速度及程序所需占用的内存的存储空间。所需占用的内存的存储空间。 程序编码是最后提高运转速度和节省存程序编码是最后提高运转速度和节省存储的时机,因此在此阶段不能不思索程序的储的时机,因此在此阶段不能不思索程序的效率。效率。 q程序效率程序效率编码的风格编码的风格v效率是一个性能要求,该当在需求分析阶段给效率是一个性能要求,该当在需求分析阶段给出。软件效率以需求为准,不应以人力所及为准出。软件效率以需求为准,不应以人力所及为准v好的设计可以提高效率好的设计可

34、以提高效率v程序的效率与程序的简单性相关程序的效率与程序的简单性相关v留意:任何对效率无重要改善,且对程序的简留意:任何对效率无重要改善,且对程序的简单性、可读性和正确性不利的程序设计方法都是单性、可读性和正确性不利的程序设计方法都是不可取的不可取的讨论程序效率的几条准那么讨论程序效率的几条准那么编码的风格编码的风格(2)(2)算法对效率的影响算法对效率的影响 源程序的效率与详细设计阶段确定的源程序的效率与详细设计阶段确定的算法的效率直接有关。在详细设计翻译转算法的效率直接有关。在详细设计翻译转换成源程序代码后,算法效率反映为程序换成源程序代码后,算法效率反映为程序的执行速度和存储容量的要求。

35、的执行速度和存储容量的要求。设计向程序转换过程中的指点原那么:设计向程序转换过程中的指点原那么:1)1)在编程序前,尽能够化简有关的算术表在编程序前,尽能够化简有关的算术表达式和逻辑表达式;达式和逻辑表达式;2)2)仔细检查算法中的嵌套的循环,尽能够仔细检查算法中的嵌套的循环,尽能够将某些语句或表达式移到循环外面;将某些语句或表达式移到循环外面;编码的风格编码的风格3)3)尽量防止运用多维数组;尽量防止运用多维数组;4)4)尽量防止运用指针和复杂的表;尽量防止运用指针和复杂的表;5)5)采用采用“快速的算术运算;快速的算术运算;6)6)不要混淆数据类型,防止在表达式中出现类型不要混淆数据类型,

36、防止在表达式中出现类型混杂;混杂;7)7)尽量采用整数算术表达式和布尔表达式;尽量采用整数算术表达式和布尔表达式;8)8)选用等效的高效率算法;选用等效的高效率算法;许多编译程序具有许多编译程序具有“优化功能,可以自动生成优化功能,可以自动生成高效率的目的代码。高效率的目的代码。编码的风格编码的风格(3)(3)影响存储器效率的要素影响存储器效率的要素 在大中型计算机系统中,存储限制不再是主在大中型计算机系统中,存储限制不再是主要问题。在这种环境下,对内存采取基于操作系要问题。在这种环境下,对内存采取基于操作系统的分页功能的虚拟存储管理。存储效率与操作统的分页功能的虚拟存储管理。存储效率与操作系

37、统的分页功能直接有关。系统的分页功能直接有关。 采用构造化程序设计,将程序功能合理分块,采用构造化程序设计,将程序功能合理分块,使每个模块或一组亲密相关模块的程序体积大小使每个模块或一组亲密相关模块的程序体积大小与每页的容量相匹配,可减少页面调度,减少内与每页的容量相匹配,可减少页面调度,减少内外存交换,提高存储效率。外存交换,提高存储效率。例子:例子:200个整数,共分配到个整数,共分配到3页内存,第一页存放程序。页内存,第一页存放程序。FOR i:=1 to 100 DO FOR j:=1 to 100 DO FOR j:=1 to 100 DO FOR i:=1 to 100 DO Ai

38、,j:=0; Ai, j:=0; 行主序:行主序:50次缺页;列主序,次缺页;列主序,5000次缺页次缺页编码的风格编码的风格 在微型计算机在微型计算机/ /嵌入式系统中,存储器的容嵌入式系统中,存储器的容量对软件设计和编码的制约很大。因此要选择可量对软件设计和编码的制约很大。因此要选择可生成较短目的代码且存储紧缩性能优良的编译程生成较短目的代码且存储紧缩性能优良的编译程序,有时需采用汇编程序。序,有时需采用汇编程序。 提高存储器效率的关键是程序的简单性。提高存储器效率的关键是程序的简单性。编码的风格编码的风格(4)(4)影响输入输出的要素影响输入输出的要素 输入输出可分为两种类型:输入输出可

39、分为两种类型: 面向人面向人( (操作员操作员) )的输入输出的输入输出 面向设备的输入输出面向设备的输入输出1)1)假设操作员可以非常方便、简单地录入输入数据,假设操作员可以非常方便、简单地录入输入数据,或者可以非常直观、一目了然地了解输出信息,那或者可以非常直观、一目了然地了解输出信息,那么可以说面向人的输入输出是高效的。么可以说面向人的输入输出是高效的。编码的风格编码的风格2)2)关于面向设备的输入关于面向设备的输入/ /输出,可以提出一些提高输出,可以提出一些提高输入输入/ /输出效率的指点原那么输出效率的指点原那么v输入输入/ /输出的恳求该当最小化;输出的恳求该当最小化;v对于一切

40、的输入对于一切的输入/ /输出操作,安排适当的缓输出操作,安排适当的缓冲区,以减少频繁的信息交换。冲区,以减少频繁的信息交换。v对辅助存储对辅助存储( (例如磁盘例如磁盘) ),选择尽能够简单的,选择尽能够简单的,可接受的存取方法;可接受的存取方法;编码的风格编码的风格v对辅助存储的输入对辅助存储的输入/ /输出,该当成块传送;输出,该当成块传送;v对终端或打印机的输入对终端或打印机的输入/ /输出,应思索设备特性,输出,应思索设备特性,尽能够改善输入尽能够改善输入/ /输出的质量和速度;输出的质量和速度;v任何不易了解的,对改善输入任何不易了解的,对改善输入/ /输出效果关系不输出效果关系不

41、大的措施都是不可取的;大的措施都是不可取的;v任何不易了解的所谓任何不易了解的所谓“超高效的输入超高效的输入/ /输出是输出是毫无价值的。毫无价值的。编码的风格编码的风格编码言语编码言语程序设计言语的开展程序设计言语的开展面向机面向机器的言语器的言语高级言语高级言语(第第3代代)甚高级甚高级言语言语机器言语机器言语(第第1代代)汇编言语汇编言语(第第2代代)构造构造言语言语根底根底言语言语面向面向对象对象言语言语第第4代代语言语言FORTRANCOBOLBASICPASCALCAdaC+JavaSQL报表生成适用各类运用领域的言语适用各类运用领域的言语 年代年代运用领域运用领域主要言语主要言语

42、其他言语其他言语 20世纪世纪60年年代代 商业商业COBOLAssembler科学计算科学计算FORTRANALGOL、BASIC、APL系统系统AssemblerForth人工智能人工智能LISPSNOBOL 现代现代商业商业COBOL、C+、Java、 电子表格电子表格C、PL/1科学计算科学计算FORTRAN、C、C+、JavaBASIC系统系统C、C+、JavaAda、Modula人工智能人工智能LISP、Prolog 编码言语编码言语可从如下方面比较程序设计言语:可从如下方面比较程序设计言语:(1)(1)软件心思学观念:影响程序员心思的言语特性软件心思学观念:影响程序员心思的言语特

43、性(2)(2)软件工程的观念:对于程序编码的工程上的要求软件工程的观念:对于程序编码的工程上的要求详细设计可以容易的翻译成代码详细设计可以容易的翻译成代码源程序可移植性源程序可移植性编译程序高效率编译程序高效率尽能够利用代码自动生成工具尽能够利用代码自动生成工具可维护性可维护性(3)(3)程序设计言语的技术性能:模块化、数据构造才程序设计言语的技术性能:模块化、数据构造才干干编码言语编码言语选择言语的重要的思索要素选择言语的重要的思索要素(1)(1)运用领域运用领域; ;(2)(2)算法和计算复杂性算法和计算复杂性; ;(3)(3)软件运转环境软件运转环境; ;(4)(4)用户需求中关于性能方面的需求可移植性、用户需求中关于性能方面的需求可移植性、可靠性、系统呼应时间等可靠性、系统呼应时间等; ;(5)(5)数据构造的复杂性数据构造的复杂性; ;(6)(6)软件开发人员的知识程度软件开发人员的知识程度; ;(7)(7)可用的编译器与交叉编译器。可用的编译器与交叉编译器。编码言语编码言语选择高级程序设计言语选择高级程序设计言语 高级言语明显优于汇编言语,因此,除了在

温馨提示

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

评论

0/150

提交评论