简述“自顶向下,逐步求精”的方法
2017-11-30 16:50
288 查看
结构化程序设计支持“自顶向下, 逐步求精”的程序设计方法。
一般人眼中可能看到的只是一堆星星,而在程序员看来,要用分解的思想,整理出关于图的规律来,或者说,要学会会分层次地去看待这个问题。这就需要“自顶向下,逐步求精”的思维方式。
思路:
首先看到的是一张图片;
这张图片有10行;
每一行有若干个星号;
每一行星号的个数有以下规律:第 i 行星号的个数是2 * i - 1个。
那么,我们得到的算法如下:
1、输出10行星号
这是我们“自顶向下,逐步求精”的第一次分解:将一个图分成了若干行;
伪代码如下
“输出第i行”的问题还需要分解下去。实际上,输出“输出第i行”就是要“重复输出2*i-1个星号”,也可以用一个循环结构完成。
结合以上两段伪代码,我们就能得到该题的伪代码如下:
因此,用“自顶向下,逐步求精”的方法,我们得到该题的解答:
由该实践可以看出:将输出一个“星号组成的图案”,分解为“循环输出若干行”,找出各行的规律,能够逐步细化到“输出第i行”这个任务,最终问题细化到只输出一个字符’*’。
从“顶层”出发,“向下”(即编程中能直接实现的细节)考虑,“逐步”地“求精”得到用C++语句直接描述的程度。对复杂的问题,可能需要更多层次的分解。
想一想,我们做任何工作,对大学生活做宏观的规划、制定一天的学习计划、组织一次班级活动、将来的工程项目开发、做老板后策划一项商业活动……无论复杂还是简单,有意或无意地,都是在“自顶向下,逐步求精”的伟大思想的光芒中行走的。只是现在,你需要用心体会,让“自顶向下,逐步求精”的方法成为一种习惯,一种思维惯性。
什么叫作“自顶向下,逐步求精”呢?
“自顶向下”
将复杂的大问题分解为相对简单的小问题,找出每个问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。其核心本质是”分解”。“逐步求精”
将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块。求解过程可以划分为若干个阶段,在不同阶段采用不同的工具来描述问题。在每个阶段有不同的规则和标准,产生出不同阶段的文档资料。自顶向下,逐步求精的实践
在屏幕上输出如图所示的星号图形一般人眼中可能看到的只是一堆星星,而在程序员看来,要用分解的思想,整理出关于图的规律来,或者说,要学会会分层次地去看待这个问题。这就需要“自顶向下,逐步求精”的思维方式。
思路:
首先看到的是一张图片;
这张图片有10行;
每一行有若干个星号;
每一行星号的个数有以下规律:第 i 行星号的个数是2 * i - 1个。
那么,我们得到的算法如下:
1、输出10行星号
这是我们“自顶向下,逐步求精”的第一次分解:将一个图分成了若干行;
伪代码如下
i=1; while(i <= 10) { 输出第i行; 换行 i = i + 1; }
“输出第i行”的问题还需要分解下去。实际上,输出“输出第i行”就是要“重复输出2*i-1个星号”,也可以用一个循环结构完成。
j = 1; while(j <= 2 * i - 1) { 输出一个*; j = j + 1; }
结合以上两段伪代码,我们就能得到该题的伪代码如下:
i = 1; while(i <= 10) { j = 1; while(j <= 2 * i - 1) { 输出一个*; j = j + 1; } 换行 i = i + 1; }
因此,用“自顶向下,逐步求精”的方法,我们得到该题的解答:
#include <iostream> using namespace std; int main( ) { int i, j, n = 10; i = 1; while(i <= n) { j = 1; while (j <= 2 * i - 1) { cout << '*'; j++; } cout << endl; i++; } return 0; }
由该实践可以看出:将输出一个“星号组成的图案”,分解为“循环输出若干行”,找出各行的规律,能够逐步细化到“输出第i行”这个任务,最终问题细化到只输出一个字符’*’。
从“顶层”出发,“向下”(即编程中能直接实现的细节)考虑,“逐步”地“求精”得到用C++语句直接描述的程度。对复杂的问题,可能需要更多层次的分解。
想一想,我们做任何工作,对大学生活做宏观的规划、制定一天的学习计划、组织一次班级活动、将来的工程项目开发、做老板后策划一项商业活动……无论复杂还是简单,有意或无意地,都是在“自顶向下,逐步求精”的伟大思想的光芒中行走的。只是现在,你需要用心体会,让“自顶向下,逐步求精”的方法成为一种习惯,一种思维惯性。
相关文章推荐
- 简述“自顶向下,逐步求精”——面向过程程序设计方法
- “自顶向下,逐步求精“的方法简介
- 自顶向下,逐步求精的编程方法
- “自顶向下,逐步求精“的程序设计方法
- “自顶向下, 逐步求精”的程序设计方法。
- “自顶向下, 逐步求精”的程序设计方法。
- 分治法--“自顶向下,逐步求精”的程序设计方法
- 自顶向下逐步求精的程序设计方法
- 自顶向下,逐步求精的程序设计方法
- “自顶向下 逐步求精”的设计方法
- 自顶向下,逐步求精(Top-down)的程序设计方法简介
- “自顶向下,逐步求精”方法简要介绍
- “自顶向下, 逐步求精”的程序设计方法
- “自顶向下,逐步求精”方法介绍
- 程序设计中自顶向下,逐步求精的方法
- 自顶向下,逐步求精:从洗衣机工作程序看面向过程程序设计方法
- 介绍“自顶向下,逐步求精”的方法
- “自顶向下,逐步求精”思想方法的介绍
- 浅谈‘’自顶向下,逐步求精‘’方法
- 深入“自顶向下,逐步求精”——面向过程程序设计方法