




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 软件编码1第六章第六章软件软件编码编码 6.1 6.1 程序设计语言的选择程序设计语言的选择6.2 6.2 结构化程序设计结构化程序设计6.3 6.3 程序设计的风格程序设计的风格6.4 6.4 程序设计效率程序设计效率6.5 6.5 程序复杂性度量程序复杂性度量小小 结结思考与练习思考与练习 返回章目录第6章 软件编码2软件编码的任务软件编码的任务根据详细设计阶段的详细设计说明书为根据详细设计阶段的详细设计说明书为每个模块编写程序。每个模块编写程序。第6章 软件编码3案例练习案例练习第一组:输入一个年份,判断是否闰年。第一组:输入一个年份,判断是否闰年。(year%4=0&year%
2、100!=0)|(year%400=0)第二组:对第一组的编码进行审核,给出合格第二组:对第一组的编码进行审核,给出合格与不合格的评价。与不合格的评价。第三组:输入三个数,输出其中最大值。第三组:输入三个数,输出其中最大值。第四组:对第四组的代码进行审核,给出合格第四组:对第四组的代码进行审核,给出合格与不合格的评价。与不合格的评价。第6章 软件编码46.1 6.1 程序设计语言的选择程序设计语言的选择 1.1.语法、语义、语用语法、语义、语用 我们通常认为程序设计语言是指用于书我们通常认为程序设计语言是指用于书写计算机程序的语言,它是一种实现性的软写计算机程序的语言,它是一种实现性的软件语言
3、,一般可以从语法、语义、语用三个件语言,一般可以从语法、语义、语用三个方面来研究程序设计语言。方面来研究程序设计语言。 第6章 软件编码5 语法是指构成语言的各个符号之间的组合语法是指构成语言的各个符号之间的组合规则。语法中并不涉及到符号的含义,也不涉规则。语法中并不涉及到符号的含义,也不涉及使用者。及使用者。 语义是指按照各种表达方法所表示的各个语义是指按照各种表达方法所表示的各个记符号的特定含义,但它也不涉及到使用者。记符号的特定含义,但它也不涉及到使用者。语用是指构成语言的各个符号和使用者语用是指构成语言的各个符号和使用者之间的关系,之间的关系,第6章 软件编码62.2.分类分类 从软件
4、工程的角度,根据程序设计语言发展的历从软件工程的角度,根据程序设计语言发展的历程,我们可以大致把它分为四类:程,我们可以大致把它分为四类:(一)第一代语言(一)第一代语言机器语言机器语言 机器语言机器语言,顾名思义就是机器能够识别的语言也,顾名思义就是机器能够识别的语言也叫计算机硬件系统能够识别的一组指令,换句话说叫计算机硬件系统能够识别的一组指令,换句话说是由机器指令组成的语言,对于不同的机器,它的是由机器指令组成的语言,对于不同的机器,它的机器语言是不相同的。机器语言是不相同的。缺点:缺点: 存储空间的安排和寄存器变址的使用都存储空间的安排和寄存器变址的使用都由程序员计划,因此机器语言程序
5、不易编制也由程序员计划,因此机器语言程序不易编制也不易理解。不易理解。第6章 软件编码7第二代语言第二代语言汇编语言汇编语言 我们从软件工程的角度考虑,汇编语言只我们从软件工程的角度考虑,汇编语言只会是在高级语言无法满足设计要求时,或高会是在高级语言无法满足设计要求时,或高级语言不具备支持某种特定功能的技术性能级语言不具备支持某种特定功能的技术性能时,才被程序员使用。时,才被程序员使用。第6章 软件编码8 第三代语言第三代语言高级程序设计语言高级程序设计语言 高级语言产生与上世纪高级语言产生与上世纪5050年代。高级语言年代。高级语言有相应的语法,能独立于具体的机器。有相应的语法,能独立于具体
6、的机器。 从软件工程的角度考虑,高级语言用途比较从软件工程的角度考虑,高级语言用途比较广泛,具有大量的软件库,已经为大多数人所广泛,具有大量的软件库,已经为大多数人所熟悉和接受,典型的高级程序设计语言有熟悉和接受,典型的高级程序设计语言有FORTRANFORTRAN、BASICBASIC、C C等。等。第6章 软件编码9下面将简单介绍几种常用的程序设计语言下面将简单介绍几种常用的程序设计语言1 1FORTRANFORTRAN语言语言 FORTRANFORTRAN是是“Formula Translator”Formula Translator”的缩写,是的缩写,是IBMIBM公司于公司于1956
7、1956年发表的一种适用于科学和工程计算年发表的一种适用于科学和工程计算的程序设计语言。的程序设计语言。19781978年美国国家标准协会公布了年美国国家标准协会公布了它新的版本它新的版本FORTRAN77FORTRAN77,使,使FORTRAN77FORTRAN77能方便的能方便的用于非数值计算。用于非数值计算。 FORTRANFORTRAN语言语法规定严格并作了许多限制,编语言语法规定严格并作了许多限制,编译过程简单优化,因此使用译过程简单优化,因此使用FORTRANFORTRAN程序算题比较快程序算题比较快,又有一定的数据精度保证,对于大型的科学与工,又有一定的数据精度保证,对于大型的科
8、学与工程计算,程计算,FORTRANFORTRAN仍是一种比较可选的语言。仍是一种比较可选的语言。第6章 软件编码10 2.BASIC 2.BASIC语言语言 BASICBASIC是是“Beginners All-purpose Beginners All-purpose Symbolic Instruction Code”Symbolic Instruction Code”的缩写。于的缩写。于19641964年年由美国的两位学者开发的。由美国的两位学者开发的。 BASICBASIC语言是一种会话式语言,简单易学,基语言是一种会话式语言,简单易学,基本的本的BASICBASIC只有只有1717
9、条基本语句,条基本语句,1111个标准函数,随个标准函数,随着时代的发展,着时代的发展,BASICBASIC也有多种版本,也有多种版本,例如例如BorlandBorland公司的公司的Turbo BasicTurbo Basic语言,语言,又如又如MicrosoftMicrosoft公司的公司的Visual BASICVisual BASIC,使用户可,使用户可以简单快捷的编制出以简单快捷的编制出WindowsWindows下的各种应用程序。下的各种应用程序。第6章 软件编码11 3. C3. C语言语言 C C语言程序具有很强的功能而且十分灵活。它具语言程序具有很强的功能而且十分灵活。它具有
10、模块化和良好的程序结构。它对硬件控制能力强有模块化和良好的程序结构。它对硬件控制能力强,可以大量使用指针。具有直接访问物理地址和直,可以大量使用指针。具有直接访问物理地址和直接操作硬件的功能,而且它可以完成与汇编语言基接操作硬件的功能,而且它可以完成与汇编语言基本相同的功能,从而克服了汇编语言不可移植和可本相同的功能,从而克服了汇编语言不可移植和可读性差的特点。同时读性差的特点。同时C C语言书写简单易学,程序设计语言书写简单易学,程序设计灵活、自由,而且它的目标程序执行效率接近于低灵活、自由,而且它的目标程序执行效率接近于低级语言的高效率。级语言的高效率。 目前,目前,C+C+已有很多不同的
11、版本,如已有很多不同的版本,如MSC/C+MSC/C+、BORLAN C+BORLAN C+、BORLAND C+BORLAND C+、Builder c+Builder c+、Visual C+Visual C+、ATATTC+TC+、ANSI C+ANSI C+等等第6章 软件编码12 4.LISP 4.LISP语言语言 LISPLISP语言是一种典型的以语言是一种典型的以演算和递归函数演算和递归函数为基础的函数型程序设计语言,我们都知道,函为基础的函数型程序设计语言,我们都知道,函数是一种使其定义域中每一个值和值域中唯一的数是一种使其定义域中每一个值和值域中唯一的值具有一一对应关系的映射
12、。由于函数程序设计值具有一一对应关系的映射。由于函数程序设计语言书写程序是利用自变量的值来计算函数的值,语言书写程序是利用自变量的值来计算函数的值,所以它对表达式中出现的所有函数都可以用其他所以它对表达式中出现的所有函数都可以用其他函数来代替完成,但必须这些函数调用后产生相函数来代替完成,但必须这些函数调用后产生相同的值。同的值。LISPLISP语言的这一优点十分有利于程序模语言的这一优点十分有利于程序模块化的实现。块化的实现。第6章 软件编码135.PROLOG5.PROLOG语言语言 PROLOGPROLOG是一种典型的以形式逻辑为基础的逻辑是一种典型的以形式逻辑为基础的逻辑型程序设计语言
13、。型程序设计语言。因此,作为逻辑型程序设计语言的因此,作为逻辑型程序设计语言的PROLOGPROLOG语言具语言具有很强的推理功能,非常适用于书写专家系统、自有很强的推理功能,非常适用于书写专家系统、自然语言理解、自动定义证明、办公室自动化、关系然语言理解、自动定义证明、办公室自动化、关系数据库等问题的程序。日本第数据库等问题的程序。日本第5 5代计算机计划中已代计算机计划中已选定选定PROLOGPROLOG作为其核心语言。作为其核心语言。第6章 软件编码146.Java6.Java语言语言 JavaJava语言,是由语言,是由sunsun公司开发的一种具有新的公司开发的一种具有新的计算概念的
14、程序设计语言。因为计算概念的程序设计语言。因为JavaJava最初的目的最初的目的就是为了就是为了避免避免传统程序设计语言,在家电设备(传统程序设计语言,在家电设备(如手机)软件的开发中或互联网络中,受特定如手机)软件的开发中或互联网络中,受特定CPUCPU和环境的限制,必须重新编译才能运行的问题,和环境的限制,必须重新编译才能运行的问题,而设计出的一种面向对象的、不依赖于特定平台而设计出的一种面向对象的、不依赖于特定平台的程序设计语言。它使用简单、可靠、可扩展、的程序设计语言。它使用简单、可靠、可扩展、面向对象、安全性、便于理解、具有很高的性能面向对象、安全性、便于理解、具有很高的性能,是一
15、种非常理想的程序设计语言。,是一种非常理想的程序设计语言。第6章 软件编码157.Delphi7.Delphi语言。语言。 DelphiDelphi语言是在语言是在19951995年由年由borlandborland公司推出的公司推出的一种具有可视化开发环境、提供面向对象编程方法一种具有可视化开发环境、提供面向对象编程方法的程序设计语言,可以方便的设计出数据库应用系的程序设计语言,可以方便的设计出数据库应用系统和三维虚拟现实等各种具有统和三维虚拟现实等各种具有windowswindows风格的应用风格的应用软件以及多媒体应用系统等。软件以及多媒体应用系统等。 DelphiDelphi语言具有简
16、洁的程序语言、丰富的对象语言具有简洁的程序语言、丰富的对象元件、内置的数据库引擎、优化的代码编译器等特元件、内置的数据库引擎、优化的代码编译器等特点,为用户开发多媒体应用系统提供了多种途径,点,为用户开发多媒体应用系统提供了多种途径,也为开发也为开发windowswindows应用程序提供了简便快捷、功能应用程序提供了简便快捷、功能强大的程序设计开发环境。强大的程序设计开发环境。第6章 软件编码16 第四代语言第四代语言第第4 4代语言是一种高生产率的语言。代语言是一种高生产率的语言。第第4 4代语言是一种使用方便的语言,它通常依赖于数据代语言是一种使用方便的语言,它通常依赖于数据库以及相应的
17、数据字典和目录。库以及相应的数据字典和目录。第第4 4代语言是一种非完全过程化的语言代语言是一种非完全过程化的语言 IBM IBM公司的公司的SQLSQL关系数据库语言就具备第关系数据库语言就具备第4 4代语言的基代语言的基本特征。本特征。SQLSQL是在多种关系数据库基础上实现的基本语言,是在多种关系数据库基础上实现的基本语言,采用丰富的非过程化命令语句,具有较强的数据管理功能。采用丰富的非过程化命令语句,具有较强的数据管理功能。第6章 软件编码173.3.程序设计语言的选择程序设计语言的选择语言的选择一般标准如语言的选择一般标准如1.1.应用领域应用领域2.2.算法和计算复杂度算法和计算复
18、杂度3.运行环境运行环境4.工程规模工程规模5.开发人员的水平开发人员的水平6.软件可移植性要求软件可移植性要求返回节目录第6章 软件编码186.2 6.2 结构化程序设计结构化程序设计 结构化程序设计(结构化程序设计(structured programmingstructured programming,简称简称spsp)方法,主要要求在写代码时尽量使用几)方法,主要要求在写代码时尽量使用几种基本的控制结构,如种基本的控制结构,如顺序、选择和循环顺序、选择和循环,避免,避免使用转向语句,如使用转向语句,如gotogoto 语句。在此方法思想的语句。在此方法思想的指导下,指导下,程序主要是按
19、照程序主要是按照“由顶向下,逐步求精由顶向下,逐步求精”的设计方式使用三种标准控制结构反复嵌套来构的设计方式使用三种标准控制结构反复嵌套来构成的。成的。第6章 软件编码19例:自顶向下,逐步求精求ax2+bx+c=0的根。分别考虑d=b2-4ac大于0,小于0,等于0三种情况。输入A,B,CD=B2-4AC根据D值分别进行处理S1S2S3第6章 软件编码20D=0TF打印两实根打印两虚根S3.1S3.2第6章 软件编码21D=0TF打印两相等的实根打印两不相等的实根S3.1.1S3.1.2第6章 软件编码22输入A,B,CD=B2-4ACD=0TFTFD=0X1=X2=X1=,X2= 打印x1
20、,x2 求虚根x1,x2第6章 软件编码23第6章 软件编码246.3 6.3 程序设计的风格程序设计的风格 程序设计的风格主要是指一个程序员在编写程序所表现的程序设计的风格主要是指一个程序员在编写程序所表现的特点、结构和逻辑思路的综合,一般来说,程序设计的风格特点、结构和逻辑思路的综合,一般来说,程序设计的风格很大程度上影响程序的质量,以下是简单列举了一些程序设很大程度上影响程序的质量,以下是简单列举了一些程序设计风格。计风格。1 1源程序中的内部文档源程序中的内部文档 (1 1)各种标识符的命名各种标识符的命名 (2 2)注解注解 (3 3)书写格式书写格式( (空格、空行、缩进)空格、空
21、行、缩进)2. 2. 数据说明(说明次序、排列次序、数据注释)数据说明(说明次序、排列次序、数据注释)3. 3. 语句结构语句结构 4. 4. 输入输出输入输出 (1 1)输入格式输入格式 (2 2)输入数据的有效性检验输入数据的有效性检验 (3)3)程序的输出程序的输出 返回节目录第6章 软件编码256.4 6.4 程序设计效率程序设计效率 在设计阶段选择好的数据结构和算法才是提高程序在设计阶段选择好的数据结构和算法才是提高程序效率的根本途径,只是靠编程时对程序语句作调整的效率的根本途径,只是靠编程时对程序语句作调整的手段对提高程序效率所起的作用是很微弱的。手段对提高程序效率所起的作用是很微
22、弱的。 总之,提高程序的效率应注意以下几点:总之,提高程序的效率应注意以下几点: 1 1提高程序运行速度时应提高程序运行速度时应首先保持程序的正确首先保持程序的正确 2 2在使程序运行更快前在使程序运行更快前应保持程序结构清晰应保持程序结构清晰; 3. 3. 让编译程序具备简单的让编译程序具备简单的优化功能优化功能。返回节目录第6章 软件编码266.5 6.5 程序复杂性度量程序复杂性度量 6.5.l 6.5.l 代码行度量法代码行度量法 6.5.2 McCabe6.5.2 McCabe度量法度量法 6.5.3 Halstead6.5.3 Halstead的软件科学的软件科学返回节目录第6章
23、软件编码276.5.l 6.5.l 代码行度量法代码行度量法 度量程序的复杂性,最简单的方法就是统计程序的源度量程序的复杂性,最简单的方法就是统计程序的源代码行数。此方法的基本考虑是统计一个程序的源代码行代码行数。此方法的基本考虑是统计一个程序的源代码行数,并以源代码行数作为程序复杂性的度量。数,并以源代码行数作为程序复杂性的度量。 若设每行代码的出错率为每若设每行代码的出错率为每100100行源程序中可能的错行源程序中可能的错误数目,例如,每行代码的出错率为误数目,例如,每行代码的出错率为1 1,则是指每,则是指每100100行行源程序中可能有一个错误。源程序中可能有一个错误。第6章 软件编
24、码28 6.5.2 McCabe 6.5.2 McCabe度量法度量法 McCabe McCabe度量法是度量法是Thomas McCabeThomas McCabe提出提出的一种的一种基于程序控制流基于程序控制流的复杂性度量的方的复杂性度量的方法。法。McCabeMcCabe定义的程序复杂性度量值又称定义的程序复杂性度量值又称环路复杂度,它基于一个程序模块的程序环路复杂度,它基于一个程序模块的程序图中环路的个数,因此,计算它首先要画图中环路的个数,因此,计算它首先要画出程序图。出程序图。 下面给出计算环路复杂性的方法。下面给出计算环路复杂性的方法。第6章 软件编码29 根据图论,在一个强连通
25、的有向图根据图论,在一个强连通的有向图G G中,环的中,环的个数由以下公式给出:个数由以下公式给出: V(G)= m n + pV(G)= m n + p 其中,其中,V(G)V(G)是有向图是有向图G G中环路数,中环路数,m m是图是图G G中弧中弧数,数,n n是图是图G G中结点数,中结点数,p p是图是图G G中的强连通分量个中的强连通分量个数。数。 以图以图6.16.1所给的例子示范,其中,结点数所给的例子示范,其中,结点数n=11n=11,弧数,弧数m=13m=13,p=1p=1,则有,则有V(G)=m-n+p=13-11+1=3.V(G)=m-n+p=13-11+1=3. 即即
26、McCabeMcCabe环路复杂度度量值为环路复杂度度量值为3 3。它也可以看。它也可以看做由程序图中的有向弧所封闭的区域个数。做由程序图中的有向弧所封闭的区域个数。第6章 软件编码30第6章 软件编码31 若假定模块是单入口的程序,则整若假定模块是单入口的程序,则整个模块中只有一个程序,这时的个模块中只有一个程序,这时的p=1p=1。因此可以简化公式,不如从出口到入口因此可以简化公式,不如从出口到入口的那条虚线而当作无向图:的那条虚线而当作无向图:V(G)=m-n+2V(G)=m-n+2第6章 软件编码32 利用利用McCabeMcCabe环路复杂度度量时,有几点需要说环路复杂度度量时,有几
27、点需要说明:明: (1)(1)环路复杂度取决于程序控制结构的复杂度。环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环数目增加时其复杂度也当程序的分支数目或循环数目增加时其复杂度也增加。环路复杂度与程序中覆盖的路径条数有关增加。环路复杂度与程序中覆盖的路径条数有关。 (2)(2)环路复杂度是可加的。例如,模块环路复杂度是可加的。例如,模块A A的复杂的复杂度为度为3 3,模块,模块B B的复杂度为的复杂度为4 4,则模块,则模块A A与模块与模块B B的复的复杂度是杂度是7 7。 (3) McCabe(3) McCabe建议,对于复杂度超过建议,对于复杂度超过1010的程序,的程序,
28、应分成几个小程序,以减少程序中的错误,应分成几个小程序,以减少程序中的错误,第6章 软件编码33 (4) (4)这种度量的缺点是:这种度量的缺点是: 对于不同种类的控制流的复杂性不能区分。对于不同种类的控制流的复杂性不能区分。 简单简单IFIF语句与循环语句的复杂性同等看待;语句与循环语句的复杂性同等看待; 嵌套嵌套IFIF语句与简单语句与简单CASE CASE 语名的复杂性是一样语名的复杂性是一样的;的; 模块间接口当成一个简单分支一样处理;模块间接口当成一个简单分支一样处理; 一个具有一个具有10001000行的程序与一行语句的复杂性行的程序与一行语句的复杂性相同。相同。尽管尽管MCCABEMCCABE复杂度度量法有许多缺点,但它容复杂度度量法有许多缺点,但它容易使用,而且在选择方案和估计排错费用等方面易使用,而且在选择方案和估计排错费用等方面都是很有效的。都是很有效的。第6章 软件编码34练习:已
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版动产拍卖委托代理合同范例
- 区域代理合同标准模板
- 二零二五版二手房交易中介协议合同范例
- 会计职工合同标准文本
- 企业无偿租车合同标准文本
- 2025年航空制造和材料专用设备项目发展计划
- 鱼塘出租合同
- 2025渔场租赁合同模板
- 个人转让别墅合同标准文本
- 倒闭工厂转让合同样本
- 湖北2023年中国邮政储蓄银行湖北分行春季校园招聘(第一批)考试参考题库含答案详解
- T-DLSHXH 002-2023 工业干冰标准规范
- 典型示功图应用与分析
- 出凝血完整版终版
- LY/T 2006-2012荒漠生态系统服务评估规范
- GB/T 31190-2014实验室废弃化学品收集技术规范
- 《地铁突发大客流应急管理》论文11000字
- 第五章-项目时间管理课件
- 导游人员管理法律制度课件
- 木箱检验作业指导书
- 初中级档案职称《档案事业概论》档案事业题库一
评论
0/150
提交评论