




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第4 4章章 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計第第4 4章章 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計( (分支結(jié)構(gòu)分支結(jié)構(gòu)) ) 選擇結(jié)構(gòu)是計算機科學(xué)用來描述自然界和社會生活中分選擇結(jié)構(gòu)是計算機科學(xué)用來描述自然界和社會生活中分支現(xiàn)象的重要手段。其特點是根據(jù)所給定的條件為真(即支現(xiàn)象的重要手段。其特點是根據(jù)所給定的條件為真(即條件成立)與否,而決定從各實際可能的不同分支中執(zhí)行條件成立)與否,而決定從各實際可能的不同分支中執(zhí)行某一分支的相應(yīng)操作,并且任何情況下總有:某一分支的相應(yīng)操作,并且任何情況下總有:“無論分支無論分支多寡,必擇其一;縱然分支眾多,僅選其一多寡,必擇其一;縱然分支眾多,僅選其一”。
2、3本章要點本章要點: 條件語句條件語句單行結(jié)構(gòu)條件語句單行結(jié)構(gòu)條件語句If.Then.Else .塊結(jié)構(gòu)條件語句塊結(jié)構(gòu)條件語句If.Then.EndIf多分支選擇語句多分支選擇語句Select Case.End SelectTimer控件,單選按鈕和復(fù)選按鈕控件,單選按鈕和復(fù)選按鈕特點特點: 根據(jù)條件是否成立,決定程序的執(zhí)行分支根據(jù)條件是否成立,決定程序的執(zhí)行分支45.1.1 單行結(jié)構(gòu)條件語句1. 格式 If Then Else 2. 功能 如果成立,則執(zhí)行 否則執(zhí)行T語句組語句組1條件條件?語句組語句組2F53. 說明(1) 可以是: n關(guān)系表達式n布爾表達式n數(shù)值表達式:0為False;非
3、0為Truen字符串表達式: 0為False;非0為Truev(2) 可以沒有Else部分,這時必須有。T語句組語句組1條件條件?F6(3) 、: 可以有多條語句,各語句之間用冒號隔開。例: If N0 Then A=A+B:B=B+A Else A=A-B:B=B-A(4)應(yīng)作為一條語句書寫。如果語句太長需要換行,必須在折行處使用續(xù)行符號。(5) 無論條件是否成立,都具有共同出口例: If X = 0 Then X = 1 + X Else X = 5 - X Y = 1 - X Print Y=; Y 若 X=2 Y? 若 X=-2 Y?共同出口共同出口(6)(6)單行結(jié)構(gòu)條件語句可以嵌套
4、單行結(jié)構(gòu)條件語句可以嵌套 IF . THEN.IF . THEN .ELSE .ELSE7v【例5-1】設(shè)界面如下圖所示,用文本框輸入x的值,單擊“計算Y”按鈕時,根據(jù)以下公式計算y的值。Private Sub Command1_Click() X = Val(Text1.Text) If X 0y=8v例: 比較以下兩段程序,是否都能夠?qū)崿F(xiàn)上例的功能。程序段程序段1:X = Val(Text1.Text)Y = Abs(X)If X 0 Then Y = Log(X)Label3.Caption = Y程序段程序段2:X = Val(Text1.Text)Y = Log(X)If X = 0
5、 ThenY = Abs(X)Label3.Caption = Y95.1.2 塊結(jié)構(gòu)條件語句v1.格式vIf Thenv vElseIf Thenv v vElseIf Thenv vElsev vEnd IfIf 1 Then 語句組語句組11Else 語句組語句組22End IfElseElse子句子句ElseIfElseIf子句子句IfIf語句語句End IfEnd If語句語句注意注意: 格式書寫格式格式書寫格式10塊結(jié)構(gòu)條件語句的功能:TTTF條件條件1 1語句組語句組1 1語句組語句組2 2條件條件2 2F條件條件n n語句組語句組n nF語句組語句組n+1n+111v【例5-8
6、】某百貨公司為了促銷,采用購物打折的優(yōu)惠辦法。1000元以上者,按九五折優(yōu)惠;2000元以上者,按九折優(yōu)惠; 3000元以上者,按八五折優(yōu)惠; 5000元以上者,按八折優(yōu)惠;編寫程序,輸入購物款數(shù),計算并輸出優(yōu)惠價。分析:設(shè)購物款數(shù)為分析:設(shè)購物款數(shù)為x元,優(yōu)惠價為元,優(yōu)惠價為y元,則優(yōu)惠付款公式為:元,則優(yōu)惠付款公式為: x (x1000) 0.95x (1000 x 2000) y= 0.9x (2000 x3000) 0.85x (3000 x=5000)12設(shè)計步驟如下:(1)建立應(yīng)用程序界面并設(shè)置對象屬性,如圖所示。(2)編寫程序代碼.命令按鈕command1的Click事件代碼如下
7、:ElseIf x 3000 Then y = 0.9 * xElseIf x 5000 Then y = 0.85 * xElse y = 0.8 * xEnd IfText2.Text = yEnd SubPrivate Sub command1_Click()Dim x As Single, y As Singlex = Val(Text1.Text)If x 1000 Then y = xElseIf x = 0 Then y = 1 Else y = 2 End If 以下兩種寫法都是錯誤的: 寫法一:寫法一:If x=0 Then y=1Else y = 2End If寫法二:寫法
8、二:If x = 1 Then y = 10 Else y = 20End If145.1.3 多分支選擇語句1. 格式 Select Case Case Case Case Else End Select2. 功能: 根據(jù)測試表達式的值,按順序匹配Case后的表達式,如果匹配成功,則執(zhí)行該Case下的語句塊,然后轉(zhuǎn)到End Select語句之后繼續(xù)執(zhí)行。15語句組語句組n+1n+1TTTF匹配匹配表達式表表達式表1語句組語句組1 1語句組語句組2 2F語句組語句組n nF匹配表達式匹配表達式表表2匹配表達式匹配表達式表表n多分支選擇語句的功能流程圖多分支選擇語句的功能流程圖: :163. 說
9、明 : 數(shù)值或字符串表達式 Case 表達式表: 表中的表項為如下形式: (1) 表達式1,表達式2. 如: Case 1 , 3 , 5(2) 表達式1 TO 表達式2 如: Case 10 TO 30 Case A TO Z(3) Is 如: Case Is = 10 Case Is = 0 與 Case 0 相同 注意: 測試表達式的類型應(yīng)與Case后表達式類型一致,且三種形式可以混用,如: Case Is 0),關(guān)系運算符又稱比較運算符,用),關(guān)系運算符又稱比較運算符,用來對兩個表達式的值進行比較,比較的結(jié)果是一個布爾值來對兩個表達式的值進行比較,比較的結(jié)果是一個布爾值(True或或F
10、alse),這個結(jié)果就是關(guān)系表達式的值。),這個結(jié)果就是關(guān)系表達式的值。1. 關(guān)系運算符關(guān)系運算符 VB提供的關(guān)系運算符有以下提供的關(guān)系運算符有以下6種,見表種,見表4-1。表表4-1 關(guān)系運算符關(guān)系運算符運算符名 稱例 子說 明小于3 4值為:True,強制轉(zhuǎn)換為數(shù)值型=小于或等于3 大于0 (1 0)值為:True,強制轉(zhuǎn)換為數(shù)值型=大于或等于aa = ab值為:False=等于1 = True值為:False,強制轉(zhuǎn)換為數(shù)值型不等于4 5值為:True2. 關(guān)系表達式關(guān)系表達式 關(guān)系表達式的格式為關(guān)系表達式的格式為表達式表達式1關(guān)系運算符關(guān)系運算符表達式表達式2關(guān)系運算符關(guān)系運算符表達表
11、達式式3 關(guān)系表達式的運算次序為:先分別求出關(guān)系運算符兩側(cè)關(guān)系表達式的運算次序為:先分別求出關(guān)系運算符兩側(cè)表達式的值,然后再把二者進行比較,二者的關(guān)系若與關(guān)表達式的值,然后再把二者進行比較,二者的關(guān)系若與關(guān)系運算符指示的一樣,則關(guān)系運算的結(jié)果為真系運算符指示的一樣,則關(guān)系運算的結(jié)果為真True,否則,否則為假為假False。4.2.2 4.2.2 布爾運算符與布爾表達式布爾運算符與布爾表達式 對于較為復(fù)雜的條件,必須使用布爾表達式。布爾表達對于較為復(fù)雜的條件,必須使用布爾表達式。布爾表達式是指用布爾運算符連接若干關(guān)系表達式或布爾值而成的式是指用布爾運算符連接若干關(guān)系表達式或布爾值而成的式子。布
12、爾表達式的值也是一個布爾值。式子。布爾表達式的值也是一個布爾值。VB提供的布爾運提供的布爾運算符有:算符有:And、Or、Not、Xor、Eqv、Imp等等6種,其中種,其中常用的為前常用的為前3種,見表種,見表4-2。表表4-2 布爾運算符布爾運算符 說明:說明: 1) 布爾運算符兩側(cè)若有數(shù)值數(shù)據(jù)出現(xiàn),則將數(shù)值數(shù)據(jù)轉(zhuǎn)布爾運算符兩側(cè)若有數(shù)值數(shù)據(jù)出現(xiàn),則將數(shù)值數(shù)據(jù)轉(zhuǎn)換為二進制數(shù)(補碼形式)進行按位運算。此時,換為二進制數(shù)(補碼形式)進行按位運算。此時,1為真,為真,0為假。為假。 2) 布爾運算真值表見表布爾運算真值表見表4-3。運算符名 稱例 子說 明And與(4 5) And (3 5) O
13、r (3 0)值為:False,由真變假或由假變真,進行取“反”操作表表4-3 布爾運算真值表布爾運算真值表aba And ba Or bNot aTrueTrueTrueTrueFalseTrueFalseFalseTrueFalseFalseTrueFalseTrueTrueFalseFalseFalseFalseTrue Not由真變假,由假變真。由真變假,由假變真。And對兩個布爾值進行比較,對兩個布爾值進行比較,如果兩個值均為真,則結(jié)果為真,否則為假。如果兩個值均為真,則結(jié)果為真,否則為假。Or對兩個布對兩個布爾值進行比較,如果其中一個值為真,則結(jié)果為真,只有爾值進行比較,如果其中一
14、個值為真,則結(jié)果為真,只有兩個值都為假時,結(jié)果才為假。運算布爾表達式時,先運兩個值都為假時,結(jié)果才為假。運算布爾表達式時,先運算關(guān)系表達式,再運算布爾表達式。算關(guān)系表達式,再運算布爾表達式。ABNot AA And BA or BA Xor BTTFTTFTFFFTTFTTFTTFFTFFF按二進制進行的邏輯運算規(guī)則ABNot AA And BA or BA Xor B110110100011011011001000vPrint 12 and 8 =8 1100 and 1000=1000vPrint 12 or 16 =28 v1100 and 10000=11100vPrint 12 Xo
15、r 7 =11 1100 Xor 111=1011vPrint 11 Xor 7 =12 1011 xor 111=1100v注:先把數(shù)字轉(zhuǎn)換為二進制數(shù),再進行運算。v(A Xor B) Xor B=A4.2.3 4.2.3 運算符的優(yōu)先順序運算符的優(yōu)先順序 在一個表達式中進行多種操作時,在一個表達式中進行多種操作時,VB會按一定的順序進會按一定的順序進行求值,稱這個順序為運算符的優(yōu)先順序。運算符的優(yōu)先行求值,稱這個順序為運算符的優(yōu)先順序。運算符的優(yōu)先順序見表順序見表4-4。表表4-4 運算符的優(yōu)先順序運算符的優(yōu)先順序優(yōu)先順序運算符類型運算符1算術(shù)運算符(指數(shù)運算)2(負數(shù))3*、/(乘法和除
16、法)4(整數(shù)除法)5Mod(求模運算)6+、(加法和減法)7字符串運算符&(字符串連接)8關(guān)系運算符=、=9布爾運算符Not10And11Or【例例4-1】設(shè)變量設(shè)變量x = 4,y = 1,a = 7.5,b = 6.2,求,求表達式表達式x + y a + b And Not y 1.3 And Not y b 2) 再作關(guān)系運算:再作關(guān)系運算: True And Not False 3) 作非運算:作非運算: True And True 4) 最后得:最后得: True【例例4-2】判斷某個年份是閏年的根據(jù)是年份數(shù)滿足下述條判斷某個年份是閏年的根據(jù)是年份數(shù)滿足下述條件之一。件之一
17、。 條件條件1:能被:能被4整除,但不能被整除,但不能被100整除的年份都是閏年。整除的年份都是閏年。 條件條件2:能被:能被100整除,又能被整除,又能被400整除的年份都是閏年。整除的年份都是閏年。 設(shè)變量設(shè)變量y表示年份,寫出判斷表示年份,寫出判斷y是否閏年的布爾表達式。是否閏年的布爾表達式。 解:判斷解:判斷y是否滿足條件是否滿足條件1的布爾表達式是的布爾表達式是y Mod 4 = 0 And y Mod 100 0 判斷判斷y是否滿足條件是否滿足條件2的布爾表達式是的布爾表達式是y Mod 100 = 0 And y Mod 400 = 0 兩者取兩者取“或或”,即得判斷閏年的布爾表
18、達式:,即得判斷閏年的布爾表達式:y Mod 4 = 0 And y Mod 100 0 Or y Mod 100 = 0 And y Mod 400 = 0v4.3 單條件選擇語句單條件選擇語句IF 單條件選擇結(jié)構(gòu)是最常用的雙分支選擇結(jié)構(gòu),其特點是:單條件選擇結(jié)構(gòu)是最常用的雙分支選擇結(jié)構(gòu),其特點是:所給定條件(條件表達式)的值如果為真,則執(zhí)行所給定條件(條件表達式)的值如果為真,則執(zhí)行a1塊;塊;如果為假則執(zhí)行如果為假則執(zhí)行a2塊。其一般形式如圖塊。其一般形式如圖4-1所示。所示。圖圖4-1 單條件選擇結(jié)構(gòu)的流程圖單條件選擇結(jié)構(gòu)的流程圖 實現(xiàn)單條件選擇結(jié)構(gòu)的語句是實現(xiàn)單條件選擇結(jié)構(gòu)的語句是I
19、f語句,在語句,在VB中有行中有行If語語句和塊句和塊If語句兩種。語句兩種。如果 條件該(選擇)條件成立嗎?真a1塊條件成立時所執(zhí)行的操作塊,它一般為非空塊假a2塊條件不成立時所執(zhí)行的操作塊,它可為空塊4.3.1 4.3.1 單行結(jié)構(gòu)條件語句單行結(jié)構(gòu)條件語句IFIFTHENTHENELSEELSE 單行單行If語句的語法格式為語句的語法格式為If 條件條件 Then 語句序列語句序列1 Else 語句序列語句序列2 說明:說明: 1) 條件條件可以是關(guān)系表達式、布爾表達式或可以是關(guān)系表達式、布爾表達式或數(shù)值表達數(shù)值表達式式。如果以數(shù)值表達式作條件,則非。如果以數(shù)值表達式作條件,則非0值為真,
20、值為真,0為假。為假。 2) 如果沒有如果沒有Else子句,子句,語句序列語句序列1為必要參數(shù),在為必要參數(shù),在條件條件為為True時執(zhí)行。時執(zhí)行?!纠?-3】輸入輸入x,計算,計算y的值。其中:的值。其中:)0(21)0(1xxxxy 流程圖流程圖4-2所示。所示。圖圖4-2 計算計算y值的流程圖值的流程圖 根據(jù)流程圖,寫出命令按鈕根據(jù)流程圖,寫出命令按鈕Command1的單擊(的單擊(Click)事件代碼為:事件代碼為:輸入x給出x的值如果x = 0真y 1 + xx=0時的y值假y 1 2 * xx= 0 Then y = 1 + x Else y = 12 * x Text2.Tex
21、t = yEnd Sub【例例4-4】學(xué)校對學(xué)習(xí)成績優(yōu)良的學(xué)生進行獎勵,獲獎的條學(xué)校對學(xué)習(xí)成績優(yōu)良的學(xué)生進行獎勵,獲獎的條件如下:件如下: 1) 所考所考5門課的總分超過門課的總分超過450分;分; 2) 每門課的成績都在每門課的成績都在88分以上;分以上; 3) 前前3門(主課)的成績都在門(主課)的成績都在95分以上,其他兩門(非分以上,其他兩門(非主課)的成績都在主課)的成績都在80分以上。分以上。 輸入某學(xué)生輸入某學(xué)生5門課的成績門課的成績s1、s2、s3、s4、s5,判斷他,判斷他是否能夠獲獎。是否能夠獲獎。 分析:依題意列出分析:依題意列出3個條件表達式:個條件表達式: 1) s1
22、 + s2 + s3 + s4 + s5 = 450 2) s1 = 88 AND s2 = 88 AND s3 = 88 AND s4 = 88 AND s5 = 88 3) s1 = 95 AND s2 = 95 AND s3 = 95 AND s4 = 80 AND s5 = 80 圖圖4-4 判斷能否獲獎判斷能否獲獎 命令按鈕命令按鈕Command1的單擊(的單擊(Click)事件代碼為:)事件代碼為:Private Sub Command1_Click() Dim s1 As Single, s2 As Single, s3 As Single, s4 As Single, s5 A
23、s Single Dim p As String s1 = Val(InputBox(請輸入第1門課的成績:, 輸入框, 0) s2 = Val(InputBox(請輸入第2門課的成績:, 輸入框, 0) s3 = Val(InputBox(請輸入第3門課的成績:, 輸入框, 0) s4 = Val(InputBox(請輸入第4門課的成績:, 輸入框, 0) s5 = Val(InputBox(請輸入第5門課的成績:, 輸入框, 0) t1 = (s1 + s2 + s3 + s4 + s5 = 450) t2 = (s1 = 88 And s2 = 88 And s3 = 88 And s4
24、 = 88 And s5 = 88) t3 = (s1 = 95 And s2 = 95 And s3 = 95 And s4 = 80 And s5 = 80) If t1 Or t2 Or t3 Then p = 可以獲獎! Else p = 不能獲獎! p = Str(s1) & , & Str(s2) & , & Str(s3) & , & Str(s4) & , & Str(s5) & Chr(13) & p Label1.Caption = 該生五門課的成績分別是: & Chr(13) &
25、; pEnd Sub 【例例4-5】利用輸入框函數(shù)輸入利用輸入框函數(shù)輸入3個不同的數(shù),選出其中最個不同的數(shù),選出其中最大的數(shù)。大的數(shù)。 命令按鈕命令按鈕Command1的單擊(的單擊(Click)事件代碼為:)事件代碼為:Private Sub Command1_Click() Dim a As Single, b As Single, c As Single a = Val(InputBox(請輸入第1個數(shù):, 輸入框, 0) b = Val(InputBox(請輸入第2個數(shù):, 輸入框, 0) c = Val(InputBox(請輸入第3個數(shù):, 輸入框, 0) p = & a &
26、amp; , & b & , & c p = p & 三個數(shù)中最大的數(shù)是: If a b And a c Then p = p & a If b a And b c Then p = p & b If c a And c b Then p = p & c Label1.Caption = pEnd Sub圖圖4-5 求求3個數(shù)中最大數(shù)個數(shù)中最大數(shù)4.3.2 4.3.2 使用使用IIFIIF函數(shù)函數(shù) 還可以使用還可以使用IIf函數(shù)來實現(xiàn)一些比較簡單的選擇結(jié)構(gòu)。函數(shù)來實現(xiàn)一些比較簡單的選擇結(jié)構(gòu)。IIf函數(shù)的語法結(jié)構(gòu)為:函數(shù)的語法結(jié)構(gòu)為:IIf
27、(條件表達式,真部分,假部分) 語句語句y = IIf(條件表達式條件表達式,真部分真部分,假部分假部分) 相當(dāng)于:相當(dāng)于:If 條件表達式 then y =真部分 Else y =假部分【例例4-6】例例4-3中命令按鈕中命令按鈕Command1的單擊(的單擊(Click)事件代碼可以改為:事件代碼可以改為:Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) y = IIf(x = 0, 1 + x, 12 * x) Text2.Text = yEnd Sub4.3.3 4.3.3 塊結(jié)構(gòu)
28、條件語句塊結(jié)構(gòu)條件語句IFIFTHENTHENELSEELSEEND IFEND IF VB提供的塊提供的塊If語句,將一個選擇結(jié)構(gòu)用多個語句行來實現(xiàn)。語句,將一個選擇結(jié)構(gòu)用多個語句行來實現(xiàn)。其語法結(jié)構(gòu)為:其語法結(jié)構(gòu)為:If 條件條件1 Then 語句序列語句序列1Else 語句序列語句序列2End If 在塊形式中,在塊形式中,If語句必須是第語句必須是第1行語句。行語句。If塊必須以一個塊必須以一個End If語句結(jié)束。語句結(jié)束?!纠?-7】將例將例4-3中命令按鈕中命令按鈕Command1的單擊(的單擊(Click)事件代碼改為多行事件代碼改為多行If語句:語句:Private Sub
29、 Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x = 0 Then y = 1 + x Else y = 12 * x End If Text2.Text = yEnd Sub4.3.4 IF4.3.4 IF語句的嵌套語句的嵌套1. IF語句的嵌套語句的嵌套 如果在如果在If語句中操作塊語句中操作塊a1塊(語句序列塊(語句序列1)或)或a2塊(語句塊(語句序列序列2)本身又是一個)本身又是一個If語句,則稱為語句,則稱為If語句的嵌套。語句的嵌套。 vIf 語句的嵌套v If then If then
30、 v if then v if then Else v if thenv Else v Else ifthen v End if v Else Else ifthen v v End if Else v v End if End ifv End if 【例例4-8】鐵路托運行李,從甲地到乙地,規(guī)定每張客票托鐵路托運行李,從甲地到乙地,規(guī)定每張客票托運費計算方法是行李重量不超過運費計算方法是行李重量不超過50kg時,時,0.25元元/kg,超,超過過50kg而不超過而不超過100kg時,其超過部分按時,其超過部分按0.35元元/kg收費,收費,超過超過100kg時,其超過部分按時,其超過部分按0
31、.45元元/kg收費。編寫程序,收費。編寫程序,輸入行李重量,計算并輸出托運的費用。輸入行李重量,計算并輸出托運的費用。 分析:設(shè)行李重量為分析:設(shè)行李重量為wkg,應(yīng)付運費為,應(yīng)付運費為x元,則運費公元,則運費公式為:式為:)100()10050()50()100(45. 05035. 05025. 0)50(35. 05025. 025. 0wwwwwwx命令按鈕命令按鈕Command1的單擊(的單擊(Click)事件代碼為:)事件代碼為:Private Sub Command1_Click() Dim w As Single, x As Single w = Val(Text1.Text
32、) If w = 50 Then x = 0.25 * w Else If w = 100 Then x = 0.25 * 50 + 0.35 * (w50) Else x = 0.25 * 50 + 0.35 * 50 + 0.45 * (w100) 圖圖4-7 計算托運費計算托運費 End If End If Text2.Text = xEnd Sub圖圖4-8 計算優(yōu)惠價計算優(yōu)惠價【例例4-9】某百貨公司為了促銷,采用購物打折扣的優(yōu)惠辦某百貨公司為了促銷,采用購物打折扣的優(yōu)惠辦法:每位顧客一次購物法:每位顧客一次購物 1) 在在1000元以上者,按九五折優(yōu)惠;元以上者,按九五折優(yōu)惠; 2
33、) 在在2000元以上者,按九折優(yōu)惠;元以上者,按九折優(yōu)惠; 3) 在在3000元以上者,按八五折優(yōu)惠;元以上者,按八五折優(yōu)惠; 4) 在在5000元以上者,按八折優(yōu)惠。元以上者,按八折優(yōu)惠。 輸入購物款數(shù),計算并輸出優(yōu)惠價,如圖輸入購物款數(shù),計算并輸出優(yōu)惠價,如圖4-8所示。所示。 分析:設(shè)購物款數(shù)為分析:設(shè)購物款數(shù)為x元,優(yōu)惠價為元,優(yōu)惠價為y元,付款公式為:元,付款公式為:)5000()50003000()30002000()20001000()1000(8 . 085. 09 . 095. 0 xxxxxxxxxxy 命令按鈕命令按鈕Command1的單的單擊(擊(Click)事件代碼
34、為:)事件代碼為:Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x 1000 Then y = x Else If x 2000 Then y = 0.95 * x Else If x 3000 Then y = 0.9 * x ElseIf x 5000 Then y = 0.85 * x Else y = 0.08 * x End If End If End If End If Text2.Text = yEnd Sub圖4-8 計算優(yōu)惠價2. IF語句的嵌套格式語句的嵌套格
35、式ELSEIF 例例4.8中出現(xiàn)的多層中出現(xiàn)的多層If語句嵌套,使程序冗長,不便閱讀。語句嵌套,使程序冗長,不便閱讀。為此為此VB提供了帶提供了帶ElseIf的塊的塊If語句來處理當(dāng)條件為假時又語句來處理當(dāng)條件為假時又內(nèi)嵌塊內(nèi)嵌塊If語句的情形,以使程序簡化易寫。其語法結(jié)構(gòu)為:語句的情形,以使程序簡化易寫。其語法結(jié)構(gòu)為:If 條件1 Then 語句序列1ElseIf 條件2 Then 語句序列2 .Else 其他語句序列End If【例例4-10】在例在例4-9中使用中使用帶帶ElseIf的塊的塊If語句來計算出語句來計算出優(yōu)惠價,只需將其中命令按優(yōu)惠價,只需將其中命令按鈕鈕 C o m m
36、a n d 1 的 單 擊的 單 擊(Click)事件代碼改為:)事件代碼改為:Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x 1000 Then y = x ElseIf x 2000 Then y = 0.95 * x ElseIf x 3000 Then y = 0.9 * x ElseIf x 5000 Then y = 0.85 * x Else y = 0.08 * x End If Text2.Text = yEnd Subv4.4 多分支條件選擇語句多分支條件選
37、擇語句SELECT CASE 多分支選擇結(jié)構(gòu)的特點是:從多個選擇結(jié)構(gòu)中,選擇第多分支選擇結(jié)構(gòu)的特點是:從多個選擇結(jié)構(gòu)中,選擇第1個個條件為真的路線作為執(zhí)行的路線。即所給定的選擇條件條件為真的路線作為執(zhí)行的路線。即所給定的選擇條件1為為真時,執(zhí)行真時,執(zhí)行a1塊;如果為假則繼續(xù)檢查下一個條件。如果條塊;如果為假則繼續(xù)檢查下一個條件。如果條件都不為真,就執(zhí)行其他操作塊,如果沒有其他操作塊,則件都不為真,就執(zhí)行其他操作塊,如果沒有其他操作塊,則不作任何操作就結(jié)束選擇。如圖不作任何操作就結(jié)束選擇。如圖4-9所示。所示。圖圖4-9 多條件多分支選擇結(jié)構(gòu)的流程圖多條件多分支選擇結(jié)構(gòu)的流程圖情形條件1a1塊
38、條件1成立時所執(zhí)行的操作塊條件2a2塊條件2成立時所執(zhí)行的操作塊條件nan塊條件n成立時所執(zhí)行的操作塊其他an+1塊條件都不成立時所執(zhí)行的操作塊4.4.1 SELECT CASE4.4.1 SELECT CASE結(jié)構(gòu)與語法結(jié)構(gòu)與語法 雖然使用嵌套的辦法可以利用雖然使用嵌套的辦法可以利用If語句實現(xiàn)多分支選擇,語句實現(xiàn)多分支選擇,但是最好還是使用但是最好還是使用VB提供的多分支選擇結(jié)構(gòu)(提供的多分支選擇結(jié)構(gòu)(Select Case語句)來實現(xiàn)多分支選擇。根據(jù)單一表達式來執(zhí)行多語句)來實現(xiàn)多分支選擇。根據(jù)單一表達式來執(zhí)行多種可能的動作時,種可能的動作時,Select Case更為簡捷,它根據(jù)表達式
39、更為簡捷,它根據(jù)表達式的值,來決定執(zhí)行幾組語句中的一組。的值,來決定執(zhí)行幾組語句中的一組。4.4.1 SELECT CASE4.4.1 SELECT CASE結(jié)構(gòu)與語法結(jié)構(gòu)與語法 Select Case語句的語法格式為語句的語法格式為Select Case 測試條件 Case 表達式表1 語句序列1 Case 表達式表2 語句序列2 . Case Else 其他語句序列End Selectv其中:為數(shù)值型或字符串表達式;每個是一個或幾個值的列表,可以是表達式、枚舉值表達式1 To 表達式2,Is關(guān)系運算表達式等幾種形式。如果在一個列表中有多個值,就用逗號把值隔開;每個語句組中含有零個到多個語句
40、。vSelect Case語句執(zhí)行過程:v 1、計算的值v 2、將的值與Case語句中的中的每一個值逐一比較。如果與其中一個相匹配,則執(zhí)行相應(yīng)的語句組。如果不止一個,則只執(zhí)行第一個相匹配的語句組。如果沒有相匹配的,則執(zhí)行Case Else子句(可選)。最后執(zhí)行End Select語句。vSelect Case 語句表達式的值有如下規(guī)定:v1)可以是一個值,也可以是幾個值的列表;v2)如果列表中的值不連續(xù),就用逗號把值隔開.如:vCase 1,3,7,10.v3)如果列表中的值是連續(xù)的,可用TO表達式,如:vCase 1 to 5 ,表示 1 到5這5個數(shù).v4)列表中還可以包含Is關(guān)系表達式,
41、如case Is79.表示大于79的值v5)表達式值的類型必須與測試表達式的類型相同.vIf 結(jié)構(gòu)和select case結(jié)構(gòu)相互間的轉(zhuǎn)換v小結(jié): Case子句中的子句中的表達式表表達式表是一個或多個如表是一個或多個如表4-5所示所示形式表達式的列表。形式表達式的列表。表表4-5 表達式的形式表達式的形式 當(dāng)使用多個表達式的列表時,表達式與表達式之間要用當(dāng)使用多個表達式的列表時,表達式與表達式之間要用逗號逗號“,”隔開。隔開。形式示例說 明表達式Case 100 * a數(shù)值或字符串表達式表達式 To 表達式Case 1000 To 2000Case a To n用來指定一個值范圍,較小的值要出
42、現(xiàn)在To之前Is 關(guān)系運算表達式Caes Is 3000可配合比較運算符來指定一個數(shù)值范圍。如果沒有提供,則Is關(guān)鍵字會被自動插入4.4.2 SELECT CASE4.4.2 SELECT CASE結(jié)構(gòu)的應(yīng)用結(jié)構(gòu)的應(yīng)用【例例4-11】在例在例4-9中使用中使用Select Case語句來計算優(yōu)惠價,語句來計算優(yōu)惠價,只需將其中命令按鈕只需將其中命令按鈕Command1的單擊(的單擊(Click)事件代)事件代碼改為:碼改為:Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) Select C
43、ase x Case Is 1000 y = x Case Is 2000 y = 0.95 * x Case Is 3000 y = 0.9 * xCase Is 5000 y = 0.85 * x Case Else y = 0.08 * x End Select Text2.Text = yEnd Sub【例例4-12】某航空公司規(guī)定在旅游的旺季某航空公司規(guī)定在旅游的旺季79月份,如果月份,如果訂票數(shù)超過訂票數(shù)超過20張,票價優(yōu)惠張,票價優(yōu)惠15%,20張以下,優(yōu)惠張以下,優(yōu)惠5%;在旅游的淡季在旅游的淡季15月份、月份、10月份、月份、11月份,如果訂票數(shù)超月份,如果訂票數(shù)超過過20張
44、,票價優(yōu)惠張,票價優(yōu)惠30%,20張以下,優(yōu)惠張以下,優(yōu)惠20%;其他情況;其他情況一律優(yōu)惠一律優(yōu)惠10%。 設(shè)計程序,根據(jù)月份和訂票張數(shù)決定票價的優(yōu)惠率。設(shè)計程序,根據(jù)月份和訂票張數(shù)決定票價的優(yōu)惠率。圖圖4-11 計算優(yōu)惠價計算優(yōu)惠價 命令按鈕命令按鈕Command1的單擊(的單擊(Click)事件代碼為:)事件代碼為:Private Sub Command1_Click() Dim m As Integer, n As Integer, r As Integer m = Val(Text1.Text) n = Val(Text2.Text) Select Case m Case Is =
45、5, 10, 11 If n 20 Then r = 20 Else r = 30 Case 7 To 9 If n 0 And Text1.Text 0 Then Command1.SetFocus End IfEnd Subv4.5 使用計時器控件使用計時器控件 計時器(計時器(Timer)是)是Visual Basic提供的一個用于定時提供的一個用于定時的特殊控件,當(dāng)?shù)竭_預(yù)定時間時,系統(tǒng)會自動觸發(fā)其的特殊控件,當(dāng)?shù)竭_預(yù)定時間時,系統(tǒng)會自動觸發(fā)其Timer事件,以便完成指定的操作。事件,以便完成指定的操作。 計時器控件在設(shè)計時顯示為一個小時鐘圖標(biāo),而在運行計時器控件在設(shè)計時顯示為一個小時鐘
46、圖標(biāo),而在運行時則不可見,常用來做一些后臺處理。計時器的屬性和事時則不可見,常用來做一些后臺處理。計時器的屬性和事件都相當(dāng)少,能響應(yīng)的事件只有自身特有的一個件都相當(dāng)少,能響應(yīng)的事件只有自身特有的一個Timer事事件,其主要屬性見表件,其主要屬性見表4-6。表表4-6 Timer控件的屬性控件的屬性屬 性說 明Enabled該屬性為True時,定時器開始工作,為False時暫停Interval該屬性用來設(shè)置定時器觸發(fā)的周期(以毫秒計)取值范圍為064767【例例4-13】為一個應(yīng)用系統(tǒng)設(shè)計流動字幕板,如圖為一個應(yīng)用系統(tǒng)設(shè)計流動字幕板,如圖4-12所所示,標(biāo)題示,標(biāo)題“欲窮千里目,更上一層樓欲窮千
47、里目,更上一層樓”在窗體中自右至左在窗體中自右至左地反復(fù)移動。地反復(fù)移動。圖圖4-12 電子標(biāo)題板電子標(biāo)題板 命令按鈕命令按鈕Command1的的Click事件代碼:事件代碼:Private Sub Command1_Click() If Command1.Caption = &S 暫停 Then Command1.Caption = &C 繼續(xù) Timer1.Enabled = False Else Command1.Caption = &S 暫停 Timer1.Enabled = True End IfEnd Sub編寫編寫Timer1的的Timer事件代碼:事件代
48、碼:Private Sub Timer1_Timer() If Label1.Left + Label1.Width 0 Then Label1.Move Label1.Left 20 Else Label1.Left = Form1.ScaleWidth End IfEnd Subv4.6 提供簡單選擇的控件提供簡單選擇的控件 成組使用的選項按鈕以及復(fù)選框可以為用戶提供簡單的、成組使用的選項按鈕以及復(fù)選框可以為用戶提供簡單的、事先準(zhǔn)備的選項。事先準(zhǔn)備的選項。4.6.1 4.6.1 選項按鈕選項按鈕 選項按鈕(選項按鈕(OptionButton)又稱單選按鈕。一般來說,)又稱單選按鈕。一般來說
49、,選項按鈕總是作為一個組(選項按鈕組)的組成部分工作選項按鈕總是作為一個組(選項按鈕組)的組成部分工作的。的。 選項按鈕組是一組相互排斥的選項按鈕,選擇一個選項選項按鈕組是一組相互排斥的選項按鈕,選擇一個選項按鈕就會立即清除該組中的其他按鈕。在選項按鈕組中只按鈕就會立即清除該組中的其他按鈕。在選項按鈕組中只能單擊一個選項,即選項按鈕組只允許用戶從選擇菜單中能單擊一個選項,即選項按鈕組只允許用戶從選擇菜單中選擇一個選項。選擇一個選項。1. 使用選項按鈕組使用選項按鈕組 在窗體中定義的若干選項按鈕可以組成一個選項組,一在窗體中定義的若干選項按鈕可以組成一個選項組,一般常用框架(般常用框架(Fram
50、e)控件來組織一個選項組。)控件來組織一個選項組?!纠?-14】設(shè)銀行定期存款年利率為:設(shè)銀行定期存款年利率為:1年期年期2.25%,2年年期期2.70%,3年期年期3.24%,5年期年期3.60%(不計復(fù)利)。今(不計復(fù)利)。今有本金有本金a元,元,5年以后使用,共有以下年以后使用,共有以下6種存法:種存法:存一次存一次5年期;年期; 存一次存一次3年期,一次年期,一次2年期;年期; 存一次存一次3年期,兩次年期,兩次1年期;年期; 存兩次存兩次2年期,一次年期,一次1年期;年期; 存一次存一次2年期,三次年期,三次1年期;年期; 存五次存五次1年期。年期。圖圖4-14 計算利息計算利息
51、分別計算各種存法分別計算各種存法5年后到期時的本息合計,如圖年后到期時的本息合計,如圖4-14所示。所示。 分析:設(shè)分析:設(shè)x1、x2、x3、x5分別表示分別表示1年、年、2年、年、3年、年、5年年定期儲蓄的利息,定期儲蓄的利息,a表示本金,則定期的本息計算公式分表示本金,則定期的本息計算公式分別為:別為:(1 + x1)a、(1 + 2x2)a、(1 + 3x3)a、(1 + 5x5)a。 編寫命令按鈕編寫命令按鈕Command1的單擊(的單擊(Click)事件代碼:)事件代碼:Private Sub Command1_Click() Dim a As Single, y As Single
52、 Dim x1 As Single, x2 As Single Dim x3 As Single, x5 As Single a = Val(Text1.Text) x1 = 0.0225: x2 = 0.0270 x3 = 0.0324: x5 = 0.0360 Select Case True Case Option1.Value y = (1 + 5 * x5) * a Case Option2.Value y = (1 + 3 * x3) * (1 + 2 * x2) * aCase Option3.Value y = (1 + 3 * x3) * (1 + x1) 2 * a Cas
53、e Option4.Value y = (1 + 2 * x2) 2 * (1 + x1) * a Case Option5.Value y = (1 + 2 * x2) * (1 + x1) 3 * a Case Option6.Value y = (1 + x1) 5 * a End Select Text2.Text = y Text1.SetFocusEnd Sub 編寫文本框編寫文本框Text1的的GotFocus事件代碼:事件代碼:Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.
54、Text)End Sub2. 使用圖形選項按鈕使用圖形選項按鈕 可以將選項按鈕設(shè)計成圖形按鈕的形式??梢詫⑦x項按鈕設(shè)計成圖形按鈕的形式?!纠?-15】用圖形選項按鈕組控制流動字幕中的字體,如用圖形選項按鈕組控制流動字幕中的字體,如圖圖4-15所示。所示。 在例在例4-13中增加中增加4個選項按鈕個選項按鈕Option1Option4,并修,并修改改Option1Option4的的Style屬性為:屬性為:1 Graphical(圖形方式),再依次修改其(圖形方式),再依次修改其Caption屬性,如圖屬性,如圖4-15所所示。示。圖圖4-15 圖形選項按鈕組圖形選項按鈕組 編寫選項按鈕編寫選
55、項按鈕Option1Option4的的Click事件代碼:事件代碼:Private Sub Option1_Click() Text1.FontName = 宋體End SubPrivate Sub Option2_Click() Text1.FontName = 隸書End SubPrivate Sub Option3_Click() Text1.FontName = 黑體End SubPrivate Sub Option4_Click() Text1.FontName = 楷體_GB2312End Sub 說明:可以為圖形按鈕添加圖形文件,以創(chuàng)建真正的說明:可以為圖形按鈕添加圖形文件,以創(chuàng)
56、建真正的“圖形按鈕圖形按鈕”。4.6.2 4.6.2 復(fù)選框復(fù)選框 選項按鈕組屬于多項中選擇一項的選擇,若需要選擇多選項按鈕組屬于多項中選擇一項的選擇,若需要選擇多項的情況,可以采用多個復(fù)選框(項的情況,可以采用多個復(fù)選框(CheckBox)控件。)控件。 當(dāng)復(fù)選框被選定時,復(fù)選框中出現(xiàn)一個當(dāng)復(fù)選框被選定時,復(fù)選框中出現(xiàn)一個“ ”。復(fù)選框。復(fù)選框的的Caption屬性可以指定出現(xiàn)在復(fù)選框旁邊的文本,而屬性可以指定出現(xiàn)在復(fù)選框旁邊的文本,而Picture屬性用來指定當(dāng)復(fù)選框被設(shè)計成圖形按鈕時的圖像。屬性用來指定當(dāng)復(fù)選框被設(shè)計成圖形按鈕時的圖像。 復(fù)選框的狀態(tài)由其復(fù)選框的狀態(tài)由其Value屬性決定
57、:屬性決定:0 假,假,1 真,真,2 暗。暗。1. 使用單個復(fù)選框使用單個復(fù)選框 單個的復(fù)選框是讓用戶在兩個選項之間進行選擇,如是單個的復(fù)選框是讓用戶在兩個選項之間進行選擇,如是或否,真或假。這有點兒像兩個按鈕的選項組,只是形式或否,真或假。這有點兒像兩個按鈕的選項組,只是形式上要簡單一些,操作更方便一些。上要簡單一些,操作更方便一些?!纠?-16】在上例中,增加復(fù)選框,控制選項按鈕組的顯在上例中,增加復(fù)選框,控制選項按鈕組的顯示,如圖示,如圖4-16所示。所示。圖圖4-16 利用復(fù)選框控制選項按鈕組的顯示利用復(fù)選框控制選項按鈕組的顯示 復(fù)選框控件復(fù)選框控件Check1的的Click事件代
58、碼:事件代碼:Private Sub Check1_Click() Option1.Visible = Check1.Value Option2.Visible = Check1.Value Option3.Visible = Check1.Value Option4.Visible = Check1.ValueEnd Sub2. 使用多個復(fù)選框使用多個復(fù)選框 一般情況下,復(fù)選框總是成組出現(xiàn),用戶可以從中選擇一般情況下,復(fù)選框總是成組出現(xiàn),用戶可以從中選擇一個或多個選項。一個或多個選項。【例例4-17】設(shè)計一個個人資料輸入窗口,使用選項按鈕組設(shè)計一個個人資料輸入窗口,使用選項按鈕組輸入性別與民
59、族,使用復(fù)選框輸入個人愛好,如圖輸入性別與民族,使用復(fù)選框輸入個人愛好,如圖4-17所所示。示。圖圖4-17 使用多個復(fù)選框使用多個復(fù)選框 編寫命令按鈕編寫命令按鈕Command1的的Click事件代碼:事件代碼:Private Sub Command1_Click() If Text1.Text = Then a = InputBox(您忘了輸入姓名!, 注意, 請在此輸入姓名) If a = Or a = 請在此輸入姓名 Then Exit Sub Text1.Text = a End If p1 = Text1.Text + , p2 = IIf(Option1, 男, 女) + , p3 = IIf(Option3, 漢族, 少數(shù)民族) p4 = ,喜歡: If Check1.Value = 1 Then p4 = p4 + Check1.Caption + 、 If Check2.Value = 1 Then p4 = p4 + Check
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- TY/T 1007-2024體育賽事信息化軟件測試規(guī)范
- 古詩課題申報書
- 課題申報書作假
- 發(fā)廊眾籌合同范本
- 員工內(nèi)部借款合同范本
- 修補材料合同范本
- 合同范本找誰寫好
- 分公司保證合同范本
- 合同范例工程范例
- 住宅電梯出售合同范本
- 臨時用電報審表及臨時用電驗收記錄
- 維修電工日巡檢、修維記錄表
- 華北理工大學(xué)中藥學(xué)教案(64學(xué)時-田春雨)
- 大學(xué)生的人格發(fā)展課件
- 長春中醫(yī)大《中藥化學(xué)》教案
- 攝影培訓(xùn)教學(xué)課件:攝影用光
- 大學(xué)物理相對運動課件
- 土壤分析技術(shù)規(guī)范(第二版)
- 碎石運輸合同標(biāo)準(zhǔn)范文
- 電子物料編碼規(guī)則
- 小學(xué)二年級數(shù)學(xué)下冊教材研說稿
評論
0/150
提交評論