梁宇琪 王冰 苗娟
循環結構是程序設計中一種很重要的結構,其特點是:在給定條件成立的情況下,反復執行某段程序,直到條件不成立為止。給定的條件稱為循環條件,反復執行的程序段稱為循環體。C#語言提供了多種循環語句,包括for語句、while語句、do-while語句、foreach語句、break語句、continue語句等;此文僅對for語句、while語句、do-while語句、foreach語句進行比較,使學習者明確它們之間的區別,以便使用循環結構時進行選用。
一、for循環
for循環語句是c#中使用最廣泛,最靈活的一種循環語句。它不僅可以用于循環次數已經確定的情況,而且可以用于循環次數不確定而只給出循環結束條件的情況。
首先我們來介紹一下for語句的基本格式與語法:
for(①初始化表達式;②循環條件表達式;④變量控制表達式)
{
③循環體
}
執行過程如下:①初始化表達式:一般為賦值表達式,為循環控制變量賦初值。只在第一次循環開始時執行;②循環條件表達式:一般為邏輯表達式,是用來控制循環是否繼續的條件。當表達式的值為“真”時,循環繼續執行轉向步驟③;當表達式的值為“假”時,跳過循環體③,循環結束;③循環體:反復執行的代碼段;④變量控制表達式:一般為賦值表達式,為循環控制變量增量或減量。執行完后,轉向步驟②,循環繼續執行。
使用for循環時需要注意幾點:
①在循環結構中,一定要有使循環趨向結束的操作。以上程序代碼中,語句i++;使i不斷增1,當i>5時,循環結束。如果沒有i++;這一語句,i的值始終不變,循環將無限進行,即為死循環。
②for后面括號內的3個表達式之間用兩個“;”隔開,3個表達式的內容可以為空,但”;”不能省略。
③for后面括號后沒有“;”,緊接“{}”,如在for后的“()”后緊接“;”,則表示循環體為空。
④當循環體只有一個子句時“{}”可以省略。
二、while循環
While語句的作用是判斷一個條件表達式,以便決定是否應當進入和執行循環體,當滿足該條件時進入循環,不滿足該天劍時則不再執行循環。
基本格式與語法:
while(①條件表達式)
{
②循環體
}
執行過程如下:①條件表達式:一般為邏輯表達式,是用來控制循環是否繼續的條件。當表達式的值為“真”時,循環繼續執行轉向②;當表達式的值為“假”時,跳過循環體②,while循環結束;②循環體:反復執行的代碼段。執行完后,轉向步驟①,循環繼續執行。
使用while循環時需要注意幾點:
①在循環體中,一定要有使循環趨向結束的語句。以上程序代碼中,語句i++;使i不斷增1,當i>5時,循環結束。如果沒有i++;這一語句,i的值始終不變,循環將無限進行,即為死循環。
②如果循環體只包含一個語句,可以省略{}。
三、do..while循環
基本格式與語法:
do
{
①循環體
}while(②條件表達式);
執行過程如下:①循環體:反復執行的代碼段。當流程到達do后,立即執行循環體,循環體至少執行一次。完后轉向while后的條件表達式②;②條件表達式:一般為邏輯表達式,是用來控制循環是否繼續的條件。當表達式的值為“真”時,循環繼續執行轉向①;當表達式的值為“假”時,循環結束。
使用do...while循環時需要注意幾點:
①在循環體中,一定要有使循環趨向結束的語句。以上程序代碼中,語句i++;使i不斷增1,當i>5時,循環結束。如果沒有i++;這一語句,i的值始終不變,循環將無限進行,即為死循環。
②和while語句的相同點是:都是在while后表示循環條件;循環體都在{}中。和while語句的區別是:語法結構上do..while結構do開始,“;”結束;do..while結構不管一開始循環條件是否滿足都先執行了循環體,循環體至少執行一次。
四、foreach語句
foreach循環語句可以遍歷集合中的元素。foreach語句的語法格式如下:
foreach(類型變量in表達式)
{
循環體
}
其中:
類型:變量的類型
變量:能被集合元素賦值的循環變量,是一個只讀的局部變量。
表達式:對象集合或數組表達式。集合元素的類型必須可以顯式轉換為變量類型。
執行過程如下:①變量在表達式中遍歷時,循環體反復執行。
五、綜合對比
經過對四種循環結構的介紹我們發現:①foreach循環語句通過遍歷集合中的元素進行循環,其他三種都是通過循環變量控制循環;②在這三種循環結構中只有for循環明確的給出了循環變量定義及循環變量控制語句,因此使用更為靈活,還有更好的可讀性;③do...while和while語句的相同點是:都是在while后表示循環條件;循環體都在{}中。和while語句的區別是:語法結構上do..while結構do開始,“;”結束;do..while結構不管一開始循環條件是否滿足都先執行了循環體,循環體至少執行一次。
至此,以上四種循環結構我們就可以根據需要靈活選用了,但有時我們希望在循環條件成立的情況下提前跳出循環,這就需要用到break語句了;continue作用為結束本次循環,即跳過循環體中尚未執行的語句,繼續該循環的下一輪。