C#-流程控制

程式的執行預設是一步一步往下走的,但有時總要轉彎,流程控制是讓程式在某一步驟停下來檢視條件,決定往下走的方式。

bool condition = true;

if (條件成立/true)
{
    Console.WriteLine("該變數是設成ture的");
}
else
{
    Console.WriteLine("該變數是設成false的");
}

if-else 敘述中,如果條件評估為 true,則執行 if 區塊(then)。 如果條件為 false,則執行 else區塊

由於條件無法同時為 true 和 false,所以 if-else 敘述的 then區塊else區塊永遠無法同時執行。 在執行 完then-區塊else區塊後,控制權會轉移到在 if 敘述之後的下一個敘述。

在不包含 else 敘述的 if 敘述裏,如果 條件 為 true,則執行 then區塊 如果 條件 為 false,控制權會轉移到在 if 敘述之後的下一個敘述。

then區塊else區塊皆可包含以大括弧括住 ({}) 的單一敘述或多個敘述。 對於單一敘述,大括弧是選擇項,建議使用。

巢狀 if 敘述:if或else區塊裏可再包含if敘述。

在下列範例中,如果 m > 10和n > 20都評估為 true,則會顯示結果1。 如果 m > 10 為 true,但 n > 20是 false,則會顯示 結果2

// 若 m = 12 和 m = 8的情況下,結果會是如何?
int m = 12;
int n = 18;

if (m > 10)
    if (n > 20)
    {
        Console.WriteLine("結果1");
    }
    else
    {
        Console.WriteLine("結果2");
    }
// 若 m = 12 和 m = 8的情況下,結果會是如何?
if (m > 10)
{
    if (n > 20)
        Console.WriteLine("結果1");
}
else
{
    Console.WriteLine("結果2");
}
Console.Write("輸入一個字RR: ");
char c = (char)Console.Read();
if (Char.IsLetter(c))
{
    if (Char.IsLower(c)) //如果字元c是小寫的話
    {
        Console.WriteLine("輸入的字母是小寫的。");
    }
    else
    {
        Console.WriteLine("輸入的字母是大寫的。");
    }
}
else
{
    Console.WriteLine("輸入的字元不是一個字母。");
}

//輸出範例:

//輸入一個字元: 2
//輸入的字元不是一個字母。

//輸入一個字元: A
//輸入的字母是大寫的。

//輸入一個字元: h
//輸入的字母是小寫的。
// 改變底下變數的值來測試輸出的結果
bool Condition1 = true;
bool Condition2 = true;
bool Condition3 = true;
bool Condition4 = true;

if (Condition1)
{
    // 條件1是true
}
else if (Condition2)
{
    // 條件1是false,條件2是true.
}
else if (Condition3)
{
    if (Condition4)
    {
        // 條件1和條件2是false. 條件3和條件4是true.
    }
    else
    {
        // 條件1、條件2、條件4是 false. 條件3是true.
    }
}
else
{
    // 條件1,條件2 和 條件3 都是 false.
}
Console.Write("輸入1個字元: ");
char ch = (char)Console.Read();

if (Char.IsUpper(ch))
{
    Console.WriteLine("輸入的字元是大寫字母。");
}
else if (Char.IsLower(ch))
{
    Console.WriteLine("輸入的字元是小寫字母。");
}
else if (Char.IsDigit(ch)) //如果字元是數字的話
{
    Console.WriteLine("輸入的字元是數字");
}
else
{
    Console.WriteLine("輸入的字元不是一個字母");
}

//Sample Input and Output:
//輸入一個字元: E
//輸入的字元是大寫字母

//輸入一個字元: e
//輸入的字元是小寫字母

//輸入一個字元: 4
//輸入的字元是數字

//輸入一個字元: =
//輸入的字元不是一個字母

 

//NOT 運算
bool result = true;
if (!result) {
  Console.WriteLine("條件是true (result是false).");
} else {
  Console.WriteLine("條件是false (result是true).");
}

// Short-circuit AND 短路求值 AND, 只有當第一個運算數的值無法確定邏輯運算的結果時,才對第二個運算數進行求值。
int m = 9;
int n = 7;
int p = 5;
if (m >= n && m >= p) {
  Console.WriteLine("沒有任何一個數比m大");
}

// AND and NOT
if (m >= n && !(p > m)) {
  Console.WriteLine("沒有任何一個數比m大");
}

// Short-circuit OR
if (m > n || m > p) {
  Console.WriteLine("m 不是最小的");
}
// NOT and OR

m = 4;
if (!(m >= n || m >= p)) {
  Console.WriteLine("現在m是最小的");
}