分享

结构化程序设计思想...

 昵称15907169 2014-06-16

  程序设计方法经历了从传统的“面向过程设计”到目前被广泛接受的“面向对象设计”的过程。本节将讨论结构化程序设计。
  概念提出
  1976 年 N.Wirth 出版的名为 《Algorithms + Data Structure = Programs》的著作中,明确提出“算法”和“数据结构”是程序的两个要素,即程序设计主要包括两方面的内容。
  行为特性的设计:指完整地描述问题求解的全过程,并精确地定义每个解题步骤,这一过程即是“算法设计”
  结构特性的设计:指在问题求解的过程中,计算机所处理的数据、及数据之间联系的表示方法。
  根据上述定义,传统的程序设计方法可以归结为“程序=算法+数据结构”,将程序定义为处理数据的一系列过程。
  设计特点
  结构化程序设计方法SP(Structured Programming)的着眼点是“面向过程”。
  结构化程序设计特点是将程序中的数据与处理数据的方法分离。
  核心思想
  结构化程序设计方法的核心是“算法设计”,基本思想是:
  自顶向下和逐步细化的设计方法:将一个复杂任务按照功能进行拆分,并逐层细化到便于理解和描述的程度,最终形成由若干独立模块组成的树状层次结构,如下图所示。


  单入单出的控制结构:是指每个模块内部均用顺序、选择、循环结构来描述。
  应用举例
  举个较简单的例子:读入一组整数,要求统计其中正整数和负整数的个数。
  【分析】:
  该任务的顶层模块可设计为3块:
  读入数据(模块1);
  统计正、负数个数(模块2);
  输出结果(模块3);
  其中,模块2可继续细化为以下小块:
  正整数个数为0;负整数个数为0;
  取第一个数;
  重复执行以下步骤直到数据统计完。
  若该数大于0,正整数个数加1;
  若该数小于0,负整数个数加1;
  取下一个数。
  上述结构化程序设计的方法如下图所示:


  缺陷和不足
  结构化程序设计方法曾一度成为程序设计的主流方法。 但到20世纪80年代末,这种方法开始逐渐暴露出缺陷。主要表现在以下方面:
  难以适应大型软件的设计:在大型多文件软件系统中,随着数据量的增大,由于数据与数据处理相对独立,程序变得越来越难以理解,文件之间的数据沟通也变得困难,还容易产生意想不到“副作用”。
  程序可重用性差:结构化程序设计方法不具备建立“软件部件”的工具,即使是面对老问题,数据类型的变化或处理方法的改变都必将导致重新设计。这种额外开销与可重用性相左,称为“重复投入”。
  这些由结构化程序设计的特点所导致的缺陷,其本身无法克服!而越来越多的大型程序设计又要求必须克服它们,这最终导致了“面向对象”设计方法的产生。
  程序设计方法经历了从传统的“面向过程设计”到目前被广泛接受的“面向对象设计”的过程。本节将讨论结构化程序设计。

  概念提出
  1976 年 N.Wirth 出版的名为 《Algorithms + Data Structure = Programs》的著作中,明确提出“算法”和“数据结构”是程序的两个要素,即程序设计主要包括两方面的内容。
  行为特性的设计:指完整地描述问题求解的全过程,并精确地定义每个解题步骤,这一过程即是“算法设计”
  结构特性的设计:指在问题求解的过程中,计算机所处理的数据、及数据之间联系的表示方法。
  根据上述定义,传统的程序设计方法可以归结为“程序=算法+数据结构”,将程序定义为处理数据的一系列过程。
  设计特点
  结构化程序设计方法SP(Structured Programming)的着眼点是“面向过程”。
  结构化程序设计特点是将程序中的数据与处理数据的方法分离。
  核心思想
  结构化程序设计方法的核心是“算法设计”,基本思想是:
  自顶向下和逐步细化的设计方法:将一个复杂任务按照功能进行拆分,并逐层细化到便于理解和描述的程度,最终形成由若干独立模块组成的树状层次结构,如下图所示。


  单入单出的控制结构:是指每个模块内部均用顺序、选择、循环结构来描述。
  应用举例
  举个较简单的例子:读入一组整数,要求统计其中正整数和负整数的个数。
  【分析】:
  该任务的顶层模块可设计为3块:
  读入数据(模块1);
  统计正、负数个数(模块2);
  输出结果(模块3);
  其中,模块2可继续细化为以下小块:
  正整数个数为0;负整数个数为0;
  取第一个数;
  重复执行以下步骤直到数据统计完。
  若该数大于0,正整数个数加1;
  若该数小于0,负整数个数加1;
  取下一个数。
  上述结构化程序设计的方法如下图所示:


  缺陷和不足
  结构化程序设计方法曾一度成为程序设计的主流方法。 但到20世纪80年代末,这种方法开始逐渐暴露出缺陷。主要表现在以下方面:
  难以适应大型软件的设计:在大型多文件软件系统中,随着数据量的增大,由于数据与数据处理相对独立,程序变得越来越难以理解,文件之间的数据沟通也变得困难,还容易产生意想不到“副作用”。
  程序可重用性差:结构化程序设计方法不具备建立“软件部件”的工具,即使是面对老问题,数据类型的变化或处理方法的改变都必将导致重新设计。这种额外开销与可重用性相左,称为“重复投入”。
  这些由结构化程序设计的特点所导致的缺陷,其本身无法克服!而越来越多的大型程序设计又要求必须克服它们,这最终导致了“面向对象”设计方法的产生。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多