C#教程第四課:迴圈控制語句

iDotNetSpace發表於2009-04-03

本節課將介紹如何使用C#控制語句中的迴圈語句,本課目的如下:
1.學會"while"迴圈的用法。

2.學會"do" 迴圈的用法。

3.學會"for" 迴圈的用法。

4.學會foreach迴圈的用法。

5.進一步瞭解"break"語句的用法。

6.如何使用"continue"語句。

在C#中,使用"goto"語句並不是一個最佳的建立迴圈的方法。本節課將介紹建立迴圈的常用方法。

第一個要介紹的語句是while迴圈語句

1.清單 4-1. While迴圈:While loop.cs

using System;
class Whileloop {
public static void Main() {
int myInt = 0;

while (myInt < 10) {
Console.Write("{0} ", myInt);
myInt++;
}
Console.WriteLine();
}
}

說明


1.清單 4-1演示了一個簡單的while 迴圈。

以關鍵字"while"開始,後面是個布林表示式。所有的控制語句都使用了布林表示式。這就意味著表示式必須計算出true 或者false值。本例中,我們將檢查myInt變數,看看它是否小於10。 因為myInt已經初始化為0,第一次計算時,該布林表示式將返回true值。一旦布林表示式的值為true,將執行該布林表示式後面塊中的語句。

2.在while塊中,我們把數字和空格輸出到控制檯中,之後,對 myInt進行加1運算。一旦執行了while塊中的語句之後,再次計算布林表示式的值,這種情況將一直迴圈下去,直到該布林表示式的值為false為止。 一旦布林表示式的值為false, 程式將從while 塊之後的第一條語句開始執行。在本例中,我們把數字0到9輸出到控制檯中,之後退出while塊,再輸出一個新行到控制檯。

同 "while"迴圈類似的是"do" 迴圈語句。

 

2.清單 4-2. Do 迴圈: Do loop.cs

using System;
class Doloop {
public static void Main() {
string myChoice;
do {
// Print A Menu
Console.WriteLine("My Address Book\n");
Console.WriteLine("A - Add New Address");
Console.WriteLine("D - Delete Address");
Console.WriteLine("M - Modify Address");
Console.WriteLine("V - View Addresses");
Console.WriteLine("Q - Quit\n");
Console.WriteLine("Choice (A,D,M,V,or Q): ");

// Retrieve the user's choice
myChoice = Console.ReadLine();
// Make a decision based on the user's choice
switch(myChoice) {
case "A":
case "a":
Console.WriteLine("You wish to add an address.");
break;
case "D":
case "d":
Console.WriteLine("You wish to delete an address.");
break;
case "M":
case "m":
Console.WriteLine("You wish to modify an address.");
break;
case "V":
case "v":
Console.WriteLine("You wish to view the address list.");
break;
case "Q":
case "q":
Console.WriteLine("Bye.");
break;
default:
Console.WriteLine("{0} is not a valid choice", myChoice);
}

// Pause to allow the user to see the results
Console.Write("Press any key to continue...");
Console.ReadLine();
Console.WriteLine();
} while (myChoice != "Q" && myChoice != "q"); // Keep going until the user wants to quit
}
}

說明


1.清單 4-2 演示了"do"迴圈的例子。 "do" 迴圈的格式是: do { } while ();其中的語句可以是任何合法的C#語句,布林表示式同以前的規定一樣,其返回值要麼為true,要麼為false。

2.如果你打算輸出清單4-2 中的資訊或者選單,之後再讀取使用者的輸入,那麼就使用"do" 格式的迴圈而不要使用"while" 格式的迴圈語句。因為在本例中,布林表示式的值是在迴圈結束處進行計算的, "do" 迴圈可以保證:迴圈體中的語句至少執行一次。與此相對應的是:"while" 迴圈一開始時,計算布林表示式的值,"while" 迴圈不能保證迴圈體中的語句能夠至少執行一次。

3.讓我們來回顧一下清單 4-2中的內容。

在Main()方法中,我們定義了變數 "myChoice"為字串型別。之後,輸出一些資訊到控制檯,即輸出一個可讓使用者進行選擇的選單。我們必須要得到使用者的輸入,即Console.ReadLine()方法所返回的值,該值存放在myChoice變數中。我們必須先得到使用者的輸入,之後再處理。要完成這件事,一個有效的方法是就使用 "switch"語句。注意到:為了獲得同樣的功能,我們既匹配了小寫字母,也匹配了大寫字母。另外一點是:我們使用了 "default:" case,這是個良好的程式設計作風。

 

3.清單 4-3. For 迴圈: For loop.cs

using System;
class Forloop {
public static void Main() {
for (int i=0; i < 20; i++) {
if (i == 10)
break;
if (i % 2 == 0)
continue;
Console.Write("{0} ", i);
}
Console.WriteLine();
}
}

說明


1.清單 4-3 演示了"for" 迴圈的用法。

當你能夠精確地知道迴圈的次數時, For 迴圈語句就派上了用場。本程式同清單 4-1中"while" 迴圈程式的執行結果一樣。 "for" 迴圈中,括號中內容由三個由分號隔開的部分: "(; ; )"組成

2.初始化表是個由逗號隔開的表示式,在"for" 迴圈的整個週期中,這些表示式僅僅計算一次。計算是在一開始進行的,並且在迴圈語句的執行之前進行。正如在清單 4-3所見,通常初始化表是先初始化一個作為計數器的整型變數。

3.一旦進行初始化後, "for" 迴圈就進入第二部分:布林表示式的計算。 這裡的布林表示式可以寫得很複雜,但是結果只能是true或者false。布林表示式通常用來驗證計數器變數的狀態。

4.一旦布林表示式的值為true時,就會執行"for" 迴圈大括號中的語句。通常情況下,這些語句從左大括號開始,不中斷地一直執行到右大括號。但在清單4-3中,有幾個例外,幾個"if"語句改變了程式的流程。

第一個"if"語句檢查"i"是否等於10,這裡使用了"break"語句,可在此處跳出迴圈,轉入 "for"塊後面的第一條語句的執行。

第二條"if"語句使用了求餘運算子,看看"i"是否能夠被2整除,如果餘數等於0,就執行 "continue"語句。控制將跳過迴圈體中餘下的語句,轉入下一輪新的迴圈。你需要在塊中正確地組織好語句,一旦滿足有關條件,就執行相應的語句。

5.一旦程式流程遇到continue語句,或者遇到塊的結尾處的右括號, 就轉入"for" 迴圈括號中的第三項:post-loop 動作表,該表由逗號隔開,在"for"塊中的語句都執行完畢之後,就執行該動作表中的動作。 清單 4-3中的 post-loop 動作表中的動作很典型:計數器加1。一旦動作表執行完畢,流程就轉到對布林表示式值進行判別。迴圈將繼續進行下去,直到布林表示式的值為true。當布林表示式的值為false,控制流程就轉到 "for"塊之後的第一條語句。

 

4.清單 4-4. The ForEach 迴圈: ForEachloop.cs

using System;
class ForEachloop {
public static void Main() {
string[] names = {"Cheryl", "Joe", "Matt", "Robert"};
foreach (string person in names) {
Console.WriteLine("{0} ", person);
}
}
}

說明

1."foreach" 迴圈列舉出集合中所有的元素。

清單 4-4所使用的陣列型別,就是這樣的一個集合。(在"System.Collections"也可以由其他的資料型別作集合。). 在Main()方法中,我們所做的第一件事是:定義由四個字串組成的陣列names。

2."foreach"括號中的表示式是由關鍵字in隔開的兩個項組成。in右邊的項是集合名,in左邊的項是變數名,用來存放該集合中的每個元素。

該迴圈的執行過程如下:每一次迴圈時,從集合中取出一個新的元素值,放到只讀變數中去,括號中的整個表示式返回值為true, "foreach"塊中的語句就能夠執行。一旦集合中的元素都已經被訪問到,整個表示式的值為false,控制流程就轉入到 "foreach" 塊後面的第一條可執行語句。

3.在清單 4-4的例子中,我們使用了字串變數person用來存放names陣列的每個元素,並且使用Console.WriteLine()方法輸出person 變數的值。

小結
到現在為止,你已經瞭解了"while","do","for"和"foreach" 迴圈語句的用法。最後你也學習瞭如何設定有關條件,來改變迴圈體塊中的語句的流程。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-580652/,如需轉載,請註明出處,否則將追究法律責任。

相關文章