4-5 巢狀選擇結構

Download Report

Transcript 4-5 巢狀選擇結構

第四章
選擇結構
本章學習目標
1. 讓讀者瞭解循序結構與選擇結構之不
同。
2. 讓讀者瞭解選擇結構之種類、語法及
適用時機。
本章內容
4-1 單一選擇結構(if)
4-2 雙重選擇結構
4-3 條件運算子結構
4-4 多重選擇結構
4-5. 巢狀選擇結構
前言
在學會「循序結構」之後,是否發現程式都
是由上而下,逐一執行,但是當在撰寫程式
時,如果希望在某種條件成立時才執行某些
敘述,而某種條件不成立才執行另一種敘述,
來過濾一些條件。那就必須要使用「選擇結
構」的方式了 。
本章重點提示
4-1 單一選擇結構(if) (1/9)

if的中文意思就是「如果…就…」。在單一
選擇結構中,只會執行條件成立時的敘述。
一般而言,又可以依照敘述行數區分為兩
種:
(一) 單行敘述
(二) 多行敘述
4-1 單一選擇結構(if) (2/9)
(一)單行敘述: 指當條件式成立之後,所要執
行的敘述式只有一行稱之。
其中 (條件式) 是一關係運算式 或 邏輯運算式
4-1 單一選擇結構(if) (3/9)
【注意】單行敘述可省略上下兩個大括號。
【說明】
1. 以if為首的條件式必須放在 ( )之內,之後的敘述放
在它後面。
2. 如果「條件式」成立(True),就執行後面的「敘
述」。
3. 如果「條件式」不成立(False),就跳過不執行。若
if條件成立時,希望執行的敘述不只有一行時,請
用{ }括起來。若只有一行,則可以省略。
【使用時機】當條件式成立之後,所要執行的敘述式
只有一行。
4-1 單一選擇結構(if) (4/9)
4-1 單一選擇結構(if) (5/9)
4-1 單一選擇結構(if) (6/9)
(二)多行敘述: 指當條件式成立之後,所要執
行的敘述式超過一行以上則稱之。
其中 (條件式) 是一關係運算式或邏輯運算式
4-1 單一選擇結構(if) (7/9)
【注意】多行敘述不可以省略上下兩個大括
號。
【說明】
1. 如果「條件式」成立,就執行後面的「多行敘
述」。
2. 若if條件式成立時,希望執行的敘述不只有一
行時,請用{ }括起來。
【使用時機】當條件式成立之後,所要執行
的敘述式是多行。
4-1 單一選擇結構(if) (8/9)
4-1 單一選擇結構(if) (9/9)
4-2 雙重選擇結構 (1/10)

此種結構是最常被使用的方式,因為大部份選擇
結構的情況可能兩種。例如:判斷及格與不及格、
判斷奇數與偶數、判斷男生與女生…等情況,都
可以利用此種結構來完成。
其中(條件式)
是一關係運算式 或 邏輯運算式
4-2 雙重選擇結構(2/10)



【說明】如果「條件式」成立(真),就執行
後面的「敘述區塊1」,否則就執行「敘述
區塊2」。
【注意】當「敘述區塊」內的敘述只有一
行時,則可以省略左右大括號。
【使用時機】當條件只有二種情況。
4-2 雙重選擇結構(3/10)
4-2 雙重選擇結構(4/10)
4-2 雙重選擇結構(5/10)

牛刀小試1:參考第三章的循序結構例子。請再增
加一個功能,即利用「平均成績」來判斷「是否
及格」。如圖4-4所示:
4-2 雙重選擇結構(6/10)
4-2 雙重選擇結構(7/10)

牛刀小試2:利用InputBox輸入身高,如果
身高為大於180公分,則顯示「哇!好高
丫」,否則顯示「這才比較正常」。
4-2 雙重選擇結構(8/10)

牛刀小試3:
如果A為偶數,
則顯示「A為
偶數」,否則
顯示「A為奇
數」。
4-2 雙重選擇結構(9/10)

牛刀小試4:請
將下列求絕對值
的流程圖,撰寫
成程式碼。
4-2 雙重選擇結構(10/10)
4-3 條件運算子結構(1/4)

條件運算子結構就是由三個運算子(=?:)組合而成
的選擇結構。其功能與雙重選擇結構相同,都是
使用在選擇結構的情況只有兩種。因此條件運算
子結構也可以取代if/else的功能。
4-3 條件運算子結構(2/4)
4-3 條件運算子結構(3/4)
4-3 條件運算子結構(4/4)
4-4 多重選擇結構
在日常生活中,所面臨決策可能不只一種情
況,也有可能兩種情況,甚至兩種以上不同
情況。在前面已經介紹過兩種情況的結構,
但如果所面對的情況有兩種以上時,則必須
要使用多重選擇結構。常見的有兩種結構:
1. 逐一比對結構if/else if/else
2. 逐一比對結構switch/case
4-4.1 逐一比對結構if/else if/else (1/5)

此種結構是雙重
結構的改良版,
它可以使用於多
種選擇情況。
4-4.1 逐一比對結構if/else if/else (2/5)
【說明】
如果「條件式1」不成立,就繼續往下判斷
「條件式2」,依樣畫葫蘆的判斷下去,直到
所有條件式判斷完為止,否則就執行「敘述
區塊n+1」。
【使用時機】當條件式有兩種以上時。
4-4.1 逐一比對結構if/else if/else (3/5)
4-4.1 逐一比對結構if/else if/else (4/5)
4-4.1 逐
一比對結
構if/else
if/else
(5/5)
4-4.2 逐一比對結構switch/case (1/6)


if/else if/else與switch/case結構具有相同功
能,但如果條件很多時,使用if/else if/else
結構就很容易混亂了。
因此當程式中的條件式(Condition)超過兩
個以上時,最好使用switch/case結構,它
可以使程式較為精簡且可讀性較高。
4-4.2 逐一比對結構switch/case (2/6)
4-4.2 逐一比對結構switch/case (3/6)
【說明1】
當(運算式)的值,符合常數1時,則執行敘述
區塊1,符合常數2時,則執行敘述區塊2,直
到遇到break敘述,才會離開switch,如果所
有的條件式都不能符合時,則會執行敘述區
塊N+1。
 【說明2】
switch後面的運算式可以是整數或字串資料。
並且case後面的常數可以是整數或字串資料。

4-4.2 逐一
比對結構
switch/cas
e (4/6)
4-4.2 逐一比對結構switch/case (5/6)


【實例】將上一題的實例改為利用
switch/case結構方式
計算兩科成績平均,並且依平均成績來分
等第條件:





60分以下為:E等
60~69分為:D等
70~79分為:C等
80~89分為:B等
90(含)分以上為:A等
4-4.2 逐一比對結構switch/case (6/6)
牛刀小試1:製作一個電影分級制的程式條件:
 0~5歲為:普通級
 6~11歲為:保護級
 12~17歲為:輔導級
 18歲以上為:限制級
請利用if/else if/else與switch/case結構來比
較不同的撰寫方式
4-5 巢狀選擇結構(1/5)

指在if外層結構
中,又有一個
或多個if的內層
結構,則形成
了巢狀判斷式
結構稱之。
4-5 巢狀選擇結構(2/5)


【說明】當外層的條件式1成立時,才能執
行內層的條件式2,也因為由外層至內層的
多種判斷結構,形成一種巢狀現象,故稱
為巢狀結構。
但由於使用巢狀結構撰寫程式時,看起來
程式變得比較複雜,不易除錯,所以在寫
程式時一定要養成「外層結構與內層結構
的開頭(if (條件式),必須要有層次的排列」。
4-5 巢狀選擇結構(3/5)
4-5 巢狀選擇結構(4/5)
4-5 巢狀選擇結構(5/5)

牛刀小試:利
用巢狀if來完成
下面的條件:
1.
2.
3.
0~59 分 為 : 不
及格
60~89分為:及
格
90(含)以上為:
優等生