🌱 U1 程式基礎・知識點 K04

條件判斷:多重分支與邏輯運算

處理三種以上的結果,並用「且」「或」組合條件

B1-04-MultiBranch
練習平台
點標題可以展開或收合

1學習目標

  • 會處理三種以上的結果(多重分支)。
  • 知道多段條件要依照順序判斷,並會安排判斷順序。
  • 會用「或」組合條件:只要一個成立就算成立。
  • 會用「且」組合條件:全部成立才算成立。

2概念說明

有些問題不只兩種結果,例如成績等第有 A、B、C、D、F 五種。這時可以用「如果…否則,如果…否則…」一層一層往下判斷:

如果 條件1:做 A
否則,如果 條件2:做 B
否則,如果 條件3:做 C
否則:做 D

程式會從上往下檢查,遇到第一個成立的條件就走那條路,後面的就不再檢查。

💡 從最嚴格的條件開始判斷

判斷等第時,先問「≥ 90 嗎?」,不成立再問「≥ 80 嗎?」。因為能走到第二個問題,就代表一定不到 90,所以不用再寫「≥ 80 且 < 90」,條件可以寫得很簡單。

另一種情況是好幾個條件要一起考慮,這時用「且」和「或」把條件接起來:

積木意思例子
A 或 B只要有一個成立就成立年齡 < 12 或 年齡 ≥ 65 → 優惠票
A 且 B全部都要成立才成立三組「兩邊和 > 第三邊」全部成立 → 是三角形

3示範題:跟著一步一步做(2 題)

先讀題,再一步一步點開來看。建議每看完一步,就先自己在平台上試著寫寫看。

示範題 1

成績等第

L2|進階BSC01-006
給定一個分數,請依分數輸出等第。90 分以上為 A,80 到 89 為 B,70 到 79 為 C,60 到 69 為 D,未滿 60 為 F。
輸入
輸入一個整數 S,代表分數。
輸出
輸出一個字母,代表等第。
範例1
輸入
86
輸出
B
第 1 步:讀題,找出輸入和輸出
  • 輸入:一個分數。
  • 輸出:90 以上 A、80~89 B、70~79 C、60~69 D、未滿 60 F。
第 2 步:安排判斷順序

從最高分開始,一層一層往下:

詢問並等待 → 分數
如果 分數 ≥ 90:說出 A
否則,如果 分數 ≥ 80:說出 B
否則,如果 分數 ≥ 70:說出 C
否則,如果 分數 ≥ 60:說出 D
否則:說出 F
第 3 步:用範例走一次

分數 86:≥ 90?不成立 → ≥ 80?成立 → 說出 B,後面的條件都不用再看。

分數第一個成立的條件輸出
95≥ 90A
86≥ 80B
60≥ 60D
45都不成立F
第 4 步:對照範例答案

按「載入範例」,範例答案是把下一個「如果…否則…」放進上一個的「否則」裡面,一層一層往下(Scratch 也是這樣寫)。用 Blockly 的話,也可以在「如果」積木上按齒輪,加上「否則,如果」,兩種寫法效果一樣。

⚠️ 常見錯誤
  • 判斷順序顛倒:先寫「≥ 60 就說 D」,那 95 分也會先符合 ≥ 60,結果變成 D。
  • 邊界寫錯:用成 > 90,剛好 90 分會變成 B。
示範題 2

門票優惠判斷

L2|進階BSC01-004
某遊樂園規定,年齡小於 12 歲或大於等於 65 歲可以購買優惠票,其餘為一般票。
輸入
輸入一個整數 A,代表年齡。
輸出
若可購買優惠票,輸出 DISCOUNT;否則輸出 NORMAL。
範例1
輸入
10
輸出
DISCOUNT
第 1 步:讀題,找出輸入和輸出
  • 輸入:年齡。
  • 輸出:小於 12 歲或大於等於 65 歲輸出 DISCOUNT,其他輸出 NORMAL。
第 2 步:判斷要用「且」還是「或」

一個人不可能同時小於 12 歲又大於等於 65 歲,所以不能用「且」。題目的意思是只要符合其中一個,就用「或」:

詢問並等待 → 年齡
如果 年齡 < 12 或 年齡 ≥ 65:
    說出 DISCOUNT
否則:
    說出 NORMAL
第 3 步:用範例走一次
年齡年齡 < 12年齡 ≥ 65或的結果輸出
10成立不成立成立DISCOUNT
30不成立不成立不成立NORMAL
65不成立成立成立DISCOUNT
第 4 步:對照範例答案

按「載入範例」,看看「或」積木的兩個格子各放了一個比較條件。

⚠️ 常見錯誤
  • 用了「且」:兩個條件不可能同時成立,所有人都會變成 NORMAL。

4練習題(3 題)

照順序完成這些題目。寫完之後,可以在平台上按「載入範例」和自己的寫法比較。

比較大小

L2|進階A-03-0
這題多了什麼:三種結果:第一個數比較大、第二個數比較大、一樣大。用「如果…否則,如果…否則…」分成三條路,最後的「否則」就是一樣大的情況。
看題目內容
在生活中常常會需要比較兩個數字誰比較大。 請寫一個程式,輸入兩個整數,輸出較大的數字。 如果兩個數字相同,就輸出「一樣大」。 這樣的練習可以訓練你使用條件判斷。
範例1
輸入
8
5
輸出
8
範例2
輸入
7
7
輸出
一樣大
💡 需要提示嗎?
有三種可能:第一個大、第二個大、一樣大,用「如果…否則如果…否則」分成三條路。

溫度警示

L2|進階BSC01-005
這題多了什麼:溫度分成三段。想清楚 18 和 27 這兩個邊界各屬於哪一段:18 是 OK(不是 COLD),27 也是 OK(不是 HOT)。
看題目內容
給定目前溫度,請判斷天氣狀態。低於 18 度為 COLD,18 到 27 度為 OK,高於 27 度為 HOT。
輸入
輸入一個整數 T,代表溫度。
輸出
依規則輸出 COLD、OK 或 HOT。
範例1
輸入
30
輸出
HOT
💡 需要提示嗎?
把溫度分成三段,想清楚 18 和 27 這兩個邊界值各屬於哪一段。

三角形成立判斷

L2|進階BSC01-007
這題多了什麼:三組條件(甲+乙>丙、乙+丙>甲、甲+丙>乙)全部成立才是三角形,所以要用「且」把三個條件接起來。
看題目內容
給定三個正整數作為邊長,請判斷是否可以形成三角形。任兩邊和都必須大於第三邊。
輸入
輸入三個正整數 A、B、C,代表三邊長。
輸出
若可形成三角形,輸出 YES;否則輸出 NO。
範例1
輸入
3 4 5
輸出
YES
💡 需要提示嗎?
三組「兩邊和大於第三邊」必須全部成立才是三角形,想想要用「且」還是「或」。

5自我檢核

學完之後,檢查看看你能不能做到這些事。有做不到的,就回到上面對應的地方再看一次。

  • 我會用「否則,如果」寫出三條以上的路。
  • 我知道程式會從上往下找第一個成立的條件,並會安排正確的判斷順序。
  • 我能判斷題目的意思該用「且」還是「或」。
  • 我會用每一段的邊界值測試程式。