流程圖是算法的圖形化描述。俗話說:一張圖勝過千言萬語,用流程圖可以清晰地描述出算法的思路和過程。
● 從生活中認識流程圖
說到流程圖,同學們可能會感到比較陌生和不理解,其實我們在生活中,經常會看到流程圖,也會讀懂流程圖,並能按照流程圖的要求去執行流程圖中的各個步驟。
例如:現在家庭中一般都有電冰箱、洗衣機等家用電器,家用電器包裝箱裡面都會附帶使用說明書,使用說明書包含了產品的使用方法、注意事項以及一般故障排除流程等內容,當家用電器發生故障時,可以先根據使用說明書的故障排除流程進行故障檢查,多半故障原因是因使用不當造成的。下圖是某一洗衣機不啟動的故障原因排除流程圖:
流程圖明確給出了排除因使用不當原因而造成洗衣機不啟動故障的排查方法和流程,可以參照流程圖給出的步驟,逐步排查洗衣機不能啟動的原因。
按照流程圖給出的步驟:
第一步需要檢查電源是否接通,如果電源有問題,則解決電源問題後,故障排除。如果電源沒有問題,則進入第二個步驟。
第二步需要檢查洗衣機門是否關嚴,如果洗衣機門沒有關嚴,則關嚴洗衣機門,故障排除。如果洗衣機門已關嚴,則進入第三個步驟。
第三步需要檢查洗衣機進水部分,查看水龍頭是否打開,沒有水壓,洗衣機也不能啟動,如果水龍頭沒有打開,則打開水龍頭,故障排除。如果水龍頭已打開且有水壓,則進入第四個步驟。
第四步需要檢查是否按下了啟動鍵並有蜂鳴聲,如果沒有按下啟動鍵,則按下啟動鍵,故障排除。如果已按下啟動鍵且有蜂鳴聲,則需要給售後服務打電話報修。
● 認識流程圖的符號
在第一節什麼是電腦程式和本節都給出了流程圖樣例,看了這麼多流程圖,同學們一定很奇怪,流程圖的橢圓框、菱形框、平行四邊形、長方形以及帶線的箭頭都表示什麼意義?畫流程圖是不是可以用其它形狀畫呢?
其實,流程圖是可以允許用其它圖形符號畫的,只要自己能看明白,能記住流程就行。問題是,如果你希望其他人也能看懂你的流程圖,可能就有點麻煩了,你需要給他們解釋你流程圖中採用的每個圖形所表示的含義是什麼,當需要給多個人解釋時,這時你一定在想,如果這些圖形表示的含義他們都知道該多好,就不用我一個個去講,去溝通了。
因此,規範的流程圖可以幫助人們對流程的統一認識,便於溝通和討論,有助於工作效率的提高。它使用一組預定義的符號來說明如何執行特定任務,這些預先定義的符號已經標準化,從而讓全世界的開發人員都可以採用這些符號而不會引起混淆。表1-1對流程圖中使用的符號進行了匯總。
● 繪製流程圖
在第二節什麼是程序算法中,我們留了一道習題,思考一個計算長方形面積的簡單問題,這個問題我們可以用流程圖來表示。
問題的解決可分為下面幾個步驟:
1) 設置num1和num2兩個變量,用於存儲用戶輸入的長度和寬度,設置result變量用來存儲num1和num2的乘積。變量用於存儲值,程序可修改這個值,後面Java語法會詳細講解;
2) 接受用戶輸入的長度和寬度,並存儲到num1和num2兩個變量;
3) 判斷num1和num2是否大於0,如果大於0,繼續下一個步驟,否則提示用戶重新輸入長度和寬度;
4) 計算num1和num2的乘積,並將乘積結果存儲到result變量;
5) 顯示result變量的值到屏幕。
流程圖可以採用多個工具軟體進行繪製,下面所列是常用的繪製流程圖的工具軟體,建議使用Microsoft Visio軟體繪製,本課程流程圖採用Microsoft Visio軟體繪製,流程圖見圖1-5。繪製步驟參見配套視頻。
(1)Microsoft Visio 2010或更高版本
(2)在線流程圖繪製工具processon.com
(3)PPT、Word等軟體
使用圖形表示算法是非常好的思路,繪製流程圖的過程就是整理思路的過程。通過繪製流程圖,可以對算法進行一次完整的梳理,及時發現問題,調整思路。流程圖一定要有開始和結束;菱形框表示判斷,判斷必須有兩個分支,或者滿足條件或者不滿足條件;平行四邊形框表示輸入輸出框,用於輸入數據和輸出數據的處理;矩形框表示處理過程,用於數值計算和業務處理;引線表示流程的方向。
思考一個計算三個數中,求最大值的問題,要解決這個問題,需執行那些步驟?並繪製流程圖。
要求:接受用戶輸入的三個數值,判斷輸入的三個數值不能為零,求出最大值,將計算結果顯示到顯示器上。