自顶向下,逐步求精

自顶向下,逐步求精是结构化程序设计常用的方法。其中:
自顶向下是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。
逐步求精是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经抽象化处理变为相对比较简单的问题。经若干步抽象(精化)处理,最后到求解域中只是比较简单的编程问题。
主要步骤大概是以下图表

自顶向下,逐步求精

可以看到,求精过程有四种技术:顺序、循环、分支选择和递归。
这种结构化程序设计方法好处有:
1.程序层次分明,结构清晰;
2.便于集体开发程序;
3.便于调试。

经典案例:在屏幕上输出如图所示的星号图形
自顶向下,逐步求精

程序员不能只看到一堆星星,要用分解的思想,整理出关于图的规律来,或者说,会分层次地看这个问题。这要训练“自顶向下,逐步求精”的思维方式。
思路:首先看到的是一个图;这个图有6行;每一行有若干个星号。可喜的是,每一行星号的个数还有规律:第i行星号的个数是2*i-1个!
伪代码:
程序片段(1)
i=1;
While(i<=6)
{
输出第i行;
换行
i=i+1;
}
“输出第i行”的问题还需要分解下去。实际上,输出“输出第i行”就是要“重复输出2*i-1个星号”,也用一个循环结构完成。
j=1;
程序片段(2)
While(j<=2*i-1)
{
输出一个*;
j=j+1;
}
将程序片段(1)中的“输出第i行”替换为程序片段(2),整个算法也就清晰了。

通过使用自顶向下,逐步求精的方法,可以极大的简化我们的程序设计,并使代码更加清晰有条理性,希望大家能够在以后的学习中多培养此类思路。