目录
一、程序设计语言
分类:汇编语言、高级语言
机器语言 、汇编语言第一第二代计算机用
高级语言:同一个问题,高级语言编码可鄙汇编少3——7倍
按照软件工程的分类,语言的发展分为:
三个阶段---面向机器的语言、高级语言、甚高级语言
四代---机器语言(1)、汇编语言(2)、高级语言(3)、甚高级语言(4)
高级语言分为:系统实现语言、静态高级语言、块结构高级语言、动态高级语言
语言的选择
1、不同的应用领域选择不同的语言
2、系统用户的要求觉决定:用户使用它们熟悉的语言或操作
3、可以使用的编译程序:运行目标系统的环境中可以提供的编译程序限制了对语言的选择
4、程序员的经验和知识
5、软件可移植性要求
6、当工程规模很大时,而有没有完全合适的语言,可编一个专用的语言
7、算法与计算复杂性,软件的可靠性
8、数据结构的复杂性,付按揭的可维护性
9、小路的考虑
10、了解语言的发招前景
选择语言的原则:最少工作量原则、最少技巧性原则、最少错误原则、最少维护原则、最少记忆原则
总原则:1-先求正确后求快 2-先求清晰后求快 3-求快不忘保持程序正确 4-保持程序整洁以求快 5-不要因效率而牺牲清晰
好程序的标准:1-易于测试和调试 2-易于维护 3-易于修改 4-设计简单 5-高效率
二、结构化程序设计
1-在编写程序时,强调使用集中基本控制结构
2-在程序设计过程中尽量采用自顶向下和逐步细化的原则,又粗到细,一步步展开
主要原则
使用语言中的顺序、选择、循环等有限的基本控制结构表示程序逻辑
选用的控制结构只准许单入口、单出口
复杂结构应该用基本结构控制结构进行组合嵌套来实现
三、程序设计风格
源程序文档化
标识符的命名
安排注释
程序的视觉组织
数据说明
数据说明的次序应当规范化
说明语句中变量安排有序化
使用注释说明复杂数据结构
语句结构
语句构造-力求简单、直接,不能为了片面准求效率而使语句复杂化
一行内只写一条语句
程序编写首先应当考虑清晰性
程序要能直接了当地说明程序员的用意
除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二
首先保证程序正确然后才要求提高速度
避免使用临时变量而使可读性下降
让编译程序做简单的优化
尽可能使用库函数
避免不必要的转移,同时如果能保持程序可读性,则不必用GO TO 语句
尽量只采用三种基本的控制结构来编写程序
避免使用空的ELSE语句和IF…THEN IF…语句,这种结构容易使读者产生误解
避免采用过过于复杂的条件测试
尽量减少使用“否定”条件的条件语句
尽可能用通俗易懂的伪码来描述程序的流程,然后再翻译成必须使用的语言
数据结构要有利于程序的简化
要模块化
利用信息隐蔽,确保每一个模块的独立性
从数据出发去构造程序
不要修补不好的程序要重新编写
对太大的程序,要分块编写、测试,然后再集成
输入/输出方法
输入和输出信息是与用户的使用直接相关的,输入和输出的方式和格式应当尽可能方便用户的使用
满足 运行工程学的输入输出风格
输入:输入格式力求简单、一直,并尽可能采用自由格式输入;使用数据结束或文件结束标准来终止输入,不要让用户来计算输入的项数或记录数
输出:标志左右的输出数据,加必要的说明 -当用户使用程序时,可对用户做到”在线“帮助 -对可能产生重大后果的请求,先给出提示 -对所有输出的数据加标注 -发生错误时,能迅速恢复正常
程序设计质量评价
(一)正确性
程序中没有语法错误
程序运行时没有发现明确的运行错误
程序中没有不适当的语句
用有效的测试数据,得到程序的正确结果
用无效的测试数据, 得到程序的正确结果
用任何可能的数据使程序在运行时得到正确的结果
(二)结构清晰性
1、是否使用三种结构化格式表示程序的控制逻辑
2、是否有一个入口,一个出口
3、是否严格控制GOTO语句
(三)易修改性
(四)易读性
(五)简单性
四、程序的复杂性度量:
程序复杂性主要是指模块内程序的复杂性
代码行度量方法:方法的基本考虑时统计一个程序模块的源代码行数目,并以源代码行数座位程序复杂性的度量
McCabe度量法:又称环路复杂性度量,是一种计语程序控制流的复杂性度量方法