選 擇 控 制 項 與 條 件 敘 述 資 訊 科 技 系 林 偉 川 結 構 化 程 式 設 計 結 構 化 程 式 設 計 是 一 種 軟 體 開 發 方 法, 它 是 一 種 組 織 和 撰 寫 程 式 碼 的 技 術, 使 用 由 上 而 下 的 設 計 方 法 來 分 析 問 題, 將 程 式 分 解 成 階 層 架 構 的 模 組, 每 個 模 組 是 一 段 擁 有 獨 立 功 能 的 程 式 碼, 而 且 只 有 單 一 的 進 入 點 和 離 開 點, 各 模 組 間 使 用 三 種 流 程 控 制 來 整 合 : 循 序 結 構 (Sequential) 選 擇 結 構 (Selection) 重 複 結 構 (Iteration) 2 1
結 構 化 程 式 設 計 結 構 化 程 式 設 計 的 主 要 觀 念 有 三 項, 如 下 所 示 : 由 上 而 下 的 設 計 方 法 由 上 而 下 的 設 計 方 法 是 當 我 們 面 對 問 題 時, 先 將 整 個 問 題 分 解 成 數 個 獨 立 功 能 的 大 模 組, 再 對 於 這 每 一 個 大 模 組, 一 一 分 割 成 數 個 小 模 組 流 程 控 制 結 構 模 組 3 流 程 控 制 的 基 礎 程 式 語 言 撰 寫 的 程 式 碼 大 部 分 是 一 列 指 令 接 著 一 列 指 令 循 序 的 執 行, 但 是 對 於 複 雜 的 工 作, 為 了 達 成 預 期 的 執 行 結 果, 程 式 碼 的 執 行 不 再 只 是 簡 單 的 指 令 敘 述, 而 需 要 使 用 流 程 控 制 結 構 循 序 結 構 選 擇 結 構 重 複 結 構 4 2
循 序 結 構 循 序 結 構 是 程 式 預 設 的 執 行 方 式, 也 就 是 一 個 敘 述 接 著 一 個 敘 述 依 序 的 執 行 5 選 擇 結 構 選 擇 結 構 是 一 種 條 件 控 制 敘 述, 它 是 一 個 選 擇 題, 可 以 分 為 單 一 選 擇 二 選 一 或 多 選 一, 程 式 執 行 的 順 序 是 依 照 關 係 運 算 式 的 條 件, 來 決 定 執 行 那 一 個 區 塊 的 程 式 碼 6 3
重 複 結 構 重 複 結 構 是 迴 圈 控 制, 它 是 重 複 執 行 一 個 區 塊 的 程 式 碼, 提 供 一 個 結 束 條 件 結 束 迴 圈 的 執 行, 依 結 束 條 件 測 試 的 位 置 不 同 分 為 兩 種, 如 下 所 示 : 前 測 式 重 複 結 構 後 測 式 重 複 結 構 7 前 測 式 重 複 結 構 do while loop 前 測 式 重 複 結 構 : 測 試 迴 圈 結 束 條 件 在 程 式 區 塊 的 開 頭, 需 要 符 合 條 件, 才 能 執 行 迴 圈 中 的 程 式 碼 8 4
後 測 式 重 複 結 構 do loop while 後 測 式 重 複 結 構 : 測 試 迴 圈 結 束 條 件 在 程 式 區 塊 的 結 尾, 所 以 迴 圈 的 程 式 區 塊 至 少 會 執 行 一 次 9 關 係 運 算 子 關 係 運 算 子 也 稱 為 比 較 運 算 子, 它 並 沒 有 優 先 順 序 的 分 別, 通 常 都 是 使 用 在 迴 圈 和 條 件 敘 述 作 為 判 斷 條 件, 其 運 算 結 果 是 布 林 值 的 True 或 False 10 5
運 算 子 = 等 不 小 小 <> 大 大 < > <= >= Is 不 說 等 明 運 算 式 範 例 結 果 關 係 運 算 子 6 = 3 False 小 小 6 <> 3 True 大 大 於 6 < 3 False 物 於 件 等 比 於 較 比 較 兩 個 變 數 是 否 指 向 同 一 個 物 件 6 > 3 True 6 <= 3 False 6 >=3 True 11 邏 輯 與 位 元 運 算 子 如 果 邏 輯 運 算 子 的 運 算 元 是 關 係 運 算 式 的 布 林 資 料 型 別, 它 的 角 色 是 邏 輯 運 算 子, 如 果 是 數 值 的 話,And Or 和 Xor 是 位 元 運 算 子 邏 輯 運 算 子 : 如 果 在 迴 圈 和 條 件 敘 述 的 判 斷 條 件 不 只 一 個, 我 們 需 要 使 用 邏 輯 運 算 子 連 結 多 個 關 係 運 算 式 位 元 運 算 : 如 果 運 算 元 是 Byte Short Integer 或 Long 等 數 值 時,And Or 和 Xor 是 位 元 運 算 子, 能 夠 進 行 二 進 位 值 的 位 元 運 算 12 6
運 算 子 Not 兩 And Or Xor AndAlso OrElse 非 且 傳 回 運 算 元 相 反 的 值 通 常 配 說 合 明 的 布 林 值 邏 輯 都 運 為 算 子 或, 連 結 的 兩 個 運 算 元 中, 任 True, 一 個 則 為 運 算 式 為 為 只 有 一 個 運 算 元 True Ture, 為 則 運 算 式 為 True, 否 則 用 個 且 兩 個 運 算 元 不 同 時 False True True, 運 算 元 則 都 為 式 True, 否 則 連 計 結 算 的 第 兩 個 個 運 算 元 中 才, 傳 為 任 回 一 False True True, 個 為 如 果 已 經 False, 就 不 2 False False, 如 果 第 一 個 為 True, 就 不 用 Ture, 計 算 第 則 個 運 運 算 算 式 元 為, True, 傳 回 否 則 為 2 True 第 個 1 13 邏 輯 運 算 子 邏 運 算 式 範 例 結 果 輯 運 算 子 範 例 Not A Not (5 > 3) False Not B Not (4 <= 2) True A And B 5 > 3 And 4 <= 2 False A Or B 5 > 3 Or 4 <= 2 True A Xor B 5 > 3 Xor 4 <= 2 True A AndAlso B 5 > 3 AndAlso 4 <= 2 False A OrElse B 5 > 3 OrElse 4 <= 2 True, 以 本 此 不 例 用 第 計 二 算 個 運 算 元 根 14 7
位 元 運 算 真 假 值 表 a B a And b a Or b a Xor b 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 15 位 元 運 算 子 子 位 元 運 算 運 算 式 範 例 結 果 A B And 1(01) 3(11) A And C 1(01) Or 1(01) 3(11) A Or B 3(11) Xor 1(01) 3(11) A Xor B 2(10) 16 8
If 是 否 選 條 件 敘 述 If/Then 條 件 敘 述 是 一 種 是 否 執 行 的 條 件, 決 定 是 否 執 行 區 塊 內 的 程 式 碼, 如 果 If 條 件 為 True, 就 執 行 Then/End If 間 的 程 式 碼, 其 語 法 如 下 所 示 : If 條 件 Then 程 式 區 塊 End If 17 If 是 否 選 條 件 敘 述 If 條 件 的 範 例, 如 下 : If txtsex.text = " 男 " Then lbloutput.text &= " 男 生 攜 女 伴 參 加 免 費!" End If 18 9
If Then/Else 二 選 一 條 件 敘 述 如 果 擁 有 排 它 情 況 的 兩 個 執 行 區 塊, 只 能 二 選 一, 可 以 加 上 Else 指 令, 如 果 If 條 件 為 True, 就 執 行 Then/Else 間 的 程 式 碼,False 就 執 行 Else/End If 間 的 程 式 碼, 其 語 法 如 下 所 示 : If 條 件 Then 程 式 區 塊 1 Else 程 式 區 塊 2 End If 19 If Then/Else 二 選 一 條 件 敘 述 If Then/Else 條 件 的 範 例, 如 下 所 示 : score = CInt(txtScore.Text) If score >= 60 Then lbloutput.forecolor = Color.Blue lbloutput.text = " 成 績 及 格!" Else lbloutput.forecolor = Color.Red lbloutput.text = " 成 績 不 及 格!" End If 20 10
If Then/Else 二 選 一 條 件 敘 述 21 IIf 條 件 函 數 VB.NET 的 IIf 條 件 函 數 主 要 是 使 用 在 指 定 敘 述, 以 條 件 來 指 定 變 數 值, 其 語 法 如 下 所 示 : 變 數 = IIf( 關 係 / 條 件 運 算 式, 變 數 1, 變 數 2) 上 述 指 定 敘 述 的 = 號 右 邊 是 條 件 函 數, 如 同 一 個 If/Else 條 件, 如 果 條 件 成 立, 其 傳 回 值 是 變 數 1, 就 是 將 變 數 值 指 定 成 變 數 1, 否 則 傳 回 變 數 2, 此 時 變 數 值 指 定 成 變 數 2 一 個 條 件 函 數 的 範 例, 如 下 所 示 : hour = IIf(hour >= 12, hour-12, hour) 22 11
選 擇 控 制 項 在 VB.NET 提 供 很 多 控 制 項 可 以 配 合 條 件 敘 述 建 立 選 擇 功 能 的 使 用 介 面, 如 下 圖 所 示 : 23 核 取 方 塊 控 制 項 checkbox 核 取 方 塊 是 一 個 開 關, 可 以 讓 使 用 者 選 擇 是 否 開 啟 功 能 或 設 定 某 些 參 數, 如 果 表 單 有 多 個 核 取 方 塊 控 制 項, 其 每 一 個 控 制 項 都 是 獨 立 的 選 項, 它 是 允 許 複 選 的 24 12
,True,True 屬 性 設 核 取 方 塊 定 核 取 方 塊 外 觀 可 以 是 說 明 控 制 項 屬 性 checkbox 是 正 常 鈕 外 觀 核 否 取 已 啟 方 經 用 塊 核 第 目 取 三 前, 種 預 狀 設 態, 預 一 設 共 有 為 沒 三 有 種 核 狀 不 取 態 啟, 用 如 下 為 所 核 示 為 取 : 啟 用 Appearance Normal Checked False ThreeState False CheckedState Checked: 核 取 指 定 Indeterminate: 忽 略, 灰 色 勾 號 Unchecked: 核 取 方 塊 的 對 沒 齊 有 方 核 式 取, 一 共 有 井 字 形 位 置 可 供 選 擇 CheckAlign 或 按 Button 的 個 9 25 核 取 方 塊 控 制 項 checkbox 當 使 用 者 選 取 核 取 方 塊 後, 可 以 檢 查 核 取 方 塊 的 Checked 屬 性, 以 判 斷 使 用 者 是 否 選 取 核 取 方 塊, 如 下 所 示 : If chksirloin.checked Then total += 500 End If 26 13
選 項 按 鈕 控 制 項 radiobutton 選 項 按 鈕 是 一 個 二 選 一 或 多 選 一 的 選 擇 題, 使 用 者 在 一 組 選 項 按 鈕 中 只 能 選 取 一 個 選 項, 它 是 一 個 單 選 題 一 般 會 與 GroupBox 合 用 27 屬 性 選 項 按 鈕 設 外 控 說 明 制 項 外 觀, 屬 可 以 性 是 radiobutton 是 正 常 或 按 鈕 指 觀 選 否 定 擇 已 選 經 項 選 按 取 鈕, 的 預 對 齊 方 式, 一 沒 共 有 選 井 取 字 形 的 為 個 選 位 取 置 可 供 Appearance Normal Button Checked,True CheckAlign 9 設 為 False 28 14
選 項 按 鈕 控 制 項 當 使 用 者 選 取 選 項 按 鈕 後, 我 們 一 樣 是 檢 查 Checked 屬 性, 以 判 斷 是 否 已 選 取 該 選 項 按 鈕, 如 下 所 示 : If chksirloin.checked Then total += 500 End If 29 群 組 方 塊 控 制 項 群 組 方 塊 (GroupBox) 是 一 種 容 器 控 制 項, 在 此 控 制 項 中 可 以 新 增 其 它 控 制 項, 而 且 其 中 的 控 制 項 是 屬 於 同 一 群 組 30 15
屬 性 群 組 方 塊 控 制 說 明 項 屬 性 群 此 組 屬 標 性 ( 題 設 名 為 稱 空, 白 這 的 是 空 位 字 在 串 方 ), 框 左 就 上 只 角 會 的 顯 名 示 稱 方, 框 如 果 沒 有 指 定 Text 31 巢 狀 條 件 敘 述 在 If 條 件 敘 述 擁 有 其 它 的 If 條 件 敘 述, 如 此 的 程 式 架 構 就 是 巢 狀 條 件 敘 述, 如 下 所 示 : If chkcolor.checked Then If rdbred.checked Then lbloutput.forecolor = Color.Red Else lbloutput.forecolor = Color.Yellow End If Else If rdbred.checked Then lbloutput.backcolor = Color.Red Else lbloutput.backcolor = Color.Yellow End If End If 32 16
巢 狀 條 件 敘 述 33 If Then/ElseIf 多 選 一 條 件 敘 述 If Then/ElseIf 條 件 敘 述 是 If Then 條 件 敘 述 的 延 伸, 使 用 ElseIf 指 令 建 立 多 選 一 的 條 件, 如 下 所 示 : If rdbadd.checked = True Then result = num1 + num2 ' 加 ElseIf rdbsubtract.checked = True Then result = num1 - num2 ' 減 ElseIf rdbmultiply.checked = True Then result = num1 * num2 ' 乘 ElseIf rdbdivide.checked = True Then result = num1 / num2 ' 除 Else MsgBox(" 錯 誤 : 沒 有 選 擇 運 算 子!") End If 34 17
If Then/ElseIf 多 選 一 條 件 敘 述 35 Select Case 多 選 一 條 件 敘 述 Select Case 多 選 一 條 件 敘 述 比 較 清 楚 明 白, 程 式 碼 也 比 較 簡 潔, 可 以 依 照 符 合 的 條 件 執 行 不 同 區 塊 的 程 式 碼, 其 語 法 如 下 所 示 : Select Case 運 算 式 Case 值 1 程 式 區 塊 1 Case 值 2 程 式 區 塊 2. Case Else 程 式 區 塊 N End Case 36 18
Select Case 多 選 一 條 件 敘 述 Select Case 條 件 的 範 例, 如 下 所 示 : Select Case amount Case Is < 1000 rate = 0.1 Case 1000 To 4999 rate = 0.08 Case 5000 To 9999 rate = 0.05 Case Is >= 10000 rate = 0 End Select 37 範 例 Select Case 只 試 說 明 多 選 一 條 件 敘 述 有 值 運 等 算 於 為 式 字 或 串 值, 此 時 的 條 件 值 相 當 是 等 於, 即 測 Case Case 1 測 試 值 在 是 否 之 介 間 於 1 小 於 Case Mail Mail 1000~4999 4~6 Case Is < 1000 1000 Case 1000 To 4999 測 Case 2, 3, 4 To 6 測 為 和 2 3 38 19
Select Case 多 選 一 條 件 敘 述 39 Choose 函 數 VB.NET 的 Choose 函 數 可 以 依 第 1 個 參 數 的 整 數 值 來 傳 回 對 應 值, 如 下 所 示 : output = Choose(dtDay, " 星 期 日 ", " 星 期 一 ", " 星 期 二 ", _ " 星 期 三 ", " 星 期 四 ", " 星 期 五 ", " 星 期 六 ") 上 述 程 式 碼 依 照 變 數 dtday 的 整 數 值, 值 1 傳 回 第 2 個 參 數, 即 星 期 日, 值 2 傳 回 第 3 個 參 數, 依 此 類 推 40 20
問 題 若 Checkbox 要 檢 查 是 否 已 經 選 取, 則 需 檢 查 哪 一 個 屬 性 checked true/false 若 表 單 中 要 建 立 多 重 選 擇 題 的 輸 入 介 面, 要 選 擇 哪 一 種 控 制 項?checkbox 若 表 單 中 要 建 立 單 一 選 擇 題 的 輸 入 介 面, 要 選 擇 哪 一 種 控 制 項? radiobutton 若 表 單 中 要 建 立 兩 組 以 上 的 單 一 選 擇 題 的 輸 入 介 面, 要 選 擇 哪 兩 種 控 制 項? groupbox+radiobutton 41 作 業 以 文 字 方 塊 標 籤 及 單 選 項, 結 合 select case 來 顯 示 成 績 等 第 (90-100 為 A,80-89 為 B,70-79 為 C,60-69 為 D 並 顯 現 藍 色,60 以 下 為 F 並 顯 現 紅 色 ) 以 文 字 方 塊 標 籤 及 按 鈕, 結 合 select case 來 計 算 計 程 車 車 資, 里 程 數 在 1500 公 尺 內 為 80 元, 每 多 跑 500 公 尺 加 5 元, 不 足 500 公 尺 以 500 公 尺 計 以 核 取 方 塊 標 籤 及 按 鈕, 顯 示 文 字 的 效 果 ( 加 粗 斜 體 加 底 線 ) 42 21
作 業 以 選 項 按 鈕 及 標 籤, 顯 示 牛 排 點 餐 選 項 ( 三 分 五 分 七 分 全 熟 ) 群 組 方 塊 單 選 項 核 取 方 塊 標 籤 及 按 鈕, 做 出 麥 當 勞 點 餐 計 費 系 統 薯 條 : 大 小 飲 料 : 可 樂 汽 水 紅 茶 為 單 選, 漢 堡 : 麥 香 雞 麥 香 堡 麥 香 魚 可 複 選 以 3 個 文 字 方 塊 3 個 標 籤 及 1 個 按 鈕, 判 斷 是 否 可 為 三 角 形 三 邊 長, 若 可 以 請 顯 示 是 何 種 三 角 形? ( 當 a+b>c,b+c>a,c+a>b 都 成 立 時, 才 可 以 構 成 三 角 形, 斜 邊 為 三 邊 中 最 大 邊 ) 單 選 項 判 斷 式 子 : 不 能 形 成 三 角 形 斜 邊 平 方 = 股 平 方 + 股 平 方 直 角 三 角 形 斜 邊 平 方 > 股 平 方 + 股 平 方 鈍 角 三 角 形 斜 邊 平 方 < 股 平 方 + 股 平 方 銳 角 三 角 形 43 22