第六章 软件实现
本章要点
- 理解编码的目的与要求;
- 了解程序设计语言的发展与分类;
- 了解常见的程序设计语言;
- 了解程序设计语言的选择原则;
- 掌握良好的编码风格;
- 理解结构化程序设计方法;
- 编码的目的与要求
- 编码(coding)俗称编程序,其目的是使用选定的程序设计语言,把设计模型“翻译”为用该语言书写的源程序(或称源代码)。源程序经过编译等环节,再“转换”为可执行代码。
- 设计是编码的前导。
- ,但也将对程序的可读性、可靠性、可测试性和可维护性产生重要影响。
6.1结构化程序设计
- 所谓结构化程序设计,一种较为流行的定义是:“如果一个程序的代码块仅仅通过这三种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的”。
- 通常采用的设计方法,这种方法符合抽象和分解的原则,是人们解决复杂问题常用的方法。采用这种先整体后局部、先抽象后具体的步骤开发的软件一般都具有较清晰的层次结构。结构化程序设计方法能提高程序的可读性、可维护性和可验证性,从而提高软件的生产率。
结构化程序设计的原则
- 尽量使用语言提供的基本控制结构,即。
- 选用的控制结构只准许。
- 将程序语句组织成容易识别的块,每块只有一个入口和一个出口。
- 复杂结构应该用基本控制结构进行组合或嵌套来实现。
- 对于语言中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中前后一致。
- ,仅在两种情况下才可使用。一是用非结构化的程序设计语言去实现一个结构化的构造时;二是在某种可以改善而不是损害程序可读性的情况下。
自顶向下,逐步求精
- 在总体设计阶段,已经采用自顶向下、逐步细化的方法把一个复杂问题的解法分解和细化成了一个由许多模块组成的层次结构的软件系统。在,还应当采取这种方法,把为一系列具体的步骤,进而编制出用某种程序设计语言书写的程序。
- 程序设计是一个由粗到细的 “渐进” 的过程
- 程序设计不仅包括对控制结构的设计,也包括对数据结构的设计。 二者都要一步一步地细化。
- 自顶向下、逐步求精方法的优点如下:
- 符合人们解决复杂问题的普遍规律,可提高软件开发的成功率和生产效率。
- 用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出来的程序具有清晰的层次结构,程序易读、易理解。
6.2程序设计语言
程序设计语言的发展与分类
自20世纪60年代以来,世界上公布的程序设计语言已经有上千种之多,但是只有很小一部分得到了广泛的应用。按照软件工程的观点,语言的发展至今已经历了。
- 第一代语言(机器语言)
? 自从有了计算机,就有了机器语言。,不同CPU的计算机有不同的机器语言。用机器语言编写的程序占用内存少,执行效率高,其缺点是难编写、难修改、难于维护和移植,编程效率低。目前,这种语言已经被淘汰。
- 第二代语言(汇编语言)
? ,比机器语言直观,容易理解。在执行时必须由特定的翻译程序转化为机器语言才能由计算机执行。与机器语言一样,汇编语言依赖于计算机硬件结构,也是面向机器的低级语言。其优点是易于实现系统接口,执行效率高。
? 。从语句结构上看,它比较接近人类的自然语言,所使用的运算符和运算表达式也与数学中的形式相似,因此也称算法语言。和机器语言和汇编语言相比,高级语言不依赖于计算机硬件结构,易学易用、通用性强、应用广泛。
- 高级语言种类繁多,又可分为传统的基础语言、结构化语言和专用语言三类。
- 基础语言:BASIC、FORTRAN、COBOL等
- 结构化语言:ALGOL、C等
- 专用语言:C++、Java等
- 第四代语言(简称4GL)
- 。其主要特征有:
- 有可视化的、友好的用户界面。操作简单,使非计算机专业人员也能方便地使用它。
- 兼有过程性和非过程性双重特性。非过程性语言只需要告诉计算机“”,而不必描述“怎么做”,“怎么做”由计算机语言来实现。
- 有高效的程序代码。能缩短开发周期,并减少维护的代价。
- 有完备的数据库管理功能。
- 有应用程序生成器。提供一些常用的程序来完成文件的维护、屏幕管理、 表生成和查询等任务,从而有效地提高了软件生产率。
- 例如:SQL语言等
- 。其主要特征有:
常用程序设计语言:
- Visual Basic语言
- C语言
- C++语言
- Java语言
- Delphi语言
- C#语言
程序设计语言的选择
- D.A.Fisher说过:“。但是,由于语言在一切软件活动中所处的中心地位,它们能使现存的问题变得较易解决,或者更加严重。”这段话言简意赅地揭示了语言在软件开发中的作用,因此,我们要重视在编码之前选好适当的语言。,并且可以得到易读、易维护的软件。
- 在选择语言时要从问题入手,确定它的要求是什么,以及这些要求的相对重要性。由于一种语言不可能同时满足它的各种需求,所以要对各种要求进行权衡,比较各种可用语言的使用程度,最后选择较适合的语言。
- 一般情况下,程序设计语言的选择常从以下几方面考虑。
- 项目的应用领域。
- 用户的要求。
- 软件开发工具。
- 算法和数据结构的复杂性。
- 软件开发人员的知识。
- 系统的可移植性要求。
科学工程计算 | FORTRAN、Pascal、C语言 |
---|---|
数据处理与应用 | COBOL、SQL、4GL |
实时处理和系统 | 汇编语言和Ada语言 |
系统软件 | 汇编语言、C语言、Ada语言 |
人工智能 | Prolog、lisp语言 |
面向对象的语言 | C++、JAVA |
可视化 | Visual Basic、Visual C++、Visual Foxpro、Delphi |
6.3程序设计风格
- 程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。
- 良好编码风格包括:
- :如标识符、注释良好,程序文档结构易读易理解。
- 应易于理解和维护
- 尽可能简单直观
- 风格遵守人机界面设计准则
- 满足用户需求即可
1、源程序文档化
-
为了提高程序的可维护性,。即在源程序中包含一些内部文档,以帮助阅读和理解。
-
源程序文档化主要包括:三个方面。
-
标识符的命名
标识符包括模块名、变量名、常量名、标 名、子程序(函数)名以及数据区名、缓冲区名等。
-
程序代码的视觉组织
在程序编写中应该注意代码的排版布局,以使代码更加清晰易读。可以在程序中利用空格、空行、缩进等技巧提高程序代码的视觉效果。
-
程序的注释
- 注释有助于理解代码,是程序员之间进行交流的有效途径,合理的注释有利于日后的软件维护。注释可分为序言性注释和功能性注释两大类。
- 功能性注释通常嵌在程序体内,主要描述程序段的功能。
-
2、数据说明
- 为了使程序中的,必须注意以下几点:
- 显式地说明一切变量。
- 数据说明的次序应该规范化,比如哪种数据类型的说明在前,哪种在后,以便于查找。
- 当多个变量用一条语句说明时,应当对这些变量按字母顺序排列。例如,将int length,width,area,cost,price;写成:int area,cost,length,price,width;
- 使用注释说明复杂数据结构。
3、语句构造
- 语句构造要简单直接,清晰易读。以下是一些常用的规则:
- 要简单清楚,。
- 为了节省空间而在==同一行中写多个语句。
- 使逻辑表达式和算术表达式的运算次序直观清晰。
- 利用来清晰地表示语句的成分。
- 尽可能使用库函数,应使用函数或公共过程去代替具有独立功能的程序段。
- 尽量不用或少用goto语句,避免goto语句不必要的转移和相互交叉。
- 尽量不用或少用标准文本以外的语句,以利于提高可移植性。
- 对于多分支语句,应尽量,以节省运算时间。
- 每个,不要出现死循环,更要避免出现不可能被执行的循环。
- 避免使用过于复杂的条件判定。
- 避免使用测试条件“非”。如要使用if(ch>=′0′)取代if(!(ch
- 避免过多的循环嵌套和条件嵌套,。
- 避免。
- 避免使用空的else语句和if…thenif …语句。
- 避免使用else goto和else return结构。
- 使与判定相联系的动作尽可能地紧跟着判定。
- 。
- 对递归定义的数据结构尽量使用递归过程。
- 确保所有变量在使用前都进行初始化。
- ,要重新编写。也不要一味追求代码的复用,要重新组织。
- ,因为两个浮点数难于精确相等。
4、输入与输出
- 设计输入/输出界面的原则是友好、简洁、统一,符合用户的日常工作习惯。在编写输入和输出程序时要考虑以下原则:
- 的合法性、有效性。
- 批量输入数据时,使用,而不是要求用户预先输入数据个数。
- 检查输入项的重要组合的合理性。
- 输入格式要简单,。
- 输入数据时。
- 输出信息中不要有文字错误,要保证输出结果的正确性。
- 输出数据。
- 给所有的。
5、程序效率
- 程序的效率是指程序的执行速度及程序所需占用内存的存储空间。提高效率的原则如下:
- 效率是一个,应当在需求分析阶段确定效率方面的要求。
- 效率是靠好的设计来提高的。
- 程序的效率与程序的简单性相关。
- 除非对效率有特殊要求,否则程序编写的原则是“”。不要为了追求效率而丧失了清晰性。
6.4程序设计质量评价
- 程序设计的质量评价需要考虑多方面因素:正确性、清晰的结构、易使用性、易维护性、简单性、易移植性。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!