- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序构思巧妙,但易读性差.
3. 数据说明方法
为使程序中的数据说明更易于理解和维护,数 据说明的次序应当规范化:
可按说明类型(常量,简单变量类型,复杂类型 )
一个语句说明多个变量时,按字母顺序排列。
复杂的数据结构,要加注释。 4. 输入输出技术 输入和输出格式应尽可能统一。 输出信息中应该反映输入的数据。 输入和输出应尽可能集中安排。
高级语言
四、程序设计语言选择准则
选择程序设计语言的一般准则: 1. 项目的应用领域。应尽量选取适合某个应用领域的 语言。 2. 算法和计算复杂性。 3. 软件的执行环境。要选取机器上能运行且具有相应 支持软件的语言。 4. 性能因素。应结合工程具体性能来考虑。 5. 数据结构的复杂性。要根据不同语言构造数据结构 类型的能力选取 。 6. 软件开发人员的知识水平以及心理因素。要特别注 意选择语言时,尽量避免受外界的影响,盲目追求 高、新的语言。
3. 面向对象的程序设计语言(Object-Oriented) 其中具有代表性的有: Smalltalk语言,最先实现真正的面向对象的 程序设计语言,支持程序部件的“可复用性”。 C++程序设计语言,既融合了面向对象的能力, 又与C兼容,保留了C的许多重要特性。维护了大 量已开发的C库、工具及C源程序的完整性。具有 代表性的编程环境有: Borland C++;Microsoft Visual C++等。 Java语言,是一种简单的面向对象的分布式的 语言。功能强大、高效安全,与结构无关,易于 移植,是多线程的动态语言。增加了Objective C 的扩充,提供更多的动态解决办法 。具有网络支 持、简单、安全。
一、影响程序效率的因素 1. 算法对效率的影响 如顺序表的查找算法,假设顺序表的长度为N, 很明显,顺序查找法的时间复杂度为O(N),而二分法 的时间复杂度却只是O(log2N)。 后者的效率明显高于前者. 2. 存储效率 操作系统的存储管理方式,直接影响到程序的存 储效率。 3. 输入输出效率
提高输入/输出速度,减少出错率。
6
第六章
软件实现
软件的详细设计,完成了软件的过程性的描述, 接下来进入程序编码阶段。 编码(Coding)阶段的任务,是为每个模块编 写程序。即是将详细设计的结果转换为源程序代码。
本章从如何提高软件的质量和可维护性的角度, 讨论在编码阶段所要解决的主要问题:
程序设计语言的特性及选择的原则 程序设计风格 软件代码审查
二、结构化程序设计的步骤
提出和分 析问题
确定数 学模型
设计算法
模块化 编程
程序整个编 译、运行
结构化程序设计步骤
三Байду номын сангаас优化设计
优化设计有多方面的内容,例如结构的优化,功 能的优化,算法的优化和时间、效率的优化等等.
介绍对时间起决定性作用的软件的优化方法:
⑴不考虑时间因素的前提下开发并精简软件结 构。
C#语言。具有Java的几乎所有特征,同时又增 加了泛型(generics)、委托(delegation)代码、 λ表达式 等现代高级语言的特性,使其表达能力非常强。 面向对象的可视化语言,即所见即所得,提供了 一个可视化的开发环境,具有图形设计工具,结构化 的事件驱动编程模式。具有代表性的有:Microsoft Visual Basic、Borland Delphi等。 4.第四代语言(4GL) 称为4GL (The Forth Generation Language)。其 特点是:不需要规定算法细节,在更高层次上用不同 文法来表示程序结构和数据结构。常见的有:查询语 言、程序生成器和其它4GL语言,如:判断支持语言、 原型语言、形式化规格说明语言等。
for (i = 0; i < N; i++) for (j = 0; j < N; j++) V[i][j] = (i / j) * (j / i);
采用直截了当的描述方式:
for (i = 0; i < N; i++) for (j = 0; j < N; j++) V[i][j] = (i == j) ? 1 : 0;
五、高级语言的内在特性 1. 传统的高级语言 具有代表性有:BASI、FORTRAN、ALOGOL 2.通用的结构化程序设计语言 具有代表性的有: PASCAL、PL/1、C、Ada 等 它们都是从 ALOGOL 语言派生出来的。 PL/1是第一个真正广泛适用于多种不同的应用 领域的语言,故又称大型公共汽车语言。支持多 任务处理和复杂的I/O功能,表处理等。 Ada语言一种用于嵌入式实时计算机设计的标准 语言。提供了一组丰富的实时特性,包括多任务 处理,中断处理任务间的同步通信等。提供了Ada 程序包及辅助软件开发的环境。
6.5 软件代码审查
为保证代码开发的质量,在编码完成后,进行 代码审查或称Review。
审查内容:
1.程序的版式
2.文件结构
3.命名规则
4.表达式与基本语句
详见P142,表6-1 软件代码审查
6.2 结构化程序设计
结构程序设计的概念最早是由E.W.Dijkstra提出 来的,
结构化程序设计方法 (Structured Program), 即SP法是结构化开发方法的重要组成部分。 其基本思想是自顶向下、逐步求精。它的基本原 则是功能的分解与抽象。
一、结构化程序设计特点
1.自顶而下、逐步求精 这种逐步求精的思想符合人类解决复杂问题的 普遍规律,从而可以显著提高软件开发的效率。 体现了先全局,后局部、先抽象后具体的方法, 使开发的程序层次结构清晰,易读、易理解还易验 证,因而提高了程序的质量。 2.单入口和单出口的控制结构 结构化的程序是由且仅由顺序、选择、循环三 种基本控制结构组成,既保证了程序结构清晰,又 提高了程序代码的可重用性。
6.4 算法与程序效率
设计逻辑结构清晰、高效的算法,是提高程序效 率的关键。 例如:在P139—P140 中,用C代码编写了两种绘 制直线的算法。
在DDA算法中,一共要进行4*dx次浮点加法和 2*dx次整型到浮点型的类型转换运算;
在Bresenham算法中,没有浮点运算,共要进行 dx次整数比较运算和最多3*dx次整数加法运算。 显然,Bresenham算法在各方面都比DDA算法优 越。
6.1 程序设计语言的选择
一、程序设计语言的分类 按照语言级别可以分为两大类: 低级语言 包括机器语言和汇编语言。 低级语言表示成二进制形式的机器基本指令集, 或者是操作码经过符号化的基本指令集,由于其依 赖于特定的机器,其使用复杂、繁琐、费时、易出 差错,因而程序编写也有一定的难度。 高级语言 高级语言的表示方法要比低级语言更接近于待 解的问题,其特点是在一定程度上与具体机器无关, 易学、易用、易维护。高级语言的实现极大的提高 了软件的生产效率。
6.1 程序设计语言的选择
三、高级语言的分类
1. 按应用范围分: 通用语言有:PASCAL、C、C++、Java等 专用语言有:APT等 2. 按用户的要求分为: 过程式语言和非过程式语言; 3. 按使用方式分: 交互式语言和非交互式语言; 4.按语言的内在特点分: 系统实现语言 静态高级语言 块结构高级语言;
1. 代码文件
符号名的命名。尽量用与实际意义相同或接近的标 识符命名。 源程序中的注释 注释可分为序言性注释和解释性注释。错误的注 释宁可不要。 注意源程序的书写格式
2.语句构造方法 语句构造,尤其是流程控制语句的构造技术,直 接影响到程序的可读性及效率。应采用直接、清晰的 构造方式,而不要为了提高效率或者显示技巧而降低 程序的清晰性和可读性。 例1 若有以下C程序段,其功能是要建立一个N×N的 单位矩阵V:
⑵寻求软件设计结构中的 “关键路径” 和 “关键事件”。仔细的设计该模块的实现算法。 ⑶选择合适的高级编程语言,提高程序的编译 效率。 ⑷在效率和实现功能之间寻求平衡点。所谓的 平衡点指的是,不要求为了一些不必要的功能而耗 费大量的时间,从而降低效率,以致得不偿失。
6.3 程序设计风格
讨论程序设计风格,是力图从编码原则的角度来探 讨提高程序的可读性、改善程序质量的方法和途径。