程序设计中自顶向下,逐步求精的方法

来源:互联网 发布:流量无限用软件 编辑:程序博客网 时间:2024/05/18 00:31

自顶向下设计

自顶向下设计, 一种逐步求精的设计程序的过程和方法。对要完成的任务进行分解,先对最高层次中的问题进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。这样逐层、逐个地进行定义、设计、编程和测试,直到所有层次上的问题均由实用程序来解决,就能设计出具有层次结构的程序。

这里写图片描述

自顶向下逐步求精的应用

简单的说, 自顶向下就是将复杂的,大的问题是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。

逐步求精可以理解为将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经若干步精化处理,最后到抽象到求解域中比较简单的编程问题。

我们举一个简单的C语言中的例子来阐述这种方法。
假如我们要用C输出如下的一个三角形:
这里写图片描述
首先,我们要分解看到的这幅图型。
这幅图共有四行,每行有若干“*”组成。
我们还能找出这些“*”个数的规律:第i行的星形个数为(2i - 1),且第i行的第一个星形前有(4 - i)个空格。
这样,我们就可以通过for循环实现这个三角形的输出:

#include<stdio.h>int main(void){   int i, j, k;   for(k = 1; k <= 4; k++)   {      for(i = 1; i <= 4 - k; ++i){        printf(" ");      }      for(j = 1; j <= 2 * k - 1; ++j){        printf("*");        }      printf("\n");   }  return 0;  }

实际上我们用了自顶向下的方法,把程序设计成了三个循环:
1)输出第i行
2)输出 4 - i 个空格
3)输出2 * i - 1个星型
而后,我们也可以试着引入一个函数,来更加“求精“这个程序:

#include<stdio.h>void printblank(int);void printstar(int);int main(void){    int i, j;    for(i = 1; i <= 4; i++){        printblank(4 - i);        printstar(2 * i - 1);        }       return 0;    }

使得程序更加清晰,每个模块更加简洁。
在程序设计的过程中,我们可以采用”伪码“等形式去实现程序“自顶向下”的逐步求精过程。

方法总结

自顶向下的方法可以总结为以下四个主要步骤:

  1. 分析问题
  2. 编写主要模块
  3. 编写其余模块
  4. 根据需要进行重组和改写
原创粉丝点击