自上而下,逐步求精

2021-08-11 11:28:46 字數 1438 閱讀 4335

自上而下,逐步求精是一種解決問題的途徑,「自上而下"的意思是將複雜、大的問題劃分為乙個乙個的小問題,找出問題的關鍵、重點所在,然後用精確的思維定性、定量地去描述問題。 而」逐步求精「是則將現實世界的問題經抽象轉化為邏輯空間或求解空間的問題,複雜問題經抽象化處理變為相對比較簡單的問題,經若干步抽象(精化)處理之後,最後到求解域中只是比較簡單的程式設計問題。

首先,先來看一段大體的偽**:

(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)

以上,大體介紹了這個方法,我們也可以提取一些共性功能模組(函式),簡化「正常洗衣」程式,使程式變得更利於人類理解和修改維護。例如:

wait(time) //等待指定的時間;

注水(volume,timeout) //在指定時間內完成注水,否則停機;

排水(timeout) //在指定的時間內完成排數,否則停機。

等等更多的子程式……

自頂向下,逐步求精

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

自頂向下,逐步求精

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

自頂向下,逐步求精

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