JAVA新手教學 (9) – 結構化程式設計
結構化程式設計 (Structured programming),一種程式設計典範。主要是來改善電腦程式的明晰性、品質以及開發時間。大部分的程式是一列接著一列執行的,也就是所謂的「循序執行」。不過對於複雜的工作來說,可以透過流程控制結構來改變執行順序,我們將這兩種方法稱為「結構化程式設計」。
結構化程式設計
結構化程式設計是指在程式中,依照邏輯特性將程式細分成幾個較小的問題,再繼續細分直到容易編寫的程式單元為止。
- 優點 : 易除錯、可分工、可讀性高、易維護。
- 缺點 : 程式碼長、執行時間較久。
三項結構式指令
- 循序結構
- 選擇結構(if,if else,switch)
- 重複結構(while,do…while,for)
這三種結構指令皆由兩種方式組合而成
- 堆疊:一控制結疊在另一種控制結構前後,控制結構間有單進單出的關連。
- 巢狀內嵌:一控制結構內嵌另一個控制結構。
選擇結構
選擇結構是一種條件控制敘述,也就是所謂的選擇題,可以多選一、二選一或單選一。程式的執行是依照條件運算式的條件,來決定執行哪一個程式區塊的程式碼。
選擇指令
- 單選 if指令
- 雙選if else指令
- 多選switch指令
if跟if else的部分可以參考JAVA新手教學 (3) – 運算子與簡易 if 指令,switch指令會在之後的單元進行講解。
重複結構
重複結構又稱為迴圈控制,當迴圈的執行條件為真時,可以重複執行同一個區塊的程式碼,並提供結束條件來結束迴圈執行。
前測試重複結構:測試迴圈結束條件在成數區塊的開頭,控制執行區塊執行零次或多次。
後測試重複結構:測試迴圈結束條件在成數區塊的結尾,控制執行區塊執行至少一次。
重複指令
- for(前測試)指令
- while(後測試)指令
- do…while(後測試)指令
以上3種指令皆會在下一個章節做講解。
堆疊與巢狀內嵌控制敘述式
控制敘述式有if else、switch、while、for、do…while,寫法如下圖。
堆疊的部份大家都相當清楚,至於巢狀的部份,我們拿大家比較熟悉的if指令來舉例子
- 巢狀if指令
以下圖為例子,當執行第一個if指令時會判斷變數x是否大於50,如果沒有大於50,程式段內的程式碼就不會執行。如果大於50則會繼續執行程式段內的程式碼,遇到第二個if指令時判斷x是否小於100,以此類推。
- 巢狀if指令else的依附問題
當我們的巢狀內嵌有多個if else時,該怎麼判定哪一個else是依附於哪一個if呢?以下圖為例,if(x>50)判斷變數x是否大於50是的話會執行程式段裡的內容,進行到if(x<100)判斷x是否小於100,如果小於就執行程式段內容,大於等於就會執行第一個else。假設今天x<=50那麼第一個if會跳過並執行第二個else。由此可知第一個else會依附於離他最近的if,第二個else會依附於離他第二近的if,如同鏡子一般向外延伸。
到這裡大家大概對結構化程式設計有了初步的理解,接下來的幾個章節會針對其中的語言逐一講解。
延伸閱讀: