自頂向下,逐步求精

2021-08-11 09:09:06 字數 1460 閱讀 6147

有時,我們會遇到一些很複雜的問題,不知道該如何下手去解決。這篇部落格將會介紹「自頂向下,逐步求精」這一方法,從而使複雜的問題簡單化,方便我們去解決。

其實這一方法的基本思路就是將問題分解。「自頂向下」,其實就是按照一定的順序,把乙個大問題分解成很多的小問題,確保我們對這些小問題有充分的把握能夠解決。而「逐步求精」,就是盡可能地將現實問題轉化為邏輯空間或求解空間的問題,進而轉化成簡單的程式設計問題。

下面,我將以洗衣機為例,嘗試運用這種方法解決問題。

首先,我們可以把洗衣機洗衣服這一大問題分解為小問題。

(1)使用者選擇注水量

(2)注水, 水位計計水位

(3)浸泡, 計時器計時

(4)電機轉動, 先左轉後右轉,計時器計時

(5)排水, 水位計計水位

(6)結束

接下來,我們要考慮用偽**來實現。我們要定義一些相關的函式。

waterinswitch(openclose) // open 開啟上水開關, close關閉

wateroutswitch(openclose) // open 開啟排水開關, close關閉

getwatervolume() //返回洗衣機內部水的高度

*motorrun(direction) // 電機轉動。 left左轉, right右轉, stop停

timecounter() // 返回當前時間計數,以秒為單位

halt(returncode) *//停機, success 成功 failure 失敗

然後寫出了一下的偽**,成功用**實現了洗衣機洗衣服這一問題。

read 使用者選擇的注水量

waterinswitch(open)

repeat

注水until getwatervolume()=使用者選擇的注水量

waterinswitch(close)

repeat

浸泡until timecounter()=預設時間

while (電機工作時間 > 0)

repaet

motorrun(left)

motorrun(right)

電機工作時間 --

endwhile

while (getwatervolume() != 0)

wateroutswitch(open)

endwhile

wateroutswitch(close)

halt(returncode)

通過這一事例,我們應該能明白「自頂向下,逐步求精」這一方法在解決問題中給我們帶來的好處了吧。

感謝閱讀!

自頂向下,逐步求精

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

自頂向下,逐步求精

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

自頂向下,逐步求精

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