程式控制結構

程式控制結構

程式控制方式是指在程式控制下進行的數據傳遞方式。程式控制結構是指以某種順序執行的一系列動作,用於解決某個問題。理論和實踐證明,無論多複雜的算法均可通過順序、選擇、循環3種基本控制結構構造出來。每種結構僅有一個入口和出口。由這3種基本結構組成的多層嵌套程式稱為結構化程式。

基本介紹

  • 中文名:程式控制結構
  • 外文名:program control structure
  • 學科:計算機
  • 定義:以某種順序執行的一系列動作
  • 類型:順序、選擇、循環
  • 領域:程式設計
簡介,順序控制結構,選擇控制結構,單分支結構,兩路分支結構,多路分支結構,循壞控制結構,三個循環,三個循環異同點,常見的兩種循環結構編輯,

簡介

程式是一個語句序列,執行程式就是按特定的次序執行程式中的語句。程式中執行點的變遷稱為控制流程,當執行到程式中的某一條語句時,也說控制轉到了該語句。由於複雜問題的解法可能涉及複雜的執行次序,因此程式語言必須提供表達複雜控制流程的手段,稱為程式語言的控制結構,或程式控制結構。

順序控制結構

所謂順序結構程式就是指按語句出現的先後順序執行的程式結構,是結構化程式中最簡單的結構。程式語言並不提供專門的控制流語句來表達順序控制結構,而是用程式語句的自然排列順序來表達。計算機按此順序逐條執行語句,當一條語 句執行完畢,控制自動轉到下一條語句。現實世界中這種順序處理的情況是非常普遍的,例如我們接受學校教育一般都是先上小 學,再上中學,再上大學;又如我們燒菜一般都是先熱油鍋,再將蔬菜入鍋翻炒,再加鹽加 佐料,最後裝盤。

選擇控制結構

選擇結構又稱為分支結構。當程式執行到控制分支的語句時,首先判斷條件,根據條件表達式的值選擇相應的語句執行(放棄另一部分語句的執行)。分支結構包括單分支、雙分支和多分支三種形式。

單分支結構

所有程式語言都提供了條件語句(if 語句),用來實現有條件地執行語句的功能。Python 語言的 if 語句有多種形式,最簡單的形式是:
if <條件表達式>:
<條件語句體>
其中<條件表達式>是布爾表達式,<條件語句體>是由一條或多條語句組成的語句序列。<條件語句體>的左端與 if 部分相比必須向右縮進,表明它是 if 部分(不妨理解為條件語句的頭 部)的下屬,就像軀體是頭部的下屬一樣。
if 語句的語義很容易理解:首先計算 if 後面的條件表達式,如果結果為 True,則控制轉 到條件語句體的第一條語句,一旦條件語句體執行完畢,控制即轉到 if 語句的下一條語句; 如果結果為 False,則跳過條件語句體,控制直接轉到 if 語句的下一條語句。圖 1中的流程 圖形象地解釋了 if 語句的語義,其中菱形框表示條件測試。雖然 if 語句根據條件表達式計算 結果的不同而有兩個分支,但我們習慣說這種形式的 if 語句實現的是單分支控制結構,因為 有一個分支什麼也不做。注意,無論條件是真是假,最後控制都轉到 if 語句的下一條語句, 也就是說這條 if 語句內部雖有兩個分支,但總體只有一個出口。
程式控制結構

兩路分支結構

有時我們希望根據條件表達式的不同計算結果(True 或 False),分別執行兩個不同的語 句序列,這時可以使用具有兩個分支的條件語句形式,即 if-else 語句:
if <條件表達式>:    <if-語句體> else:    <else-語句體>
if-else 語句的語義是:首先計算條件表達式的值,如果結果為 True,則執行 if-語句體;
程式控制結構
如果結果為 False,則執行 else-語句體。無論哪種情況,語句體執行完畢之後,控制都轉到 if-else 語句的下一條語句。在使用兩路分支的 if 語句時要注意:if 部分和 else 部分必須與一對非此即彼的條件相對 應,一個條件為真則另一個條件必為假,反之亦然。

多路分支結構

程式語言都都有實現多路分支結構的控制結構。例如,Python 中有語句支持多路分支的條件判斷,即 if-elif-else 語句。這條語句在 形式上其實是將嵌套 if-else 語句中的 else 與後續的 if 合併成了一個 elif 子句,形如:
if <條件 1>:
<情形 1 語句體>
elif <條件 2>:
<情形 2 語句體>
...
elif <條件 n>:
<情形 n 語句體>
else:
<其他情形語句體>
if-elif-else 語句的語義是:順序計算每一個條件表達式,找到第一個為 True 的條件,然後執行其下方縮進的語句體,執行完畢再將控制轉到整個 if-elif-else 語句的下一條語句;如 果所有條件表達式的計算結果都是 False,則執行在 else 下方縮進的語句體。可見,這種形式 的條件語句實現了 n+1 個分支。另外,else 子句是可選的,但要注意的是,如果省略 else 子 句,則整個語句就可能沒有符合條件的分支,從而不執行任何語句體。

循壞控制結構

採用循環結構可以實現有規律的重複計算處理。當程式執行到循環控制語句時,根據循環判定條件對一組語句重複執行多次。循環結構可以看成是一個條件判斷語句和一個向迴轉向語句的組合。另外,循環結構的三個要素:循環變數、循環體和循環終止條件. ,循環結構在程式框圖中是利用判斷框來表示,判斷框內寫上條件,兩個出口分別對應著條件成立和條件不成立時所執行的不同指令,其中一個要指向循環體,然後再從循環體回到判斷框的入口處。

三個循環

C語言中提供四種循環,即goto循環、while循環、do…while循環和for循環。四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程式的順序經常會給程式的運行帶來不可預料的錯誤,在學習中我們主要學習while、do…while、for三種循環。常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用。這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹後就會明白如何替換使用,如把while循環的例題,用for語句重新編寫一個程式,這樣能更好地理解它們的作用。特別要注意在循環體內應包含趨於結束的語句(即循環變數值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。

三個循環異同點

在學完這三個循環後,應明確它們的異同點:用while和do…while循環時,循環變數的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體;而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while 循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,是不能用break和 continue語句進行控制的。
順序結構分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種算法,設計出相應程式。但是要編程的問題較大,編寫出的程式就往往很長、結構重複多,造成可讀性差,難以理解,解決這個問題的方法是將C程式設計成模組化結構。
模組化程式結構C語言的模組化程式結構用函式來實現,即將複雜的C程式分為若干模組,每個模組都編寫成一個C函式,然後通過主函式調用函式及函式調用函式來實現一大型問題的C程式編寫。因此常說:C程式=主函式+子函式。 因此,對函式的定義、調用、值的返回等要尤其注重理解和套用,並通過上機調試加以鞏固

常見的兩種循環結構編輯

當型循環:先判斷所給條件p是否成立,若p成立,則執行A(步驟);再判斷條件p是否成立;若p成立,則又執行A,若此反覆,直到某一次條件p不成立時為止。
直到型循環:先執行A,再判斷所給條件p是否成立,若p不成立,則再執行A,如此反覆,直到p成立,該循環過程結束。

相關詞條

熱門詞條

聯絡我們