if 敘述句是最簡單的決策敘述,語法結構如下:
接下來取得使用者的輸入值,這個數值被儲存至 intSpeed 變數,if 判斷式區塊中,判斷 intSpeed 的值是否大於 intMaxSpeed ,是的話結果為 true ,也就是大於 100 時,執行大括弧中的程式碼,輸出警告訊息。
於主控台執行程式,首先輸入 50 ,由於比 100 小,因此沒有任何的訊息輸出,如下式:
if-else 敘述
如果程式邏輯包含了二個判斷式,而且這兩個判斷式互斥,可以選擇使用另外一種比較複雜的 if 敘述,語法結構如下:
現在假設要車速狀況,根據使用者輸入的行車速度,輸出合適的警示訊息,程式的判斷式如下:
若是變數值 intSpeed 小於 intMaxSpeed ,提示目前的車速適中,則跳過 if 區塊,執行 else 以後的程式碼區塊。
執行其中的程式碼,假設行車速限為 100 ,當使用者輸入小於 100 的數值,程式輸出車速適中的訊息,輸出如下:
巢狀 if
當程式的選擇判斷式不只一個的時候,你可能需要一個巢狀式的 if-else 敘述句,也就是在 if 或是 else 裏面的程式區塊加入另一段 if 敘述句,甚至是 if –else ,語法如下:
為了說明巢狀if敘述,這裏新增了一塊判斷式,若是車速 < 100,則在else以下的區塊裏面再加上一段 if-else 敘述句,整個判斷式擴充如下:
巢狀 if 區塊內部進一步判斷是否使用者輸入的值大於intMinSpeed,並且輸出適常的訊息。
此範例的輸出結果類似上面的範例內容,只是當使用者輸入的數字小於100的時候,系統會依小於或大於 60 作出不同的判斷,以下是大於60的輸出結果:
如果選擇的條件值過多,使用巢狀if判斷式,程式碼就會變得非常複雜且不容易閱讀,此時你可以選擇使用另外一個 switch 敘述句進行流程的控制,這一部份於討論 if-else-if 敘述的時作討論。
if(if-expression) { // if 程式區塊 … }if 關鍵字後面緊接著一段由小括弧包圍的條件表示式,這是一段回傳布林運算結果的判斷式,根據其回傳值,決定是否執行if 關鍵字後面的程式區塊,回傳值等於 true 則執行其中的 if 程式區塊,否則跳過區塊內容。
class Program { static void Main(string[] args) { const int intMaxSpeed = 100; int intSpeed = 0; Console.WriteLine("請輸入目前車速?"); intSpeed = int.Parse(Console.ReadLine()); if (intSpeed > intMaxSpeed) { Console.WriteLine("請注意,目前車速過快!!"); } Console.ReadLine(); } }首先建立一個代表速限值的 int 常數 intMaxSpeed ,並且將其值初始化為 100 ,並且定義用來代表目前車速的 int 變數 intSpeed ,此變數的值初始化為 0 。
接下來取得使用者的輸入值,這個數值被儲存至 intSpeed 變數,if 判斷式區塊中,判斷 intSpeed 的值是否大於 intMaxSpeed ,是的話結果為 true ,也就是大於 100 時,執行大括弧中的程式碼,輸出警告訊息。
於主控台執行程式,首先輸入 50 ,由於比 100 小,因此沒有任何的訊息輸出,如下式:
請輸入目前車速 ? 50 輸入大於100的數值,則執行if區塊內容,輸出特定的訊息: 請輸入目前車速 ? 150 請注意,目前車速過快 !!
if-else 敘述
如果程式邏輯包含了二個判斷式,而且這兩個判斷式互斥,可以選擇使用另外一種比較複雜的 if 敘述,語法結構如下:
if(if-expression) { if 程式區塊 … } else { else 程式區塊 … }當if 關鍵字後面的條件式不成立,則程式流程會跳至 else 執行其中大括弧內的區塊程式碼。
現在假設要車速狀況,根據使用者輸入的行車速度,輸出合適的警示訊息,程式的判斷式如下:
- 若是車速大於 100,顯示車速過快之訊息。
- 若是車速小於 100,顯示車速適中之訊息。
class Program { static void Main(string[] args) { const int intMaxSpeed = 100; int intSpeed = 0; Console.WriteLine("請輸入目前車速?"); intSpeed = int.Parse(Console.ReadLine()); if (intSpeed > intMaxSpeed) { Console.WriteLine("請注意,目前車速過快!!"); } else { Console.WriteLine("目前車速適中,請保持車速!!"); } Console.ReadLine(); } }首先在 if 判斷式中,若是大於常數 intMaxSpeed ,則第 13 行執行 if 程式碼區塊,於主控台輸出車速過快的警告訊息。
若是變數值 intSpeed 小於 intMaxSpeed ,提示目前的車速適中,則跳過 if 區塊,執行 else 以後的程式碼區塊。
執行其中的程式碼,假設行車速限為 100 ,當使用者輸入小於 100 的數值,程式輸出車速適中的訊息,輸出如下:
請輸入目前車速 ? 50 目前車速適中,請保持車速 !! 接下來來則是當使用者輸入大於 100 的數值,主控台輸出的訊息畫面。 請輸入目前車速 ? 105 請注意,目前車速過快 !!
巢狀 if
當程式的選擇判斷式不只一個的時候,你可能需要一個巢狀式的 if-else 敘述句,也就是在 if 或是 else 裏面的程式區塊加入另一段 if 敘述句,甚至是 if –else ,語法如下:
if(if-expression ) { if(Expression ) { if 程式區塊 … } else { else 程式區塊 … } } else { if(if-expression) { if 程式區塊 … } else { else 程式區塊 … } }if 以及 else 區塊中還可以放入其他的 if 或是 if-else ,也就是網底標示的部份,以進行下一層的判斷。
為了說明巢狀if敘述,這裏新增了一塊判斷式,若是車速 < 100,則在else以下的區塊裏面再加上一段 if-else 敘述句,整個判斷式擴充如下:
- 假如車速小於100 則進行更進一步的判斷。
- 當車速小於 60,主控台輸出車速過慢的警告。
- 當車速大於 60,主控台輸出車速適中的訊息。
class Program { static void Main(string[] args) { const int intMaxSpeed = 100; const int intMinSpeed = 60; int intSpeed = 0; Console.WriteLine("請輸入目前車速?"); intSpeed = int.Parse(Console.ReadLine()); if (intSpeed > intMaxSpeed) { Console.WriteLine("請注意,目前車速過快!!"); } else {其中新增一個整數值等於 60 的常數 intMinSpeed ,在 else 區塊中的 if-else 區塊形成巢狀區塊,如果第一個 if 判斷式不成立時,執行此巢狀區塊。if (intSpeed > intMinSpeed) { Console.WriteLine("目前車速適中,請保持車速!!"); } else { Console.WriteLine("請注意,目前車速過慢!!"); }} Console.ReadLine(); } }
巢狀 if 區塊內部進一步判斷是否使用者輸入的值大於intMinSpeed,並且輸出適常的訊息。
此範例的輸出結果類似上面的範例內容,只是當使用者輸入的數字小於100的時候,系統會依小於或大於 60 作出不同的判斷,以下是大於60的輸出結果:
請輸入目前車速 ? 80 目前車速適中,請保持車速 !! 底下則是小於60的輸出結果: 請輸入目前車速 ? 50 請注意,目前車速過慢 !!從這個範例的說明,我們很清楚的看到,巢狀結構如何被用來進行多種條件值的判斷,同時執行更為複雜的流程控制。
如果選擇的條件值過多,使用巢狀if判斷式,程式碼就會變得非常複雜且不容易閱讀,此時你可以選擇使用另外一個 switch 敘述句進行流程的控制,這一部份於討論 if-else-if 敘述的時作討論。
沒有留言:
張貼留言