===》點我返回目錄《===
我們這裏探討的程序結構,基於一個編程的範式:結構化編程(Structural Programming)。當然還有別的範式,技術演進的歷史進程,通行的就是結構化編程和麪向對象編程,而面向對象編程內部的基礎還是結構化編程的底子。所以我這裏也只說基本的結構化編程的程序結構。
一個計算機程序從結構上來說,有三種結構:Sequence順序,Decision分支和Repetition循環。科學家證明了只要這三種結構就可以完備地表達算法。
Sequence順序結構舉例:
a=1+2
b=3
print(a*b)
上面的三條語句是逐一按照次序執行的。
Decision分支結構舉例:
if i<0:
print ("Negative")
elif i==0:
print ("Zero")
else:
print ("Positive")
Repetition循環結構舉例:
i = 0
while i< 10:
print (i)
i += 1
只要條件i<10成立,就會一直執行下面的兩條語句。
還有一種循環語句的表達:
for i in range(5):
print(i)
for語句是遍歷序列範圍內所有的值,運行結果:
0 1 2 3 4
循環體中,可以通過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,圖片來源:維基百科)