程序设计基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章程序设计基础
2.1程序设计方法与风格
程序设计是一门艺术,需要相应的理论、技术、方法和工具来支持。就程序设计方法和技术的发展而言,主要经过了结构化程序设计和面向对象程序设计阶段。
除了好的程序设计方法和技术外,程序设计风格也是很重要的。因为程序设计风格会深刻地影响软件的质量和可维护性,良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护,因此程序设计风格对保证程序的质量是很重要的。
一般来说,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序是由人来编写的,为了测试和维护程序,往往还要阅读和跟踪程序,因此程序设计的风格总体而言应该强调简单和清晰,程序必须是可理解的。可以认为,著名的“清晰第一,效率第二”的论点已成为当今主导程序设计风格。
要形成良好的程序设计风格,主要应注重和考虑下述一些因素。
1、源程序文档化
源程序文档化应考虑如下几点:
(1)符号名的命名:符号名的命名应具有一定实际意义,以便于对程序功能的理解。
(2)程序注释:正确的注释能够帮助读者理解程序。注释一般包括序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,它给出程序的整体说明,主要描述内容包括:程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期、修改日期等。功能性注释的位置一般嵌在源程序体之中,主要描述其后的语句或程序做什么。
(3)视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。
2、数据说明的方法
在编写程序时,需要注意数据说明的风格,以便使程序中的数据说明更易于理解和维护。一般应注意以下几点:
(1)数据说明的次序规范化。鉴于程序理解、阅读和维护的需要,使数据说明次序固定,可以使数据的属性容易查找,也有利于测试、排错和维护。
(2)说明语句中变量安排有序化。当一个说明语句说明多个变量时,变量按字母顺序排列为好。
(3)使用注释来说明复杂数据的结构。
3、语句的结构
程序应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。一般应注意如下:
(1)在一行内只写一条语句;
(2)程序编写应优先考虑清晰性;
(3)除非对效率有特殊要求,程序编写要做到清晰第一,效率第二;
(4)首先要保证程序正确,然后才要求提高速度;
(5)避免使用临时变量而使程序的可读性下降;
(6)避免不必要的转移;
(7)尽可能使用库函数;
(8)避免采用复杂的条件语句;
(9)数据结构要有利于程序的简化;
(10)尽量减少使用“否定”条件的条件语句;
(11)要模块化,就使模块功能尽可能单一化;
(12)利用信息隐藏,确保每一模块的独立性;
(13)从数据出发去构造程序;
(14)不要修补不好的程序,要重新编写。
4、输入和输出
输入和输出信息是用户直接关心的,输入和输出方式和格式应尽可能方便用户的使用,因为系统能否被用户接受,往往取决于输入和输出的风格。无论是批处理的输入和输出方式,还是交互式的输入输出方式,在设计编程时都应考虑如下原则:
(1)对所有的输入数据都要检查数据的合法性;
(2)检查输入项的各种重要组合的合理性;
(3)输入格式要简单,以使得输入的步骤和操作尽可能简单;
(4)输入数据时,应允许使用自由格式;
(5)应允许缺省值;
(6)输入一批数据时,最好使用输入结束标志;
(7)在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息;
(8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输出加注释,并设计输出报表格式。
2.2结构化程序设计方法
由于软件危机的出现,人们开始研究程序设计方法,其中最受关注的就是结构化程序设计方法(Structured Programming)。所谓结构化程序设计方法是指采用顺序、分支和循环三种基本结构来实现算法。按照结构化程序设计方法设计出的程序结构良好,具有易读、易维护等优点。自顶向下、逐步求精和模块化是结构化程序设计方法中最典型、最具有代表性的方法。
2.2.1结构化程序设计的原则
1、自顶向下设计方法:是一种从顶层开始,向下逐层分解、逐步细化,直到最底一层达到最简单的功能模块为止的方法。这种方法能够使编程者思路清楚、有条不紊地一步一步深入地工作,用较短的时间设计出结构良好、可读性
强、可靠性较高的程序,并容易验证程序的正确性,便于维护。
2、逐步求精设计方法:是将一个抽象的问题分解成若干个相对独立的小问题,并逐级进行由抽象到具体,由粗到细,由表及里不断进行精细化的程序设计方法。每一步求精过程都将问题的算法进一步细化,直到算法精细化到可以用三种基本结构实现为止。
3、模块化设计方法:是指将一个复杂的问题,分解成许多功能单一、相对独立的模块,各模块之间按照层次结构联系起来构成模块结构图。在模块结构图中,每个模块用一个矩形框表示,框内写上每个模块的名称,模块之间的调用关系用带箭头的方向线表示。模块化设计方法的核心是如何划分模块,产生模块结构图。
4、限制使用GOTO语句:滥用确实有害,不用并非明智。
上述三种结构化程序设计方法各有其特点。逐步求精设计方法主要指一个程序的设计过程,它符合人们逻辑推理和思维的习惯。模块化设计方法和自顶向下设计方法主要指一个比较大的系统的设计过程,采取的是化整为零,各个击破的方法。将问题分割成若干个子问题,对子问题再进行分割,这样可将问题分割成一个模块层次结构。
关于GOTO语句:
(1)滥用GOTO语句确实有害,应尽量避免;:
(2)完全避免使用GOTO语句并非明智的方法,有时会使程序流程更清楚、效率更高;
(3)争论的焦点不应该放在是否取消GOTO语句,而应该放在用什么样的程序结构上。
其中最关键的是,肯定以提高程序清晰性为目标的结构化方法。
2.2.2结构化程序设计的基本结构与特点
结构化程序设计方法是程序设计的先进方法和工具。采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护。1966年,Boehm 和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
1、顺序结构:顺序结构是一种简单的程序设计,它是最基本、最常用的结构,如图2.1所示。顺序结构是顺序执行结构,所谓顺序执行,就是按照程序语句行的自然顺序,一条语句一条语句地执行程序。
2、选择结构:选择结构又称为分支结构,它包括简单选择和多分支选择结构,这种结构可以根据设定的条件,判断应该选择哪—条分支来执行相应的语句序列。
3、重复结构:重复结构又称为循环结构,它根据给定的条件,判断是否需要重复执行某一相同的或类似的程序段,利用重复结构可简化大量的程序行。在程序设计语言中,重复结构对应两类循环语句,对先判断后执行循环体的称为当割循环结构,对先执行循环体后判断的称为直到型循环结构。总之,遵循