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

Slides:



Advertisements
Similar presentations
計算機程式及實習 Computer Program Design and Experiment) 期末報告 ppt 南台科技大學機械工程系 姓名 : 蔡中銘 學號 :4A 授課老師 : 謝慶存大帥哥.
Advertisements

1 程式語言 Visual Basic 循序結構、選擇結構 黃瀧輝 老師 Long Hwai,Huang.
Visual Basic 程序设计 第四讲.
視窗應用程式表單的基本輸出入 資管系 助理教授 詹曉苓.
題目:徽章之記憶 南台科技大學 機械系 車輛一乙 學號:4A 姓名:黃冠嘉 教師:謝慶存
計算機程式及實習 期末報告 題目:超級猜一猜
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
C#程式設計 第二部分 第5-6章 C# 程式設計 - 南華大學資管系.
計算機程式及實習 期末報告 題目:商店結帳系統
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
課程名稱:程式設計 授課老師:________
第四章 控制结构.
赋值语句与输入、输出语句.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
南台科技大學 機械工程系 車輛一甲 學號:4A 學生:黃信成 老師:謝慶存
1.了解VB6.0的功能特点 、集成环境。 2.理解面向对象程序设计的几个概念。 3.掌握VB应用程序设计的步骤。
課程名稱:程式設計 授課老師:________
14 繪圖與動畫 [我的小畫家][打磚塊遊戲] 14-1 繪圖的基礎 14-2 滑鼠事件與基本繪圖 14-3 在Bitmap物件繪圖
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
Visual Basic 期中報告 組長:沈亞臻 組員:蔣佳育 張庭茹
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
CH10.
Visual Basic程序设计.
程式簡介、VB、物件導向 國立北門高中 林明璋.
BLANK overview.
課程名稱:程式設計 授課老師:________
第九章 常用控制項(ㄧ) 資訊教育研究室 編著 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
Chapter 1 複習.
CH11.
課程名稱:程式設計 授課老師:________
建立VB.NET應用程式 資管系 助理教授 詹曉苓.
第2章 建立Visual Basic應用程式 2-1 如何設計Visual Basic應用程式 2-2 建立主控台應用程式
第2章 建立Visual Basic應用程式.
程式語言 -Visual Basic 變數、常數與資料型態.
程式語言 I – VISUAL BASIC 選擇結構語法與應用 Chapter 7 認知
第18章 B4J的跨平台應用程式開發 18-1 B4J的GUI設計工具與介面控制項 18-2 使用B4J的介面控制項
第8章 数据的排序、搜 索和过滤.
初识Visual Basic.
Visual Basic程序设计基础 计算机科学学院.
第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項
第4章 程序控制结构与算法基础.
計算機程式 廖文淵 Department of Computer Science and Engineering
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
Timer & Format.
機器人-Robot Nobody 機器人.
form1 卡拉OK pictureBox1 fish1.bmp pictureBox2 fish2.bmp label1 卡拉OK字幕機
第12章 VBA模块设计.
Ch03 基本輸出入介面設計 視窗程式設計 授課教師:王大瑾.
算法与程序设计 周少品.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項
題目:南台飲料店結帳系統 南台科技大學 機械工程系 車輛一甲 學號:4A
菜单、状态栏和工具栏 菜单 状态栏 工具栏 编写代码 创建用户界面 Debug and Deploy 使用 Visual
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
第六章 選擇結構 (應用:核取方塊、選項按鈕、框架)
VB语言程序设计教程.
小结 郭清溥.
計算機程式及實習 Computer Program Design and Experiment) 期末報告ppt製作 南台科技大學 機械工程系 題目:南台電影城結帳系統 班級 : 車輛一甲 學號 : 4A 授教學生: 阮偉倫 授課老師: 謝慶存.
第二章、第三章错题分析.
第 11 章 功能表列與工具列的設計 & 第 10 章 檔案.
計算機程式及實習 Computer Program Design and Experiment) 期末報告ppt製作
第6章 運算式與運算子 [算術與多功能計算機]
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
第四章 控制结构 1、顺序控制结构 2、选择结构 3、循环结构.
计算机应用基础 潍坊学院 计算机工程学院 主讲人:丁素英.
Print方法和函数 2019/5/19.
MenuStrip by Szeto CY Visual C# 2008.
算法与Visual Basic程序基础(二)
Presentation transcript:

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 5-2

【例3】 #3/17/2006# >= #1/1/2006# 結果為True(真)(兩個時間做比較時,時間較晚者會大於較前的時間。) 關係運算式範例 【例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 和And相同,當A、B皆為真時結果才 為真。但當A為False時,就不再判斷B ,因此可以加快程式的速度。 OrElse A OrElse B 和Or相同,若A、B其中只要有一個為真,結果就為真。但當A為True時,就不再判斷B,因此可以加快程式的速度。 Not 非 Not A 若A為真,則結果為假;若A為假,結果為真。 Xor 互斥或 A Xor B A、B中必須要有一個為真而且一個為假,結果才為真。 5-3

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

【例1】小明總成績為92,操行等第為甲,成績和等第的各種邏輯運算。 邏輯運算式範例 【例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之間的條件式: 邏輯運算式範例 【例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. 有 限 性:要在有限的步驟內解決問題。 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 若 成績 >= 0,則執行Step 4;否則跳到Step 6 Step 4 令 總和 = 總和 + 成績 Step 5 跳回Step 2繼續執行 Step 6 印出 總和 Step 7 結束程式執行 5-6

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

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

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

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

單一選擇結構 5-9

雙向選擇結構 5-9

多向選擇結構 5-10

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

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

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

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

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

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

一、單向選擇的 If …Then敘述 「單向選擇」敘述是當運算式結果為真時,才執行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

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

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

【介面設計】 5-19 Label1 lblLength 請輸入長度: (預設值) Label2 lblChange False 物件 屬性 預設名稱 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. 使用兩個核取方塊控制項物件設定:「粗體」與「斜體」兩個選項。 【問題分析】 1. 使用標籤控制項物件,顯示「地球只有一個」。 2. 使用兩個核取方塊控制項物件設定:「粗體」與「斜體」兩個選項。 3. 本範例用兩種程式寫法來設計,第一個程式當使用者按 確定 鈕後,視勾選的情形反應在標籤控制項物件上。程式碼就寫在按鈕物件的Click事件程序中。 5-25

【介面設計】 5-25 物件 屬性 預設名稱 Name (物件名稱) Text (標題) Lable1 lblTitle 地球只有一個 物件 屬性 預設名稱 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】 輸入年度綜合所得淨額,計算全年應納稅額。綜合所得稅速算公式: 【執行結果】 5-31 級別 所得稅 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.使用框架來分類和區隔各選項按鈕以及核取方塊。 【問題分析】 1.使用框架來分類和區隔各選項按鈕以及核取方塊。 2.在Form1_Load事件中,預設「豪華配備(台灣)」、「生死格鬥」的Checked屬性為True。 3.在 確定 鈕的Click事件中,根據各個選項按鈕以及核取方塊設定情形,用選擇結構來計算出採購的總金額。 5-37

【屬性設計】 5-38 物件 屬性 預設名稱 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-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元 111~330度 每度2.73元 每度2.415元 331~500度 每度3.36元 501度以上 每度3.465元 營業用電 學校用電 5-40

【屬性設計】 5-41 物件屬性 預設名稱 Name (物件名稱) Text (標題) Font/大小 (字型大小) Label1 (預設值) 電費試算表 14 Label2 lblMoney 12 GroupBox1 用戶別 RadioButton1 rdbHome 家庭用 RadioButton2 rdbBussice 營業用 RadioButton3 rdbSchool 學校用戶 GroupBox2 選項 CheckBox1 chkSummer 夏日 Button1 btnOK 計算 5-41

【編寫程式碼】 5-41

【編寫程式碼】 5-42