arduino筆記9:語言控制語句 if switch while for break continue return

 

控制語句用於控制程序的流程,以實現程序的各種結構方式。

它們由特定的語句定義符組成。C語言有9中控制語句,可分成以下3類。

目錄

(一)條件判斷語句

if語句

switch語句

(二)循環執行語句

while語句

do-while語句

for語句

(三)轉向語句

break語句

continue語句

return語句

goto語句


(一)條件判斷語句

C語言支持兩種選擇語句:if語句和switch語句。這些語句允許在程序運行時且知道其狀態的情況下,控制程序的執行過程。

if語句是C語言中的條件分支語句,它能將程序的執行路徑分爲兩條。if語句的完整格式如下:

if (condition)statement;
else statement

其中,if和else的對象可以是單個語句(statement),也可以是程序塊;條件condition可以是任何返回布爾值的表達式;else語句是可選的。

if語句

if語句的執行過程如下:如果條件爲真,就執行if的對象(statement1);否則,執行else的對象(statement2)。

statement也可以作爲一個程序塊:

int bytesAvailable;
if(bytesAvailable 0){
    ProcessDate();
    bytesAvailable -= n;
}
else
    waitForMoreDate();

這裏,如果變量bytesAvailable大於0,則if塊內的所有語句都會執行。

嵌套(nested)if語句是指該if語句爲另一個if或者else語句的對象。

在使用嵌套if語句時,需要記住的要點是:一個else語句總是對應着和它同一個塊中最近的if語句,而且該if語句沒有與其他else語句相關聯。下面是一個例子:

if(i == 10){
    if(j == 20) a = b;
    if(k ==100) c = d;  //這個if語句與下面緊跟的else相關聯
    else a = c;
}
else a = d;             //這個else與最上面的if(i == 10)相關聯

基於嵌套的if語句的通用編程結構被稱爲if-else-if階梯。參

 

switch語句

C語言提供了一個專門用於處理多分支結構的條件選擇語句,稱爲switch語句,又稱開關語句。用switch語句直接處理多個分支(包括兩個分支)。其一般形式爲:

switch(表達式)
{
    case常量表達式1:
語句1;
break;
...
    case常量表達式2:
語句2;
break;
...
    case常量表達式3:
語句3;
break;
...
default:
語句 n + 1;
break;
}

switch語句的執行流程是:首先計算switch後面圓括號中表達式的值,然後用此值依次與各個case的常量表達式比較。若圓括號中表達式的值與某個case後面的常量表達式的值相等,就執行次case後面的語句,執行後遇break語句就退出switch語句;若圓括號中表達式的值與所有case後面的語句值都不相等,就執行default後面的語句n+1,然後退出switch語句,程序流程轉向開關語句的下一個語句。

 

 

(二)循環執行語句

C++循環語句包括while語句、do-while語句和for語句等。

while語句

while語句實現“當型”循環,它的一般格式爲:

while(termination){
    body;
}

當布爾表達式(termination)的值爲true時,循環執行大括號中的語句,並且初始化部分和迭代部分是任選的。

while語句首先計算終止條件,當條件滿足時,纔去執行循環中的語句,這是“當型”循環的特點。

do-while語句

do-while語句實現“直到型”循環,它的一般格式爲:

do{
    body;
}while(termination);

do-while語句首先執行循環體,然後計算終止條件,如果結果爲true,則循環執行大括號中的語句,直到布爾表達式的結果爲false。

與while語句不同的是,do-while語句的循環體至少執行一次,這是“直到型”循環的特點。

for語句

for語句也用來實現“當型”循環,它的一般格式爲:

for(initialization;termination;iteration){
    body;
}

for語句執行時,首先執行初始化操作,然後判斷終止條件是否滿足。如果滿足,則執行循環體中的語句,最後執行迭代部分。完成一次循環後,重新判斷終止條件。

可以在for語句的初始化部分聲明一個變量,它的作用域爲一個for語句。

for語句通常用來執行循環次數確定的情況(如對數組元素進行操作),也可以根據循環結束條件執行循環次數不確定的情況。

在初始化部分和迭代部分可以使用逗號語句來進行多個動作,逗號語句是用逗號分隔的語句序列。

for循環中如果只有一句代碼就不需要加大括號

 

(三)轉向語句

轉向語句包括break語句、continue語句、return語句及goto語句。此類語句儘量少用,因爲這不利於結構化程序設計,濫用它會使程序流程無規律、可讀性差。

break語句

break語句中斷當前循環,和label一起使用,中斷相關聯的語句。一般格式爲:

break[label];

可選的label參數指定斷點處語句的標籤

執行break語句會退出當前循環或語句,並開始執行腳本緊接着的語句。

continue語句

continue語句是跳過循環體中剩餘的語句而強制執行下一次循環。其作用爲結束本次循環,即跳過循環體中下面尚未執行的語句,接着進行下一次是否執行循環的判定。

continue語句使用時應該注意:其只能用在循環語句中。一般都是與if語句一起使用。

 

return語句

return語句表示從被調函數返回到主調函數繼續執行,返回時可附帶一個返回值,由return後面的參數指定。

return通常是必要的,因爲函數調用的時候計算結果通常是通過返回值帶出的。

如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。

如果實在不需要函數返回什麼值,就需要用void聲明其類型。

注意:如果函數名前有返回類型定義,如int、double等就必須有返回值,而如果是void型,則可以不寫return,但這時即使寫了也無法返回數值。

 

goto語句

goto與傢俱也稱爲無條件轉移語句,其一般格式如下:

goto語句標號;

其中,語句標號是按標識符規定書寫的符號,放在某一語句行的前面,標號後加冒號(:)。語句標號起標識語句的作用,與goto語句配合使用。

C語言不限制程序中使用標號的次數,但各標號不得重名。goto語句的語義是改變程序流向,轉去執行語句標號所標識的語句。

goto語句通常與條件語句配合使用,可用來實現條件轉義,構成循環、跳出循環體等功能。

但是,在結構化程序設計中一般不主張使用goto語句,以免造成程序流程的混亂,使理解和調試程序都產生困難。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章