打印
[应用相关]

【转】关于结构化程序设计

[复制链接]
706|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一代掌门|  楼主 | 2017-1-9 12:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
来自百度百科:
内容

详细描述处理过程常用三种工具:图形、表格和语言。
图形:程序流程图、N-S图、PAD图
表格:判定表
语言:过程设计语言(PDL)
结构化程序设计曾被称为软件发展中的第三个里程碑。该方法的要点是:
(1) 主张使用顺序、选择、循环三种基本结构来嵌套连结成具有复杂层次的“结构化程序”,严格控制GOTO语句的使用。用这样的方法编出的程序在结构上具有以下效果:
a. 以控制结构为单位,只有一个入口,一个出口,所以能独立地理解这一部分。
b. 能够以控制结构为单位,从上到下顺序地阅读程序文本。
c.由于程序的静态描述与执行时的控制流程容易对应,所以能够方便正确地理解程序的动作。
(2)“自顶而下,逐步求精”的设计思想,其出发点是从问题的总体目标开始,抽象低层的细节,先专心构造高层的结构,然后再一层一层地分解和细化。这使设计者能把握主题,高屋建瓴,避免一开始就陷入复杂的细节中,使复杂的设计过程变得简单明了,过程的结果也容易做到正确可靠。
(3)“独立功能,单出、入口”的模块结构,减少模块的相互联系使模块可作为插件或积木使用,降低程序的复杂性,提高可靠性。程序编写时,所有模块的功能通过相应的子程序(函数或过程)的代码来实现。程序的主体是子程序层次库,它与功能模块的抽象层次相对应,编码原则使得程序流程简洁、清晰,增强可读性。[1]
(4) 主程序员组。
其中(1)、(2)是解决程序结构规范化问题;(3)是解决将大划小,将难化简的求解方法问题;(4)是解决软件开发的人员组织结构问题。

模型
结构化程序设计通常使用自上往下的设计模型,开发员将整个程序结构映射到单个小部分。已定义的函数或相似函数的集合在单个模块或字模块中编码,这意味着,代码能够更有效的载入存储器,模块能在其它程序中再利用。模块单独测试之后,与其它模块整合起来形成整个程序组织。
程序流程遵循简单的层次化模型,采用“for”、“repeat”、“while”等循环结构,鼓励使用“Go To”语句。几乎任何语言都能使用结构化程序设计技术来避免非结构化语言的通常陷阱。非结构化程序设计必须依赖于开发人员避免结构问题,从而导致程序组织较差。大多数现代过程式语言都鼓励结构化程序设计。[2]

基本结构[url=]编辑[/url]
结构化程序设计的三种基本结构是:顺序结构选择结构循环结构

顺序结构
顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。

选择结构
选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。

循环结构
循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环。
当型循环:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处。因为是"当条件满足时执行循环",即先判断后执行,所以称为当型循环。
直到型循环:表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断。因为是"直到条件为真时为止",所以称为直到型循环。

设计方法[url=]编辑[/url]

自顶向下
程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

逐步细化
对复杂问题,应设计一些子目标作为过渡,逐步细化。

模块化
一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。
限制使用goto语句 结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。作为争论的结论,1974年Knuth发表了令人信服的总结,并证实了:
(1)GOTO语句确实有害,应当尽量避免;
(2)完全避免使用GOTO语句也并非是个明智的方法,有些地方使用GOTO语句,会使程序流程更清楚、效率更高;
(3)争论的焦点不应该放在是否取消GOTO语句上,而应该放在用什么样的程序结构上。其中最关键的是,应在以提高程序清晰性为目标的结构化方法中限制使用GOTO语句。

结构化编码
所谓编码就是把已经设计好的算法用计算机语言表示,即根据已经细化的算**确写出计算机程序。结构化的语言(如 Pascal,C,QBASIC等)都有与三种基本机构对应的语句。

优缺点[url=]编辑[/url]

特点
结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。在程序的静态形式与动态执行流程之间具有良好的对应关系。

优点
由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。
按照结构化程序设计的观点,任何算**能都可以通过由程序模块组成的三种基本程序结构的组合:顺序结构、选择结构和循环结构来实现。
结构化程序设计的基本思想是采用"自顶向下,逐步求精"的程序设计方法和"单入口单出口"的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;"单入口单出口"的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序来。
①整体思路清楚,目标明确。
②设计工作中阶段性非常强,有利于系统开发的总体管理和控制。
③在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷。

缺点
①用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。
②用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。
③系统的开发周期长。

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

191

帖子

4

粉丝