簡述「自頂向下,逐步求精」的方法

2021-08-11 14:06:16 字數 1604 閱讀 3783

結構化程式設計支援「自頂向下, 逐步求精」的程式設計方法。

「自頂向下」

將複雜的大問題分解為相對簡單的小問題,找出每個問題的關鍵、重點所在,然後用精確的思維定性、定量地去描述問題。其核心本質是」分解」。

「逐步求精」
將現實問題經過幾次抽象(細化)處理,最後到求解域中只是一些簡單的演算法描述和演算法實現問題。即將系統功能按層次進行分解,每一層不斷將功能細化,到最後一層都是功能單

一、簡單易實現的模組。求解過程可以劃分為若干個階段,在不同階段採用不同的工具來描述問題。在每個階段有不同的規則和標準,產生出不同階段的文件資料。

在螢幕上輸出如圖所示的星號圖形

一般人眼中可能看到的只是一堆星星,而在程式設計師看來,要用分解的思想,整理出關於圖的規律來,或者說,要學會會分層次地去看待這個問題。這就需要「自頂向下,逐步求精」的思維方式。

思路:首先看到的是一張;

這張有10行;

每一行有若干個星號;

每一行星號的個數有以下規律:第 i 行星號的個數是2 * i - 1個。

那麼,我們得到的演算法如下:

1、輸出10行星號

這是我們「自頂向下,逐步求精」的第一次分解:將乙個圖分成了若干行;

偽**如下

i=1;  

while(i

<= 10)

「輸出第i行」的問題還需要分解下去。實際上,輸出「輸出第i行」就是要「重複輸出2*i-1個星號」,也可以用乙個迴圈結構完成。

j = 1;  

while(j

<= 2 * i - 1)

結合以上兩段偽**,我們就能得到該題的偽**如下:

i = 1;  

while(i

<= 10)

換行 i = i + 1;

}

因此,用「自頂向下,逐步求精」的方法,我們得到該題的解答:

#include 

using

namespace

std;

int main( )

cout

<< endl;

i++;

}return

0;}

由該實踐可以看出:將輸出乙個「星號組成的圖案」,分解為「迴圈輸出若干行」,找出各行的規律,能夠逐步細化到「輸出第i行」這個任務,最終問題細化到只輸出乙個字元』*』。

從「頂層」出發,「向下」(即程式設計中能直接實現的細節)考慮,「逐步」地「求精」得到用c++語句直接描述的程度。對複雜的問題,可能需要更多層次的分解。

想一想,我們做任何工作,對大學生活做巨集觀的規劃、制定一天的學習計畫、組織一次班級活動、將來的工程專案開發、做老闆後策劃一項商業活動……無論複雜還是簡單,有意或無意地,都是在「自頂向下,逐步求精」的偉大思想的光芒中行走的。只是現在,你需要用心體會,讓「自頂向下,逐步求精」的方法成為一種習慣,一種思維慣性。

自頂向下,逐步求精

簡單來說,自頂而下,逐步求精 這是一種分解複雜任務的方法。學會分解任務,超級大分為大的 中的 小的 超小的,直到能用很直接的方法解決。是程式設計裡面很經典的方法。驗證哥德 猜想 任何乙個大於等於4的偶數均可以表示為兩個素數之和 第一步 設一上限數m,驗證從4到m的所有偶數是否能被 分解為兩個素數之和...

自頂向下,逐步求精

由於軟體導論課程的安排,我們已經學到了演算法結構的問題,所以今天我給大家介紹一下top down design。高亮宗旨!重點敲黑板 畢業聚餐點菜 很明顯 點菜就是你的big project,我們要將其分解成各個小任務從而求得實現。1.了解班級人數 2.了解少數名族同學的口味禁忌 3.了解各位同學的...

自頂向下,逐步求精

自頂向下,逐步求精是結構化程式設計常用的方法。其中 自頂向下是將複雜 大的問題劃分為小問題,找出問題的關鍵 重點所在,然後用精確的思維定性 定量地去描述問題。逐步求精是將現實世界的問題經抽象轉化為邏輯空間或求解空間的問題。複雜問題經抽象化處理變為相對比較簡單的問題。經若干步抽象 精化 處理,最後到求...