透過分支和迴圈陳述式了解條件式邏輯
此教學課程將教您如何撰寫程式碼來檢查變數,並根據那些變數來變更執行路徑。 您將以互動方式使用瀏覽器撰寫 C#,並查看編譯和執行程式碼的結果。 此教學課程包含一系列探索 C# 中分支和迴圈建構的課程。 這些課程會教導您 C# 語言的基本概念。
提示
若要在焦點模式中貼上程式碼片段,您應該使用鍵盤快速鍵 (Ctrl + v 或 cmd + v)。
使用 if 陳述式來做決策
在互動式視窗中執行下列程式碼。 選取 [進入焦點模式] 按鈕。 接著,在互動視窗中鍵入下列程式碼區塊,並選取 [執行]:
int a = 5;
int b = 6;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10.");
如果您在環境中執行此程式碼區塊,建議您改為遵循本機版本的指示。
修改 b
的宣告,讓總和小於 10:
int b = 3;
再次選取 [執行] 按鈕。 因為答案小於 10,所以不會印出任何東西。 您正在測試的條件為 False。 您尚未有可執行的程式碼,因為您在 if
陳述式中僅撰寫了一個可能的分支:True 分支。
提示
在您探索 C# (或任何程式設計語言) 時,可能會在撰寫程式碼時犯錯。 編譯器會找出那些錯誤並回報給您。 當輸出包含錯誤訊息時,請仔細查看範例程式碼以及互動式視窗中的程式碼,看看有哪些可以修正。 該練習將有助於您了解 C# 程式碼的結構。
此第一個範例示範 if
和布林型別的功能。 「布林」是一個變數,可能具有兩種值的其中之一:true
或 false
。 C# 為布林變數定義了一個特殊型別:bool
。 if
陳述式會檢查 bool
的值。 當值為 true
時,就會執行 if
之後的陳述式。 否則,會加以跳過。
這個流程可以檢查條件,並根據條件來執行陳述式,因此很實用。 讓我們來探索更多內容。
搭配使用 if 和 else
若要在 True 和 False 分支中執行不同的程式碼,則必須建立可在條件為 False 時執行的 else
分支。 試試看:
int a = 5;
int b = 3;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10");
else
Console.WriteLine("The answer is not greater than 10");
只有當測試的條件為 false
時,才會執行 else
關鍵字之後的陳述式。 將 if
和 else
結合布林值條件,就可提供您需要的所有功能。
重要
if
和 else
陳述式之下的縮排是為了方便人類閱讀。
C# 語言不會將縮排或空白字元視為有意義的內容。
if
或 else
關鍵字之後的陳述式將會根據條件來執行。 此教學課程中的所有範例都遵循常見的實務,根據陳述式的控制流程縮排程式碼行。
因為縮排沒有意義,當您要依條件執行的區塊中有超過一個陳述式時,需要使用 {
和 }
來表示。 C# 程式設計人員通常會在所有的 if
和 else
子句上使用這些大括號。 下列範例與您建立的內容相同。 試用。
int a = 5;
int b = 3;
if (a + b > 10)
{
Console.WriteLine("The answer is greater than 10");
}
else
{
Console.WriteLine("The answer is not greater than 10");
}
提示
本教學課程的其餘部分,程式碼範例都會遵循常見的做法,在程式碼中包含大括號。
您可以測試更複雜的條件:
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) && (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not equal to the second");
}
適用於相等的 ==
符號測試。 使用 ==
可區分指派中相等的測試,您在 a = 5
中看過該指派。
&&
代表「且」。 這表示兩個條件都必須為 True,才會執行 True 分支中的陳述式。 這些範例也示範在每個條件式分支中可以有多個陳述式,前提是必須將陳述式放在 {
和 }
之中。
您也可以使用 ||
來代表「或」:
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) || (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("Or the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("And the first number is not equal to the second");
}
修改 a
、b
和 c
的值,並在 &&
和 ||
之間切換以進行探索。 您將更加了解 &&
和 ||
運算子的工作原理。
使用迴圈重複執行作業
若要建立較大型的程式,另一項重要的概念是迴圈。 您將使用迴圈來重複要執行一次以上的陳述式。 在互動式視窗中嘗試這個程式碼:
int counter = 0;
while (counter < 10)
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
}
while
陳述式會檢查條件,並執行 while
之後的陳述式。 它會重複檢查條件並執行那些陳述式,直到條件為 False 為止。
在此範例中有一個新的運算子。 counter
變數之後的 ++
是遞增運算子。 它會將 1 加到 counter (計數器) 上,並將該值儲存在 counter 變數中。
重要
請確定 while
迴圈條件在您執行程式碼時會切換至 False。 否則,您建立的無限迴圈程式永遠不會結束。 我們不會示範這個部分,因為執行程式碼的引擎將會逾時,而您不會看到程式有任何輸出。
while
迴圈會先測試條件,然後才執行 while
之後的程式碼。 do
... while
迴圈會先執行程式碼,然後才檢查條件。 畫面顯示為這樣:
int counter = 0;
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter < 10);
此 do
迴圈和稍早的 while
迴圈有相同的功能。
讓我們繼續至最後一個迴圈陳述式。
使用 for 迴圈
您在 C# 程式碼中常看到的另一個迴圈陳述式是 for
迴圈。 在互動式視窗中嘗試這個程式碼:
for (int counter = 0; counter < 10; counter++)
{
Console.WriteLine($"Hello World! The counter is {counter}");
}
這與先前使用的 while
迴圈和 do
迴圈有相同的功能。 for
陳述式有三個部分來控制其運作方式。
第一個部分是 for 初始設定式:int counter = 0;
宣告 counter
是迴圈變數,然後將它的初始值設為 0
。
中間的部分是 for 條件:counter < 10
宣告此 for
迴圈只要 counter (計數器) 的值小於 10,就會繼續執行。
最後一個部分是 for 迭代器:counter++
會指定在執行 for
陳述式之後的區塊後,如何修改迴圈變數。 在這裡,它指定 counter
應該在每次執行區塊之後遞增 1。
您可以自行實驗這些部分。 請嘗試下列各項:
- 變更初始設定式,以不同的值開始。
- 變更條件,以不同的值停止。
當您完成後,我們會繼續使用您學到的內容來撰寫一些程式碼。
此教學課程未涵蓋另一種迴圈陳述式:foreach
陳述式。 foreach
陳述式會針對項目序列中的每個項目重複其陳述式。 其最常與「集合」搭配使用,因此將在下一個教學課程中說明。
建立巢狀迴圈
while
、do
或 for
迴圈可以巢狀於另一個迴圈之內,以利用外部迴圈中每個項目與內部迴圈中每個項目的組合來建立矩陣。 讓我們建立一組英數字元配對來表示資料列與資料行。
一個 for
迴圈可以產生資料列:
for (int row = 1; row < 11; row++)
{
Console.WriteLine($"The row is {row}");
}
另一個迴圈可以產生資料行:
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The column is {column}");
}
您可以將一個迴圈巢狀於另一個迴圈之內,以形成配對:
for (int row = 1; row < 11; row++)
{
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The cell is ({row}, {column})");
}
}
您可以看到每次內部迴圈完整執行,外部迴圈便會遞增一次。 反轉資料列和資料行巢狀結構,並自行查看變化。
結合分支和迴圈
您已經了解 C# 語言中的 if
陳述式和迴圈建構,接著看看您是否能夠撰寫 C# 程式碼,以找出從整數 1 至 20 能夠被 3 整除之數字的總和。 下列提供幾個提示:
%
運算子可提供除法運算的餘數。if
陳述式可提供條件,以判斷數字是否應為總和的一部分。for
迴圈可協助您將 1 到 20 的所有數字重複一系列的步驟。
請自己試試看。 然後檢查成果。 作為提示,您獲得的答案應該是 63。
完成挑戰
您是否有得到與下列程式碼類似的內容?
int sum = 0;
for (int number = 1; number < 21; number++)
{
if (number % 3 == 0)
{
sum = sum + number;
}
}
Console.WriteLine($"The sum is {sum}");
恭喜!
您已經完成<分支和迴圈>互動式教學課程。 您可以選取下列的清單集合連結來啟動下一個互動式教學課程,或者您可以前往 .NET 網站來下載 .NET SDK,以在您的電腦上建立專案並繼續撰寫程式碼。 <後續步驟>一節會帶您返回這些教學課程。
您可以在下列文章深入了解這些概念:
在這個區段有遇到問題嗎? 如果有,請提供意見反應,好讓我們可以改善這個區段。