Instructor:Po-Yu Kuo 教師:郭柏佑 EL 1009 計算機概論 (電子一B) Introduction to Computer Science Ch. 5 條件判斷式 Instructor:Po-Yu Kuo 教師:郭柏佑
本章簡介 前幾個章節所討論的程式, 都是從程式的第一行開始執行, 直到最後一行結束為止。 這種程式的編寫方式我們稱為單一流程。 無論執行多少次, 流程都是一樣。
本章簡介 但是有時我們所做的事情, 常常會因為不同的條件, 而有不同的做法, 甚至會產生不同的結果。 這就是本章要討論之條件判斷式的功能。 利用條件判斷式的功能, 程式便能選擇以不同路徑完成, 也就是選擇性流程。
本章簡介 條件判斷式的範例。 生活中會發生的實際情況 : 出門時決定是否該帶雨傘? 如果外面在下雨, 就要帶雨傘。
條件判斷 (1):if
條件判斷 (1):if if 是最簡單的條件判斷式。
條件判斷 (1):if if:" 如果" 的意思。會根據條件算式的結果, 來判斷接下來是否執行動作中的程式。 如果條件算式結果為真, 則執行動作;如果為假, 則跳過不執行動作。 條件算式:結果為真或假的算式, 通常由邏輯或條件算符組成, 也可以為數值。 算式的運算結果為 0 表示結果為假; 運算結果為 1 或其他非 0 的數值, 則表示結果為真。
條件判斷 (1):if 動作:可以為任何有意義的程式碼。 如運算式、輸出輸入等。 如果需執行的『動作』只有一行敘述, 可以省略大括號。
計算折扣商品的售價
計算折扣商品的售價
計算折扣商品的售價
條件判斷 (2):if-else
條件判斷 (2):if-else if-else 的意思是說 "如果...就...否則就..."。 動作 1 與動作 2 只會因條件判斷式的真假, 而選擇一種執行, 不會兩個都執行。
判斷單數與雙數
判斷單數與雙數
判斷單數與雙數
條件判斷 (3):if-else if
條件判斷 (3):if-else if 條件判斷式也可以設定兩個以上的條件算式, 將所有的狀況分得更細。 意思是說 "如果...就...否則如果...就..."。
條件判斷 (3):if-else if if-else if 通常是使用在要將所有可能發生的情況, 細分成三種以上, 比如說學生成績的分級:
流程圖
將成績分等 輸入成績
將成績分等
將成績分等
條件判斷 (4):巢狀 if
條件判斷 (4):巢狀 if 在 if 條件判斷式所執行的動作中可以有其他的條件判斷式存在, 語法如右:
條件判斷 (4):巢狀 if 例如:現在有間公司要請一個職員, 男女均可。 但是 男生需役畢。 女生需有兩年工作經驗。
流程圖
條件判斷 (5):switch-case
條件判斷 (5):switch-case switch-case的意思是 "選擇合適的個案來執行"。 swtich-case 是適合多選一的條件判斷式。
條件判斷 (5):switch-case switch-case 的語法如下: 條件算式:結果為數值或字元的算式, 也可以是變數名稱。 條件算式值:條件算式可能的結果值, 供 switch 根據條件算式的結果, 選擇符合的值, 並執行其下的動作。 case:存在於 switch 內的敘述, 可同時存在兩個以上, 但是每次只有一個會被執行。
條件判斷 (5):switch-case switch-case 的語法如下: case:每個 case 都帶有不同的條件算數值與動作, 並且獨立於其他的 case。 switch 會根據條件算式的運算結果, 挑選帶有相同條件算式值的 case, 並執行其所帶程式碼。 break:結束 case 內動作的敘述。 default:和 case 一樣會帶有一段程式碼, 但是不會帶有條件算式值。 當 switch 的根據條件算式值, 找不到符合的 case 來執行時, 便會執行 default 內的程式碼。
條件判斷 (5):switch-case 條件判斷式 條件判斷式的值
流程圖
綜合演練
switch-case 的應用:輸入選項控制
switch-case 的應用:輸入選項控制 條件判斷式的值為字元
switch-case 的應用:輸入選項控制
switch-case 的應用:輸入選項控制
改寫程式 將下列的程式使用if-else的部分改寫為Switch, 修改 完後程式有相同的功能.(不用附上執行結果) if (month == 4 || month == 6 || month == 9 ||month == 11) printf(“Month has 30 days.\n”); else if (month == 1 || month == 3 ||month == 5 || month == 7 ||month == 8 || month == 10 || month == 12) printf(“Month has 31 days.\n”); else if (month == 2) printf(“Month has 28 or 29 days.\n”); else printf(“Don’t know that month.\n”);
改寫程式 #include <stdio.h> main() { int month; printf("Input the month: "); scanf("%d", &month); switch… …….. }
Homework#5 1. 將下列的程式使用if-else的部分改寫為Switch, 修改完後程式有相同的功能.(不用附上執行結果) if (month == 4 || month == 6 || month == 9 ||month == 11) printf(“Month has 30 days.\n”); else if (month == 1 || month == 3 ||month == 5 || month == 7 ||month == 8 || month == 10 || month == 12) printf(“Month has 31 days.\n”); else if (month == 2) printf(“Month has 28 or 29 days.\n”); else printf(“Don’t know that month.\n”);
Homework#5 2. 設計一猜數字的程式,正確數字為25(2位數), 使用者可輸入任何1~99之間的數, 當使用者猜中, 印出”Correct!!!! The number is 25!”, 並結束程式;如果未猜中, 會印出訊息提示使用者數字應該更大或是更小, 總共有5次機會, 如果都沒猜中, 就印出”You fail!! The answer is 25!”,並結束程式. 說明: 執行結果 Please guess the number: 25 Correct!!!! The number is 25! Bye-Bye! 繳交期限: 2014/1/2 Please guess the number: 34 Both digits are wrong! Hint: Digit 1 should be smaller! Digit 2 should be larger! --------------------------------- You fail!! The answer is 25! Bye-Bye! 猜中數字時之結果 猜錯數字時之結果