下載/瀏覽

Download Report

Transcript 下載/瀏覽

第7章 選擇控制項與條件判斷
[速食店點餐系統]
7-1 結構化程式設計
7-2 是否選條件敘述
7-3 選擇控制項
7-4 二選一條件敘述
7-5 多選一條件敘述
7-1 結構化程式設計
7-1-1 結構化程式設計
7-1-2 流程控制的基礎
7-1-1 結構化程式設計-說明
結構化程式設計是一種軟體開發方法,它是用來
組織和撰寫程式碼的技術,使用由上而下的設計
方法來分析問題,將程式分解成階層架構的「模
組」(Module)。
每個模組是一段擁有獨立功能的程式碼,而且只
有單一的進入點和離開點,各模組間使用三種流
程控制:循序結構(Sequential)、選擇結構
(Selection)和重複結構(Iteration)來整合。
結構化程式設計的主要觀念有三項,如下所示:



由上而下設計方法。
流程控制結構。
模組。
7-1-1 結構化程式設計-由上而下設
計方法
由上而下設計方法是面對問題時,先將整
個問題分解成數個獨立功能的大模組,再
對於這每一個大模組,一一分割成數個小
模組,位在下層的模組並不會跳到上層模
組,如此一直往下細分。
等這些細分的小問題被一一解決且測試完
成後,再將它們整合起來,如此一層層向
上來完成整個程式設計。
7-1-2 流程控制的基礎-說明
程式語言撰寫的程式碼大部分是一列指令
接著一列指令循序的執行,但是對於複雜
的工作,為了達成預期的執行結果,我需
要使用「流程控制結構」(Control
Structures)來改變執行順序。
7-1-2 流程控制的基礎-循序結構
循序結構是程式預設的執行方式,也就是
一個敘述接著一個敘述依序的執行,如下
圖所示:
7-1-2 流程控制的基礎-選擇結構
選擇結構是一種條件控制敘述,它是一個選擇題,
可以分為單一選擇、二選一或多選一共三種。程
式執行順序是依照關係運算式的條件,來決定執
行哪一個區塊的程式碼,如下圖所示:
7-1-2 流程控制的基礎-重複結構
重複結構就是迴圈控制,它是重複執行一
個區塊的程式碼,提供一個結束條件結束
迴圈的執行,依結束條件測試的位置不同
分為兩種,如下所示:


前測式重複結構
後測式重複結構
7-1-2 流程控制的基礎-前測式重複
結構
測試迴圈結束條件在程式區塊的開頭,需
要符合條件,才能執行迴圈中的程式碼,
如下圖所示:
7-1-2 流程控制的基礎-後測式重複
結構
測試迴圈結束條件在程式區塊的結尾,所
以迴圈的程式區塊至少會執行一次,如下
圖所示:
7-2 是否選條件敘述-語法
If Then條件敘述是一種是否執行的條件,
決定是否執行程式區塊內的程式碼。如果If
條件為True,就執行Then/End If間的程式
碼,其語法如下所示:
If 條件 Then
程式區塊
End If
上述「條件」是第6-4節的比較運算式。

ViLLE – 2.1 If Then條件敘述
7-2 是否選條件敘述-範例
例如:在第6-3-2節的多功能計算機可以加上身高
和體重的條件判斷,只有身高大於等於130公分,
才計算BMI值,如下所示:
If height >= 130 Then
Dim h As Double
h = height / 100.0
lblOutput.Text = _
weight / h ^ 2
End If
7-2 是否選條件敘述-省略End If
如果條件需要加上體重需要超過20公斤,
且If Then條件運算式為True時只會執行一
列程式碼,此時可以省略End If,如下所示:
If height < 130 Or weight < 20 Then _
lblOutput.Text = "錯誤: 身高體重值錯誤!"
7-2 是否選條件敘述-Visual Basic專
案
Visual Basic專案:Ch7-2\多功能計算機
這個Windows應用程式是修改第6-3-2節的【多功
能計算機】,使用If Then條件檢查身高和體重是
否符合範圍,符合範圍才計算和顯示BMI值,否
則顯示錯誤訊息。其執行結果如下圖所示:
ViLLE – 2.1 If Then條件敘述
請啟動ViLLE,在【二. 條件敘述】目錄下,選
【1. If Then條件敘述】,按【Run】鈕模擬執行
此範例程式,如下圖所示:
7-3 選擇控制項
7-3-1 核取方塊控制項
7-3-2 選項按鈕控制項
7-3-3 群組方塊控制項
7-3-1 核取方塊控制項-說明
核取方塊是一個開關,可以讓使用者選擇是否開
啟功能或設定某些參數。如果表單擁有多個核取
方塊控制項,每一個控制項都是獨立選項,換句
話說,它允許複選。
核取方塊擁有2個狀態,一是【核取】;另一是
【未核取】。如果核取核取方塊,在小方塊會顯
示勾號,如下圖所示:
7-3-1 核取方塊控制項-屬性
CheckBox核取方塊控制項的常用屬性說明,
如下表所示:
屬性
Appearance
Checked
ThreeState
CheckedState
CheckAlign
說明
核取方塊的外觀,可以是 Normal 正常或 Button 按鈕外觀
是否已經核取,預設 False 為沒有核取;True 為核取
是否啟用第 3 種狀態,預設為 False 不啟用;True 為啟用
核取方塊目前的狀態共有三種狀態:Checked 是核取、
Indeterminate 是忽略的灰色勾號和 Unchecked 沒有核取
指定核取方塊的對齊方式,共有井字形的 9 個位置可供選擇
7-3-1 核取方塊控制項-是否選取
當使用者選取核取方塊後,在程式碼可以
使用核取方塊的Checked屬性值,以判斷使
用者是否有選取此核取方塊,值True表示
勾選,如下所示:
If chkBeef.Checked Then
quantity = CInt(txtBeef.Text)
total += 80 * quantity
End If
7-3-1 核取方塊控制項-Visual Basic
專案
Visual Basic專案:Ch7-3-1\速食店點餐系統
在Windows應用程式使用CheckBox控制項
勾選餐點,在TextBox輸入數量後,可以在
Label標籤控制項顯示結帳的總價。其執行
結果如下圖所示:
7-3-2 選項按鈕控制項-說明
選項按鈕是二選一或多選一的選擇題,使用者可
以在一組選項按鈕中選取一個選項,這是一個單
選題。
選項按鈕的選項是互斥的,只能選取其中一個選
項,如果選取,在小圓圈中會顯示實心圓,沒有
選取是空心圓 ,如下圖所示:
7-3-2 選項按鈕控制項-屬性
RadioButton選項按鈕控制項的常用屬性說
明,如下表所示:
屬性
Appearance
Checked
CheckAlign
說明
選項按鈕的外觀,可以是 Normal 正常或 Button 按鈕外觀
是否已經選取,預設 False 為沒有選取;True 為選取
指定選項按鈕的對齊方式,共有井字形的 9 個位置可供選
擇
7-3-2 選項按鈕控制項-是否選取
當使用者選取選項按鈕後,在程式碼一樣
是檢查Checked屬性,以判斷是否選取該選
項按鈕,如下所示:
If rdbCoke.Checked Then
total += 30 * total_qty
End If
7-3-2 選項按鈕控制項-Visual Basic
專案
Visual Basic專案:Ch7-3-2\速食店點餐系統
這個Windows應用程式是擴充第7-3-1節的【速食
店點餐系統】,新增3個RadioButton控制項來選
擇購買的飲料,數量就是購買漢堡的數量。其執
行結果如下圖所示:
7-3-3 群組方塊控制項-說明
「群組方塊」(GroupBox)是一種容器控制項,
在此控制項中可以新增其他控制項,以便讓這些
控制項屬於同一群組,如下圖所示:
上述選項按鈕之外就是群組方塊,其功能除了美
化控制項編排外,還可以組織表單眾多不同的控
制項。例如:如果有多組選項按鈕擁有排它性,
我們就可以使用群組方塊在同一個表單建立多組
不同的選項按鈕。
7-3-3 群組方塊控制項-屬性
GroupBox群組方塊控制項的常用屬性說明,
如下表所示:
屬性
Text
說明
群組標題名稱,它是位在方框左上角的名稱,如果沒有指定
此屬性(設為空白的空字串)
,就只會顯示方框
7-3-3 群組方塊控制項-Visual Basic
專案
Visual Basic專案:Ch7-3-3\速食店點餐系統
這個Windows應用程式是擴充第7-3-2節的【速食
店點餐系統】,使用GroupBox控制項來群組2組
RadioButton控制項,一是上一節選擇飲料;另新
增一組來選擇薯條。其執行結果如下圖所示:
7-4 二選一條件敘述-語法
如果擁有排它情況的兩個執行區塊,只能二選一,
我們可以在If Then加上Else關鍵字,其語法如下
所示:
If 條件 Then
程式區塊1
Else
程式區塊2
End If
上述If條件如為True,就執行Then/Else間的程式
碼;False就執行Else/End If間的程式碼。

ViLLE – 2.6 If Then/Else二選一條件敘述
7-4 二選一條件敘述-範例
例如:速食店慶祝100家新店開張,消費200元以
下95折;200元以上(含)9折,此時就可以使用
If Then/Else條件敘述,以消費額來決定適用的折
扣,如下所示:
If total >= 200 Then
total = total * 0.9
lblOutput.Text &= "9折: "
Else
total = total * 0.95
lblOutput.Text &= "95折: "
End If
lblOutput.Text &= total.ToString("C")
7-4 二選一條件敘述-流程圖
7-4 二選一條件敘述-Visual Basic專
案
Visual Basic專案:Ch7-4\速食店點餐系統
擴充第7-3-3節的【速食店點餐系統】,因為新店開張促
銷,凡消費200元以下95折;200元以上(含)9折,使用
If Then/Else條件敘述來計算折扣,並且將選擇薯條的2個
If Then條件改為If Then/Else條件敘述。其執行結果如下
圖所示:
ViLLE – 2.6 If Then/Else二選一條件敘
述
請啟動ViLLE,在【二. 條件敘述】目錄下,選
【6. If Then/Else二選一條件敘述】,按【Run】
鈕模擬執行此範例程式,如下圖所示:
7-5 多選一條件敘述
7-5-1 If Then/ElseIf多選一條件敘述
7-5-2 Select Case多選一條件敘述
7-5-1 If Then/ElseIf多選一條件敘述說明
If Then/ElseIf條件敘述是If Then/Else條件
敘述的延伸,使用ElseIf來重複建立多選一
條件敘述。
例如:擴充第6-3-1節的【算術計算機】,
新增RadioButton控制項配合If Then/ElseIf
條件敘述來決定使用哪一種運算子。
7-5-1 If Then/ElseIf多選一條件敘述範例
If rdbAdd.Checked = True Then
lblOutput.Text = opd1 + opd2
ElseIf rdbSubtract.Checked = True Then
lblOutput.Text = opd1 - opd2
ElseIf rdbMultiply.Checked = True Then
lblOutput.Text = opd1 * opd2
……….
ElseIf rdbExp.Checked = True Then
lblOutput.Text = opd1 ^ opd2
Else
lblOutput.Text = opd1 \ opd2
End If
7-5-1 If Then/ElseIf多選一條件敘述流程圖
7-5-1 If Then/ElseIf多選一條件敘述Visual Basic專案
Visual Basic專案:Ch7-5-1\算術計算機
這個Windows應用程式是擴充第6-3-1節的【算術
計算機】,新增RadioButton控制項來選擇運算子,
程式是配合If Then/Else If條件來執行運算。其執
行結果如下圖所示:
7-5-2 Select Case多選一條件敘述-語法
Select Case多選一條件敘述比If Then/ElseIf多條件敘述來
的清楚明白,其程式碼也比較簡潔。它可以依照符合條件
來執行不同區塊的程式碼,其語法如下所示:
Select Case 運算式
Case 值1
程式區塊1
Case 值2
程式區塊2
…….
Case Else
程式區塊N
End Case
上述「運算式」值是用來和Case值比較,每一個Case是
一個條件,如果True,就執行之後的程式區塊。若有例外
情況則執行Case Else後的程式區塊。
7-5-2 Select Case多選一條件敘述-範例
例如:速食店提供外送服務,其額外運費的
Select Case條件,如下所示:
Select Case total
Case Is < 100
rate = 0.2
Case 100 To 499
rate = 0.1
Case 500 To 999
rate = 0.05
Case Is >= 1000
rate = 0
End Select
7-5-2 Select Case多選一條件敘述-流程
圖
7-5-2 Select Case多選一條件敘述Case條件
Case條件的程式碼範例,如下表所示:
Case 範例
Case 1
說明
只有運算式或值,此時條件值相當是等於,即測試
值等於 1
Case "Mail"
測試值為字串值 Mail
Case 100 To 499
測試值在 100~499 之間
Case 2, 3, 4 To 6
測試值是否為 2、3 和介於 4~6
Case Is < 100
測試值是否小於 100
7-5-2 Select Case多選一條件敘述Visual Basic專案
Visual Basic專案:Ch7-5-2\速食店點餐系統
擴充第7-3-3節的【速食店點餐系統】,目前速食店正式
提供外送服務,其費率是依據消費金額的百分比來計算。
在點餐系統新增CheckBox控制項來勾選是否外送,程式
是使用Select Case條件敘述來計算外送運費。其執行結
果如下圖所示: