2.11 结构化程序设计思想

程序设计方法经历了从传统的“面向过程设计”到目前被广泛接受的“面向对象设计”的过程。本节将讨论结构化程序设计。

概念提出

1976 年 N.Wirth 出版的名为 《Algorithms + Data Structure = Programs》的著作中,明确提出“算法”和“数据结构”是程序的两个要素,即程序设计主要包括两方面的内容。
  • 行为特性的设计:指完整地描述问题求解的全过程,并精确地定义每个解题步骤,这一过程即是“算法设计”
  • 结构特性的设计:指在问题求解的过程中,计算机所处理的数据、及数据之间联系的表示方法。

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

设计特点

  • 结构化程序设计方法SP(Structured Programming)的着眼点是“面向过程”。
  • 结构化程序设计特点是将程序中的数据与处理数据的方法分离

核心思想

结构化程序设计方法的核心是“算法设计”,基本思想是:
  • 自顶向下和逐步细化的设计方法:将一个复杂任务按照功能进行拆分,并逐层细化到便于理解和描述的程度,最终形成由若干独立模块组成的树状层次结构,如下图所示。(查看动画演示)
    2.11 结构化程序设计思想_第1张图片
  • 单入单出的控制结构:是指每个模块内部均用顺序、选择、循环结构来描述。

应用举例

举个较简单的例子:读入一组整数,要求统计其中正整数和负整数的个数。

【分析】:
  1. 该任务的顶层模块可设计为3块:
  2. 读入数据(模块1);
  3. 统计正、负数个数(模块2);      
  4. 输出结果(模块3);

其中,模块2可继续细化为以下小块:
  1. 正整数个数为0;负整数个数为0;
  2. 取第一个数;
  3. 重复执行以下步骤直到数据统计完。
    • 若该数大于0,正整数个数加1;
    • 若该数小于0,负整数个数加1;
    • 取下一个数。

上述结构化程序设计的方法如下图所示:( 查看动画演示
2.11 结构化程序设计思想_第2张图片

缺陷和不足

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

这些由结构化程序设计的特点所导致的缺陷,其本身无法克服!而越来越多的大型程序设计又要求必须克服它们,这最终导致了“面向对象”设计方法的产生。

你可能感兴趣的:(2.11 结构化程序设计思想)