我們這裡探讨的程式結構,基于一個程式設計的範式:結構化程式設計(Structural Programming)。當然還有别的範式,技術演進的曆史程序,通行的就是結構化程式設計和面向對象程式設計,而面向對象程式設計内部的基礎還是結構化程式設計的底子。是以我這裡也隻說基本的結構化程式設計的程式結構。
一個計算機程式從結構上來說,有三種結構:Sequence順序,Decision分支和Repetition循環。科學家證明了隻要這三種結構就可以完備地表達算法。
Sequence順序結構舉例:
上面的三條語句是逐一按照次序執行的。
Decision分支結構舉例:
Repetition循環結構舉例:
隻要條件i<10成立,就會一直執行下面的兩條語句。
還有一種循環語句的表達:
for語句是周遊序列範圍内所有的值,運作結果:
循環體中,可以通過break語句退出循環,也可以通過continue進行下一輪循環。
結構化程式設計采用"自頂向下,逐漸求精"的方法從問題本身開始,經過逐漸細化,将解決問題的步驟分解為由基本結構子產品組成的結構化程式框圖;代碼實作的時候由順序、選擇和循環三種結構通過組合、嵌套構成。據此就容易編寫出結構良好的程式來。
這些概念由軟體大師E.W.Dijkstra在1965年提出。
E.W.Dijkstra曾經在1972年獲得Turing獎,他是荷蘭第一位計算機專業的科學家。他對我們程式員影響最大的就是“Goto語句有害論”,從我們剛入行的時候開始,就知道有一個叫Dijkstra的荷蘭人在我們耳朵邊叮囑我們不要用goto語句要注意程式結構。2002年,在經過了長期的與癌症的抗争後,Dijkstra離開了我們,我聽聞後,含淚寫道“零落成泥碾作塵,隻有香如故”。
(E.W.Dijkstra,1930.5.11-2002.8.6,圖檔來源:維基百科)