跳到主要內容

改良式流程圖讓撰寫C語言程式更有效率


李家同教授相當重視流程圖規劃,並強調它與邏輯考思與撰寫程式的關聯性. 可是當今程式設計者願意在寫程式之前,花盡心思先規劃一頁完善的流程圖,簡直少之又少.  除非他的老闆上司強烈要求. 若是要將優化的程式碼或除錯後的原始碼同步更新回原來的流程圖,那可是難上加難. 為什麼大家都認為很重要但實施起來卻很困難呢?

作者從事撰寫程式工作非常多年,一直苦思這個問題,直覺認為必定有一段失落的環節.最後終於在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.