结构化编程(SP,structured programming)

简介:

        结构化编程又叫结构化程序设计。

        结构化程序设计是进行以模块功能处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。

        结构化程式设计(英语:Structured programming),是一种编程典范。也是一种解决问题的思想和方法。它采用子程序、程式码区块(block structures)、for循环以及while循环等结构,来取代传统的 goto。希望借此来改善计算机程序的明晰性、品质以及开发时间,并且避免写出面条式代码。

        代码过度使用GOTO语句而不是结构化编程结构,从而导致错综复杂和不可维护的程序,通常称为意大利面条代码。        

        “面条式代码(Spaghetti code)是软件工程中反面模式的一种,是指一个代码的控制结构复杂、混乱而难以理解,尤其是用了很多GOTO、例外、线程、或其他无组织的分歧架构。

基本结构:

        结构化程序设计的三种基本结构是:顺序结构、选择结构和循环结构

  • 顺序结构 :顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。顺序结构的程序又称简单程序,这种结构的程序是顺序执行的,无分支,无转移,无循环,程序本身的逻辑很简单,它只依赖于计算机能够顺序执行指令(语句)的特点,只要语句安排的顺序正确即可。
  • 选择结构 :选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。
  • 循环结构 :循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环。
    • 当型循环:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处。因为是"当条件满足时执行循环",即先判断后执行,所以称为当型循环。
    • 直到型循环:表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断。因为是"直到条件为真时为止",所以称为直到型循环。
       

基本结构图示

 循环结构又包括:当型循环(While型)、直到型(Until):

 结构化程序设计方法

  1. 自顶而下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。
  2. 逐步细化:对复杂问题,应设计一些子目标作为过渡,逐步细化。
  3. 模块化设计:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。
  4. 结构化编码

        结构化程序设计提出的原则可以归纳为32个字:

  • 自顶向下,逐步细化;
  • 清晰第一,效率第二;
  • 书写规范,缩进格式;
  • 基本结构,组合而成。

特点

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

优点

        由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。

        按照结构化程序设计的观点,任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合:顺序结构、选择结构和循环结构来实现。

        结构化程序设计的基本思想是采用"自顶向下,逐步求精"的程序设计方法和"单入口单出口"的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图; "单入口单出口"的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序来。

  1. 整体思路清楚,目标明确。
  2. 设计工作中阶段性非常强,有利于系统开发的总体管理和控制。
  3. 在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷。

缺点

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

面向对象的设计方法会取代结构化程序设计方法?

        程序设计方法经历了从传统的“面向过程设计”到目前被广泛接受的“面向对象设计”的过程。方法的改变源自认识的改变。但即使是谬误也会以某种方式显示真理。而且,我觉得面向对象的设计方法是对结构化编程的优化、升级,而不是完全取代。结构化编程是更基础的思想方法。 

        1976 年 N.Wirth 出版的名为 《Algorithms + Data Structure = Programs》的著作中,明确提出“算法”和“数据结构”是程序的两个要素,即程序设计主要包括两方面的内容。  

  • 行为特性的设计:指完整地描述问题求解的全过程,并精确地定义每个解题步骤,这一过程即是“算法设计”  
  • 结构特性的设计:指在问题求解的过程中,计算机所处理的数据、及数据之间联系的表示方法。

        根据上述定义,传统的程序设计方法可以归结为“程序=算法+数据结构”,将程序定义为处理数据的一系列过程。

        世界观决定方法论。正是有了上述对程序设计的认识,才会产生结构化编程的方法论。

常见的程序设计思想

  • 模块化程序设计(modular programming)。简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。逐步求精的结果是得到一系列以功能块为单位的算法描述。以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。将项目进行划分,每个函数负责实现一部分功能。
  • 自顶向下编程(top-down)。先对整个系统有个了解,从高层次进行任务的划分,将大任务不断划分成小任务,每个小任务留到下一级进行处理。
  • 自底向上编程(bottom-up)。从底层开始,一步步合并成整体。
  • 结构化编程(structured)。主张使用顺序、选择、循环三种基本结构来嵌套连结成具有复杂层次的“结构化程序”,严格控制GOTO语句的使用。单出入口。自顶向下,逐步求精的思想。
  • 面向过程编程(procedure-oriented programming)。将问题划分成一系列小问题,用不同的函数来完成各个问题,采用的是top-down。这种编程方法强调做事情(函数),但是很少关注于数据的流动。全局的数据可以被所有函数访问和修改,这就导致了数据的不安全性以及当某个函数不小心修改了数据之后我们很难判断到底是哪个函数的问题。此外面向过程的编程不能很好对真实问题建模,因为它不是确切的对应问题的实体element。
  • 面向对象编程(object-oriented programming)。基于POP的缺点,OOP不允许数据在各个函数之间自由流动,它将数据和对数据进行操作的函数联系得更紧密。OOP将现实世界中的实体分解成对象,对象A包含数据A和函数A,数据A被隐藏起来并不被其他对象所访问,其他对象要访问数据A只能通过函数A,对象间的通讯由函数来完成。采用的是bottom-up。
     
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
结构化程序设计简介   •结构化程序设计方法主张按功能来分析系统需求,其主要原则可概括为自顶向下,逐步求精,模块化等。结构化 程序设计首先采用结构化分析(Structrued Analysis,即SA)方法对系统进行需求分析,然后使用结构化设计 (Structrued Design,即SD)方法对系统进行概要设计、详细设计,最后采用结构化编程(Structrued Program,即SP)方式来实现系统。使用这种SA、SD和SP的方式可以较好的保证软件系统的开发进度和质量。   •因为结构化程序设计方法主张按功能把软件系统逐步细分,因此这种方法也被成为面向功能的程序设计方法;结 构化程序设计的每个功能都负责对数据进行一次处理,每个功能都接受一些数据,处理完后输出一些数据,这种处理方 式也被称为面向数据流的处理方式。 结构化程序设计的局限性    •设计不够直观,与人类习惯思维不一致。采用结构化程序分析、设计时,开发者需要将客观世界模型分解成一个 一个功能,每个功能用以完成一定的数据处理。   •适应性差,可扩展性不强。由于结构化设计采用自顶而下的设计方式,所以当用户的需求发生改变,或需要修改 现有的实现方式时都需要自顶而下地修改模块结构,这种方式的维护成本相当大。 程序的三种结构      •结构化程序设计非常强调实现某个功能的算法,而算法的实现过程是由一系列操作组成的,这些操作之间的执行 次序就是程序的控制结构。1996年,计算机科学家Bohm和Jacopini证明了这样的事实:任何简单或复杂的算法都可 以由三种结构组成     –顺序结构     –选择结构     –循环结构这   •这三种结构就被称为程序设计的三种基本结构,也是结构化程序设计必须采用的结构 顺序结构 。。。。。。。。。。。。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值