李家同教授相當重視流程圖規劃,並強調它與邏輯考思與撰寫程式的關聯性. 可是當今程式設計者願意在寫程式之前,花盡心思先規劃一頁完善的流程圖,簡直少之又少. 除非他的老闆上司強烈要求. 若是要將優化的程式碼或除錯後的原始碼同步更新回原來的流程圖,那可是難上加難.
為什麼大家都認為很重要但實施起來卻很困難呢?
作者從事撰寫程式工作非常多年,一直苦思這個問題,直覺認為必定有一段失落的環節.最後終於在W. L. Kocay & D. L. Kreher合著的Graphs, Algorithms, and Optimization一書中找到靈感,歸納一些經驗與建議,提供給後進初學者參考,讓他們在剛進入這個領域就能了解流程圖與程式碼之間的關聯性,養成將問題解析清楚後,將合乎邏輯的流程圖繪製出來,最後再由程式碼來實踐整個專案. 需要除錯修改程式時,也能同步更新流程圖.
作者觀察到傳統的流程圖比較類似二維結構,
是根據人類的理解便利性所開發設計, ”太過模糊籠統” , ”不是很精準”. 例如Fig 1.
第一個決策不成立則進行作業A, 再來後A決策判斷;第一個決策成立則進行作業B, 再來後B決策判斷.簡單易懂,非常適合上司主管結論. 但對程式開發工程師則不是這麼容易.決策為偽”IF”在流程圖上有清楚的作業方塊圖.決策為真”ELSE”在流程圖上卻無. 此外我們又可用決策為真在“IF”上.讓判斷邏輯產生許多組合. 最後, 四個決策的結束在同一個接點往往造成問題.有經驗的工程師也許對這種轉合視為當然,但資淺者則容易誤入歧途.
而程式碼則是根據計算機運行規則
,比較傾向一維結構,要求很嚴謹,一絲不苟,多一個逗點,少一個括號都不可以,一行指令一行指令依照次序執行. 它是Fig 1 諸多解決方案中的一個. 如Fig 2
![]() |
Fig 2. Program Sequence |
好的流程圖邏輯讓你的程式開發更順暢
程式設計最重要的能力是把作業步驟有條不紊地依序寫成程式. 作者參考上述書中演算法的技巧,採用一種改良式的流程圖繪製方法, 將程式碼的執行程序對應流程圖上的方塊圖 Fig 3. 一旦大家決定好流程圖後,程式設計師便可依圖撰寫程式. 請比較 Fig 2 與 Fig 3.