vb-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第1頁(yè)
vb-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第2頁(yè)
vb-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第3頁(yè)
vb-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第4頁(yè)
vb-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第4章選擇結(jié)構(gòu)程序設(shè)計(jì)第4章選擇結(jié)構(gòu)程序設(shè)計(jì)1第4章選擇結(jié)構(gòu)程序設(shè)計(jì)(分支結(jié)構(gòu))選擇結(jié)構(gòu)是計(jì)算機(jī)科學(xué)用來(lái)描述自然界和社會(huì)生活中分支現(xiàn)象的重要手段。其特點(diǎn)是根據(jù)所給定的條件為真(即條件成立)與否,而決定從各實(shí)際可能的不同分支中執(zhí)行某一分支的相應(yīng)操作,并且任何情況下總有:“無(wú)論分支多寡,必?fù)衿湟?;縱然分支眾多,僅選其一”。第4章選擇結(jié)構(gòu)程序設(shè)計(jì)(分支結(jié)構(gòu))選擇結(jié)構(gòu)是計(jì)算4.1選擇結(jié)構(gòu)程序設(shè)計(jì)的概念

在VB中,實(shí)現(xiàn)選擇結(jié)構(gòu)的語(yǔ)句有:If...Then...Else、If...Then...ElseIf、SelectCase語(yǔ)句。這些語(yǔ)句又稱為條件語(yǔ)句,條件語(yǔ)句的功能都是根據(jù)表達(dá)式的值有選擇地執(zhí)行一組語(yǔ)句。4.2條件表達(dá)式在條件語(yǔ)句中作為判斷依據(jù)的表達(dá)式稱為“條件表達(dá)式”,條件表達(dá)式的取值為布爾值:真(True)或假(False)。在VB中,True的值等于–1,F(xiàn)alse的值等于0。根據(jù)“條件”的簡(jiǎn)單或者復(fù)雜程度,條件表達(dá)式可以分為兩類:關(guān)系表達(dá)式以及布爾表達(dá)式。4.1選擇結(jié)構(gòu)程序設(shè)計(jì)的概念4.2.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系表達(dá)式是指用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子(例如a+b>0),關(guān)系運(yùn)算符又稱比較運(yùn)算符,用來(lái)對(duì)兩個(gè)表達(dá)式的值進(jìn)行比較,比較的結(jié)果是一個(gè)布爾值(True或False),這個(gè)結(jié)果就是關(guān)系表達(dá)式的值。4.2.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式1.關(guān)系運(yùn)算符

VB提供的關(guān)系運(yùn)算符有以下6種,見(jiàn)表4-1。表4-1關(guān)系運(yùn)算符運(yùn)算符名稱例子說(shuō)明<小于3<4值為:True,強(qiáng)制轉(zhuǎn)換為數(shù)值型<=小于或等于3<=4值為:True>大于0>(1>0)值為:True,強(qiáng)制轉(zhuǎn)換為數(shù)值型>=大于或等于"aa">="ab"值為:False=等于1=True值為:False,強(qiáng)制轉(zhuǎn)換為數(shù)值型<>不等于4<>5值為:True1.關(guān)系運(yùn)算符運(yùn)算符名稱例子說(shuō)明<小于3<2.關(guān)系表達(dá)式關(guān)系表達(dá)式的格式為

〈表達(dá)式1〉〈關(guān)系運(yùn)算符〉〈表達(dá)式2〉[〈關(guān)系運(yùn)算符〉〈表達(dá)式3〉…]關(guān)系表達(dá)式的運(yùn)算次序?yàn)椋合确謩e求出關(guān)系運(yùn)算符兩側(cè)表達(dá)式的值,然后再把二者進(jìn)行比較,二者的關(guān)系若與關(guān)系運(yùn)算符指示的一樣,則關(guān)系運(yùn)算的結(jié)果為真True,否則為假False。2.關(guān)系表達(dá)式4.2.2布爾運(yùn)算符與布爾表達(dá)式對(duì)于較為復(fù)雜的條件,必須使用布爾表達(dá)式。布爾表達(dá)式是指用布爾運(yùn)算符連接若干關(guān)系表達(dá)式或布爾值而成的式子。布爾表達(dá)式的值也是一個(gè)布爾值。VB提供的布爾運(yùn)算符有:And、Or、Not、Xor、Eqv、Imp等6種,其中常用的為前3種,見(jiàn)表4-2。4.2.2布爾運(yùn)算符與布爾表達(dá)式表4-2布爾運(yùn)算符說(shuō)明:1)布爾運(yùn)算符兩側(cè)若有數(shù)值數(shù)據(jù)出現(xiàn),則將數(shù)值數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制數(shù)(補(bǔ)碼形式)進(jìn)行按位運(yùn)算。此時(shí),1為真,0為假。2)布爾運(yùn)算真值表見(jiàn)表4-3。運(yùn)算符名

稱例

子說(shuō)

明And與(4>5)And(3<4)值為:False,兩個(gè)表達(dá)式的值均為真,結(jié)果才為真,否則為假Or或(4>5)Or(3<4)值為:True,兩個(gè)表達(dá)式中只要有一個(gè)值為真,結(jié)果就為真,只有兩個(gè)表達(dá)式的值均為假,結(jié)果才為假Not非Not(1>0)值為:False,由真變假或由假變真,進(jìn)行取“反”操作表4-2布爾運(yùn)算符運(yùn)算符名稱例子說(shuō)明And與表4-3布爾運(yùn)算真值表 a b aAndb aOrb Nota

True True True True False True False False True False False True False True True False False False False True Not由真變假,由假變真。And對(duì)兩個(gè)布爾值進(jìn)行比較,如果兩個(gè)值均為真,則結(jié)果為真,否則為假。Or對(duì)兩個(gè)布爾值進(jìn)行比較,如果其中一個(gè)值為真,則結(jié)果為真,只有兩個(gè)值都為假時(shí),結(jié)果才為假。運(yùn)算布爾表達(dá)式時(shí),先運(yùn)算關(guān)系表達(dá)式,再運(yùn)算布爾表達(dá)式。表4-3布爾運(yùn)算真值表邏輯運(yùn)算的運(yùn)算規(guī)則ABNotAAAndBAorBAXorBTTFTTFTFFFTTFTTFTTFFTFFF邏輯運(yùn)算的運(yùn)算規(guī)則ABNotAAAndBAorBA按二進(jìn)制進(jìn)行的邏輯運(yùn)算規(guī)則ABNotAAAndBAorBAXorB110110100011011011001000按二進(jìn)制進(jìn)行的邏輯運(yùn)算規(guī)則ABNotAAAndBAoPrint12and8=81100and1000=1000Print12or16=281100and10000=11100Print12Xor7=111100Xor111=1011Print11Xor7=121011xor111=1100注:先把數(shù)字轉(zhuǎn)換為二進(jìn)制數(shù),再進(jìn)行運(yùn)算。(AXorB)XorB=APrint12and8=811004.2.3運(yùn)算符的優(yōu)先順序

在一個(gè)表達(dá)式中進(jìn)行多種操作時(shí),VB會(huì)按一定的順序進(jìn)行求值,稱這個(gè)順序?yàn)檫\(yùn)算符的優(yōu)先順序。運(yùn)算符的優(yōu)先順序見(jiàn)表4-4。表4-4運(yùn)算符的優(yōu)先順序優(yōu)先順序運(yùn)算符類型運(yùn)算符1算術(shù)運(yùn)算符^(指數(shù)運(yùn)算)2–(負(fù)數(shù))3*、/(乘法和除法)4\(整數(shù)除法)5Mod(求模運(yùn)算)6+、–(加法和減法)7字符串運(yùn)算符&(字符串連接)8關(guān)系運(yùn)算符=、<>、<、>、<=、>=9布爾運(yùn)算符Not10And11Or4.2.3運(yùn)算符的優(yōu)先順序優(yōu)先順序運(yùn)算符類型運(yùn)算符1算術(shù)【例4-1】設(shè)變量x=4,y=–1,a=7.5,b=–6.2,求表達(dá)式x+y>a+bAndNoty<b的值。分析:將按下面步驟計(jì)算:1)先作算術(shù)運(yùn)算:3>–1.3AndNoty<b2)再作關(guān)系運(yùn)算:TrueAndNotFalse3)作非運(yùn)算: TrueAndTrue4)最后得: True【例4-1】設(shè)變量x=4,y=–1,a=7.5,【例4-2】判斷某個(gè)年份是閏年的根據(jù)是年份數(shù)滿足下述條件之一。條件1:能被4整除,但不能被100整除的年份都是閏年。條件2:能被100整除,又能被400整除的年份都是閏年。設(shè)變量y表示年份,寫出判斷y是否閏年的布爾表達(dá)式。解:判斷y是否滿足條件1的布爾表達(dá)式是 yMod4=0 AndyMod100<>0判斷y是否滿足條件2的布爾表達(dá)式是 yMod100=0AndyMod400=0兩者取“或”,即得判斷閏年的布爾表達(dá)式: yMod4=0AndyMod100<>0OryMod100=0AndyMod400=0【例4-2】判斷某個(gè)年份是閏年的根據(jù)是年份數(shù)滿足下述條件之一4.3單條件選擇語(yǔ)句IF

單條件選擇結(jié)構(gòu)是最常用的雙分支選擇結(jié)構(gòu),其特點(diǎn)是:所給定條件(條件表達(dá)式)的值如果為真,則執(zhí)行a1塊;如果為假則執(zhí)行a2塊。其一般形式如圖4-1所示。 圖4-1單條件選擇結(jié)構(gòu)的流程圖實(shí)現(xiàn)單條件選擇結(jié)構(gòu)的語(yǔ)句是If語(yǔ)句,在VB中有行If語(yǔ)句和塊If語(yǔ)句兩種。如果

條件{該(選擇)條件成立嗎?}

真a1塊{條件成立時(shí)所執(zhí)行的操作塊,它一般為非空塊}假a2塊{條件不成立時(shí)所執(zhí)行的操作塊,它可為空塊}4.3單條件選擇語(yǔ)句IF如果條件{該(選擇)條件成立4.3.1單行結(jié)構(gòu)條件語(yǔ)句IF…THEN…ELSE單行If語(yǔ)句的語(yǔ)法格式為If〈條件〉Then[〈語(yǔ)句序列1〉][Else〈語(yǔ)句序列2〉]說(shuō)明:1)〈條件〉可以是關(guān)系表達(dá)式、布爾表達(dá)式或數(shù)值表達(dá)式。如果以數(shù)值表達(dá)式作條件,則非0值為真,0為假。2)如果沒(méi)有Else子句,〈語(yǔ)句序列1〉為必要參數(shù),在〈條件〉為True時(shí)執(zhí)行。4.3.1單行結(jié)構(gòu)條件語(yǔ)句IF…THEN…ELSE【例4-3】輸入x,計(jì)算y的值。其中:【例4-3】輸入x,計(jì)算y的值。其中:

流程圖4-2所示。 圖4-2計(jì)算y值的流程圖

根據(jù)流程圖,寫出命令按鈕Command1的單擊(Click)事件代碼為:輸入x{給出x的值}如果x>=0

真y←1+x{x>=0時(shí)的y值}假y←1–2*x{x<0時(shí)的y值}輸出y{輸出y的值}流程圖4-2所示。輸入x{給出x的值}如果x>=圖4-3計(jì)算函數(shù)的值PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx>=0Theny=1+xElsey=1–2*xText2.Text=yEndSubvb-選擇結(jié)構(gòu)程序設(shè)計(jì)ppt課件【例4-4】學(xué)校對(duì)學(xué)習(xí)成績(jī)優(yōu)良的學(xué)生進(jìn)行獎(jiǎng)勵(lì),獲獎(jiǎng)的條件如下:1)所考5門課的總分超過(guò)450分;2)每門課的成績(jī)都在88分以上;3)前3門(主課)的成績(jī)都在95分以上,其他兩門(非主課)的成績(jī)都在80分以上。輸入某學(xué)生5門課的成績(jī)s1、s2、s3、s4、s5,判斷他是否能夠獲獎(jiǎng)。分析:依題意列出3個(gè)條件表達(dá)式:1)s1+s2+s3+s4+s5>=4502)s1>=88ANDs2>=88ANDs3>=88ANDs4>=88ANDs5>=883)s1>=95ANDs2>=95ANDs3>=95ANDs4>=80ANDs5>=80【例4-4】學(xué)校對(duì)學(xué)習(xí)成績(jī)優(yōu)良的學(xué)生進(jìn)行獎(jiǎng)勵(lì),獲獎(jiǎng)的條件如下

圖4-4判斷能否獲獎(jiǎng)命令按鈕Command1的單擊(Click)事件代碼為: PrivateSubCommand1_Click() Dims1AsSingle,s2AsSingle,s3AsSingle,s4AsSingle,s5AsSingle DimpAsString s1=Val(InputBox("請(qǐng)輸入第1門課的成績(jī):","輸入框",0)) s2=Val(InputBox("請(qǐng)輸入第2門課的成績(jī):","輸入框",0)) s3=Val(InputBox("請(qǐng)輸入第3門課的成績(jī):","輸入框",0)) s4=Val(InputBox("請(qǐng)輸入第4門課的成績(jī):","輸入框",0)) s5=Val(InputBox("請(qǐng)輸入第5門課的成績(jī):","輸入框",0))

t1=(s1+s2+s3+s4+s5>=450) t2=(s1>=88Ands2>=88Ands3>=88Ands4>=88Ands5>=88) t3=(s1>=95Ands2>=95Ands3>=95Ands4>=80Ands5>=80) Ift1Ort2Ort3Thenp="可以獲獎(jiǎng)!"Elsep="不能獲獎(jiǎng)!" p=Str(s1)&","&Str(s2)&","&Str(s3)&","&Str(s4)&","&Str(s5)&Chr(13)&p Label1.Caption="該生五門課的成績(jī)分別是:"&Chr(13)&p EndSub t1=(s1+s2+s3+s4+

【例4-5】利用輸入框函數(shù)輸入3個(gè)不同的數(shù),選出其中最大的數(shù)。命令按鈕Command1的單擊(Click)事件代碼為: PrivateSubCommand1_Click() DimaAsSingle,bAsSingle,cAsSingle a=Val(InputBox("請(qǐng)輸入第1個(gè)數(shù):","輸入框",0)) b=Val(InputBox("請(qǐng)輸入第2個(gè)數(shù):","輸入框",0)) c=Val(InputBox("請(qǐng)輸入第3個(gè)數(shù):","輸入框",0)) p=""&a&","&b&","&c p=p&"三個(gè)數(shù)中最大的數(shù)是:" Ifa>bAnda>cThenp=p&a Ifb>aAndb>cThenp=p&b Ifc>aAndc>bThenp=p&c Label1.Caption=p EndSub【例4-5】利用輸入框函數(shù)輸入3個(gè)不同的數(shù),選出其中最大圖4-5求3個(gè)數(shù)中最大數(shù)4.3.2使用IIF函數(shù)還可以使用IIf函數(shù)來(lái)實(shí)現(xiàn)一些比較簡(jiǎn)單的選擇結(jié)構(gòu)。IIf函數(shù)的語(yǔ)法結(jié)構(gòu)為: IIf(〈條件表達(dá)式〉,〈真部分〉,〈假部分〉)語(yǔ)句y=IIf(〈條件表達(dá)式〉,〈真部分〉,〈假部分〉)相當(dāng)于: If〈條件表達(dá)式〉theny=〈真部分〉Elsey=〈假部分〉vb-選擇結(jié)構(gòu)程序設(shè)計(jì)ppt課件【例4-6】例4-3中命令按鈕Command1的單擊(Click)事件代碼可以改為: PrivateSubCommand1_Click() DimxAsSingle,yAsSingle x=Val(Text1.Text) y=IIf(x>=0,1+x,1–2*x) Text2.Text=y EndSub【例4-6】例4-3中命令按鈕Command1的單擊(Cli4.3.3塊結(jié)構(gòu)條件語(yǔ)句IF…THEN…ELSE…ENDIFVB提供的塊If語(yǔ)句,將一個(gè)選擇結(jié)構(gòu)用多個(gè)語(yǔ)句行來(lái)實(shí)現(xiàn)。其語(yǔ)法結(jié)構(gòu)為: If〈條件1〉Then [〈語(yǔ)句序列1〉] [Else [〈語(yǔ)句序列2〉]] EndIf在塊形式中,If語(yǔ)句必須是第1行語(yǔ)句。If塊必須以一個(gè)EndIf語(yǔ)句結(jié)束。4.3.3塊結(jié)構(gòu)條件語(yǔ)句IF…THEN…ELSE…END【例4-7】將例4-3中命令按鈕Command1的單擊(Click)事件代碼改為多行If語(yǔ)句: PrivateSubCommand1_Click() DimxAsSingle,yAsSingle x=Val(Text1.Text) Ifx>=0Then y=1+x Else y=1–2*x EndIf Text2.Text=y EndSub【例4-7】將例4-3中命令按鈕Command1的單擊(Cl4.3.4IF語(yǔ)句的嵌套1.IF語(yǔ)句的嵌套如果在If語(yǔ)句中操作塊a1塊(語(yǔ)句序列1)或a2塊(語(yǔ)句序列2)本身又是一個(gè)If語(yǔ)句,則稱為If語(yǔ)句的嵌套。

4.3.4IF語(yǔ)句的嵌套If語(yǔ)句的嵌套If<表達(dá)式1>thenIf<表達(dá)式1>thenif<表達(dá)式2>then<語(yǔ)句組1>if<表達(dá)式3>thenElse<語(yǔ)句組1>if<表達(dá)式2>thenElse<語(yǔ)句組2><語(yǔ)句組2>Elseif<表達(dá)式3>thenEndif<語(yǔ)句組3>ElseElseif<表達(dá)式4>then<語(yǔ)句組3><語(yǔ)句組4>EndifElse<語(yǔ)句組4><語(yǔ)句組5>EndifEndifEndifIf語(yǔ)句的嵌套【例4-8】鐵路托運(yùn)行李,從甲地到乙地,規(guī)定每張客票托運(yùn)費(fèi)計(jì)算方法是行李重量不超過(guò)50kg時(shí),0.25元/kg,超過(guò)50kg而不超過(guò)100kg時(shí),其超過(guò)部分按0.35元/kg收費(fèi),超過(guò)100kg時(shí),其超過(guò)部分按0.45元/kg收費(fèi)。編寫程序,輸入行李重量,計(jì)算并輸出托運(yùn)的費(fèi)用。分析:設(shè)行李重量為wkg,應(yīng)付運(yùn)費(fèi)為x元,則運(yùn)費(fèi)公式為:【例4-8】鐵路托運(yùn)行李,從甲地到乙地,規(guī)定每張客票托運(yùn)費(fèi)計(jì)命令按鈕Command1的單擊(Click)事件代碼為: PrivateSubCommand1_Click() DimwAsSingle,xAsSingle w=Val(Text1.Text) Ifw<=50Then x=0.25*w Else Ifw<=100Then x=0.25*50+0.35*(w–50) Else x=0.25*50+0.35*50+0.45*(w–100)圖4-7計(jì)算托運(yùn)費(fèi) EndIf EndIf Text2.Text=x EndSub命令按鈕Command1的單擊(Click)事件代碼為:圖4-8計(jì)算優(yōu)惠價(jià)【例4-9】某百貨公司為了促銷,采用購(gòu)物打折扣的優(yōu)惠辦法:每位顧客一次購(gòu)物1)在1000元以上者,按九五折優(yōu)惠;2)在2000元以上者,按九折優(yōu)惠;3)在3000元以上者,按八五折優(yōu)惠;4)在5000元以上者,按八折優(yōu)惠。輸入購(gòu)物款數(shù),計(jì)算并輸出優(yōu)惠價(jià),如圖4-8所示。分析:設(shè)購(gòu)物款數(shù)為x元,優(yōu)惠價(jià)為y元,付款公式為:圖4-8計(jì)算優(yōu)惠價(jià)命令按鈕Command1的單擊(Click)事件代碼為: PrivateSubCommand1_Click() DimxAsSingle,yAsSingle x=Val(Text1.Text) Ifx<1000Then y=x Else Ifx<2000Then y=0.95*x Else Ifx<3000Then y=0.9*x ElseIfx<5000Theny=0.85*xElsey=0.08*xEndIfEndIfEndIfEndIfText2.Text=yEndSub 圖4-8計(jì)算優(yōu)惠價(jià)命令按鈕Command1的單擊(Click)事件代碼2.IF語(yǔ)句的嵌套格式ELSEIF例4.8中出現(xiàn)的多層If語(yǔ)句嵌套,使程序冗長(zhǎng),不便閱讀。為此VB提供了帶ElseIf的塊If語(yǔ)句來(lái)處理當(dāng)條件為假時(shí)又內(nèi)嵌塊If語(yǔ)句的情形,以使程序簡(jiǎn)化易寫。其語(yǔ)法結(jié)構(gòu)為: If〈條件1〉Then [〈語(yǔ)句序列1〉] ElseIf〈條件2〉Then [〈語(yǔ)句序列2〉] ... [Else [〈其他語(yǔ)句序列〉]] EndIf2.IF語(yǔ)句的嵌套格式ELSEIF【例4-10】在例4-9中使用帶ElseIf的塊If語(yǔ)句來(lái)計(jì)算出優(yōu)惠價(jià),只需將其中命令按鈕Command1的單擊(Click)事件代碼改為: PrivateSubCommand1_Click() DimxAsSingle,yAsSingle x=Val(Text1.Text) Ifx<1000Then y=x ElseIfx<2000Then y=0.95*x ElseIfx<3000Then y=0.9*x ElseIfx<5000Then y=0.85*x Else y=0.08*x EndIf Text2.Text=y EndSub【例4-10】在例4-9中使用帶ElseIf的塊If語(yǔ)句來(lái)計(jì)4.4多分支條件選擇語(yǔ)句SELECTCASE

多分支選擇結(jié)構(gòu)的特點(diǎn)是:從多個(gè)選擇結(jié)構(gòu)中,選擇第1個(gè)條件為真的路線作為執(zhí)行的路線。即所給定的選擇條件1為真時(shí),執(zhí)行a1塊;如果為假則繼續(xù)檢查下一個(gè)條件。如果條件都不為真,就執(zhí)行其他操作塊,如果沒(méi)有其他操作塊,則不作任何操作就結(jié)束選擇。如圖4-9所示。圖4-9多條件多分支選擇結(jié)構(gòu)的流程圖情形

條件1a1塊{條件1成立時(shí)所執(zhí)行的操作塊}條件2a2塊{條件2成立時(shí)所執(zhí)行的操作塊}……

條件nan塊{條件n成立時(shí)所執(zhí)行的操作塊}其他an+1塊{條件都不成立時(shí)所執(zhí)行的操作塊}4.4多分支條件選擇語(yǔ)句SELECTCASE情形條4.4.1SELECTCASE結(jié)構(gòu)與語(yǔ)法雖然使用嵌套的辦法可以利用If語(yǔ)句實(shí)現(xiàn)多分支選擇,但是最好還是使用VB提供的多分支選擇結(jié)構(gòu)(SelectCase語(yǔ)句)來(lái)實(shí)現(xiàn)多分支選擇。根據(jù)單一表達(dá)式來(lái)執(zhí)行多種可能的動(dòng)作時(shí),SelectCase更為簡(jiǎn)捷,它根據(jù)表達(dá)式的值,來(lái)決定執(zhí)行幾組語(yǔ)句中的一組。4.4.1SELECTCASE結(jié)構(gòu)與語(yǔ)法4.4.1SELECTCASE結(jié)構(gòu)與語(yǔ)法SelectCase語(yǔ)句的語(yǔ)法格式為 SelectCase〈測(cè)試條件〉 [Case〈表達(dá)式表1〉 [〈語(yǔ)句序列1〉]] [Case〈表達(dá)式表2〉 [〈語(yǔ)句序列2〉]] ... [CaseElse [〈其他語(yǔ)句序列〉]] EndSelect4.4.1SELECTCASE結(jié)構(gòu)與語(yǔ)法其中:<測(cè)試表達(dá)式>為數(shù)值型或字符串表達(dá)式;每個(gè)<表達(dá)式列表>是一個(gè)或幾個(gè)值的列表,可以是表達(dá)式、枚舉值表達(dá)式1To表達(dá)式2,Is關(guān)系運(yùn)算表達(dá)式等幾種形式。如果在一個(gè)列表中有多個(gè)值,就用逗號(hào)把值隔開;每個(gè)語(yǔ)句組中含有零個(gè)到多個(gè)語(yǔ)句。SelectCase語(yǔ)句執(zhí)行過(guò)程:1、計(jì)算<測(cè)試表達(dá)式>的值2、將<測(cè)試表達(dá)式>的值與Case語(yǔ)句中的<表達(dá)式列表>中的每一個(gè)值逐一比較。如果與其中一個(gè)相匹配,則執(zhí)行相應(yīng)的語(yǔ)句組。如果不止一個(gè),則只執(zhí)行第一個(gè)相匹配的語(yǔ)句組。如果沒(méi)有相匹配的,則執(zhí)行CaseElse子句(可選)。最后執(zhí)行EndSelect語(yǔ)句。其中:<測(cè)試表達(dá)式>為數(shù)值型或字符串表達(dá)式;每個(gè)<表達(dá)式列表SelectCase語(yǔ)句表達(dá)式的值有如下規(guī)定:1)可以是一個(gè)值,也可以是幾個(gè)值的列表;2)如果列表中的值不連續(xù),就用逗號(hào)把值隔開.如:Case1,3,7,10.3)如果列表中的值是連續(xù)的,可用TO表達(dá)式,如:Case1to5,表示1到5這5個(gè)數(shù).4)列表中還可以包含Is關(guān)系表達(dá)式,如caseIs>79.表示大于79的值5)表達(dá)式值的類型必須與測(cè)試表達(dá)式的類型相同.If結(jié)構(gòu)和selectcase結(jié)構(gòu)相互間的轉(zhuǎn)換小結(jié):SelectCase語(yǔ)句表達(dá)式的值有如下規(guī)定:Case子句中的〈表達(dá)式表〉是一個(gè)或多個(gè)如表4-5所示形式表達(dá)式的列表。表4-5表達(dá)式的形式當(dāng)使用多個(gè)表達(dá)式的列表時(shí),表達(dá)式與表達(dá)式之間要用逗號(hào)“,”隔開。形式示例說(shuō)明表達(dá)式Case100*a數(shù)值或字符串表達(dá)式表達(dá)式To表達(dá)式Case1000To2000Case"a"To"n"用來(lái)指定一個(gè)值范圍,較小的值要出現(xiàn)在To之前Is關(guān)系運(yùn)算表達(dá)式CaesIs<3000可配合比較運(yùn)算符來(lái)指定一個(gè)數(shù)值范圍。如果沒(méi)有提供,則Is關(guān)鍵字會(huì)被自動(dòng)插入Case子句中的〈表達(dá)式表〉是一個(gè)或多個(gè)如表4-5所4.4.2SELECTCASE結(jié)構(gòu)的應(yīng)用【例4-11】在例4-9中使用SelectCase語(yǔ)句來(lái)計(jì)算優(yōu)惠價(jià),只需將其中命令按鈕Command1的單擊(Click)事件代碼改為:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)SelectCasexCaseIs<1000y=xCaseIs<2000y=0.95*xCaseIs<3000y=0.9*xCaseIs<5000y=0.85*xCaseElsey=0.08*xEndSelectText2.Text=yEndSub4.4.2SELECTCASE結(jié)構(gòu)的應(yīng)用Private【例4-12】某航空公司規(guī)定在旅游的旺季7~9月份,如果訂票數(shù)超過(guò)20張,票價(jià)優(yōu)惠15%,20張以下,優(yōu)惠5%;在旅游的淡季1~5月份、10月份、11月份,如果訂票數(shù)超過(guò)20張,票價(jià)優(yōu)惠30%,20張以下,優(yōu)惠20%;其他情況一律優(yōu)惠10%。設(shè)計(jì)程序,根據(jù)月份和訂票張數(shù)決定票價(jià)的優(yōu)惠率。圖4-11計(jì)算優(yōu)惠價(jià)【例4-12】某航空公司規(guī)定在旅游的旺季7~9月份,如果訂票命令按鈕Command1的單擊(Click)事件代碼為: PrivateSubCommand1_Click() DimmAsInteger,nAsInteger,rAsInteger m=Val(Text1.Text) n=Val(Text2.Text) SelectCasem CaseIs<=5,10,11 Ifn<20Thenr=20Elser=30 Case7To9 Ifn<20Thenr=5Elser=15 CaseElse r=10 EndSelect Label4.Caption="所訂機(jī)票的優(yōu)惠率為:"&Str(r)&"%" EndSub命令按鈕Command1的單擊(Click)事件代碼為了使用更加方便,再增加如下代碼。窗體的Load事件代碼: PrivateSubForm_Load() Text1.Text=Month(Date) 'Text1中的默認(rèn)值為當(dāng)前月份 EndSub文本框Text1的GotFocus事件代碼: PrivateSubText1_GotFocus() Text1.SelStart=0 Text1.SelLength=Len(Text1.Text) EndSub為了使用更加方便,再增加如下代碼。文本框Text1的按健(KeyPress)事件代碼: PrivateSubText1_KeyPress(KeyAsciiAsInteger) IfKeyAscii=13Then'在Text1按〈Enter〉鍵,光標(biāo)跳到Text2 IfText1.Text>0AndText1.Text<13Then Text2.SetFocus EndIf EndIf EndSub文本框Text1的按?。↘eyPress)事件代碼:文本框Text2的GotFocus事件代碼: PrivateSubText2_GotFocus() Text2.SelStart=0 Text2.SelLength=Len(Text2.Text) EndSub文本框Text2的按?。↘eyPress)事件代碼: PrivateSubText2_KeyPress(KeyAsciiAsInteger) IfKeyAscii=13Then'在Text2按〈Enter〉鍵,光標(biāo)跳到Command1 IfText2.Text>0ThenCommand1.SetFocus EndIf EndSub文本框Text2的GotFocus事件代碼:4.5使用計(jì)時(shí)器控件

計(jì)時(shí)器(Timer)是VisualBasic提供的一個(gè)用于定時(shí)的特殊控件,當(dāng)?shù)竭_(dá)預(yù)定時(shí)間時(shí),系統(tǒng)會(huì)自動(dòng)觸發(fā)其Timer事件,以便完成指定的操作。計(jì)時(shí)器控件在設(shè)計(jì)時(shí)顯示為一個(gè)小時(shí)鐘圖標(biāo),而在運(yùn)行時(shí)則不可見(jiàn),常用來(lái)做一些后臺(tái)處理。計(jì)時(shí)器的屬性和事件都相當(dāng)少,能響應(yīng)的事件只有自身特有的一個(gè)Timer事件,其主要屬性見(jiàn)表4-6。表4-6Timer控件的屬性屬性說(shuō)明Enabled該屬性為True時(shí),定時(shí)器開始工作,為False時(shí)暫停Interval該屬性用來(lái)設(shè)置定時(shí)器觸發(fā)的周期(以毫秒計(jì))取值范圍為0~647674.5使用計(jì)時(shí)器控件屬性說(shuō)明Enabled該屬性【例4-13】為一個(gè)應(yīng)用系統(tǒng)設(shè)計(jì)流動(dòng)字幕板,如圖4-12所示,標(biāo)題“欲窮千里目,更上一層樓”在窗體中自右至左地反復(fù)移動(dòng)。圖4-12電子標(biāo)題板

【例4-13】為一個(gè)應(yīng)用系統(tǒng)設(shè)計(jì)流動(dòng)字幕板,如圖4-12所示命令按鈕Command1的Click事件代碼: PrivateSubCommand1_Click() IfCommand1.Caption="&S暫停"Then Command1.Caption="&C繼續(xù)" Timer1.Enabled=False Else Command1.Caption="&S暫停" Timer1.Enabled=True EndIf EndSub命令按鈕Command1的Click事件代碼:編寫Timer1的Timer事件代碼: PrivateSubTimer1_Timer() IfLabel1.Left+Label1.Width>0Then Label1.MoveLabel1.Left–20 Else Label1.Left=Form1.ScaleWidth EndIf EndSub編寫Timer1的Timer事件代碼:4.6提供簡(jiǎn)單選擇的控件成組使用的選項(xiàng)按鈕以及復(fù)選框可以為用戶提供簡(jiǎn)單的、事先準(zhǔn)備的選項(xiàng)。4.6.1選項(xiàng)按鈕選項(xiàng)按鈕(OptionButton)又稱單選按鈕。一般來(lái)說(shuō),選項(xiàng)按鈕總是作為一個(gè)組(選項(xiàng)按鈕組)的組成部分工作的。選項(xiàng)按鈕組是一組相互排斥的選項(xiàng)按鈕,選擇一個(gè)選項(xiàng)按鈕就會(huì)立即清除該組中的其他按鈕。在選項(xiàng)按鈕組中只能單擊一個(gè)選項(xiàng),即選項(xiàng)按鈕組只允許用戶從選擇菜單中選擇一個(gè)選項(xiàng)。4.6提供簡(jiǎn)單選擇的控件1.使用選項(xiàng)按鈕組在窗體中定義的若干選項(xiàng)按鈕可以組成一個(gè)選項(xiàng)組,一般常用框架(Frame)控件來(lái)組織一個(gè)選項(xiàng)組?!纠?-14】設(shè)銀行定期存款年利率為:1年期2.25%,2年期2.70%,3年期3.24%,5年期3.60%(不計(jì)復(fù)利)。今有本金a元,5年以后使用,共有以下6種存法:存一次5年期;存一次3年期,一次2年期;存一次3年期,兩次1年期;存兩次2年期,一次1年期;存一次2年期,三次1年期;存五次1年期。 圖4-14計(jì)算利息1.使用選項(xiàng)按鈕組分別計(jì)算各種存法5年后到期時(shí)的本息合計(jì),如圖4-14所示。分析:設(shè)x1、x2、x3、x5分別表示1年、2年、3年、5年定期儲(chǔ)蓄的利息,a表示本金,則定期的本息計(jì)算公式分別為:(1+x1)a、(1+2x2)a、(1+3x3)a、(1+5x5)a。vb-選擇結(jié)構(gòu)程序設(shè)計(jì)ppt課件編寫命令按鈕Command1的單擊(Click)事件代碼:PrivateSubCommand1_Click()DimaAsSingle,yAsSingleDimx1AsSingle,x2AsSingleDimx3AsSingle,x5AsSinglea=Val(Text1.Text)x1=0.0225:x2=0.0270x3=0.0324:x5=0.0360SelectCaseTrueCaseOption1.Valuey=(1+5*x5)*aCaseOption2.Valuey=(1+3*x3)*(1+2*x2)*aCaseOption3.Valuey=(1+3*x3)*(1+x1)^2*aCaseOption4.Valuey=(1+2*x2)^2*(1+x1)*aCaseOption5.Valuey=(1+2*x2)*(1+x1)^3*aCaseOption6.Valuey=(1+x1)^5*aEndSelectText2.Text=yText1.SetFocusEndSub編寫命令按鈕Command1的單擊(Click)事件編寫文本框Text1的GotFocus事件代碼: PrivateSubText1_GotFocus() Text1.SelStart=0 Text1.SelLength=Len(Text1.Text) EndSub編寫文本框Text1的GotFocus事件代碼:2.使用圖形選項(xiàng)按鈕可以將選項(xiàng)按鈕設(shè)計(jì)成圖形按鈕的形式?!纠?-15】用圖形選項(xiàng)按鈕組控制流動(dòng)字幕中的字體,如圖4-15所示。在例4-13中增加4個(gè)選項(xiàng)按鈕Option1~Option4,并修改Option1~Option4的Style屬性為:1–Graphical(圖形方式),再依次修改其Caption屬性,如圖4-15所示。圖4-15圖形選項(xiàng)按鈕組

2.使用圖形選項(xiàng)按鈕編寫選項(xiàng)按鈕Option1~Option4的Click事件代碼: PrivateSubOption1_Click() Text1.FontName="宋體" EndSub PrivateSubOption2_Click() Text1.FontName="隸書" EndSub PrivateSubOption3_Click() Text1.FontName="黑體" EndSub PrivateSubOption4_Click() Text1.FontName="楷體_GB2312" EndSub說(shuō)明:可以為圖形按鈕添加圖形文件,以創(chuàng)建真正的“圖形按鈕”。編寫選項(xiàng)按鈕Option1~Option4的Clic4.6.2復(fù)選框選項(xiàng)按鈕組屬于多項(xiàng)中選擇一項(xiàng)的選擇,若需要選擇多項(xiàng)的情況,可以采用多個(gè)復(fù)選框(CheckBox)控件。當(dāng)復(fù)選框被選定時(shí),復(fù)選框中出現(xiàn)一個(gè)“”。復(fù)選框的Caption屬性可以指定出現(xiàn)在復(fù)選框旁邊的文本,而Picture屬性用來(lái)指定當(dāng)復(fù)選框被設(shè)計(jì)成圖形按鈕時(shí)的圖像。復(fù)選框的狀態(tài)由其Value屬性決定:0–假,1–真,2–暗。4.6.2復(fù)選框1.使用單個(gè)復(fù)選框單個(gè)的復(fù)選框是讓用戶在兩個(gè)選項(xiàng)之間進(jìn)行選擇,如是或否,真或假。這有點(diǎn)兒像兩個(gè)按鈕的選項(xiàng)組,只是形式上要簡(jiǎn)單一些,操作更方便一些。【例4-16】在上例中,增加復(fù)選框,控制選項(xiàng)按鈕組的顯示,如圖4-16所示。圖4-16利用復(fù)選框控制選項(xiàng)按鈕組的顯示

1.使用單個(gè)復(fù)選框

復(fù)選框控件Check1的Click事件代碼: PrivateSubCheck1_Click() Option1.Visible=Check1.Value Option2.Visible=Check1.Value Option3.Visible=Check1.Value Option4.Visible=Check1.Value EndSub復(fù)選框控件Check1的Click事件代碼:2.使用多個(gè)復(fù)選框一般情況下,復(fù)選框總是成組出現(xiàn),用戶可以從中選擇一個(gè)或多個(gè)選項(xiàng)。【例4-17】設(shè)計(jì)一個(gè)個(gè)人資料輸入窗口,使用選項(xiàng)按鈕組輸入性別與民族,使用復(fù)選框輸入個(gè)人愛(ài)好,如圖4-17所示。圖4-17使用多個(gè)復(fù)選框 2.使用多個(gè)復(fù)選框編寫命令按鈕Command1的Click事件代碼: PrivateSubCommand1_Click() IfText1.Text=""Then a=InputBox("您忘了輸入姓名!","注意","請(qǐng)?jiān)诖溯斎胄彰?) Ifa=""Ora="請(qǐng)?jiān)诖溯斎胄彰?ThenExitSub Text1.Text=a EndIf p1=Text1.Text+"," p2=IIf(Option1,"男","女")+"," p3=IIf(Option3,"漢族","少數(shù)民族") p4=",喜歡:" IfCheck1.Value=1Thenp4=p4+Check1.Caption+"、" IfCheck2.Value=1T

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論