Can you summarize the following document?
        
  結構化的程式是以一些簡單、有層次的程式流程架構所組成,可分為循序(sequence)、選擇(selection)及重複(repetition)。  若一個程式語言的語法允許用成對的關鍵字包圍一段程式,形成一個結構,這種程式語言稱為有「塊結構」,這類的結構包括用ALGOL 68的codice_9包圍的程式,或是在PL/I中用codice_10包圍的一段程式,或是在C語言中用大括號codice_11包圍的一段程式。

  用任何語言都可以進行結構化程式設計,不過一般較常使用程式式的程式語言。早期的結構化程式語言包括ALGOL、 Pascal、PL/I及Ada,不過後來大部分的程式式程式語言都鼓勵使用結構化程式設計,有時也會特意的省去一些特性(例如不支援goto指令)使得非結構化的程式設計更加困難。

  

  結構化程式理論可做為結構化程式設計的理論基礎,結構化程式理論中提到利用循序、選擇及重複這三種組合程式的方式,可以表示所有可計算函式。上述的三種結構已足以表示CPU中的指令週期,也可以表示圖靈機的運作,以此觀點來看,處理器所執行的指令可視為是某種「結構化程式」,雖然整個程式可能不是一個結構化程式。一般都認為結構化程式理論是歸功於伯姆和賈可皮尼於1966年發表的論文,其中一個原因可能是戴克斯特拉引用過此論文。結構化程式理論未提及如何撰寫結構化程式,也沒有提到結構化程式的分析,後來1960至1970年代時,戴克斯特拉、羅伯特·弗洛伊德、東尼·霍爾等電腦科學家在此領域有許多的貢獻。

  結構化程式設計中一項重要的原則是減少甚至禁止goto指令的使用,不過不是所有電腦科學家都贊成禁止使用goto指令。高德納贊成程式設計時需考慮可讀性,但他不贊成禁用goto指令。在其1974年發表的論文《使用goto指令的結構化程式設計》(Structured Programming with Goto Statements)中,他提出了一些程式,使用goto指令可以使得程式更清楚而有效率,也不會犧牲程式的可讀性。高德納提出了一個較鬆的結構限制要求:將程式以流程圖表示,前進的分支在流程圖的左側,倒退的分支在流程圖的右側,所有分支均不得交叉。  結構化程式設計在1970年有很大的進展,IBM的研究員哈倫·米爾斯將結構化程式設計應用在紐約時報研究檔案索引系統的開發,此計劃相當成功,因此許多公司開始使用結構化程式設計,不過戴克斯特拉評論米爾斯使用的方式和一些已發表論文中的方式不同。  到1987年時在電腦科學領域仍有針對結構化程式設計的爭論,弗蘭克·魯賓發表了一篇論文《「goto有害論」是有害的》("GOTO considered harmful" considered harmful),引發許多的反對,戴克斯特拉本人也批評魯賓及其追隨者的論點。

  在二十世紀末時絕大多數的電腦科學學者均已同意使用結構化程式設計的好處,原來缺乏程式結構的高階程式語言(如FORTRAN、COBOL及BASIC)也都已加入此特性。

  

  子程式很少會有一個以上的進入點,相對的,有時子程式會有一個以上的結束點,表示剩下的程式不需執行,或因為一些原因,造成無法執行後續的程式。  以下是是一個由檔案中讀取資料並處理的程式範例:  其中「stop and inform」的步驟可以利用多種方式達成,包括產生一個異常(exception)、利用codice_12指令回到上一層的程式、使用配合標記的codice_13指令,或是使用codice_14。當子程式有二個結束點時,就違背了戴克斯特拉的結構化程式設計原則。但此情形下若強制要撰寫只有一個結束點的子程式又相當麻煩,而且若有幾個不同的錯誤處理,錯誤產生後有不同的清除方式,單一結束點的程式會相當難以閱讀及理解,甚至比未結構化使用codice_14的程式相當。  許多程式語言就提供了在結構化程式設計中產生多個結束點的方式。C語言允許使用codice_16、codice_13及codice_12指令來產生結構的多個結束點,C++還可以用codice_19產生異常,在結構外再用codice_20進行異常的處理,有些語言則有配合標記的codice_13指令(類似一般的codice_13指令,但可以跳出不只一層的結構)。

  有些程式(例如語法分析器或是處理通訊協定的程式)有許多的狀態 (電腦科學),因此程式進行的過程會在各狀態中切換,此架構不容易簡化成基本的控制結構。可以將此架構各狀態下的程式分別獨立為子程式,再用一個變數表示目前的狀態,(可參考trampoline (電腦科學)),另一種作法是用codice_14的方式切換到新狀態對應的程式。
結構化程式設計(英語:Structured programming),一種程式設計典範。它採用子程式、塊結構、for迴圈以及while迴圈等結構,來取代傳統的 goto。希望藉此來改善計算機程式的明晰性、品質以及開發時間,並且避免寫出麵條式程式碼。