第 6 章 我的程式會轉彎

Similar documents
第 4 章 表單與程式設計

Microsoft PowerPoint - VB14.ppt

投影片 1

星星排列 _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

Visual C# 2005程式設計

Microsoft PowerPoint - 09_事件驅動.ppt

Visual Basic D 3D

untitled

IsPostBack 2

untitled

ActiveX Control

untitled

投影片 1

Microsoft PowerPoint - vb_net5

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

Microsoft Word - GUI design.doc

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

VB程序设计教程

untitled

untitled

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

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

untitled

MVB-1001.DOC

Excel VBA Excel Visual Basic for Application

Microsoft PowerPoint - 第14章.ppt

投影片 1

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

Microsoft Word - 序.DOC

2

Microsoft PowerPoint - Chapter5

ThreeDtunnel.doc

untitled

四川省普通高等学校

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

05 CHAPTER Information.IsNumeric ( ) Information.IsDate ( ) True False Date Date True False Y Y Information.IsArray ( ) True False Y Information.IsErr

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

本 土 天 蝗 傳 奇 - 台 灣 大 蝗 生 活 史 及 生 態 習 性 的 研 究 摘 要 台 灣 大 蝗 在 交 配 時 警 覺 性 降 低, 蝗 會 背 著 蝗 跳 到 遠 處, 但 不 會 飛, 肚 子 餓 時 會 進 食, 但 蝗 不 會 交 配 後 蝗 會 選 擇 土 質 堅 實 植

Microsoft PowerPoint - ch04_AEL0080.ppt

個 人 的 手, 拉 著 瞎 子 的 手 把 他 帶 往 村 外 的 時 候, 對 於 瞎 子 來 講, 那 個 人 的 手 和 耶 穌 的 手 有 沒 有 區 別? 沒 有! 為 什 麼 沒 有 區 別? 因 為 對 於 一 個 瞎 子 來 說, 手 和 耳 朵 就 是 他 接 觸 世 界, 瞭

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

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

YS1.mps

<4D F736F F D20AFB4A7C7A555B2D5C2B4A657B3E62E646F63>

Visual C# 2005程式設計

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

計算機程式及實習 期末報告

PowerPoint Presentation

臺北捷運公司 105 年 11 月 27 日新進助理工程員 ( 資訊類 ) 甄試試題 - 程式設計 注意 : 請務必填寫姓名 : 1. 以下題目應全部作答 應考編號 : 2. 科目總分為 100 分 3. 作答時不須抄題目, 但請標明題號, 並請用藍 ( 黑 ) 色原子筆橫向書寫 題目 : 一 軟體

Microsoft PowerPoint - OPVB1基本VB.ppt

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

多層次傳銷與獎金系統

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

馬孝先

¦ÛµM¬ì²Ä3¦¸²Õ¨÷-¾Ç´ú¤ºŁ¶«Êٱ.prn, page Normalize ( <4D F736F F D20A6DBB54DACECB2C433A6B8B2D5A8F72DBEC7B4FAA4BAADB6ABCAADB12E646F63> )

VB控件教程大全

Microsoft PowerPoint - VB5

untitled

Chapter 16 集合

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


Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

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

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


3 Driver do Microsoft Access (*.mdb) hisdata IFIX 1.4

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63>


Microsoft Word - AEL CH07

Microsoft Word - 應用程式設計.doc

untitled

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

Microsoft PowerPoint - VB3






3. 反 映 : 4. 五 花 八 门 : 5. 慷 慨 : 6. 参 与 : 7. 慰 劳 : 8. 延 续 : 9. 珍 爱 : 10. 浪 漫 : 三. 找 出 下 列 每 组 词 中 的 近 义 词 或 同 义 词 : 节 日 节 气 节 令 时 节 习 俗 民 俗 仪 式 风 俗 文 献

The golden pins of the PCI card can be oxidized after months or years

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

05224AA11.indd

Transcription:

新觀念的 Visual Basic.NET 教本 第 6 章我的程式會轉彎

6-1 強制跳躍的 GoTo

GoTo 敘述 跳到 的意思, 執行之後可以跳到前面的敘述, 也可以跳到後面的敘述 使用 GoTo 以前必須先有 標記 存在, 例如 : GoTo L40 Console.WriteLine(10) Console.WriteLine(20) Console.WriteLine(30) L40: Console.WriteLine(40) 標記 跳到標記為 L40 的敘述 標記為 L40 的敘述

標記的設定 標記名稱 =Label_1 Label_1: Console.WriteLine("Hello, VB.NET") 用 ':' 號將標記與敘述分開 標記必須放在敘述的前面, 並且以冒號 : 分隔 標記之後可以不必接續任何敘述, 唯 : 仍不可省略 標記的命名規則與識別字的命名規則相同, 有關識別字的命名規則請參考 2-1 節 敘述 除了標記名稱可以作為標記之外, 數字 0~ 9223372036854775807 也可以作為標記 已使用的標記不能重複使用

標記的設定 正確用法 : 使用例 說明 123: Console.WriteLine() 數字標記 標記 _X: Dim X = 10 Label_A: 標記名稱也可以使用中文 標記後面可以不必接續任何敘述 錯誤用法 : 錯誤的使用例 說明 -123: Dim X = 10 超過數字標記的範圍 Label-X: Console.WriteLine() 100: Console.WriteLine("100") 使用減號 '-', 不符合識別字命名規則 100: Console.WriteLine("200") 標記 100 重複使用

上機 :GoTo: 敘述與無窮迴圈 1. 建立一主控台應用程式專案, 專案名稱定為 ch0601 2. 在程式模組視窗中輸入以下程式 : Sub Main() Dim I L10: I = I + 1 Console.WriteLine( I ) GoTo L10 ' GoTo 跳到前面的敘述 End Sub 3. 執行程式, 結果數字會一直累加, 並且不停地顯示, 如圖 -1 4. 程式無法正常停止, 按下 Ctrl+C 或選取功能表的 偵錯 >> 停止偵錯 結束程式

避免無窮迴圈 將 GoTo 標記改成 : If 條件式 Then GoTo 標記 實例 : Sub Main() Dim I L10: I = I + 1 Console.WriteLine( I ) If I < 10 Then GoTo L10 End Sub I 小於 10 才跳回 L10, 不然就向下執行

上機 : 只能輸入正數的程式 1. 建立一主控台應用程式專案, 專案名稱定為 ch0602 2. 在程式模組視窗中輸入以下程式 : Sub Main() Dim X L10: Console.Write(" 請輸入正數 :"): X = Console.ReadLine.ReadLine() If Val(X) <= 0 Then GoTo L10 Console.WriteLine.WriteLine(" 你輸入了 " & X) End Sub 3. 執行程式, 第一次輸入 -99,, 第二次輸入 0, 第三次輸入 123,, 結果直到輸入 123 之後, 程式才會結束執行

6-2 條件式

If 敘述的流程圖 If 敘述 False 條件式 True 條件式成立時所執行的敘述 If 敘述的下一行 ( 條件式不成立時 )

If 敘述的流程圖 Sub Main() Dim I L10: I = I + 1 Console.WriteLine( I ) If I < 10 Then GoTo L10 End Sub Sub Main() Dim I I = I + 1 Console.WriteLine(I) If I < 10 Then GoTo L10 I < 10 True GoTo L10 False End Sub

布林資料與條件式 為了方便我們在程式中表示條件式是否成立, VB.NET 用 True 來表示條件式成立, 用 False 來表示條件式不成立條件式不成立 實例 : Dim I, X I = 0 X = I < 10 ' X 等於 I < 10 條件式 Console.WriteLine.WriteLine(( X ) ' 輸出 : True I = 20 X = I < 10 ' X 等於 I < 10 條件式 Console.WriteLine.WriteLine(( X ) ' 輸出 : False

比較運算式 比較運算在比較 ' 運算符號 ' 兩邊的資料, 若結果成立, 得到 True, 否則得到 False 在 VB.NET 的程式設計中, 常用的比較運算符號有 6 種, 如下表 : 比較運算符號相當於數學上的使用例 = = 1 = 2 得到 False > > 1 > 2 得到 False < < 1 < 2 得到 True >= 1 >= 2 得到 False <= 1 <= 2 得到 True <> 1 <> 2 得到 True

日期時間的比較 1. 在時間的比較中, 後面的時間大於前面的時間 實例 : #9:30# > #8:30# 得到 True 注意事項 : #12:00:00 AM# 被視為 '0 時 ',, 而 #12:00:00 PM# 被視為一天的中午 12 時

日期時間的比較 2. 在日期的比較中, 後面的日期大於前面的日期 #7/1/2003# > #1/1/2003# 得到 True 3. 同時涵蓋日期及時間的比較中, 先比較日期再比較時間 #1/1/2003 0:00:00# > #12/31/2002 23:59:59# 得到 True #1/1/2003 3:00:00# > #1/1/2003 0:00:00# 得到 True

日期時間的比較 4. 如果比較的一方有日期, 一方沒有日期, 則將沒有日期那一方的日期視為 #01/01/0001#,, 例如 #20:00:00# 相當於 #01/01/0001 20:00:00#,, 所以 : #1/1/2003 9:00:00# > #20:00:00# 得到 True 5. 如果比較的一方有時間, 一方沒有時間, 則將沒有時間那一方的時間視為 #0:00:00#,, 所以 : #1/1/2003# < #1/1/2003 0:0:1# 得到 True

字串的比較 比較的依據是字元的字元碼 比較方式是從字串的第一個字元開始依次比較其字元碼, 直到比較出大小為止 如果未比較出大小, 而某一個字串已先達到最後一個字元, 則長度較小的字串小於長度較大的字串 V B. N E 1. 先依序比較字元碼 V B. N E T 2. 若比較不出, 再比較長度

取得字元的字元碼 英文範圍 (0~127) 內的字元 : 利用 Asc( 字元 ) 得知該字元的字元碼 中文字 : 利用 Asc( 中文字 )) + 65536 得知該中文字的字元碼 實例 : Console.WriteLine.WriteLine( Asc("A") ) 輸出 : 65, 表示字元 A 的字元碼等於 65 Console.WriteLine.WriteLine( Asc("B") ) 輸出 : 66, 字元 B 的字元碼大於 A Console.WriteLine.WriteLine( Asc(" 程 ") + 65536 ) 輸出 : 46459, 中文字 ' 程 ' 的字元碼等於 46459

判斷字元碼大小的規則 英文字母順序在前面者, 其字元碼較小, 例 :"a": < "b" 小寫英文字母 " 大於 " 大寫英文字母, 例 :"a": > "A" 數字 " 小於 " 英文字母, 例 :"2": < "A"" 中文字 " 大於 " 英文字母, 例 :": 程 " > "a"

實例 : 判斷字元碼的大小 "kg" > "KG" 得到 True "COPY" < "COPYRIGHT" 得到 True "ANGEL" < "ANGLE" 得到 True "3-ANGEL" > "ANGLE" 得到 False " 中文 " > "English"" 得到 True 練習一 : (1) " 中國 " > "USA"" (2) "cm" < "CM" (3) "ABC" > "123" 練習二 : (1) Dim A = 100 Dim B = 100-50 Console.WriteLine.WriteLine(( A > B ) (2) Dim X = "100" Dim Y = "100-50" Console.WriteLine.WriteLine(( X > Y ) (3) Console.WriteLine.WriteLine(( #10/01/1999# > #10/1/1998# ) (4) Console.WriteLine.WriteLine(( "10/01/1999" > "10/1/1998" )

邏輯運算 運算符號使用例功能說明 Not Not A 反 A 若 A 為 True, 則 Not A 為 False 若 A 為 False, 則 Not A 為 True And A And B A 且 B 只有當 A 及 B 同時為 True 時, 其結果方為 True, 否則為 False Or A Or B A 或 B 只要 A 或 B 為 True, 其結果便為 True A B Not A A And B A Or B TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE

邏輯運算 實例 :4: 4 > 3 And 1 > 4 4 > 3 And 1 > 4 先進行比較運算 = True And False 再進行邏輯運算 = False 實例 : (True Or False) And (Not True) (True Or False) And (Not True) = True And False = False 實例 :True: Or False And Not True True Or False And Not True = True Or False And False = True Or False 最後才是 Or = True 先運算 Not 再運算 And

實例研究 : 限制輸入範圍 目的 : 我們在第四章曾經撰寫程式讓使用者輸入 國文 數學 及 英文 成績, 然後計算其平均分數 (ch0409 專案 ),, 現在讓我們來改良這個程式 -- 如果使用者輸入的成績小於 0 或大於 100,, 則要求其重新輸入 1. 開啟 ch04 目錄的 ch0409 專案

實例研究 : 限制輸入範圍 2. 開啟程式模組視窗, 檢視其程式碼, 如下 : Private Sub Button1_Click(...) Handles Button1.Click Dim A, B, C A = Val(InputBox (InputBox( 請輸入 [ 數學 ] 成績 )) B = Val(InputBox (InputBox( 請輸入 [ 英文 ] 成績 )) C = Val(InputBox (InputBox( 請輸入 [ 國文 ] 成績 )) MsgBox((A + B + C) / 3,, 平均分數 ) End Sub 以 數學 成績為例, 檢查使用者所輸入的資料是否位於 0~100 區間, 如果不是, 則跳回 A = Val(InputBox (InputBox( 請輸入 [ 數學 ] 成績 )) 敘述的程式如下 : L10: A = Val(InputBox (InputBox("(" 請輸入 [ 數學 ] 成績 ")) If A < 0 Or A > 100 Then Goto L10

實例研究 : 限制輸入範圍 3. 輸入完整的程式 Private Sub Button1_Click(...) Handles Button1.Clic Dim A, B, C L10: A = Val(InputBox(" 請輸入 [ 數學 ] 成績 ")) If A < 0 Or A > 100 Then Goto L10 L20: B = Val(InputBox(" 請輸入 [ 英文 ] 成績 ")) If B < 0 Or B > 100 Then Goto L20 L30: C = Val(InputBox(" 請輸入 [ 國文 ] 成績 ")) If C < 0 Or C > 100 Then Goto L30 MsgBox((A + B + C) / 3,, " 平均分數 ") End Sub

6-3 有條件執行的 If 敘述

If-Then 格式 格式 : If 條件式 Then 敘述 意義 : 如果 ' 條件式 ' 成立, 就執行 Then 之後的 ' 敘述 ',, 否則繼續向下執行

求 X 的絕對值 If-Then 實例練習一 Dim X X = InputBox(" 輸入數值 ") If X < 0 Then X = -X MsgBox( 絕對值 = & X ) 流程圖 : Dim X X = InputBox(" 輸入數值 ") X < 0 True False X = -X MsgBox( " 絕對值 = " & X )

If-Then 實例練習二 功能 : 購物促銷專案, 凡購物滿 500 元, 超出 500 元的部分打 9 折 程式 : Dim 金額金額 = InputBox( 輸入 [ 原價 ] ) If 金額 > 500 Then 金額 = 500 + ( 金額 - 500) * 0.9 MsgBox( 金額 = & 金額 ) Dim 金額 流程圖 : 金額 = InputBox(" 輸入 [ 原價 ]") 金額 > 500 True False 金額 = 500 + ( 金額 -500) * 0.9 MsgBox( " 金額 = " & 金額 )

結構化的 If-Then 格式 當 Then 後面的敘述很多時, 整個 If- Then 敘述將會拖得很長, 對閱讀來說十分不方便, 所以 VB.NET 又提供了另一種結構化的 If-Then 格式 格式 : If 條件式 Then 敘述 1 敘述 2 敘述區塊 : End If

上機 : 資料互換 功能 : 寫一個含有兩個輸入欄位 (TextBox) 的表單, 輸入資料後比較大小, 然後將較大的資料放在第一個欄位, 較小的資料放在第二個欄位 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0604 2. 在表單上佈置兩個 TextBox 及一個 Button, 如圖 -7

上機 : 資料互換 3. 在 Button1_Click 之中輸入程式. 4. 執行程式, 然後分別在 TextBox1 及 TextBox2 之中輸入 10, 99,, 接著按下 重排 鈕, 結果所輸入之資料會重新排成 99, 10, 如圖 -8 Private Sub Button1_Click(...) Handles Button1.Clic Dim Temp If Val(TextBox2.Text) > Val(TextBox1.Text) Then Temp = TextBox1.Text TextBox1.Text = TextBox2.Text TextBox2.Text = Temp End If End Sub

If-Then Then-Else 格式 If 條件式 Then 敘述 1 Else 敘述 2 條件式成立 If 條件式 Then 敘述區塊 1 Else 敘述區塊 2 End If 否則條件式成立否則 If-Then-Else 敘述 緊接著 Else 之後的敘述 False 條件式 True 敘述區塊二 敘述區塊一 End If 之後的敘述 緊接著 Then 之後的敘述

上機 : 顯示成績是否及格 1. 建立一主控台應用程式專案, 專案名稱定為 ch0605 2. 輸入程式 : Sub Main() Dim 成績 L10:Console.Write(" 輸入成績 : ") 成績 = Console.ReadLine.ReadLine() If 成績 = "" Then Exit Sub If 成績 >= 60 Then Console.WriteLine.WriteLine(" 及格 ") Else Console.WriteLine.WriteLine(" 不及格 ") End If GoTo L10 End Sub 3. 執行程式, 依序輸入 90, 50,, 結果會顯示 及格 及 不及格, 如圖 -11,, 最後按下 Enter 結束程式

上機 : 根據時間顯示顏色 功能 : 寫一程式判斷系統時間, 如果時間介於 6 時及 18 時之間, 則將表單的背景顏色設定藍色 前景顏色設定白色 並顯示 日安, 您好! ; 否則將表單的背景顏色設定黑色 前景顏色設定黃色 並顯示 晚安, 您好! 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0606 2. 在表單上佈置一 Label 控制元件, 並且將此一 Label 的字型設定成 18pt, 粗體, 如圖 - 13

上機 : 根據時間顯示顏色 3. 在表單上 Label1 之外的位置雙按滑鼠, 結果會顯示以下之程式結構 : Private Sub Form1_Load(...) Handles MyBase.Load End Sub 請在其中輸入以下程式 : Private Sub Form1_Load(...) Handles MyBase.Load If Hour(Now()) >= 6 And Hour(Now()) < 18 Then Me.BackColor = Color.Blue Me.ForeColor = Color.White Me.Text = " 日安, 您好!" Label1.Text = " 日安, 您好!" Else Me.BackColor = Color.Black Me.ForeColor = Color.Yellow Me.Text = " 晚安, 您好!" Label1.Text = " 晚安, 您好!" End If End Sub

巢狀 If 敘述 If 條件式 1 Then If 條件式 2 Then 敘述區塊 1-1 Else 敘述區塊 1-2 End If 其他敘述 : Else 敘述區塊 2 End If If 裡面又有 If, 形成了巢狀 If 敘述 敘述區塊 1

上機 : 成績是否達錄取標準 功能 : 某校電子科招生, 錄取標準為數學成績 85 分 ( 含 ) 以上 所有科目平均 75 分 ( 含 ) 以上 寫一程式輸入 數學 英文 國文 三科成績, 然後計算是否達到錄取標準 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0607 2. 在表單上佈置三個 Label 三個 TextBox 及一個 Button, 如圖 -14

上機 : 成績是否達錄取標準 3. 在 Button1_Click 之中輸入以下程式 : Private Sub Button1_Click(...) Handles Button1.Clic Dim 數學, 英文, 國文 As Double 數學 = Val(TextBox1.Text) 英文 = Val(TextBox2.Text) 國文 = Val(TextBox3.Text) If 數學 >= 85 Then If 數學 + 英文 + 國文 >= 75 * 3 Then MsgBox(" 達錄取標準!") Else MsgBox(" 平均分數未達錄取標準!") End If Else MsgBox(" 數學成績未達錄取標準!") End If End Sub

上機 : 成績是否達錄取標準 4. 執行程式, 然後輸入以下三組資料測試程式, 結果第 1 組資料會顯示 達錄取標準! 第 2 組資料顯示 平均分數未達錄取標準! 第 3 組資料顯示 數學成績未達錄取標準! 組別數學英文國文 1 90 70 80 2 90 70 50 3 80 80 90

逐一過濾條件的 ElseIf If 條件式 1 Then 敘述區塊 1 ElseIf 條件式 2 Then 敘述區塊 2 : ElseIf 條件式 N Then 敘述區塊 N Else 敘述區塊 N+1 End If 條件 1 成立, 執行敘述區塊 1 條件 1 不成立, 但條件 2 成立, 執行敘述區塊 2 條件 1~N-1 都不成立, 但條件 N 成立, 執行敘述區塊 N 以上條件都不成立, 執行敘述區塊 N+1

上機 : 判斷數字是幾位數 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0608 2. 在表單上佈置一個 TextBox 兩個 Label 及一個 Button, 如圖 -15 其中設定了以下屬性 : 控制元件 屬性 屬性值 Label1 Text 輸入正整數 : Label2 ForeColor 紅色 TextBox1 Text ( 清成空白 ) Button1 Text 判斷

上機 : 判斷數字是幾位數 3. 在 Button1_Click 之中輸入以下程式 : Private Sub Button1_Click(...) Handles Button1.Clic Dim 數值 = Val(TextBox1.Text) If Not IsNumeric(TextBox1.Text) Then Label2.Text = " 不是數值!" ElseIf 數值 Mod 1 <> 0 Then Label2.Text = " 不是整數!" ElseIf 數值 < 0 Then Label2.Text = " 不是正整數!" ElseIf 數值 < 10 Then Label2.Text = " 一位數!" ElseIf 數值 < 100 Then Label2.Text = " 二位數!" ElseIf 數值 < 1000 Then Label2.Text = " 三位數!" Else Label2.Text = " 四位數 ( 含 ) 以上!" End If End Sub

上機 : 判斷數字是幾位數 4. 執行程式, 輸入以下資料進行測試 : 輸入之資料結果 ABC 不是數值! 10.2 不是整數! -123 不是正整數! 1 一位數! 12 二位數! 123 三位數! 1234 四位數 ( 含 ) 以上!

上機 : 購物打折程式 功能 : 購物促銷方案, 凡購物滿 1000 元, 打折方式如下 : 金額 折扣 超出 3000 元部分 7 折 超出 2000 元但未超出 3000 元部分 8 折 超出 1000 元但未超出 2000 元部分 9 折 未超出 1000 元部分 不打折 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0609 2. 在表單上佈置三個 Label 一個 TextBox 及一個 Button, 如圖 -16

上機 : 購物打折程式 3. 在 Button1_Click 之中輸入以下程式 : Private Sub Button1_Click(...) Handles Button1.Clic Dim 原價 = Val(TextBox1.Text) If 原價 > 3000 Then Label3.Text = ( 原價 - 3000) * 0.7 + 2700 ElseIf 原價 > 2000 Then Label3.Text = ( 原價 - 2000) * 0.8 + 1900 ElseIf 原價 > 1000 Then Label3.Text = ( 原價 - 1000) * 0.9 + 1000 Else Label3.Text = 原價 End If End Sub

上機 : 購物打折程式 4. 執行程式, 然後輸入以下幾組資料進行測試 : 資料 符合之條件式 結果計算過程 3900 原價 > 3000 3330 (3900-3000)*0.7 + 2700 = 3330 2900 原價 > 2000 2620 (2900-2000)*0.8 + 1900 = 2620 1900 原價 > 1000 1810 (1900-100)*0.9 + 1000 = 1810 900 Else 900 900

6-4 多執行路徑的 Select Case 敘述

格式 : Select Case 敘述的格式 Select Case 資料或運算式 Case 條件值 1 敘述區塊 1 Case 條件值 2 敘述區塊 2 : Case 條件值 N 敘述區塊 N Case Else 敘述區塊 N+1 End Select 資料 ( 或運算式 ) 的值符合條件值 1 時, 執行敘述區塊 1,, 符合條件值 2 時, 執行敘述區塊 2,, 符合條件值 N 時, 執行敘述區塊 N, 如果任何條件值都不符合, 則執行敘述區塊 N+1

Select Case 敘述的流程圖 Select Case 資料或運算式 條件值 1 條件值 2 條件值 N Else 路徑 1 路徑 2 路徑 N 路徑 N+1 敘述區塊 1 敘述區塊 2 敘述區塊 N 敘述區塊 N+1 End Select

上機 : 顯示四季名稱 功能 : 輸入 1, 2, 3 或 4,, 然後顯示對應的 春, 夏, 秋, 冬 季節名稱 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0610 2. 在表單上佈置三個 Label 一個 TextBox 及一個 Button, 如圖 -19

上機 : 顯示四季名稱 3. 在 Button1_Click 之中輸入以下程式 : Private Sub Button1_Click(...) Handles Button1.Click Dim 季節順序 = Val(TextBox1.Text) Select Case 季節順序 Case 1 Label3.Text = " 春 " Case 2 Label3.Text = " 夏 " Case 3 Label3.Text = " 秋 " Case 4 Label3.Text = " 冬 " Case Else Label3.Text = " 輸入錯誤 " End Select End Sub

上機 : 顯示四季名稱 4. 執行程式, 然後輸入以下幾組資料進行測試 : 資料 (TextBox1) 結果 (Label3) 1 春 2 夏 3 秋 4 冬 5 輸入錯誤 1.2 輸入錯誤

上機 : 顯示英文季節名稱 功能 : 輸入中文季節名稱 春, 夏, 秋, 冬 然後顯示對應的英文季節名稱 spring, summer, autumn, winter 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0611 2. 在表單上佈置三個 Label 一個 TextBox 及一個 Button, 如圖 -20

上機 : 顯示英文季節名稱 3. 在 Button1_Click 之中輸入以下程式 : Private Sub Button1_Click(...) Handles Button1.Click Dim 中文季節 = TextBox1.Text Select Case 中文季節 Case " 春 " Label3.Text = "spring" Case " 夏 " Label3.Text = "summer" Case " 秋 " Label3.Text = "autumn" Case " 冬 " Label3.Text = "winter" Case Else Label3.Text = " 輸入錯誤 " End Select End Sub

上機 : 顯示英文季節名稱 4. 執行程式, 然後輸入以下幾組資料進行測試 : 資料 (TextBox1) 結果 (Label3) 春 spring 夏 summer 秋 autumn 冬 winter 碰輸入錯誤

上機 : 電影分級 功能 : 輸入年齡, 然後顯示該年齡可以觀賞之電影等級 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0612 2. 在表單上佈置三個 Label 一個 TextBox 及一個 Button, 如圖 -21

上機 : 電影分級 3. 在 Button1_Click 之中輸入以下程式 : Private Sub Button1_Click(...) Handles Button1.Click Dim 年齡 = Val(TextBox1.Text) If 年齡 Mod 1 <> 0 Then Label3.Text = " 請輸入整數 " Exit Sub End If Select Case 年齡 Case 0 To 5 ' age 等於 0 到 5, 都符合這個條件 Label3.Text = " 普通級 " Case 6, 7, 8, 9, 10, 11 ' 逐一列出條件值 Label3.Text = " 保護級 " Case 12 To 17 Label3.Text = " 輔導級 " Case Is >= 18 ' age 18, 都符合這個條件 Label3.Text = " 限制級 " End Select End Sub

上機 : 電影分級 4. 執行程式, 然後輸入以下幾組資料進行測試 : 資料 (TextBox1) 結果 (Label3) 1 普通級 6 保護級 12 輔導級 18 限制級 3.5 請輸入整數

6-5 Iif Choose Switch 函數

Iif: 兩選一的函數 參數一參數三 X = IIf( 條件式, 資料一, 資料二 ) 參數二 說明 : 當 條件式 ( 參數一 ) 成立時,Iif, 將選擇 資料一 ( 參數二 ) 指定給 X 否則選擇 資料二 ( 參數三 ) 指定給 X

Iif 函數實例 Dim 回答, 反應回答 = MsgBox( ( " 星期六一起看場電影好嗎?",? _ MsgBoxStyle.YesNo + MsgBoxStyle.Question) 反應 = Iif( 回答 = MsgBoxResult.Yes, " 太好了!",! " 啊!..."! ) MsgBox( 反應 )

上機 : 改用 Iif 完成 p.217 程式 1. 開啟 p.217 所建立的專案 ch0605 2. 開啟程式模組視窗, 檢視以下程式 : Sub Main() Dim 成績 L10:Console.Write(" 輸入成績 : ") 成績 = Console.ReadLine.ReadLine() If 成績 = "" Then Exit Sub If 成績 >= 60 Then Console.WriteLine.WriteLine(" 及格 ") Else Console.WriteLine.WriteLine(" 不及格 ") End If GoTo L10 End Sub

上機 : 改用 Iif 完成 p.217 程式 3. 將以上所列出之加底線程式刪除, 然後改成如以下的粗體字部分 : Sub Main() Dim 成績 L10:Console.Write( 輸入成績 : ) 成績 = Console.ReadLine.ReadLine() If 成績 = Then Exit Sub Dim 結果 = IIf( 成績 >= 60, 及格, 不及格 ) Console.WriteLine.WriteLine( 結果 ) GoTo L10 End Sub

Choose: 對號選取的函數 Choose 是對號選取資料的函數, 使用時第 1 個參數要傳入編號 第 2, 3, 4 4 以後的參數則傳入被選取的資料, 格式如下 : X = Choose( 編號, 資料一, 資料二,...) 當 編號 等於 1 時,Choose, 將選擇 資料一 指定給 X; 等於 2 時, 則選擇 資料二 指定給 X, 依此類推

Choose: 對號選取的函數 實例 : Dim 編號 = InputBox( 請選擇遊戲等級 :1.: 入門 2. 進階 3. 專家 ) Dim 結果 = Choose( 編號, 入門, 進階, 專家 ) 上程式經執行後會顯示一輸入窗讓使用者輸入 編號, 而所得到的 結果 一覽表如下 : 編號 結果 1 入門 去除小數點後等於 1 的數值入門 2 進階 去除小數點後等於 2 的數值進階 3 專家 去除小數點後等於 3 的數值 專家 其他資料 ( 空字串 )

上機 : 改用 Choose 完成 p.231 程式 1. 開啟 p.231 所建立的專案 ch0610 2. 開啟程式模組視窗, 檢視以下程式 : Private Sub Button1_Click(...) Handles Button1.Clic Dim 季節順序 = Val(TextBox1.Text) Select Case 季節順序 Case 1 Label3.Text = " 春 " Case 2 Label3.Text = " 夏 " Case 3 Label3.Text = " 秋 " Case 4 Label3.Text = " 冬 " Case Else Label3.Text = " 輸入錯誤 " End Select End Sub

上機 : 改用 Choose 完成 p.231 程式 3. 將以上所列出之加底線程式刪除, 然後改成如以下的粗體字部分 : Private Sub Button1_Click(...) Handles Button1.Click Dim 季節順序 = Val(TextBox1.Text) Label3.Text = Choose( 季節順序, 春, 夏, 秋, 冬 ) End Sub

Switch: 多選一的函數 Switch 是多選一的函數, 使用時每傳入一個條件式, 就要相對地傳入一個選項, 例如 : Dim 英文季節 = Microsoft.VisualBasic.VisualBasic.Switch(.Switch( _ 中文季節 = " 春 ", "spring"," _ 中文季節 = " 夏 ", "summer"," _ 中文季節 = " 秋 ", "autumn"," _ 中文季節 = " 冬 ", "winter")" 其中含有 4 個條件式及 4 個選項 : 條件式中文季節 = " 春 " 中文季節 = " 夏 " 中文季節 = " 秋 " 中文季節 = " 冬 " 對應的選項 spring summer autumn winter

上機 : 改用 Switch 完成 p.233 程式 1. 開啟 p.233 所建立的專案 ch0612 2. 開啟程式模組視窗, 檢視以下程式 : Private Sub Button1_Click(...) Handles Button1.Cli Dim 年齡 = Val(TextBox1.Text) If 年齡 Mod 1 <> 0 Then Label3.Text = " 請輸入整數 " Exit Sub End If Select Case 年齡 Case 0 To 5 ' age 等於 0 到 5, 都符合這個條件 Label3.Text = " 普通級 " Case 6, 7, 8, 9, 10, 11 ' 逐一列出條件值 Label3.Text = " 保護級 " Case 12 To 17 Label3.Text = " 輔導級 " Case Is >= 18 ' age 18, 都符合這個條件 Label3.Text = " 限制級 " End Select End Sub

上機 : 改用 Switch 完成 p.233 程式 3. 將以上所列出之加底線程式刪除, 然後改成如以下的粗體字部分 : Private Sub Button1_Click(...) Handles Button1.Click Dim 年齡 = Val(TextBox1.Text) Label3.Text = Microsoft.VisualBasic.Switch( _ 年齡 >= 0 And 年齡 < 6, " 普通級 ", _ 年齡 >= 6 And 年齡 < 12, " 保護級 ", 年齡 >= 12 And 年齡 < 18, " 輔導級 ", 年齡 >= 18, " 限制級 ") End Sub

6-6 選擇類控制元件

RadioButton( 選擇鈕 ) 有小黑點表示這個選項被選取了 三個 RadioButton RadioButton 的功用好像考試時的單選題, 例如有一考題 : 可以用來佈置控制元件的視窗是 :(1): 表單視窗 (2) 程式視窗 (3) 專案視窗, 若使用 RadioButton 來設計其畫面, 則如上圖, 我們分別以三個 RadioButton 來代表三種選擇, 而其中含有黑點的小圓圈表示被選擇的

上機 : 體驗 RadioButton 的特性 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0613 2. 在表單上佈置一個 Label 及三個 RadioButton, 如圖 -24 其中設定的屬性如下 : 控制元件 屬性 屬性值 Label1 Text 可以用來佈置控制元件的視窗是 : RadioButton1 Text 表單視窗 RadioButton2 Text 程式模組視窗 RadioButton3 Text 屬性視窗

上機 : 體驗 RadioButton 的特性 3. 執行程式, 然後以滑鼠選取 表單視窗, 結果 表單視窗 這個 RadioButton 就含有小黑點, 表示此一 RadioButton 被選取了 4. 再以滑鼠選取 屬性視窗, 結果 表單視窗 這個 RadioButton 的小黑點消失, 變成 屬性視窗 這個 RadioButton 含有小黑點, 表示被選取的選項變成了 屬性視窗, 如圖 -25

讀取 RadioButton 的選項 當某一個 RadioButton 被選取時, 該 RadioButton 的 Checked 屬性等於等於 True, 而其他 RadioButton 的 Checked 屬性則為 False, 因此我們可以利用以下程式碼來判斷哪一個 RadioButton 被選取了 : If RadioButton1.Checked Then 第一個 RadioButton 被選取了 ElseIf RadioButton2.Checked Then 第二個 RadioButton 被選取了 ElseIf RadioButton3.Checked Then 第三個 RadioButton 被選取了 End If

上機 : 讀取 RadioButton 的選項 功能 : 修改剛才的 ch0613 專案, 當使用者選取 表單視窗 時, 顯示 正確 ; 選取 程式模組視窗 時, 顯示 程式模組視窗用於撰寫程式 ; 選取 屬性視窗 時, 顯示 屬性視窗用於設定物件的屬性 1. 開啟 ch0613 專案 2. 在表單上增加一個 Button, 如圖 -26

上機 : 讀取 RadioButton 的選項 3. 在 Button1_Click 之中輸入以下程式 : Private Sub Button1_Click(...) Handles Button1.Click If RadioButton1.Checked Then MsgBox(" 正確 ", MsgBoxStyle.Information) ElseIf RadioButton2.Checked Then MsgBox(" 程式模組視窗用於撰寫程式 ", MsgBoxStyle.Critical) ElseIf RadioButton3.Checked Then MsgBox(" 屬性視窗用於設定物件的屬性 ", MsgBoxStyle.Critical) End If End Sub 4. 執行程式, 選擇任何一個 RadioButton, 然後按下 答題 鈕以測試程式

GroupBox 控制元件 與 RadioButton 的分組 剛才我們看到的表單只有 1 個題目, 而這個題目含有 3 個選項, 如果說我們想把表單改成含有 3 個題目, 而每個題目各有 3 個選項 ( 合計 9 個 RadioButton), 那麼必須利用 ( 群組方塊 ) 控制元件把這 9 個 RadioButton 分成 3 組, 使用者方才得以從中選取 3 個選項 GroupBox 的功用是把數個控制元件框起來, 構成控制元件群組, 如圖 -27

上機 : 如何正確地將控制元件 佈置於 GroupBox 之中 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0614 2. 先佈置一 GroupBox, 並將 GroupBox 拉曳至適當的大小 3. 選取工具箱的 RadioButton, 然後將滑鼠移到 GroupBox 裡面, 以拉曳的方式佈置 RadioButton, 如圖 -28 4. 仿照步驟 3,, 佈置 RadioButton2~ RadioButton4

上機 : 字型設定程式 功能 : 設計一個可以改變字型大小及樣式的程式

上機 : 字型設定程式 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0615 2. 在表單上佈置一個 Label 兩個 GroupBox 六個 RadioButton 及一個 Button, 如圖 -30 其中所設定之屬性如右表 : 控制元件 屬性 屬性值 Label1 Text 字型範例 TextAlign MiddleCenter Font 大小 =12 GroupBox1 Text 字型大小 GroupBox2 Text 字型樣式 RadioButton1 Text 12 Checked TRUE RadioButton2 Text 16 RadioButton3 Text 20 RadioButton4 Text 正常 Checked TRUE RadioButton5 Text 粗體 RadioButton6 Text 斜體 Button1 Text 設定 Form1( 表單 ) Text 字型設定程式

上機 : 字型設定程式 3. 在 Button1_Click 之中輸入程式 4. 執行程式, 選取 字型大小 12, 16, 20 及選取 字型樣式 之中的正常, 粗體, 斜體, 然後按下 設定 鈕測試程式 Private Sub Button1_Click(...) Handles Button1.Click Dim 字型名稱 As String = Label1.Font.Name Dim 字型大小 As Integer = Label1.Font.Size Dim 字型樣式 As FontStyle = Label1.Font.Style If RadioButton1.Checked Then 字型大小 = 12 If RadioButton2.Checked Then 字型大小 = 16 If RadioButton3.Checked Then 字型大小 = 20 If RadioButton4.Checked Then 字型樣式 = FontStyle.Regul If RadioButton5.Checked Then 字型樣式 = FontStyle.Bold If RadioButton6.Checked Then 字型樣式 = FontStyle.Itali Label1.Font = New Font( 字型名稱, 字型大小, 字型樣式 ) End Sub

CheckBox( 核取方塊 ) CheckBox( 核取方塊 ) 也是用來選取資料的控制元件, 它的用法與 RadioButton 幾乎完全一樣, 不同的是 CheckBox 並不受單選的限制, 也就是說, 我們可以選擇 0 到多個 CheckBox 所代表的資料, 如圖 -31 在這個表單中, 佈置了六個 CheckBox, 並且選取了其中三個 程式中判斷使用者選取了哪幾個 CheckBox, 也是根據 Checked 屬性, 當 CheckBox 的 Checked 屬性值為 True 時, 表示該 CheckBox 被選取了, 而由於可能複選的關係, 所以每一個 CheckBox 都要獨立判斷

上機 : 計算點餐金額

上機 : 計算點餐金額 1. 建立一 Windows 應用程式專案, 專案名稱定為 ch0616 2. 在表單上佈置 4 個 CheckBox 4 個 TextBox 4 個 Label 及一個 Button, 如圖 -33 其中所設定之屬性如下 : 控制元件 屬性 屬性值 控制元件 屬性 屬性值 CheckBox1 Text 滷肉飯 (30 元 ) CheckBox2 Text 雞腿飯 (70 元 ) CheckBox3 Text 排骨飯 (65 元 ) CheckBox4 Text 美餓美特餐 (99 元 ) TextBox1 Text ( 清成空白 ) TextBox2 Text ( 清成空白 ) TextBox3 Text ( 清成空白 ) TextBox4 Text ( 清成空白 ) Label1 Text 份 Label2 Text 份 Label3 Text 份 Label4 Text 份 表單 Text 美餓美餐廳 Button1 Text 計算金額

上機 : 計算點餐金額 3. 輸入程式 4. 執行程式, 假設選取所有 CheckBox, 並且在 4 個 TextBox 之中分別輸入 1, 2, 3, 1, 則結果顯示的總金額應等於 464 Private Sub Button1_Click(...) Handles Button1.Clic Dim 總金額 As Long If CheckBox1.Checked Then ' 滷肉飯總金額 = 總金額 + 30 * Val(TextBox1.Text) End If If CheckBox2.Checked Then ' 雞腿飯總金額 = 總金額 + 70 * Val(TextBox2.Text) End If If CheckBox3.Checked Then ' 排骨飯總金額 = 總金額 + 65 * Val(TextBox3.Text) End If If CheckBox4.Checked Then ' 美餓美特餐總金額 = 總金額 + 99 * Val(TextBox4.Text) End If MsgBox(" 總金額 =" & 總金額 ) End Sub