下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

结构化程序设计知识要点

作者:课课家教育     来源: http://www.kokojia.com点击数:2241发布时间: 2017-06-28 09:02:50

标签: 结构化程序设计计算机系统开发网络工程师

想学设计?来看看大师是如何完成作品的?

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

结构化程序设计?

  面向对象程序设计的雏形早在1960年的Simula语言中就出现过。当时程序设计领域正面临一种危机:面对越来越复杂的软硬件系统,传统的以C语言为代表的面向过程程序设计思想已越来越无法满足现实的需要——面向过程的设计无法很好地描述整个系统,同时设计结果也让人难以理解,因而给软件的实现以及后期的维护带来了巨大的挑战,项目越大越难以实现,越到项目后期越难以实现,人们正陷入一场前所未有的软件危机中。为了化解这场软件危机,人们开始寻找能够消灭“软件危机”这头怪兽的“银弹(silverbullet)”。面向对象程序设计思想正是在这种背景下应运而生,它通过强调设计与实现的可扩展性和可重复性,成功地化解了这场“软件危机”。至此以后,面向对象的程序设计思想开始在业界大行其道,逐渐成为主流。而从C语言向C++的进化刚好就发生在这个时期,自然而然地,C++也就选择了支持面向对象程序设计思想。

  《人月神话》与银弹

  《人月神话》是软件领域里一本具有深远影响的著作。它诞生于软件危机的背景之下,而正是这本书提出了“银弹”的概念。

  在西方的神话传说中,只有被银弹击中心脏,才可以杀死怪兽。而在这本书中,作者把那些规模越来越大的、管理与维护越来越困难的软件开发项目比作传说中无法控制的怪兽,并希望有一项技术能够像银弹杀死怪兽那样,彻底地解决这场软件危机。

  其实,面向对象程序设计思想并不是完全意义上的银弹,它不可能解决所有大型软件项目所遇到的问题,但是它提出了一种描述软件的更加自然的方式,在一定程度上解决了这场软件危机。

      结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。作为争论的结论,1974年Knuth发表了令人信服的总结,并证实了:

    (1)GOTO语句确实有害,应当尽量避免;

    (2)完全避免使用GOTO语句也并非是个明智的方法,有些地方使用GOTO语句,会使程序流程更清楚、效率更高;

    (3)争论的焦点不应该放在是否取消GOTO语句上,而应该放在用什么样的程序结构上。其中最关键的是,应在以提高程序清晰性为目标的结构化方法中限制使用GOTO语句。

  6.1.1“自顶向下,逐步求精”的面向过程程序设计

  要想了解新的面对对象思想有什么优点,最简单直接的方式就是先看看旧的面向过程思想有什么缺点。回顾前面章节中曾经学过的例子,我们在解决问题时总是按照这样的流程:先提出问题;然后分析问题的处理流程;接着根据流程需要把一个大问题划分为几个小问题;如果细分后的小问题仍然比较复杂,则进一步细分,直到小问题可以简单解决为止;实现每个子模块,解决每个小问题;最后通过主函数按照业务流程次序调用这些子模块,最终解决整个大问题,如图6-1所示。像这样从问题出发,自顶向下、逐步求精的开发思想我们称为“面向过程程序设计思想”,它描述的主要是解决问题的“过程”。

  图6-1面向过程程序设计的流程

  面向过程程序设计思想诞生于20世纪60年代,鼎盛于20世纪80年代,是当时最为流行的程序设计思想。它的流行有其内在原因,跟当时其他程序设计思想相比,它有着明显的优势。

  1.程序仅由三种基本结构组成

  正如第4章中所介绍的程序流程控制结构一样,面向过程程序设计思想限定程序只有顺序、选择和循环这三种基本控制结构。任何程序逻辑,无论是简单的还是复杂的,都可以用这三种基本的控制结构经过不同的组合或嵌套来实现。这就使得程序的结构相对比较简单,易于实现和维护。

  2.分而治之,各个击破

  人们在解决复杂问题时,总是采用“分而治之”的策略,把大问题分解为多个小问题后,再“各个击破”并最终让大问题得到解决。面向过程程序设计思想也采取这种“分而治之”的策略,把较大的程序按照业务逻辑划分为多个子模块,然后分工逐个完成这些子模块,最后再按照业务流程把它们组织起来,最终使得整个问题得到解决。按照一定的原则,把大问题细分为小问题“各个击破”,符合人们思考问题的一般规律,其设计结果更易于理解,同时这种方法也更易于人们掌握。通过分解问题,降低了问题的复杂度,使得程序易于实现和维护。另外,部分分解后的小问题(子模块)可以重复使用,从而避免了重复开发。而多个子模块也可由多人分工协作完成,提高了开发效率。

  3.自顶向下,逐步求精

  面向过程程序设计思想倡导的方法是“自顶向下,逐步求精”。所谓“自顶向下,逐步求精”,就是先从宏观角度考虑,按照功能或者业务逻辑划分程序的子模块,定义程序的整体结构,然后再对各个子模块逐步细化,最终分解到程序语句为止。这种方法使得程序员能够全面考虑问题,使程序的逻辑关系清晰明了。它让整个开发过程从原来的考虑“怎么做”变成考虑“先做什么,再做什么”,流程也更加清晰。

  随着时代的发展,软件开发项目也越来越复杂。虽然面向过程程序设计思想有诸多优点,但在利用它解决复杂问题的时候,其缺点也逐渐暴露出来:在面向过程程序设计中,数据和操作是相互分离的,这就导致如果数据的结构发生变化,相应的操作函数就不得不重新改写;如果遇到需求变化或者新的需求,还可能涉及模块的重新划分,这就要修改大量原先写好的功能模块。面向过程程序设计中数据和操作相互分离的特点,使得一些模块跟具体的应用环境结合紧密,旧有的程序模块很难在新的程序中得到复用。这些面向过程程序设计思想的固有缺点使得它越来越无法适应大型的软件项目的开发,这真是“成也面向过程,败也面向过程”。于是,人们开始寻找一种新的程序设计思想。正是在这种情况下,一些新的程序设计思想开始不断涌现并逐渐取代面向过程程序设计思想,而面向对象程序设计思想就是其中的“带头大哥”。

  结构化程序设计的概念最早由E。W。Dijikstra在1965年提出的。它的主要观点是采用自顶向下、逐步求精的程序设计方法来对程序进行构造。结构化程序设计的概念、方法和支持这些方法的一整套软件工具,构成了结构化革命。这是存储程序计算机问世以来.对计算机界影响最大的一个软件概念,被称为软件发展中的第三个里程碑,其影响比前两个里程碑(子程序、高级语言)更为深远。

  结构化程序是由若干个基本结构组合而成,每一个结构可以包含若干条语句和其他基本结构。结构化程序设计中包含三种基本的结构:顺序结构、选择结构和循环结构由这三种基本控制结构进行构造。

  1顺序结构

  世界上的所有事情都是有顺序的,那么顺序结构当然也就表示程序中的各操作是按照它们出现的先后顺序执行的,其流程如图7-16所示。事实上,不论程序中包含了什么样的结构,而程序的总流程都是顺序结构的。

结构化程序设计知识要点_结构化程序设计_计算机系统开发_网络工程师_课课家教育

  2选择结构

  选择结构顾名思义,当程序到了一定的处理过程时,遇到了很多分支,无法按直线走下去,它需要根据某一特定选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行,选择结构有单选择、双选择和多选弹三种形式。双选择结构如图7-17所示。当语句1和语句3中的任意一个处理为空时,说明结构中只有一个可供选择的分支。也就是说,当条件不满足时,什么也没执行,所以称为单选择结构。

选择结构顾名思义,当程序到了一定的处理过程时,遇到了很多分支,无法按直线走下去,它需要根据某一特定选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行,选择结构有单选择、双选择和多选弹三种形式。双选择结构如图7-17所示。当语句1和语句3中的任意一个处理为空时,说明结构中只有一个可供选择的分支。也就是说,当条件不满足时,什么也没执行,所以称为单选择结构。

  3.循环结构

  不断的重复,被称作循环,所以这里的循环结构通常就是用来表示反复执行一个程序或某些操作的过程,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么时候可以执行循环?出现哪些操作需要循环执行?循环结构的基本形式有两种。当型循环和直到型循环,其流程如图7-18所示。虽然什么是结构化程序设计,至今还没有被普遍接受的定义。但是在软件程序设计中,不同编程员的编程效率不同,差异可达-个数量级。主程序员组是指以一个非常能干的程序员为中心,即主程序员,小组中剩余成员为主程序员提供其他能力和服务。主程序员组结构可以提高编程效率并尽量减少开发系统中不必要的人与人之间的通信连线。作为这种组织形式中的一个程序员,应具备程序设计的基本知识,对项目所在的领域有较深入的了解,熟悉开发的技术环境。能承担一定的程序编写,更为重要的是必须有高度的组织纪律性和团队精神,使自己的工作融人整个系统,与组内其他成员协调一致地工作。

不断的重复,被称作循环,所以这里的循环结构通常就是用来表示反复执行一个程序或某些操作的过程,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么时候可以执行循环?出现哪些操作需要循环执行?循环结构的基本形式有两种。

  结构化程序设计方法也称传统方法,它采用结构化技术(结构化技术分析结构化设计结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持机构化技术的运用

  (1)优点

  ①整体思路清楚,目标明确。

  ②设计工作中阶段性非常强,有利于系统开发的总体管理和控制。

  ③在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷。

  (2)缺点

  ①用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。

  ②用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。

  ③系统的开发周期长。

想了解更多详细内容,尽在课课家教育,我们期待您的咨询!

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程