選擇結構
—歡樂聖誕
4
本章概念
4-1 變數與條件判斷①
—聖誕禮物 P.94
設定提問、認識變數、
設定變數、計算平均、
條件判斷(如果…那麼…)
4-2 條件判斷②
—聖誕大餐 P.107
設定提問、計算金額、
條件判斷(如果…那麼…否則…)
享用聖誕大餐,開心的慶祝這特別的一天。
變數與條件判斷①
—聖誕禮物
4-1
期中考終於結束了,如果小潔的國文、英語、數 學這 3科成績平均達85分以上,就可以得到聖誕禮物。
請播放範例影片聖誕禮物 .mp4 ,觀察程式的執 行情形,一起用 Scratch 來完成程式吧!
【程式摘要】
1. 爸爸依序詢問國文、英語、數學 3 科成績,並等待 使用者輸入。
2. 每輸入一科成績後,爸爸就說出該科目與分數,例如:國文分數 88。
3. 計算 3 科的平均分數,並判斷是否達 85 分以上:
(1) 如果達 85 分以上,就說「平均分數 ,恭喜獲得聖誕禮物!」
(2) 如果不到 85 分,就說「平均分數 ,下次加油!」
搭配【逐步解析】說明
題目解析流程
任務說明
檔案
4-1
下載方式請見 P.3結束 建立變數 國文 、 英語 、
數學 、 平均
設定提問:
國文、英語、數學分數
計算:平均=(國文+英語+數學)/3
設定變數 國文 、 英語 、 數學 、 平均 為0
將答案存入變數 國文 、 英語 、 數學
2
3
設定變數
輸入各科成績
計算平均 開始
1
不成立 達到85 分 不成立 未達到85 分
成立 成立
下次加油 得到禮物
在這一節中,我們將用 偵測類 積木來輸入資料,
再 以 變數類 與 運算類 積 木 設 定 運 算 式, 最 後 利 用 控制類 的選擇結構來判斷結果(表 1-4-1)。
學習目標 1. 設定變數。
2. 設定詢問。
3. 條件判斷。
表1-4-1 本程式所需積木
積木類型 外觀 功能
事件類 當綠旗被點擊後,開始執行下方的指令積木。
偵測類
*
以對話框顯示設定的問題,並等待使用者輸入答案。*
存放使用者所輸入的答案。變數類
*
自行定義一個新的變數。*
將特定的值指定給變數(以國文為例)。運算類
*
將兩數相加。*
將兩數相除。*
判斷左數是否小於右數。*
判斷左數是否等於右數。*
判斷左數是否大於右數。*
判斷兩個條件中,是否至少有一個成立。*
將2 個字串(或變數)合併成為 1 個字串。
例 。結果:聖誕禮物。
控制類
*
條件程式區塊1
程式區塊2
依條件進行判斷:
(1) 成立:執行程式區塊 1,再執行程式區塊 2。
(2) 不成立:略過程式區塊 1,直接執行程式區塊 2。
以對話框顯示指定文字,並在指定的秒數後消失,
(* 代表首次使用的積木)
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
假設輸入國文分數80、數學分數 70:
(1) 手動計算,結果為
。
(2) 程式執行,結果為。
答變數
• 什麼是變數
程式語言中有一種「用來存放資 料的容器」,稱為「變數」,裡 面可以是空的,也可以存放數字 或文字資料。
• 變數的特性
一個變數只能存放一筆資料,當 放入新的資料時,舊的資料就會 被覆蓋並取代,只留下最新放入 的資料。
變數
1
放入3
變數
3
變數
5
放入
5
變數 變數
99
變數
A
在檔案 4-1-1.sb3 中,先以輸入國文與數學兩科成績為例。爸爸具有下圖的 程式,要計算「國文分數 + 數學分數」。請按綠旗執行程式,假設依序輸入 80、70,執行結果正確嗎?
設定提問、認識變數 使用檔案
4-1-1.sb3
逐步解析 1
01 02 03 04 05 06
詢問:國文分數幾分?(然後等待使用者輸入分數)
說出:國文分數 (2 秒)
詢問:數學分數幾分?(然後等待使用者輸入分數)
說出:數學分數 (2 秒)
說出:總分
變數的使用
【逐步解析 1】中用到的 就是一個變數,當我們依序放入國文分數和數學分 數之後,只能保留後面放進來的數學分數,造成計算錯誤。為了避免這個問題,我們可以依 程式需求新增多個變數,並為每個變數命名,用來存放不同的資料。
• 新增變數
(以 國文 為例)❶
點擊 變數類 。❷
點擊 建立一個變數 。❸
輸入變數名稱: 國文 。❹
點擊 確定 。❺
控制變數的相關積木。• 顯示/隱藏變數
我們可以控制舞臺區是否要出現變數的資訊。
右圖中有 國文 、 數學2 個變數:
❶
國文 被勾選。→ 舞臺上會顯示變數 國文 的值。
❷
數學 未勾選。→舞臺上未顯示變數 數學 。
• 把資料放進變數中
詢問國文分數,並將答案放入變數 國文 中的方法:
國文
詢問的 答案
❶
❷
❺
❸
❹
❶
❷
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
在【逐步解析 1】中,共需要輸入 2 個答案,為了避免「後面 輸入的答案(數學分數)」取代「前面的答案(國文分數)」,我 們要利用 2 個不同的變數來區別兩者,並以變數 國文 和變數 數學 分別存放國文和數學分數。接下來,我們將進一步練習變數的應用,
處理國文、英語、數學三科的分數。
接續【逐步解析 1】,修改程式:
1. 爸爸分別詢問國文、英語、數學 3 科成績,並等待使用者輸入。
2. 每輸入一科分數後,爸爸就說出該科目與分數,例如:「國文分數 88」。
3. 最後,計算平均分數,並說出「平均分數 」。
重複進行 英語、數學
國文分數幾分? 國文分數88 平均分數85
例
國文 88、英語 90、數學 77 →平均分數 85。
設定變數、計算平均
逐步解析 2
1
詢問 各科分數
(以國文為例)
1
詢問 各科分數
2
儲存 各科分數
3
說出 各科分數
4
計算 平均分數
5
說出 平均分數
(1) 以 偵測類 的 來詢問「國文分數幾分?」
並等待使用者輸入分數。
(2) 讓使用者輸入國文分數、英語分數、數學分數的方法相同。
問題思考
解題分析
2
儲存 各科分數
3
說出 各科分數
(以國文為例)
(1) 儲存分數:使用變數。
① 共需設定 個變數,用來儲存國文、英語、數學3 科的分數。
② 要設定 個變數,用來儲存平均分數。
(2) 設定變數:
① 以國文為例:將國文分數 放入變數 國文 。
② 設定各個變數( 國文 、 英語 、 數學 、 平均 )的方法相同。
(1) 說話:用 外觀類 的 來呈現。
(2) 說話的內容:
以 運算類 的 合併文字「國文分數」和變數 。
(3) 說出「國文分數 」。例如:國文分數 90。
文字 變數 的值
(4) 說出各科分數(國文、英語、數學)的方法相同。
(1) 平均=(國文+英語+數學)/3。
(2) 利用變數設定運算式: (國文+英語+數學)/3 。
(3) 將運算式放入變數 平均 中。
(1) 與
3
說出各科分數的方法相同。(2) 說出「平均分數 」。例如:平均分數88。
文字 變數 的值
國文
平均
4
計算 平均分數
5
說出 平均分數
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
【參考程式】(須新增 變數 :國文、英語、數學、平均)
1 2 3
國 文
英 語
數 學 01
02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
-- 當綠旗被點一下開始執行 -- 設定變數 國文 為 0 -- 設定變數 英語 為 0 -- 設定變數 數學 為 0 -- 設定變數 平均 為 0
-- 詢問國文分數並等待輸入
-- 將輸入的答案放入變數 國文 中
-- 說出「國文分數 」 -- 詢問英語分數並等待輸入
-- 將輸入的答案放入變數 英語 中
-- 說出「英語分數 」 -- 詢問數學分數並等待輸入
-- 將輸入的答案放入變數 數學 中
-- 說出「數學分數 」
-- 將平均分數運算式放入變數 平均 中
-- 說出「平均分數 」
5 4
初始值設定
在參考程式的步驟02 ~ 05 中,我們將所有變數的值設為 0,
這個動作稱為「初始值設定」。
在程式中設定不同名稱的變數,電腦會規畫出不同的儲存空 間,以儲存程式執行時所需的資料。當程式執行結束後,這些資 料仍會繼續存在,而重新執行程式時,變數就會以上次儲存的資 料繼續執行。因此在程式一開始,我們通常會指定各變數的「初 始值」,避免產生錯誤。
0
在【逐步解析 2】中,我們使用不同的變數存放各 科輸入的分數,並計算平均分數。接下來,我們要利用 控制類 的 如果…那麼… ,來判斷小潔的平均分數是 否達到 85 分以上,能不能得到禮物。
如果…那麼…
• 功能說明
針對 條件 進行判斷,並決定執行的內容。
Scratch 積木 流程圖
成立
條件程式區塊1
程式區塊2
不成立
成立不成立 條件
程式區塊2
程式區塊1
判斷結果分為「成立」、「不成立」兩種:
1. 成立:程式會先執行程式區塊 1,再接著執行程式區塊 2。
2. 不成立:程式會略過程式區塊 1,直接往下執行程式區塊 2。
• 應用介紹
根據「是否下雨」的回答,判斷要不要提醒「記得帶雨傘」,而不管是否會下雨,都會 說「準備出門囉」。
Scratch 積木 流程圖
成立
說「準備出門囉」
說「記得帶傘」
不成立 答案=會 問「會下雨嗎?」
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
邏輯運算
• 功能說明
在使用「選擇結構」的時候,常要用到兩個以上的條件來進行 判斷,例如前頁範例以「是否下雨」這個條件來決定要不要帶傘,
若希望增加「出大太陽」也要帶傘,但積木上只有一個放置條件的 位置,無法放置兩個條件;此時,就要用到 運算類 的邏輯運算積
木 、 ,將多種條件組合在一起進
行條件判斷。
另外,我們還可以利用 將條件反轉,讓程式撰 寫更方便、更有彈性。
• 積木介紹
甲 乙
甲、乙兩個條件都要成立,結 果才成立。
情 況
條件 判斷
甲 乙 結果
1 ○ ○ ○
2 ○ × ×
3 × ○ ×
4 × × ×
( ○ 代表成立,× 代表不成立)
【情境】
遊樂園的雲霄飛車規定只有超過10 歲且未滿 60 歲的人 才能乘坐。(即介於11 ~ 59 歲的人才能乘坐)
【說明】
年齡須超過10 歲且未滿 60 歲,表示「超過 10 歲」、「未 滿60 歲」兩個條件都必須成立,才能乘坐雲霄飛車,
因此選用 。
例 (1) 50 歲同時滿足「超過 10 歲」、「未滿 60 歲」兩 個條件,所以可以乘坐雲霄飛車。
(2) 70 歲只滿足「超過 10 歲」,但不符合「未滿 60 歲」的條件,所以不能乘坐雲霄飛車。
【程式】
【情境】
當國文分數達60 分以上代表「及格」。
【說明】
60 分以上包含「大於 60 分」、「等於 60 分」兩種情形,
只 要 其 中 一 個 條 件 成 立, 就 表 示 及 格, 因 此 選 用
。
例 60 分只滿足「等於 60 分」的情形、不滿足「大於 60 分」的情形,但仍判斷為及格。
【程式】
甲、乙之中,只要有一個條件 成立,結果就成立。
情 況
條件 判斷
甲 乙 結果
1 ○ ○ ○
2 ○ × ○
3 × ○ ○
4 × × ×
( ○ 代表成立,× 代表不成立)
甲 乙
【情境】
同上題,當國文分數達60 分以上代表「及格」。
【說明】
有時當條件太複雜時,可以反向思考以簡化程式,這時候
就會選用 。
例 上題用
來代表「60 分以上」,而我們也可改用 來表示。
【程式】
條件甲不成立時,結果才成立;
條件甲成立時,結果不成立。
情 況
條件 甲
判斷 結果
1 × ○
2 ○ ×
( ○ 代表成立,× 代表不成立)
甲
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
1
判斷 平均 是否 達85 分以上
2
判斷 平均 是否 小於85 分
判斷標準 條件設定 執行結果
達85 分以上 平均>85 或 平均= 85 說「恭喜獲得聖誕禮物!」
不到85 分 平均<85 說「下次加油!」
(1) 利用 控制類 的 如果…那麼… 來進行條件判斷。
(2) 判斷式為「平均>85 或 平均=85」。
(3) 如果「平均>85 或 平均=85」就說「恭喜獲得聖誕禮物!」
(1) 「平均<85」的條件式寫法,與
1
相似。(2) 如果「平均<85」就說「下次加油!」
接續【逐步解析 2】,爸爸 說出 3 科的平均分數後,依照
「平均是否達到 85 分以上」,
來決定小潔是否能得到聖誕禮 物,執行結果如右表所示。請 利用 Scratch 來完成程式。
逐步解析 3
條件判斷平均 85 分以上 平均小於 85 分
恭喜獲得
聖誕禮物! 下次加油
1
判斷 平均 是否達85 分以上
問題思考
解題分析
2
判斷 平均 是 否 小 於 85 分
【參考程式】(*代表本次新增的積木)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
*17
*18
*19
*20
-- 當綠旗被點一下開始執行 -- 設定變數 國文 為 0 -- 設定變數 英語 為 0 -- 設定變數 數學 為 0 -- 設定變數 平均 為 0
-- 詢問國文分數並等待輸入
-- 將輸入的答案放入變數 國文 中
-- 說出「國文分數 」 -- 詢問英語分數並等待輸入
-- 將輸入的答案放入變數 英語 中
-- 說出「英語分數 」 -- 詢問數學分數並等待輸入
-- 將輸入的答案放入變數 數學 中
-- 說出「數學分數 」 -- 將平均分數運算式
放入變數 平均 中 -- 說出「平均分數 」
-- 條件判斷,如果成立 就執行第 18 行程式 -- 說出「恭喜獲得聖誕禮物!」
-- 條件判斷,如果成立就執行第 20 行程式 -- 說出「下次加油!」
國 文
1
2
英 語
數 學
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
4-1 小試身手 週年慶大特價
歲 末 年 終, 服 飾 店 週 年 慶 特 價, 如 果 衣 服 定 價 500 元 以 上 就 打 85 折( 定 價
× 0.85),如果低於 500 元就不打折。
請幫老闆設計一個結帳程式,以檔案 4-1 小試身手. sb 3 來進行程式撰寫。
1. 電腦說「請輸入衣服的定價」並等待店員
(使用者)輸入。
2. 店員
(使用者)輸入定價後,電腦說「衣服的定價是 」。
3. 依照輸入的定價判斷:
(1) 定價 500 元以上,電腦說「打折後,應收的金額是 」。
例店員輸入600 元。
請輸入衣服的 定價
衣服的定價是 600
打折後,應收 的金額是510
(2) 定價不到 500 元,電腦說「應收的金額是 」。
例店員輸入490 元。
請輸入衣服的 定價
衣服的定價是 490
應收的金額是 490
檔案 4-1 小試身手 下載方式請見 P.3
4-2 條件判斷② —聖誕大餐
聖誕節時,小潔全家 4 人到餐廳用餐,聖誕套餐 每人特價 199 元,消費金額滿 500 元再享 9 折優惠。
若小潔全家都用餐,共要花費多少元呢?
請播放範例影片 聖誕大餐 .mp4,觀察程式的執行 情形,一起用 Scratch 來完成程式吧!
【程式摘要】
1. 服務生詢問「用餐人數幾位?」並等待輸入。
2. 使用者輸入用餐人數後,服務生說出「用餐人數 」。
3. 計算消費金額,並判斷是否打折:
(1) 滿 500 元:服務生說「打折後,您要付的金額是 」。
(2) 不到 500 元:服務生說「您要付的金額是 」。
搭配【逐步解析】說明
題目解析流程
任務說明
檔案
4-2
下載方式請見 P.3開始
輸入 用餐人數
計算 消費金額
顯示用餐人數/
顯示消費金額
打9 折 原價
1
計算金額結束
成立 金額>500 不成立 或
金額=500
2
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
前一節中,我們用兩個 如果…那麼… 來進行條件判 斷,在這節中,我們將改用一個 如果…那麼…否則… 來 進行條件判斷,並比較兩種積木的不同之處(表 1-4-2)。
學習目標 1. 設定詢問。
2. 條件判斷。
表1-4-2 本程式所需積木
積木類型 外觀 功能
事件類 當綠旗被點擊後,開始執行下方的指令積木。
偵測類
以對話框顯示設定的問題,並等待使用者輸入答案。
存放使用者所輸入的答案。
運算類
將兩數相乘。
判斷左數是否小於右數。
判斷左數是否等於右數。
判斷左數是否大於右數。
判斷兩個條件中,是否至少有一個成立。
將2 個字串(或變數)合併成為 1 個字串。
例 。結果:聖誕禮物。
控制類
*
條件程式區塊1
程式區塊2
程式區塊3
依條件進行判斷:
(1) 成立:執行程式區塊 1,再執行程式區塊 3。
(2) 不成立:執行程式區塊 2,再執行程式區塊 3。
外觀類
以對話框顯示指定文字,並在指定的秒數後消失,接著 才執行下一個指令積木。
以對話框顯示指定文字,文字不會消失,並馬上接著執 行後方指令積木。
(* 代表首次使用的積木)
設定提問、計算金額 使 用 檔 案
4-2-1.sb3
逐步解析 1
聖誕套餐每人 199 元。請以服務生為角色撰寫程式:
1. 服務生詢問「用餐人數幾位?」讓使用者輸入用餐人數。
2. 使用者輸入人數後,服務生說「用餐人數 」。
3. 服務生說出「消費金額 」。
例
使用者輸入 4。
用餐人數幾位? 用餐人數4 消費金額796
1
詢問 用餐人數
2
說出 用餐人數
1
詢問 用餐人數
2
說出 用餐人數
3
計算 消費金額
4
說出 消費金額
(1) 詢問的方式與4-1 節【逐步解析 2】Q1 有相同的模式。
(2) 以 偵測類 的 詢問「用餐人數幾位?」並等待輸入人數。
(1) 說話內容:
合併文字「用餐人數」和 。
註 本題僅需輸入一個答案(用餐人數),因此可直接用 來運算,
不須使用變數。
問題思考
解題分析
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
(2) 說出用餐人數:
以 外觀類 的 結合說話內容。
(1) 消費金額=價錢 × 人數
(2) 以 運算類 的 結合 進行運算。
(1) 與
2
說出用餐人數的方法相同。(2) 說話內容:合併文字「消費金額」和運算式。
(3) 說出消費金額:
3
計算 消費金額
4
說出 消費金額
【參考程式】
01 02 03 04
-- 當綠旗被點一下開始執行
-- 詢問用餐人數並等待輸入
-- 說出「用餐人數 」 -- 說出「消費 金額 」
1
2
3
、4
在 4-1 節中,我們利用 如果…那麼… 來進行條件判斷,但是當 需要判斷的條件變多時,就需要使用多次 如果…那麼… ,在解決問 題上會較為不便。
在 S cratch 中還有另一種選擇結構積木 如果…那麼…否則… ,
可協助我們在多個條件判斷時更簡單、更有效率。
如果…那麼…否則…
• 功能說明
針對 條件 進行判斷,並依判斷結果決定進行的程序。
Scratch 積木 流程圖
成立
條件程式區塊1
程式區塊2
程式區塊3
不成立
成立 條件 不成立
程式區塊3
程式區塊1 程式區塊2
判斷結果分為「成立」、「不成立」兩種:
1. 成立:程式會先執行程式區塊 1,再接著執行程式區塊 3。
2. 不成立:程式會先執行程式區塊 2,再接著執行程式區塊 3。
•應用實例
以4-1 節的程式為例,判斷 平均 是「85 分以上」或「小於 85 分」:
用2 個 如果…那麼… 用1 個 如果…那麼…否則…
▲必須使用2 個 如果…那麼… 積木,
進行2 次條件判斷。
▲只要1 個 如果…那麼…否則… 積木,
進行1 次條件判斷。
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
接續【逐步解析 1】,當服 務生說完「消費金額」後,要依 據「金額是否滿 500 元以上」來 決定是否打 9 折,執行結果如右 表。請利用 Scratch 來完成程式。
逐步解析 2
條件判斷例10 人、共 1990 元 例2 人、共 398 元 打折後,您要付
的金額是1791 您要付的金額 是398
進行條件判斷
(用右側積木)
(1) 成 立:將消費金額打 9 折,並說「打折後,您要付的金額是 」。
(2) 不成立:說出「您要付的金額是 」。
(1) 條件判斷: 控制類 的 如果…那麼…否則… 。 (2) 條件:「消費金額> 500 或 消費金額= 500」。
(3) 判斷結果:
成立
滿500 元 以上
①計算消費金額( 打 9 折 ):
②說出「打折後,您要付的金額是 」:
不成立
小於500 元
①消費金額不打折:
②說「您要付的金額是 」:
問題思考
解題分析
進行 條件判斷
【參考程式】(*代表本次新增的積木)
01 02 03 04
*05
*06
*07
-- 成立
-- 不成立 -- 當綠旗被點一下開始執行
-- 詢問用餐人數並等待輸入
-- 說出「用餐人數 」
-- 說出「消費金額 」 判斷條件 是否成立
以變數寫程式
雖然本程式不一定要設 定變數,但若以變數來撰 寫程式,無論是可讀性或 未來的修改與管理,都會 更為方便。
例 如果餐廳的套餐要從 199 元 改 為 299 元,
原 程 式 要 逐 一 將199 改為299,共需修改 5 處,若以變數撰寫的 程 式, 只 需 修 改1 處 即可。
1
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
在 本 節 中, 我 們 利 用 了1 個 如果…那麼…否則… 來 替 代 2 個 如果…那麼… ,讓程式看起來更為簡潔。想一想,這兩種積木在所 有的狀況下都能相互取代嗎?
延伸學習 選擇結構的使用
與
◎狀況一:
成績在60 分以上為及格,60 分以下為不及格。
使用2 個 如果…那麼… 使用1 個 如果…那麼…否則…
條件式1:成績≧ 60,及格。
條件式2:成績 <60,不及格。
60
0 100
不及格 及格
條件式2 成立
條件式1 成立
條件式:成績≧60。
→成立,及格。
→不成立,不及格。
不及格 及格
不成立 60 成立
0 100
◎狀況二:
搭乘公車時,12 歲以下為兒童票,65 歲以上為敬老票。
使用2 個 如果…那麼… 使用1 個 如果…那麼…否則…
條件式1:年齡≦ 12,兒童票。
條件式2:年齡≧ 65,敬老票。
兒童票 敬老票
12 65 條件式1
成立
條件式2 成立
條件式:年齡≦12。
→成立,兒童票。
→ 不成立,年齡 >12 皆 判定為敬老票。
兒童票 敬老票
成立 12 不成立65
敬老票不包含 13 ~ 64 歲。
在 本 節 中, 我 們 利 用 了1 個 如果…那麼…否則… 來 替 代 2 個 如果…那麼… ,讓程式看起來更為簡潔。想一想,這兩種積木在所 有的狀況下都能相互取代嗎?
選擇結構的使用
◎狀況三:
將成績依「等第制」劃分,90 分以上為優等,80 分以上但未滿 90 分為甲等。
使用2 個 如果…那麼… 使用1 個 如果…那麼…否則…
條件式1: 分數≧ 90 ,優等。
條件式2: 分數≧ 80 且分數 <90 , 甲等。
甲等 優等
條件式2 成立
條件式1 成立 80
70 90 100
條件式: 分數≧90 。
→成立,優等。
→ 不成立,分數 <90 皆 判定為甲等。
甲等 優等
不成立 成立
70 90 100
甲等不包含 80 分以下。
已知1 個 如果…那麼…否則… 只 能將結果分為2 類,如右圖所示。
請觀察上述三種狀況,為什麼狀 況二、三中,使用1 個 如果…那麼…
否則… 來替代時,會發生錯誤呢?
成立 不成立
條件
甲 乙
下列幾種情形,是否可以用 1 個 如果…那麼…否則… 來替代 2 個 如果…那麼… ? 可以的打 ,不行的打 ×。
( ) 1. 超市優惠: 如果今天最低氣溫低於 12 °C,冰淇淋買一送一。
如果今天最高氣溫高於35 °C,冰淇淋打 8 折。
( ) 2. 上課服裝: 如果今天有體育課,穿運動服。
如果今天沒有體育課,穿制服。
( ) 3. 餐廳優惠: 幼兒園(含)以下幼童免費。
國小學童半價。
手腦並用
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
試試看,在 中分別輸入50、五十,程式執行結 果會有什麼差別呢?在Scratch 中,有些積木只能輸入特定的資料 型態才能正確運作,例如: 動作類 的 ,空格中只能 填入數字,若填入國字(文字),則程式無法正確執行。Scratch 的資料型態包含下列3 種:數字、字串、布林(邏輯)。
資料型態 說明 相關積木範例
數字 數字可以是整數或 小數。
字串
字 串 是 一 連 串 的
「字元」組合,字 元可以是英文、數 字、符號、中文。
布林
布林是在進行條件 判斷時,用來判斷 條件是否成立的判 斷結果,可分為成 立(True)、不成 立(False)兩種,
讓程式選擇不同的 路徑執行 。
註 在Scratch 中,可以用來判斷
「成立/不成立」的積木,其外 形均為六邊形。
延伸學習 資料型態
知識快遞
我們可以利用 ,來檢驗布林的值為何。
例 因1 不大於 2,結果不成立,
執行時會輸出「false」。
暢銷書折扣 小試身手
書店迎接開學季,舉辦「閱讀越有趣」
圖書優惠活動,全館所有書籍均一特價 250 元, 6 本以上再打 75 折。
請以檔案 4-2 小試身手. sb 3 來進行程式 撰寫。
1. 店員詢問「您要購買幾本書?」並等待使用者輸入。
2. 使用者輸入後,店員說「您購買的數量是 」。
3. 依照輸入的數量來判斷是否打折,並計算消費金額:
(1) 6 本以上,總價再打 75 折,店員說「打折後,您要付的金額是 」。
(2) 不到 6 本,不打折,店員說「您要付的金額是 」。
例使用者輸入8。(原價 250×8 = 2000)
您要購買幾本書? 您購買的數量是8 打折後,您要付 的金額是1500
例使用者輸入4。(原價 250×4 = 1000)
您要購買幾本書? 您購買的數量是4 您要付的金額是 1000
檔案 4-2 小試身手 下載方式請見 P.3
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
第 4章 學習重點
4-1 變數與條件判斷①—聖誕禮物
任務要求1. 使用檔案 4-1-1.sb3 撰寫程式。
2. 爸爸依序詢問國文、英語、數學 3 科成績,並等待使用者輸入。
3. 每輸入完成績,爸爸就說出科目與分數,例如:國文分數 88。
4. 計算 3 科的平均分數,並判斷是否達 85 分以上:
(1) 如果達 85 分以上,就說「平均分數 ,恭喜獲得聖誕禮物!」
(2) 如果不到 85 分,就說「平均分數 ,下次加油!」
問題思考
Q 1. 如何設定詢問,讓使用者輸入國文、英語、數學
3 科的分數?Q 2. 如何說出輸入的科目與分數?
Q 3.
要用多少個變數來儲存3 科輸入的分數以及平均分數?Q 4. 如何以變數列出平均分數的運算式?
Q 5.
如何對平均分數進行條件判斷,判斷是「85 分以上」或「小於 85 分」?解題分析
Q 1. (1) 設定提問: 偵測類 的
。(2) 輸入國文、英語、數學各科分數的方法相同。
Q 2. (1) 說話的內容:以 運算類 的
合併文字和變數。(2) 說出各科分數的方法相同。
Q 3. (1) 將答案放入變數中:(以國文為例)
。(2) 設定變數 國文 、 英語 、 數學 、 平均 的方法相同。
Q 4. (1) 平均 =(國文+英語+數學)/ 3。
(2) 將運算結果放入變數 平均 中:
Q 5. 條件判斷: 控制類 的 如果…那麼… 。
(1) 平均 達 85 分以上 (2) 平均 小於 85 分
4-2 條件判斷②—聖誕大餐
任務要求1. 使用檔案 4-2-1.sb3 撰寫程式。
2. 服務生詢問「用餐人數幾位?」並等待輸入。
3. 使用者輸入用餐人數後,服務生說出「用餐人數 」。
4. 計算消費金額、判斷是否打折,並說出最後要付的金額。
問題思考
Q 1. 如何設定詢問來輸入用餐人數,並說出「用餐人數 」?
Q 2. 如何由用餐人數列出消費金額的運算式,並說出消費金額?
Q 3. 金額滿 500 元以上可打 9 折,要如何判斷,並說出最後要付多少元呢?
解題分析
Q 1.
設定提問: 偵測類 的 。Q 2. (1) 消費金額=價錢 × 人數。
(2) 計算費用: 運算類 的 。
(3) 說話: 外觀類 的 。
Q 3. (1) 條件判斷: 控制類 的
。(2) 條件式為:「消費金額> 500 或 消費金額= 500」。
選 擇 結 構 4 — 歡 樂 聖 誕
第 章
4-1
4-2
科技廣角
第 1 位程式設計師 - 艾達
分析機的一部分。
查理‧巴貝。
你可知道歷史上第一位程式設計師,
出現在沒有電腦、甚至連電燈都還沒發明的時代,
而且是一位女性嗎?
在沒有計算機和電腦的時代,
所有的數學計算都要靠人工來完 成, 不 但 費 時 費 力, 而 且 容 易 出 錯。為了解決這個問題,英國數學 家查理•巴貝( C harles B abbage , 西元 1791 ∼ 1871 年)利用齒輪構 造,設計出可以計算複雜數學函式 的「分析機」,預計要由 8000 個 零件組成、重達 5 噸。可惜,由於 當時的製造技術不足,分析機最終 並未完成;但分析機的設計十分先 進,成為電子計算機的先驅。
電子計算機的先驅
接著上場的是本文的主角,艾達•勒芙雷絲( A da L ovelace ,西元 1815 ∼ 1852 年),他自幼就展現數理 的天分, 17 歲時認識查理•巴貝,也對分析機頗有了解;
28 歲時,翻譯了一本關於分析機的著作,並加上許多自 己的筆記。
在這本翻譯的著作中,艾達的筆記甚至比原文多了 三倍,包括一段專為分析機設計的演算法。雖然分析機 不是電腦,但這段演算法仍被公認為世界上第一個電腦 程式,而艾達也成為世界上第一位程式設計師。
世界上的第一個「電腦程式」
富有想象力的艾達預言:「分 析機不僅能做數學運算,未來可以 用來排版、編曲或是各種更複雜的 用途。」他所預見的就是百年之後 我們所熟知的電腦。
後來,艾達的筆記在西元 1953 年被重新出版,對現代電腦與軟體 工程有著重大影響;美國國防部在 西元 1980 年還將一種電腦程式語 言命名為「 A da 」作為紀念。
影響與紀念
艾達的父親是英國著名浪漫詩人、革命家—拜倫
(George Gordon Byron,西元1788~1824年),
拜倫雖出生於貴族世家,但胸懷人道主義,致力於 爭取社會公益、反抗強權,最後死於希臘獨立戰 爭,年僅36歲。