自顶向下 逐步求精

本文探讨了如何编写计算机处理问题的程序,强调了将复杂问题分解为更小部分的重要性。通过自顶向下、逐步求精的方法,程序员可以更有效地解决问题。文中以输出星号图案为例,展示如何运用这种思维方式,从整体到部分,通过循环结构实现算法的编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个让计算机处理问题的程序应该怎么写呢?

处理一个问题的时候我们应该把问题分解,所以我们需要把一个问题一步步分解它.

  • 一个超级大问题 > 大问题 > 问题 > 小问题 > 不是问题的问题.

一个程序员学会把问题简单化是非常重要的,超大问题大问题小问题超小问题,知道用一个简单的办法解决问题.


这就是我们所说的: 自顶而下,逐步求精,采用自顶向下、逐步求精方法构造程序有如下优点:

1. 程序的层次分明、结构清晰。

2. 便于集体开发程序。对于大型程序来讲,可以每组负责一个模块(一个子部分),在一个组内又可以每个人负责一个子模块(更小的子部分)等等。而各个模块之间以及各个子模块之间相对独立,互相之间没有制约,各个模块的负责人员可以独立的进行各自的程序设计。

3. 便于调试。若程序有错误,可以很容易的将错误局部于某一子部分,找出错误,同时每一部分的错误是独立的,也不至于影响其它的部分。

  • 这种自顶向下、逐步求精的思维方式不是计算机程序员独有的。事实上在日常生活、工作中也经常的使用该技术,只不过不自觉或没意识到罢了。例如写一本书、或文章,总要作一个提纲,全书分成几章;然后对每一章又列出本章分几节;对每一节又分出几小节等等;最后再具体着手写每个小节。又如,设计生产某产品的一个工厂(比如汽车厂):首先应考虑全厂应该分成几个车间

简单的例子:

程序员不能只看到一堆星星,要用分解的思想,整理出关于图的规律来,或者说,会分层次地看这个问题。这要训练“自顶向下,逐步求精”的思维方式。
  思路:首先看到的是一个图;这个图有6行;每一行有若干个星号。可喜的是,每一行星号的个数还有规律:第i行星号的个数是2*i-1个!
  伪代码算法就出来了:

输出6行星星

这是我们“自顶向下,逐步求精”的第一次分解:将一个图分成了若干行;
输出6行用一个循环结构解决,循环每执行1次就输出1行,写成伪代码是:

//程序片段(1)
 i = 1;
while (i <= 6){
    输出第一行;
    换行;
    i ++;
}
  • “输出第i行”的问题还需要分解下去。实际上,输出“输出第i行”就是要“重复输出2*i-1个星号”,也用一个循环结构完成。
//程序片段(2)
j=1;  
While(j<=2*i-1){  
 输出一个*;  
 j=j+1;  
}  
  • 将程序片段(1)中的“输出第i行”替换为程序片段(2),整个算法也就清晰了。
i=1;  
While(i<=6){  
  j=1;  
  While(j<=2*i-1){  
    输出一个*;  
    j=j+1;  
  }  
 换行 i=i+1;  
}  

我们可以写出完整的算法,据此写程序也就容易了。无论用while语句,还是for语句

 //用while循环的程序  
#include <iostream>  
using namespace std;  
int main( ){  
  int i,j,n=6;//n可以赋别的值  
  i=1;  
  while(i<=n){  
    j=1;  
    while(j<=2*i-1){  
      cout<<'*';  
      j++;  
    }  
    cout<<endl;  
    i++;  
  }  
  return 0;  
}  

以上材料,部分来自网络.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值