Transcript CH5

EL 1009
計算機概論 (電子一B)
Introduction to Computer Science
Ch. 5 條件判斷式
Instructor:Po-Yu Kuo
教師:郭柏佑
本章簡介

前幾個章節所討論的程式, 都是
從程式的第一行開始執行, 直到
最後一行結束為止。

這種程式的編寫方式我們稱為單
一流程。

無論執行多少次, 流程都是一樣。
2
本章簡介

但是有時我們所做的事情,
常常會因為不同的條件, 而
有不同的做法, 甚至會產生
不同的結果。

這就是本章要討論之條件判
斷式的功能。

利用條件判斷式的功能, 程
式便能選擇以不同路徑完成,
也就是選擇性流程。
3
本章簡介

條件判斷式的範例。

生活中會發生的實際情況 :
 出門時決定是否該帶雨傘?

如果外面在下雨, 就要帶雨
傘。
4
條件判斷 (1):if
5
條件判斷 (1):if

if 是最簡單的條件判斷式。

if 的意思就是 "如果...就...", 也就是說當如果的情
形成立時, 就會執行接下來的程式描述。宣告語法
如下。
6
條件判斷 (1):if

if:" 如果" 的意思。會根據條件算式的結果, 來判
斷接下來是否執行動作中的程式。
 如果條件算式結果為真, 則執行動作;如果為
假, 則跳過不執行動作。

條件算式:結果為真或假的算式, 通常由邏輯或條
件算符組成, 也可以為數值。
 算式的運算結果為 0 表示結果為假;
 運算結果為 1 或其他非 0 的數值, 則表示結果
為真。
7
條件判斷 (1):if

動作:可以為任何有意義的程式碼。
 如運算式、輸出輸入等。
 如果需執行的『動作』只有一行敘述, 可以省
略大括號。
8
計算折扣商品的售價
9
計算折扣商品的售價
10
計算折扣商品的售價
11
條件判斷 (2):if-else
12
條件判斷 (2):if-else

if-else 的意思是說 "如果...就...否則就..."。

if-else 包含了當 if 的條件不成立時, 程式所需要執
行的動作。

動作 1 與動作 2 只會因條件判斷式的真假, 而選
擇一種執行, 不會兩個都執行。
13
判斷單數與雙數
14
判斷單數與雙數
15
判斷單數與雙數
16
條件判斷 (3):if-else if
17
條件判斷 (3):if-else if


條件判斷式也可以設定兩個以上的條件算式, 將所
有的狀況分得更細。
意思是說 "如果...就...否則如果...就..."。
18
條件判斷 (3):if-else if

if-else if 通常是使用在要將所有可能發生的情況,
細分成三種以上, 比如說學生成績的分級:
19
流程圖
20
將成績分等
輸入成績
21
將成績分等
22
將成績分等
23
條件判斷 (4):巢狀 if
24
條件判斷 (4):巢狀 if

在 if 條件判斷式所執行的動作
中可以有其他的條件判斷式存
在, 語法如右:

巢狀 if 條件判斷式適用於需要
層層過濾的資料。
25
條件判斷 (4):巢狀 if

例如:現在有間公司要請一個職員, 男女均可。

但是
 男生需役畢。
 女生需有兩年工作經驗。

我們可以利用巢狀 if 條件判斷式來審查資格。
26
流程圖
27
條件判斷 (5):switch-case
28
條件判斷 (5):switch-case

switch-case的意思是 "選擇合適的
個案來執行"。

也就是說, 我們可以藉著控制
switch, 從數個個案中, 挑選出一個
來執行。

swtich-case 是適合多選一的條件
判斷式。
29
條件判斷 (5):switch-case

switch-case 的語法如下:
 switch:意思是 "選擇"。會根據條件算式的結
果, 判斷接下來要執行哪一個 "case" 內的動作。
 條件算式:結果為數值或字元的算式, 也可以
是變數名稱。
 條件算式值:條件算式可能的結果值, 供
switch 根據條件算式的結果, 選擇符合的值,
並執行其下的動作。
 case:存在於 switch 內的敘述, 可同時存在
兩個以上, 但是每次只有一個會被執行。
30
條件判斷 (5):switch-case

switch-case 的語法如下:
 case:每個 case 都帶有不同的條件算數值與
動作, 並且獨立於其他的 case。
 switch 會根據條件算式的運算結果, 挑選帶有
相同條件算式值的 case, 並執行其所帶程式碼。
 break:結束 case 內動作的敘述。
 default:和 case 一樣會帶有一段程式碼, 但
是不會帶有條件算式值。
 當 switch 的根據條件算式值, 找不到符合的
case 來執行時, 便會執行 default 內的程式碼。
31
條件判斷 (5):switch-case
條件判斷式
條件判斷式的值
32
流程圖
33
綜合演練
34
switch-case 的應用:輸入選項控制
35
switch-case 的應用:輸入選項控制
條件判斷式的值為字元
36
switch-case 的應用:輸入選項控制
37
switch-case 的應用:輸入選項控制
38
改寫程式
將下列的程式使用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”);
39
改寫程式
#include <stdio.h>
main()
{
int month;
printf("Input the month: ");
scanf("%d", &month);
switch…
……..
……..
……..
}
40
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”);
41
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!
42