天天看點

#yyds幹貨盤點# 控制流圖的基礎知識

控制流圖是程式流程圖的一種簡化,它可以更加突出的表示程式控制流的結構。

一、控制流圖隻有以下兩種簡單的圖示符号:

(1)節點:以标有編号的圓圈表示,表示基本的程式塊,可以是一個單獨的語句,也可以是多個順序執行的語句塊。​

(2)控制流(邊):用帶箭頭的弧線表示,連接配接相關的兩個節點。每個控制流可以标有名字(也可以不标),但必須終止于某一節點。​

二、畫控制流圖涉及到以下三種控制結構:

(1)順序結構

順序結構用來表示一個計算操作序列,整個程式整體上都是符合從上到下的順序操作的。計算過程從所描述的第一個操作開始,按順序依次執行後續的操作,直到序列的最後一個操作,順序結構内也可以包含其他控制結構,其中各語句可以用“{”和“}”括起來表示自己的控制範圍,被括起來的所有語句組成一個可執行的單元。如下圖所示:

#yyds幹貨盤點# 控制流圖的基礎知識

(2)選擇結構

選擇結構提供了在兩種或多種分支中選擇其中之一的邏輯。基本的選擇結構是指定一個條件P,然後根據條件的成立與否決定控制流走A還是走B,隻能從兩個分支中選擇一個來執行,如下圖(a)所示。這種結構經常用if...else語句來表示,格式為:

if(表達式)

    語句1;

else

    語句2;

選擇結構中的A或B還可以包含順序、選擇和循環結構。

程式設計語言中通常還提供簡化了的選擇結構,當上面語句2為空語句時,可以簡化為:

if(表達式)

    語句1;

如下圖(b)所示,此時語句B是不存在的,但是不成立這條分支是存在的,此時經常用if語句表示。

#yyds幹貨盤點# 控制流圖的基礎知識

使用if語句時,需要注意if和else的比對關系,else總是與離它最近的尚沒有else的if相比對。

(3)循環結構

循環結構描述了重複計算的過程,通常由三個部分組成:初始化、需要重複計算的部分和重複的條件。其中,初始化部分有時在控制的邏輯結構中不進行顯式的表示。重複結構主要有兩種形式:while/for型重複結構和do-while型重複結構。while/for型結構的邏輯含義是先判斷條件P,若成立,則進行需要重複的計算A,然後再去判斷重複條件;否則,控制就退出重複結構,如下圖所示。

#yyds幹貨盤點# 控制流圖的基礎知識

1)while語句

while語句描述了先判斷條件再執行重複計算的控制結構,while語句的一般形式是:

while (條件表達式)

循環體語句;

其中,循環體語句是内嵌的語句,當循環體語句多于一條時,應使用“{”和“}”括起來。執行while語句時,先計算條件表達式的值,當值為非0時,就執行循環體語句,然後重新計算條件表達式的值後再進行判斷,否則就結束while語句的執行過程。

2)for語句

for語句的基本格式是:

for(表達式1;表達式2;表達式3)

循環體語句; 

一般表達式1用于賦初始值,表達式2用于判定循環條件是否成立,表達式3用于變量值的變化操作,例如自增1操作等。

用while語句等價地表示為:​

表達式1;

while(表達式2){

循環體語句;

表達式3;

}

for語句的使用很靈活,其内部的三個表達式都可以省略,但用于分隔三個表達式的分号不能遺漏。

do-while型結構的邏輯含義是先執行循環體A,然後再判斷條件P,若成立則繼續執行循環體A的過程并判斷條件;否則,控制就退出重複結構,如下圖所示。

#yyds幹貨盤點# 控制流圖的基礎知識

3)do-while語句

do-while 語句描述了先執行需要重複的計算再判斷條件的控制結構,其一般格式是:

do

    循環體語句;

while (條件表達式);

執行do-while語句時,先執行内嵌的循環體語句,然後再計算條件表達式的值,若值為非0,則再次執行循環體語句和計算條件表達式并判斷,直到條件表達式的值為0時,才結束do-while語句的執行過程。是以do-while循環體的執行次數剛好等于循環條件的判斷次數。

三、畫控制流圖涉及到以下三種中斷語句:

(1)break語句:break語句在循環語句中的作用是終止并跳出目前的循環語句。也就是說break會直接結束目前循環,跳出循環體,break以後的循環體中的語句不會繼續執行,循環體外面的會執行,也就是說break隻能跳出所在的一層循環體。如果遇到兩層嵌套的循環,break語句又恰好在最内層的循環,此時break語句隻能跳出最裡面的一層循環,無法跳出最外層的循環。​

(2)continue語句:中止本次循環,繼續下次循環。continue語句的功能與break不同,它是結束目前這一次的循環,轉而執行下一次循環。在循環體中,continue 語句執行之後,循環體内其後的語句均不再執行。對于for循環,continue語句執行後自增語句仍然會執行。對于while和 do...while循環,continue語句會重新執行條件判斷語句。

(3)return語句:該語句的功能是結束一個方法,用于函數傳回值。一旦在循環體内執行return,将會結束該方法,循環自然也随之結束。與continue和break不同的是,reurn直接結束整個方法,不管這個return處于多少層循環之内。

四、例如針對下面的一段C語言代碼:

#yyds幹貨盤點# 控制流圖的基礎知識