PowerPoint Presentation

Similar documents
投影片 1

Visual C# 2005程式設計

Microsoft PowerPoint - VB14.ppt

投影片 1

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

Visual Basic D 3D

IsPostBack 2

ActiveX Control

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

Microsoft PowerPoint - ch04_AEL0080.ppt

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

Excel VBA Excel Visual Basic for Application

untitled

國立台北商業技術學院附設空中商業專科進修學校

untitled

附 錄

(Microsoft Word - wes _\246p\246\363\250\317\245\316watchdog\250\276\244\356\265{\246\241\267\355\276\367.doc)

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

投影片 1

Ch6 Visual Basic表單,功能表與模組

Microsoft PowerPoint - 09_CommonComponents.pptx

untitled

Microsoft PowerPoint - STU_C_Lang_CH05

Microsoft PowerPoint - vb_net5

Microsoft PowerPoint - 第14章.ppt

untitled

Microsoft PowerPoint - VB5

計算機程式及實習 期末報告ppt製作 題目:南台黑心早餐店結帳系統

第 6 章 我的程式會轉彎

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

Microsoft Word - 透析8051之迴圈控制方法.doc

VB程序设计教程

Microsoft Word - CS-981.doc

CHAPTER VC#

投稿類別:電子工程類

Microsoft Word - GUI design.doc

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc

Microsoft Word - 小心翼翼的二十一點N.doc

Microsoft PowerPoint - C_Structure.ppt

<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63>

Chapter 16 集合

untitled

untitled

Microsoft PowerPoint - vb_net4

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

MVB-1001.DOC

VB控件教程大全

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

Microsoft Word - AEL CH07

Microsoft PowerPoint - 12 struct and other datatypes.ppt

Microsoft Word - ch03.doc

untitled

馬孝先

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

PowerPoint Presentation

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

2

報價單

編輯大意 一 本書是一本專為普通高中 技術高中學生編寫的程式語言入門書籍, 全書以 Visual Basic 2015 Express 版的程式開發環境, 來介紹程式基礎實作, 適合首次學習程式語言及程式設計的學生使用 二 本書共分 Ⅰ Ⅱ 兩冊,Ⅰ 冊著重介紹程式設計概念與流程控制,Ⅱ 冊則著重介

穨文件1

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

C/C++基礎程式設計班

第 4 章 表單與程式設計

Microsoft Word - ACI chapter00-1ed.docx

Microsoft Word - Prog1-981.docx

untitled

PHP與MySQL 入門學習指南

Ⅰ 冊索引 A Activated 事件 102 algorithm 演算法 126 Array.IndexOf() 方法 306 Array.Reverse() 方法 300 Array.Sort() 方法 300 array 陣列 268 assembler 組譯器 4 assembly lan

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63>

Microsoft Word - 專題製作研究報告書.doc

< D5044B57BA6A1B35DAD70C3FE C C0CBA977C344AE77B8D1C344AFB5D3442DB9EAA5CEBD672DA8E5C2C32E706466>

四川省普通高等学校

Outlook 2010 設定說明 Offic 企業郵件 / 虛擬主機郵件 / Office 365

Microsoft PowerPoint - 13_ClassAndObj.ppt

Microsoft Word - ok翁志文、張佳音...doc

投稿類別:資訊類

PowerPoint Presentation

untitled

2010年3月计算机等级考试四级网络工程师笔试

Microsoft PowerPoint - ch2.pptx

TC35短信发送程序设计

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

Microsoft PowerPoint - 資料庫程式設計教材.pptx

ch02

If Close[Length]!= 0 Then B Close[Length] 是 Length 日前的 Close 不是 0 的話則執行 B % Number 以 Divisor 來求取除法並傳回剩下的部份和 Divisor 具備相同的符 號 格式 :Number % Divisor Numb

untitled

Microsoft PowerPoint - OPVB1基本VB.ppt

Microsoft Word - ch doc

Visual C# 2005程式設計

Microsoft PowerPoint - Chapter5

untitled

Microsoft PowerPoint - 第10章.ppt

Microsoft PowerPoint - ASP03.ppt

05322AR13.indd


SyncMail AJAX Manual

Advanced ASP.NET Controls

CHAPTER 1

Transcription:

Visual Basic 2005 學習 範本 第 5 章選擇結構

5.1 關係運算式與邏輯運算式 關係運算式 和 邏輯運算式 兩者都是在程式設計時, 構成條件的基本要件 關係運算式 和 邏輯運算式 經過運算後會產生真 (True) 或假 (False) 等結果, 來供我們決定程式執行的流向 5-2

一 關係運算式 關係運算式 的功能是用來比較字串 數值 等資料的大小關係 關係運算式 經過運算後, 其結果可以為 True( 真 ) 或為 False( 假 ) 5-2

Visual Basic 提供的關係運算子種類與關係運算式的用法如下表 : 關係運算子 意義 數學表示式 VB 關係運算式 = 相等 A=B A=B <> 不相等 A B A<>B > 大於 A>B A>B < 小於 A<B A<B >= 大於或等於 A B A>=B <= 小於或等於 A B A<=B 5-2

關係運算式範例 例 1 7 > 4 結果為 True( 真 ) 例 2 "a" > "b" 結果為 False( 假 )( 字串是以 ASCII 內碼來比較大小,a 的 ASCII 碼為 97,a 比 b 的 ASCII 碼 98 小, 所以 b 比 a 大 若第一個字元的 ASCII 碼相同, 則比第二字元 ASCII 碼的大小, 以此類推 ) 例 3 #3/17/2006# >= #1/1/2006# 結果為 True( 真 )( 兩個時間做比較時, 時間較晚者會大於較前的時間 ) 例 4 身高不超過 186 的條件式寫法 : 身高 <= 186 5-2

二 邏輯運算式 邏輯運算子可將多個關係運算式, 結合成較複雜的邏輯運算式 邏輯運算式的結果可為 True( 真 ) 或 False ( 假 ) 5-3

Visual Basic 中常用的邏輯運算子種類與邏輯運算式的用法如下表 : 邏輯運算子意義邏輯運算式用法 And 且 A And B 當 A B 皆為真時, 結果才為真 Or 或 A Or B 若 A B 其中只要有一個為真, 結果為真 AndAlso 且 A AndAlso B OrElse 或 A OrElse B Not 非 Not A Xor 互斥或 A Xor B 和 And 相同, 當 A B 皆為真時結果才為真 但當 A 為 False 時, 就不再判斷 B, 因此可以加快程式的速度 和 Or 相同, 若 A B 其中只要有一個為真, 結果就為真 但當 A 為 True 時, 就不再判斷 B, 因此可以加快程式的速度 若 A 為真, 則結果為假 ; 若 A 為假, 結果為真 A B 中必須要有一個為真而且一個為假, 結果才為真 5-3

A 和 B 必須是邏輯運算式, 經過 And Or Not Xor 四個邏輯子運算後, 所有可能的結果如下表 : A B A And B A Or B Not A A Xor B 真真真真假假 真假假真假真 假真假真真真 假假假假真假 5-3

邏輯運算式範例 例 1 小明總成績為 92, 操行等第為甲, 成績和等第的各種邏輯運算 1. (92 >= 90) And (" 甲 " = " 優 ") 結果為 False( 假 ) 2. (92 >= 90) AndAlso (" 甲 " = " 優 ") 結果為 False( 假 ) 3. (92 >= 90) Or (" 甲 " = " 優 ") 結果為 True( 真 ) 4. (92 >= 90) OrElse (" 甲 " = " 優 " ) 結果為 True( 真 ) 5. Not (92 >= 90) 結果為 False( 假 ) 6. (92 >= 90) Xor (" 甲 " = " 優 ") 結果為 True( 真 ) 5-4

邏輯運算式範例 例 2 請寫出成績 (score) 在大於等於 40, 小於 60 之間的條件式 : (score >= 20) AndAlso (score < 60) 例 3 請寫出成績 (score) 小於 0, 大於 100 的條件式 : (score < 0) OrElse (score > 100) 5-4

5-2 演算法介紹 撰寫程式前, 會先利用 演算法 來規劃出解決問題的具體步驟 就像我們在製造汽車之前必須先繪製藍圖, 然後依據藍圖就可以逐步製造出符合規格的汽車, 而 演算法 就是程式設計師的藍圖 演算法 (Algorithm) 的定義為 : 為解決某一特定問題, 所規劃出來的一系列有順序而且明確的步驟 當我們想要利用電腦來解決某一問題前, 必須先充分了解問題, 然後要構思出具體可行且有效率的處理程序 這些抽象的思考過程要採用 演算法 來做具體的呈現, 以便做為撰寫程式時的依據 5-4

一個好的演算法, 必須滿足下列五個條件 : 1. 有限性 : 要在有限的步驟內解決問題 2. 明確性 : 演算法中的每個步驟都必須清楚地表達出來 3. 輸入資料 : 演算法中應包含零個或一個以上的輸入資料 4. 輸出資料 : 演算法中至少應產生一個輸出 5. 有效性 : 每一個步驟必須能在有限的時間內完成 常用的 演算法 方式有兩種 : 一種是 虛擬碼 ( 一般描述語言 ), 另一種則是 流程圖 5-5

一 虛擬碼 (Pseudo Code) 虛擬碼 是使用文字敘述來說明處理問題的步驟, 有點類似程式語言, 由於此種表示方式較易於改寫成任何程式語言 複雜的演算法大都採用此種方式來描述 5-5

二 流程圖 (Flow Chart) 流程圖 就是利用簡明的圖形符號, 來表示程式處理問題的步驟和方法 藉著各種不同的圖形和箭頭來表達解決問題的順序, 每一種圖形代表一種作業功能, 而箭頭代表流程的方向, 可協助我們設計出周詳的程式不致漏掉某些部份 流程圖的缺點, 在於只能表示細部邏輯, 對整個程式的結構比較難以表示, 所以複雜的演算法大都不會採用流程圖來表示, 而是採用虛擬碼 5-5

一般常用的流程圖符號如下表 : 6-6

假設有一個程式是要計算所輸入成績的總和, 若輸入成績為負, 就結束程式印出總和 1. 使用虛擬碼表示 Step 1 令總和 = 0 Step 2 Step 3 Step 6 Step 4 Step 5 Step 6 Step 7 輸入一個成績 若成績 >= 0, 則執行 Step 4; 否則跳到 令總和 = 總和 + 成績 跳回 Step 2 繼續執行 印出總和 結束程式執行 5-6

2. 使用流程圖表示 5-7

5-3 結構化程式設計 結構化程式設計 是發展軟體所採用的一項基本程式設計技術, 它包括了下列幾項技巧 : 1. 使用三種基本的邏輯結構 : 循序 選擇和重覆 2. 由上而下的設計 3. 模組獨立性 5-8

一 循序結構 如果程式執行時, 是依照一定的順序由上往下, 一個敘述緊接著下面一個敘述依序執行, 就是所謂的 循序結構, 也是最簡單而常用的結構 5-8

二 選擇結構 選擇結構 是程式在執行中, 依據條件式的結果來改變程式執行的流向 當滿足條件時, 就執行某一敘述區段, 反之則執行另一敘述區段 最後都會回到同一位置繼續往下執行 選擇結構的條件是由關係運算式或邏輯運算式或算術運算式所組合而成 選擇結構一般分為下列三種 : 1. 單一選擇結構 2. 雙向選擇結構 3. 多向選擇結構 5-9

單一選擇結構 5-9

雙向選擇結構 5-9

多向選擇結構 5-10

三 重覆結構 所謂 重覆結構 就是程式中某一敘述區段需要反覆地執行, 一直到符合或是不符合某一條件時, 才離開重覆執行的敘述區段 這些條件也是由關係 邏輯及算術運算式組合而成, 我們常將重覆結構稱為 迴圈 (Loop) 重覆結構可分為下列兩種 : 1. 前測式重覆結構 2. 後測式重覆結構 5-10

1. 前測式重覆結構 所謂 前測式重複結構 表示進入廻圈之前會先測試條件 若條件為 True, 則執行敘述區段 A 一次, 再重回測試條件, 只要滿足條件, 就會繼續執行敘述區段 A 若條件的結果為 False, 則離開廻圈, 往下執行緊接在廻圈後面敘述區段 B 所以, 在敘述區段 A 中必須有改變條件為 False 的敘述, 否則會變成 無窮迴圈 前測式中的敘述區段 A, 若第一次條件不滿足, 會直接跳出廻圈, 所以敘述區段 A 不一定會被執行 6-11

前測式重覆結構流程圖 5-11

2. 後測式重覆結構 所謂 後測式迴圈 至少先執行敘述區段 A 一次, 再測試條件 若條件成立, 再執行敘述區段 A; 否則離開廻圈往下執行敘述區段 B 所以敘述區段 A 至少會執行一次 5-11

後測式重覆結構流程圖 5-11

5-4 選擇敘述 Visual Basic 所提供常用的選擇結構分類如下 : 5-12

一 單向選擇的 If Then 敘述 單向選擇 敘述是當運算式結果為真時, 才執行 Then 後面的敘述區段 ; 若不滿足條件, 則不執行任何敘述 If Then 敘述的中文意思為 如果 就, 其語法分為下列單行敘述和多行敘述兩種 1. 單行敘述 當敘述區段很短時可採用單行敘述其格式如下 : If < 條件 > Then 敘述區段 例 1 求數值 a 的絕對值 If a < 0 Then a = -a 例 2 如果使用者的點數 point 大於等於 1000, 就設定通關旗標 pass 為 True If point >= 1000 Then pass = True 5-12

2. 多行敘述 如果敘述區段的敘述超過一行時, 宜採用多行敘述, 最後再以 End If 結束 其格式如下 : If < 條件 > Then 敘述區段 End If 例 學生成績如果不及格, 就設等級為 不及格, 並且不及格人數加一人 If 成績 < 60 Then 等級 = 不及格 不及格人數 += 1 End If 說明 本例變數名稱使用中文, 因為 Visual Basic 可以用中文命名, 但一般仍以英文命名為主 5-13

二 雙向選擇的 If Then Else 敘述 雙向選擇 敘述是當條件為真時, 會執行 Then 後面的敘述區段, 否則執行 Else 後面的敘述區段 If Then Else 敘述的中文意思為 " 假如 就 否則 ", 格式如下 : If < 條件 > Then 敘述區段 A Else 敘述區段 B End If 說明 1. 若 < 條件 > 為 True, 就執行敘述區段 A; 否則執行敘述區段 B 2. 所謂 敘述區段 就是指一行或以上敘述的集合 為了提高程式的可讀性與維護性, 屬於同一區段的敘述, 通常也都向內縮排上下對齊 3. 若 If 敘述裡面還有 If, 或是 Else 敘述裡面還有 If 則稱為 巢狀選擇結構 5-13~14

例 如果 性別 為 男, 就設 稱呼 為 先生, 否則為 女士 5-14

三 IIf 函數 若要透過 If Then Else 判斷其真假, 直接傳回不同的值或字串時, 可使用 IIf 函數 其語法如下 : 語法 :IIf(< 條件 >, V1, V2) 功能 : 依條件的成立與否, 傳回 V1 或 V2 說明 1. 若條件成立, 則傳回 V1; 反之, 則傳回 V2 2. V1 V2: 可以為數值 字串或運算式 5-13~14

IIf 函數範例 例 若成績大於等於 60 就顯示 及格, 否則顯示 不及格 1. 使用 If Then Else 敘述 If score > =60 Then MsgBox( 及格 ) Else MsgBox( 不及格 ) End If 2. 使用 IIf 函數 MsgBox(IIf(score >=60, 及格, 不及格 )) 5-13~14

範例 5_4_1 出現對話方塊詢問 是否結束程式?, 若使用者按 是 鈕, 就顯示 再見! ; 若按 否 鈕, 就顯示 請繼續! 結果 5-14

程式碼 FileName: v5_4_1.sln 1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load 2 Dim result As MsgBoxResult 3 result = MsgBox(" 是否結束程式?", MsgBoxStyle.YesNo) 4 MsgBox(IIf(result = MsgBoxResult.Yes, " 再見!", " 請繼續!")) 5 End 6 End Sub 解說 1. 第 2 行 : 宣告 result 為 MsgBoxResult 資料型別 2. 第 4 行 : 用 IIf 函數根據 result 值, 給於不同的回饋資訊 5-15~16

5-5 選項按鈕 RadioButton 程式中若需要有多個選項可供選擇而且只能單選時, 我們可以使用 選項按鈕 控制項來設計 每個 選項按鈕 都是相互關聯的, 如果其中一個 選項按鈕 被按時 ( 其 Checked 屬性變為 True), 其它選項按鈕皆自動調整成未選按狀態 ( 其 Checked 屬性變為 False) 下圖是我們在 遊樂場 中 連環新接龍, 設定 難度 時的對話方塊, 是用 選項按鈕 來設定難度 5-16

一 選項按鈕的建立 1. 在工具箱選取選項按鈕工具 2. 在表單工作區或框架等容器控制項中拖曳出適當大小 5-17

二 選項按鈕的常用屬性 屬性說明 Checked AutoCheck Text TextAlign CheckAlign Enabled 按鈕被選取的狀態 選項鈕未被選取為 False( 按鈕外觀為 ); 選項鈕已被選取變成 True( 按鈕外觀為 ) 當 AutoCheck 屬性值為 True 時, 當使用者按選項按鈕系統會自動設定 Checked 的屬性值, 維持只有一個選項按鈕被選取 ; 當屬性值為 False 時, 我們要在 Click 事件程序中自己設定 Checked 的屬性值 標題文字, 內定名稱為 RadioButton1,RadioButton2 標題文字的位置 選項按鈕的位置 選項按鈕是否是有效 : True: 選項按鈕有效 False: 選項按鈕無效 5-17

三 選項按鈕的常用事件 當在選項按鈕控制項上按一下, 會變更 Checked 屬性值, 且同時依序觸動 CheckedChanged 和 Click 兩個事件 但如果該按鈕已經被選取, 在重複點選時因為 Checked 屬性值不改變, 所以只會觸發 Click 事件 通常判斷選取狀態的程式碼, 都寫在 CheckedChanged 事件程序中, 兩者區分如下 : 1. CheckedChanged 事件 : 當選項按鈕控制項的 Checked 屬性值被改變時, 才會觸發 CheckedChanged 事件 2. Click 事件 : 只要選項按鈕控制項被滑鼠點選時, 就會觸發 Click 事件 5-17~18

範例 5_5_1 使用者輸入長度後, 透過 換算成公分 換算成英吋 選項鈕來改變換算單位 執行結果 5-18

問題分析 1. 為了讓使用者輸入長度, 所以建立文字方塊控制項 透過 Text 屬性, 可以得知使用者輸入的長度 2. 換算成公分 換算成英吋 兩個選項鈕, 是使用 選項按鈕 工具來設計 當按下選項鈕後, 會依選項按鈕設定狀況來換算 3. 當選項按鈕的選取狀態改變時, 會觸動 CheckedChanged 事件, 因此將換算單位的程式碼寫在該事件中 而 1 英吋等於 2.54 公分 5-18

介面設計 物件屬性預設名稱 Name 物件名稱 Text 標題 AutoSize 邊界 Label1 lbllength 請輸入長度 : ( 預設值 ) Label2 lblchange ( 預設值 ) False TextBox1 lbllenght 空字串 - RadioButton1 rdbcm 換算成公分 - RadioButton2 rdbinch 換算成英吋 - 5-19

編寫程式碼 FileName: v5_5_1.sln 1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles MyBase.Load 2 lblchange.text = " 請先輸入長度, 然後點選換算單位 " 3 End Sub 4 Private Sub rdbcm_checkedchanged(byval sender As System.Object, ByVal e As _ System.EventArgs) Handles rdbcm.checkedchanged 5 lblchange.text = txtlength.text & " 英吋等於 " & txtlength.text * 2.54 & " 公分 " 6 End Sub 7 Private Sub rdbinch_checkedchanged(byval sender As System.Object, ByVal e As _ System.EventArgs) Handles rdbinch.checkedchanged 8 lblchange.text = txtlength.text & " 公分等於 " & txtlength.text / 2.54 & " 英吋 " 9 End Sub 5-19

5-6 巢狀選擇 如果在條件選擇敘述區段裡面又有條件選擇敘述, 那麼就形成了所謂的 巢狀選擇 通常當選擇的條件有兩種以上時, 就可以利用巢狀選擇去解決 其格式如下 : If < 條件 1> Then If < 條件 2> Then 敘述區段 A Else 敘述區段 B End If Else If < 條件 3> Then 敘述區段 C Else 敘述區段 D End If End If 5-20

巢狀選擇敘述的流程圖如下 : 5-21

範例 5_6_1 獎學金申請條件的前提為, 操行成績必須大於等於 80 分 然後若學科成績大於等於 95 分, 則獎學金 500 元 ; 成績大於等於 90 分, 則獎學金 200 元 使用者輸入操行 學科兩項成績後, 會顯示獎學金的金額 執行結果 5-21

編寫程式碼 1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load 2 Dim score1, score2 As Integer 3 score1 = InputBox(" 請輸入操行成績 :", " 操行成績 ") 4 score2 = InputBox(" 請輸入學期成績 :", " 學期成績 ") 5 If score1 >= 90 Then 6 If score2 >= 95 Then 7 MsgBox(" 操行 " & score1 & " 分, 學科 " & score2 & " 分, 獎學金 500 元 ") 8 Else 9 If score2 >= 90 Then 10 MsgBox(" 操行 " & score1 & " 分, 學科 " & score2 & " 分, 獎學金 200 元 ") 11 Else 12 MsgBox(" 操行 " & score1 & " 分, 學科 " & score2 & " 分, 未達申請條件 ") 13 End If 14 End If 15 Else 16 MsgBox(" 操行 " & score1 & " 分, 學科 " & score2 & " 分, 未達申請條件 ") 17 End If 18 End 19 End Sub 5-21

5-7 核取方塊 CheckBox 在程式中, 如果允許使用者自行選擇某些選項時, 可以使用核取方塊 (CheckBox) 或選項按鈕 (Option Button) 工具來設計 核取方塊 工具是在多個選項中勾選出一個以上的選項或是都不勾選 而 選項按鈕 只能由多個選項中挑出一個選項 下圖是 控制台 中 滑鼠 的 指標設定 的情形, 其中任一選項都可以勾選或不勾選 5-22

一 核取方塊的建立 1. 在工具箱選取核取方塊工具 2. 在表單工作區拉出核取方塊物件大小 5-23

二 核取方塊的常用屬性 5-23~24

三 核取方塊的常用事件 當 ThreeState 屬性值為 False 時, 使用者按核取方塊控制項時會依序觸動 CheckedChanged CheckStateChanged 和 Click 三個事件 所以, 判斷核取方塊勾選狀態的程式碼, 寫在其中一個事件中皆可 但是當 ThreeState 屬性值數為 True 時, 若使用者點選勾選狀態為 未確定 時, 是不會觸動 CheckedChanged 事件 三者事件說明如下 : 1. CheckedChanged 事件 : 當核取方塊控制項的 Checked 屬性值改變時, 就會觸發此事件 2. CheckStateChanged 事件 : 當核取方塊控制項的 CheckState 屬性值改變時, 就會觸發此事件 3. Click 事件 : 當核取方塊控制項被滑鼠點選時, 就會觸發此事件 5-23

範例 5_7_1 使用核取方塊來設定字體是否以粗體或斜體來顯示 執行結果 5-25

問題分析 1. 使用標籤控制項物件, 顯示 地球只有一個 2. 使用兩個核取方塊控制項物件設定 : 粗體 與 斜體 兩個選項 3. 本範例用兩種程式寫法來設計, 第一個程式當使用者按確定鈕後, 視勾選的情形反應在標籤控制項物件上 程式碼就寫在按鈕物件的 Click 事件程序中 5-25

介面設計 物件屬性預設名稱 Name ( 物件名稱 ) Text ( 標題 ) Lable1 lbltitle 地球只有一個 CheckBox1 chkbold 粗體 CheckBox2 chkitalic 斜體 Button1 btnok 確定 5-25

編寫程式碼 - 寫法 1 第 1-3 行 : 程式啟動先執行 Form1_Load 事件, 預設 lbltitle 的字體為正常 第 4-18 行 : 當按確定鈕時, 觸動 btnok_click 事件 第 5-17 行 : 為巢狀選擇敘述先判斷 chkbold 的 Checked 屬性值是否為 True, 如果為 True, 再判斷 chkitalic 的 Checked 屬性值是否為 True, 如果也為 True 則文字同時是粗體和斜體, 將 lbltitle 的屬性 Font 值設為 New Font(" 標楷體 ", 24!,FontStyle.Bold Or FontStyle.Italic) 5-26~27

編寫程式碼 - 寫法 2 第 4-6 行 : 當你改變 chkbode 勾選狀態時會觸動 CheckedChanged 事件 第 5 行 : 將 lbltitle 的屬性 Font 值設為 : New Font(" 標楷體 ", 24, lblword.font.style Xor FontStyle.Bold) 其中 lblword.font.style Xor FontStyle.Bold 的意思為, 用 lbltitle 目前的字體樣式和 Bold 作 Xor 的運算, 也就是原是為粗體就改為非粗體 ; 原是為非粗體就改為粗體 5-26~27

5-8 多向選擇 當選擇的條件超過兩種以上時, 我們可以使用上一節介紹的巢狀選擇敘述來撰寫程式 ; 但是, 如果使用太多層的巢狀 If 敘述, 會增加程式的複雜度, 若使用本節的多向選擇來解決, 不但可讀性高且具結構化 多向選擇敘述將依程式條件測試結果, 分成各個執行路徑, 不同的結果執行不同的敘述區段區塊範圍 在本節中介紹三種多向選擇 : 1.Select Case 敘述 2.Choose 函數 3.Switch 函數 5-28

一 Select Case 敘述 Select Case 敘述是從許多條件中, 執行一段符合條件的敘述區段, 其格式如下 : Select Case 運算式 Case 測試值 1 敘述區段 1 Case 測試值 2 敘述區段 2 Case 測試值 n 敘述區段 n Case Else 敘述區段 n+1 End Select 5-29

流程圖 5-30

一 Select Case 敘述 Select Case 敘述會依據運算式的結果, 找出符合條件的測試值再執行該測試值中的敘述區段, 以達成多向選擇的功能 運算式可以是數值或字串運算式, 而測試值的資料型態必須和運算式值相同 若所有的測試值都不符合運算式條件, 則執行接在 Case Else 後面的敘述區段 下面是一些 Case 子句常用測試值寫法 : 例 1 Case "Y" : 測試值是否為大寫 Y 字元 例 2 Case "abc","abc": 測試值是否和右列的兩個字串之一相符 例 3 Case -5,0,100 : 測試值是否等於數值 5 0 或 100 例 4 Case 60 To 100: 測試值是否介於 60~100 間 例 5 Case Is < 60: 測試值是否小於 60 5-30~31

範例 5_8_1 輸入年度綜合所得淨額, 計算全年應納稅額 綜合所得稅速算公式 : 級別 所得稅 x 稅率 - 累進差額 = 全年應納稅額 執行結果 1 370,000 以下 x 6% - 0 = 全年應納稅額 2 370,001~990,000 x 13% - 18,000 = 全年應納稅額 3 990,001~1,980,000 x 21% - 105,100 = 全年應納稅額 4 1,980,001~3,720,000 x 30% - 283,300 = 全年應納稅額 5 3,720,001 以上 x 40% - 655,300 = 全年應納稅額 5-31

編寫程式碼 第 5 行 : 用 Input 函數輸入綜合所得淨額 第 7-18 行 : 使用 Select Case 敘述, 依據綜合所得淨額, 求得各種等級的稅率與累進差額 5-32

編寫程式碼 第 19 行 : 求稅金 = 綜合所得淨額 x 稅率 第 26 行 : 全年應納稅額 = 稅金 - 累進差額 5-32

二 Choose 函數 Choose 函數會根據第一個引數的值, 傳回相對的對應值, 其格式如下 : 語法 :Choose(i, V1[, V2, [,Vn]]) 功能 : 依 i 的整數值, 傳回依序的對應值 說明 1. 若 Choose 函數中引數 i =1 時, 函數傳回值為 V1;i = 2 傳回 V2 值, 以此類推 i=n 傳回 Vn 值 2. 如果 i 為非整數數值時, 系統將小數部份捨棄 3. 若 i 的整數值小於 1 或大於 n, 傳回值為 Null( 無對應值 ) 傳回值 V1,V2,...Vn 可以為不同資料型態 例 1 res = Choose(i, " 一 ", " 二 ", " 三 ", " 四 "): 如果 i=2 時,res =" 二 " 例 2 res = Choose(i, "1", "one", " 一 ", " 壹 "): 如果 i=3 時,res=" 一 "; 如果 i=5 時,res 為 Null 5-33

三 Switch 函數 Switch 函數會根據運算式的值, 傳回相對的對應值, 其格式如下 : 語法 : Microsoft.VisualBasic.Switch ( 運算式 1, V1[, 運算式 2, V2, [, 運算式 n, Vn]]) 功能 : 依序判斷運算式是否成立, 若成立則傳對應值 說明 1.Switch 函數會先判斷運算式 1 是否為真, 若為真, 則傳回 V1; 否則再判斷運算式 2, 其他依此類推 2. 如果所有運算式的結果皆為假, 則傳回 Null 傳回值 V1,V2,...Vn 可以為不同的資料型態 5-33

三 Switch 函數 例 1 稱呼 = Microsoft.VisualBasic.Switch( 性別 = " 男 ", " 先生 ", 性別 = " 女 ", " 小姐 ") 如果性別 =" 女 " 時, 稱呼 =" 小姐 " 例 2 degree = Microsoft.VisualBasic.Switch (score>=90 And score<=100, " 優 ", score>=80 And score<=89, " 甲 ", score>=70 And score<=79, " 乙 ",score>=60 And score<=69, " 丙 ",score>=0 And score<=59, " 丁 ") 如果 score=81 時,degree=" 甲 " 但若 score=120 時, degree=null 5-34

5-9 框架 GroupBox 與面板 Panel Visual Basic 所提供的物件 ( 控制項 ), 雖然可以單獨執行其功能, 但是部份物件彼此間有著主從的關係 例如我們建立一個表單後, 在上面安置許多物件, 當我們移動表單時, 上面的物件會隨之移動, 其間的關係有如父子, 所以我們將可以背負其它物件的物件稱為 父件 ( 或稱為收納器 ), 而被背負的物件則稱為 子件 在 Visual Basic 中可以做為父件的物件有表單 框架 面板 等 父件與子件間有下列特性 : 1. 父件將內部的子件和外部的物件隔離, 彼此相互不干擾 例如本章介紹的選項按鈕和框架的關係 2. 子件的座標值是以父件為基準, 和其它物件無關 3. 父件移動時子件亦隨之移動, 使得畫面安排更加便利 5-34

當一個表單中有許多物件時, 我們可以利用 框架 GroupBox 或 面板 Panel 來作分門別類 使用框架 ( 或面板 ) 有下列的好處 : 1. 將同一性質的控制項集中在框架 ( 或面板 ) 內, 操作介面更清楚 2. 多組選項按鈕分別安置在不同的框架 ( 或面板 ) 中, 彼此獨立不會相互干擾 3. 移動框架 ( 或面板 ) 時, 上面的控制項會隨之移動, 免除多次調整位置的困擾 下圖為 Windows 中小畫家的對話方塊, 影像屬性 有兩組選項, 一組為單位, 另一組為色彩, 此種設計運用 框架 來分類, 使兩組 選項按鈕 都可以設定而不會相互干擾 5-35

一 建立框架 1. 選取框架 : 點選工具箱框架工具 2. 拖曳出框架 : 將指標移至表單中適當的位置, 拖曳出適當大小 3. 修改屬性值 : 修改框架屬性表內的屬性值 4. 安置其它物件 : 建立在框架內物件時, 必須在框架內拖曳出來, 否則會被視為該控制項在表單上, 而不是在框架內 若框架移動時而物件卻沒有跟隨移動, 表示該物件並未安置在框架之中 5-36

二 框架的常用屬性 屬性說明 Text 標題名稱, 表示此框架的類別 功能 選項等 三 建立面板 面板控制項也具備有容器的功能, 裡面可以放置其他的控制項 和框架控制項外觀最大的不同是, 左上角無法顯示文字 但是面板控制項可以有捲軸, 如此就可以節省輸出入介面版面的空間 1. 選取面板工具 : 點選工具箱面板工具 2. 拖曳出面板 : 將指標移至表單中適當的位置, 拖曳出適當大小 5-36

範例 5_9_1 使用框架設計一個 XBOX 電玩的採購系統, 主機預設為 豪華配備( 台灣 ) ; 贈品預設為 生死格鬥 ; 選配部分預設都不勾選 點選後按確定鈕, 根據點選項目計算出金額 ( 贈品若選 金剛 須加價 ) 執行結果 5-37

問題分析 1. 使用框架來分類和區隔各選項按鈕以及核取方塊 2. 在 Form1_Load 事件中, 預設 豪華配備 ( 台灣 ) 生死格鬥 的 Checked 屬性為 True 3. 在確定鈕的 Click 事件中, 根據各個選項按鈕以及核取方塊設定情形, 用選擇結構來計算出採購的總金額 5-37

屬性設計 物件屬性預設名稱 Name ( 物件名稱 ) Text ( 標題 ) Font/ 大小 ( 字型大小 ) GroupBox1 ( 預設值 ) 主機 ( 預設值 ) RadioButton1 rdbxboxprotw 豪華配備 ( 台灣 ) 15250 元 ( 預設值 ) RadioButton2 rdbxboxpro 豪華配備 12980 元 ( 預設值 ) RadioButton3 rdbxbox 核心簡配 9980 ( 預設值 ) GroupBox2 ( 預設值 ) 好禮三選一 ( 預設值 ) RadioButton4 rdbgame1 生死格鬥英文版 ( 預設值 ) RadioButton5 rdbgame2 街頭賽車中文版 ( 預設值 ) RadioButton6 rdbgame3 金剛中文版加價 100 元 ( 預設值 ) GroupBox3 ( 預設值 ) 加點 ( 預設值 ) CheckBox1 chkadd1 無線控制手把 1390 元 ( 預設值 ) CheckBox2 chkadd2 64Mb 記憶卡 1090 元 ( 預設值 ) CheckBox3 chkadd3 耳機麥克風 650 元 ( 預設值 ) Label1 ( 預設值 ) XBOX 採購系統 16 Label2 lblmoney 總計 :15250 元 12 Button1 btnok 確定 ( 預設值 ) 5-38

編寫程式碼 5-38~39

5-10 實例 範例 5_9_1 使用者輸入用電度數, 然後選擇用戶別, 勾選是否為 夏日, 最後按計算鈕算出電費多寡 執行結果 5-40

問題分析 1. 分析電費表發現用戶分為三類, 所以就用三個選項按鈕來供選取 利用選項按鈕的 Checked 屬性值, 配合 If Then Else 選擇結構, 就可以分類計算電價 2. 因為電費又分夏日和非夏日兩種計價方式, 可以用核取方塊讓使用者勾選 然後利用 IIf 函數, 來傳回不同的電費 例如當使用者勾選下日時,IIf(chkSummer.Checked, 2.73, 2.415) 會傳回 2.73 3. 在 計算 鈕的 Click 事件中, 根據各個選項按鈕以及核取方塊設定情形, 用選擇結構來計算出電費的金額 4. 四種不同的收費等級, 可以用 Select Case 多向選擇結構來設計 用戶分類夏月 (6-9 月 ) 非夏月 家庭用電 0~110 度 每度 2.1 元 每度 2.1 元 111~330 度 每度 2.73 元 每度 2.415 元 331~500 度 每度 3.36 元 每度 2.73 元 501 度以上 每度 3.465 元 每度 2.73 元 營業用電 每度 3.465 元 每度 2.73 元 學校用電 每度 2.1 元 每度 2.1 元 5-40

屬性設計 物件屬性預設名稱 Name ( 物件名稱 ) Text ( 標題 ) Label1 ( 預設值 ) 電費試算表 14 Label2 lblmoney ( 預設值 ) 12 Font/ 大小 ( 字型大小 ) GroupBox1 ( 預設值 ) 用戶別 ( 預設值 ) RadioButton1 rdbhome 家庭用 ( 預設值 ) RadioButton2 rdbbussice 營業用 ( 預設值 ) RadioButton3 rdbschool 學校用戶 ( 預設值 ) GroupBox2 ( 預設值 ) 選項 ( 預設值 ) CheckBox1 chksummer 夏日 ( 預設值 ) Button1 btnok 計算 ( 預設值 ) 5-41

編寫程式碼 5-41

編寫程式碼 5-42