




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章設(shè)計(jì)選擇結(jié)構(gòu)程序VisualBasic程序設(shè)計(jì)教程本章主要介紹:選擇結(jié)構(gòu):有關(guān)表達(dá)式單分支語(yǔ)句多分支語(yǔ)句單選按鈕復(fù)選框2VisualBasic程序設(shè)計(jì)教程程序就是數(shù)據(jù)加算法。算法的優(yōu)劣關(guān)系到程序質(zhì)量的好壞。如路徑問題:假設(shè)某人在某大街53號(hào)工作,現(xiàn)接到一份工作通知單,要求他去該大街的門牌號(hào)分別為98,183,37,122,14的地方去服務(wù),假定兩個(gè)間隔的門牌號(hào)之間相差10米,則他該怎樣完成任務(wù),共走多少路?4.1概述3VisualBasic程序設(shè)計(jì)教程編寫程序時(shí),會(huì)有多種可選擇的算法。不僅要保證算法正確,還應(yīng)考慮算法的質(zhì)量。算法表示:自然語(yǔ)言、流程圖、結(jié)構(gòu)圖等。算法決定了程序的結(jié)構(gòu)。5VisualBasic程序設(shè)計(jì)教程選擇結(jié)構(gòu)是程序結(jié)構(gòu)中的一種形式。根據(jù)給定的條件來決定執(zhí)行不同的程序代碼段。流程可以如圖所示。當(dāng)條件滿足時(shí)執(zhí)行a塊程序段,條件不滿足時(shí)執(zhí)行b塊程序段。然后它們都繼續(xù)執(zhí)行后面的程序段?;颍寒?dāng)條件滿足時(shí)執(zhí)行a塊程序段,條件不滿足時(shí)跳過a塊程序段而執(zhí)行后面的程序。VB中選擇結(jié)構(gòu)主要用IF和SelectCase語(yǔ)句。6VisualBasic程序設(shè)計(jì)教程【例4-1】設(shè)計(jì)一個(gè)程序,界面如圖。單選按鈕和復(fù)選框用于設(shè)置文本框文字的顏色、字體或字型。設(shè)計(jì)時(shí)先創(chuàng)建框架,在選擇框架的情況下,再創(chuàng)建其內(nèi)部其它控件。4.2設(shè)置文本框字體字型7VisualBasic程序設(shè)計(jì)教程各控件:1個(gè)文本框:顯示文字。設(shè)置Text3個(gè)框架:用于分組。設(shè)置CaptionOption1~3:設(shè)置文本框背景。設(shè)置CaptionBackColorOption4~6:設(shè)置文本框字體。設(shè)置CaptionCheck1~3:設(shè)置文本框字型。設(shè)置Caption對(duì)單選按鈕和復(fù)選框編寫了共9個(gè)簡(jiǎn)單的事件過程。8VisualBasic程序設(shè)計(jì)教程
PrivateSubOption1_Click() '紅色
Text1.BackColor=RGB(255,0,0)
EndSub
PrivateSubOption2_Click() '綠色
Text1.BackColor=RGB(0,255,0)
EndSub
PrivateSubOption3_Click() '藍(lán)色
Text1.BackColor=RGB(0,0,255)
EndSub
PrivateSubOption4_Click() '字體
Text1.FontName="宋體"
EndSub
PrivateSubOption5_Click() '字體
Text1.FontName="楷體_GB2312"
EndSub
PrivateSubOption6_Click()'字體
Text1.FontName="仿宋_GB2312"
EndSub每個(gè)復(fù)選框的Click事件,都采用選擇結(jié)構(gòu)在選擇顏色時(shí),也可使用:Text1.BackColor=Option1.BackColor等代碼PrivateSubCheck1_Click()'粗體
IfCheck1.Value=1Then
Text1.FontBold=True
Else
Text1.FontBold=False
EndIf
EndSub
PrivateSubCheck2_Click()'斜體
IfCheck2.Value=1Then
Text1.FontItalic=True
Else
Text1.FontItalic=False
EndIf
EndSub
PrivateSubCheck3_Click()'下劃線
IfCheck3.Value=1Then
Text1.FontUnderline=True
Else
Text1.FontUnderline=False
EndIf
EndSub
9VisualBasic程序設(shè)計(jì)教程比較大小的運(yùn)算在程序設(shè)計(jì)中稱為關(guān)系運(yùn)算。VB常用的關(guān)系運(yùn)算符有6種:=(等于)、<>(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)。使用關(guān)系運(yùn)算符的表達(dá)式稱為關(guān)系表達(dá)式。4.3進(jìn)行比較運(yùn)算10VisualBasic程序設(shè)計(jì)教程1.格式:
表達(dá)式1關(guān)系運(yùn)算符表達(dá)式22.?dāng)?shù)據(jù)類型:表達(dá)式1和表達(dá)式2應(yīng)具有相同的數(shù)據(jù)類型。運(yùn)算結(jié)果為邏輯值,成立時(shí)為True,不成立時(shí)為False。11VisualBasic程序設(shè)計(jì)教程3.優(yōu)先級(jí)算術(shù)運(yùn)算符或字符串運(yùn)算符的優(yōu)先級(jí)高于關(guān)系運(yùn)算符。所有的關(guān)系運(yùn)算符優(yōu)先級(jí)相同,執(zhí)行次序從左到右。如:3>=3+2,先執(zhí)行3+2結(jié)果為5,再比較3>=5,結(jié)果False。12VisualBasic程序設(shè)計(jì)教程4.字符串比較字符型數(shù)據(jù),VB將按內(nèi)碼大小進(jìn)行比較。西文字符使用ASCII碼比較漢字使用漢字內(nèi)碼比較。比較時(shí),先比較第1個(gè)字符,如不同,則得出結(jié)果;否則再比較第2個(gè)字符,依次逐一比較,直到比較完畢或遇到一對(duì)不相同的為止。注意:若把0<x<10作為VB表達(dá)式,失去數(shù)學(xué)含義。13VisualBasic程序設(shè)計(jì)教程4.4.1使用行If語(yǔ)句行If語(yǔ)句的格式為:
If條件Then語(yǔ)句1[Else語(yǔ)句2]
If條件Then語(yǔ)句14.4使用IF條件語(yǔ)句14VisualBasic程序設(shè)計(jì)教程它實(shí)現(xiàn)如圖所示的選擇結(jié)構(gòu)流程。行If要求代碼寫在一行內(nèi),語(yǔ)句過長(zhǎng)可用續(xù)行符如果語(yǔ)句1或語(yǔ)句2有多條語(yǔ)句,則用冒號(hào)“:”分隔。15VisualBasic程序設(shè)計(jì)教程【例】編程,輸入x,求下列分段函數(shù)f(x)值。用InputBox輸入x,計(jì)算結(jié)果f(x)輸出到Text控件。16VisualBasic程序設(shè)計(jì)教程在窗體上建立文本框控件Text1和命令按鈕控件Command1。編制事件過程Command1_Click如下:PrivateSubCommand1_Click()DimxasSinglex=InputBox("輸入x","計(jì)算分段函數(shù)的值")Ifx<=5ThenText1.Text=Str(1-x*x)Else_Text1.Text=Str((x-5)^0.25)EndSub17VisualBasic程序設(shè)計(jì)教程【例4-2】在文本框內(nèi)輸入三個(gè)數(shù),“排序”按鈕對(duì)它們從小到大排列。界面如圖。18VisualBasic程序設(shè)計(jì)教程首先確定A和B兩個(gè)數(shù)的大小排序的算法:若A>B,則交換A和B中的數(shù)據(jù),否則A、B保持不變。程序算法為:(1)先將三個(gè)數(shù)賦值給變量A、B、C。(2)A與B比較,小的數(shù)放入A,大的數(shù)放入B;(3)A與C比較,小的數(shù)放入A,大的數(shù)放入C。
通過這樣兩次比較,A便是最小數(shù)了。(4)B和C比較,小的數(shù)放入B,大的數(shù)放入C。
這樣A、B、C已按從小到大排列。(5)A、B、C分別放入三個(gè)文本框。兩數(shù)互換使用語(yǔ)句組:X=A:A=B:B=X19VisualBasic程序設(shè)計(jì)教程【例4-2】三數(shù)排序程序代碼如下:
OptionExplicit
PrivateSubCommand1_Click()
DimAAsSingle,BAsSingle,CAsSingle,XAsSingle
A=Val(Text1.Text):B=Val(Text2.Text)
C=Val(Text3.Text)
IfA>BThenX=A:A=B:B=X
IfA>CThenX=A:A=C:C=X
IfB>CThenX=B:B=C:C=X
Text1.Text=A:Text2.Text=B:Text3.Text=C
EndSub20VisualBasic程序設(shè)計(jì)教程塊If語(yǔ)句采用多行代碼的形式,其格式為:
If條件1Then
語(yǔ)句塊1
[ElseIf條件2Then
[語(yǔ)句塊2]]
……
[Else
[語(yǔ)句塊n+1]]
EndIf1.語(yǔ)句執(zhí)行過程
執(zhí)行過程如圖21VisualBasic程序設(shè)計(jì)教程4.4.2使用塊If語(yǔ)句2.關(guān)于格式
(1)If與EndIf必須成對(duì)出現(xiàn)。
(2)塊If語(yǔ)句必須在Then或Else后換行
(3)塊If語(yǔ)句可以沒有Else或ElseIf子句。
(4)行If語(yǔ)句也可以改寫成塊If語(yǔ)句。22VisualBasic程序設(shè)計(jì)教程如變量Average存放成績(jī),進(jìn)行等級(jí)轉(zhuǎn)換的語(yǔ)句為:
IfAverage>=90Then'其中標(biāo)簽Label5用于顯示等級(jí)
Label5.Caption="等級(jí):"&"優(yōu)秀"
ElseIfAverage>=60Then
Label5.Caption="等級(jí):"&"合格"
Else
Label5.Caption="等級(jí):"&"不合格"
EndIf3.關(guān)于<語(yǔ)句塊>
語(yǔ)句塊可以是一條或多條語(yǔ)句,可寫成一行或多行。23VisualBasic程序設(shè)計(jì)教程4.4.3編寫嵌套的選擇結(jié)構(gòu)程序If語(yǔ)句允許出現(xiàn)嵌套形式。如判斷x的符號(hào),采用行If嵌套,程序代碼為:Ifx>=0ThenIfx=0Theny=0Elsey=1Elsey=-124VisualBasic程序設(shè)計(jì)教程變量y存放比較結(jié)果。但可讀性不好。如果使用塊If來編程,程序代碼為:
Ifx>=0Then
Ifx=0Then
y=0
Else
y=1
EndIf
Else
y=-1
EndIf嵌套時(shí),程序注意使用縮進(jìn)格式,增加可讀性。25VisualBasic程序設(shè)計(jì)教程DimnflagAsIntegerDimsmystringAsStringPrivateSubForm_Load()nflag=1smystring="歡迎使用VisualBasic"Form1.FontSize=18EndSubPrivateSubForm_Click()Ifnflag=1ThenForm1.FontName="黑體"
Printsmystringnflag=nflag+1ElseIfnflag=2ThenForm1.FontName="楷體_gb2312“
Printsmystringnflag=nflag+1ElseIfnflag=3ThenForm1.FontName="隸書"Printsmystringnflag=nflag+1Elsenflag=1EndIfEndSub程序環(huán)境【例】在窗體中輪流以不同字體顯示文字26VisualBasic程序設(shè)計(jì)教程SelectCase是實(shí)現(xiàn)多分支程序設(shè)計(jì)的條件語(yǔ)句SelectCase又稱為“情況選擇”語(yǔ)句。常用于分段計(jì)算、根據(jù)離散值處理信息SelectCase語(yǔ)句的其格式是:
SelectCase測(cè)試表達(dá)式
[Case表達(dá)式值1
[語(yǔ)句塊1]]
[Case表達(dá)式值2
[語(yǔ)句塊2]]
……
[CaseElse
[語(yǔ)句塊n+1]]
EndSelect4.5使用SelectCase條件語(yǔ)句27VisualBasic程序設(shè)計(jì)教程1.語(yǔ)句執(zhí)行過程先求出測(cè)試表達(dá)式的值將值與Case語(yǔ)句中的表達(dá)式值進(jìn)行比較,如果條件滿足,則執(zhí)行該Case子句對(duì)應(yīng)的語(yǔ)句塊。當(dāng)與所有的表達(dá)式值不符時(shí),執(zhí)行CaseElse后的語(yǔ)句塊。
SelectCase測(cè)試表達(dá)式
[Case表達(dá)式值1
[語(yǔ)句塊1]]
[Case表達(dá)式值2
[語(yǔ)句塊2]]
……
[CaseElse
[語(yǔ)句塊n+1]]
EndSelect28VisualBasic程序設(shè)計(jì)教程2.關(guān)于格式(1)“測(cè)試表達(dá)式”可以是數(shù)值、字符串表達(dá)式。(2)“表達(dá)式值”其類型與“測(cè)試表達(dá)式”相同,有確定值?!氨磉_(dá)式值”的幾種形式:表達(dá)式值 表示固定值,如Case1或Case3*5+Y表達(dá)式值1,,…,值n 表示幾個(gè)固定值之一,如Case1,3,5,7,9表達(dá)式值1To值2 表示上下限之間的范圍,如Case2To4Is關(guān)系運(yùn)算符值 表示范圍,如CaseIs>529VisualBasic程序設(shè)計(jì)教程(3)SelectCase應(yīng)與EndSelect成對(duì)出現(xiàn)。(4)Case與“表達(dá)式值”之間應(yīng)有空格間隔。(5)語(yǔ)句塊可以是一條或多條語(yǔ)句,可寫成一行或多行。以成績(jī)等級(jí)轉(zhuǎn)換為例,使用SelectCase語(yǔ)句的代碼如下:
30VisualBasic程序設(shè)計(jì)教程SelectCaseAverage
Case90To100
PrintAverage,"優(yōu)秀"
Case80To89
PrintAverage,"良好"
Case70To79
PrintAverage,"中等"
Case60To69
PrintAverage,"及格"
Case0To59
PrintAverage,"不及格"
CaseElse
PrintAverage,"輸入數(shù)據(jù)錯(cuò)誤"
EndSelect31VisualBasic程序設(shè)計(jì)教程【例】輸入年、月份,輸出該月天數(shù),判斷某年y是否為閏年的條件:ymod4=0andymod100<>0orymod400=0
程序環(huán)境
32VisualBasic程序設(shè)計(jì)教程【例4-3】我國(guó)個(gè)人所得稅在2006年元旦提高起征點(diǎn),起征點(diǎn)的1600元。假定某單位薪金總值不超過41600元,41600元以下的工資、薪金部分的稅率表如表所示?,F(xiàn)要求編寫一程序,在文本框中輸入工資或薪金總額,單擊“計(jì)算”按鈕,將求得的個(gè)人所得稅顯示在標(biāo)簽上。
33VisualBasic程序設(shè)計(jì)教程40000元以下的工資、薪金部分的稅率表34VisualBasic程序設(shè)計(jì)教程【例4-3】計(jì)算個(gè)人所得稅-程序
PrivateSubForm_Load()
Form1.Caption="個(gè)人所得稅"
Label1.Caption="薪金總額"
Text1.Text=""
Label2.Caption=""
Command1.Caption="計(jì)算"
EndSub35VisualBasic程序設(shè)計(jì)教程PrivateSubCommand1_Click()
DimXAsSingle,YAsSingle
X=Val(Text1.Text)
SelectCaseX-1600
CaseIs>40000,Is<-1600
MsgBox"輸入的薪金有錯(cuò)",,"出錯(cuò)"
Case0To500:Y=(X-1600)*0.05
Case500To2000:Y=500*0.05+(X-1600-500)*0.1
Case2000To5000:Y=500*0.05+1500*0.1+(X-1600-2000)*0.15
Case5000To20000
Y=500*0.05+1500*0.1+3000*0.15+(X-1600-5000)*0.2
CaseIs>20000
Y=500*0.05+1500*0.1+3000*0.15+15000*0.2+(X-1600-20000)*0.25
CaseElse:Y=0
EndSelect
Label2.Caption="個(gè)人所得稅為:"&Y
EndSub36VisualBasic程序設(shè)計(jì)教程4.6.1單選按鈕(OptionButton)單選按鈕可用于表示一組互相排斥的選項(xiàng)。1.創(chuàng)建單選按鈕在工具箱內(nèi)選取單選按鈕工具。2.單選按鈕的主要屬性(名稱):Name,單選按鈕的名稱,默認(rèn)值為Option1
Caption:單選按鈕的標(biāo)題內(nèi)容,默認(rèn)值為Option1
Alignment:對(duì)齊方式,默認(rèn)0(左),按鈕在左,標(biāo)題在右;
Value:按鈕是否被選中。True表示選中3.單選按鈕的事件單選按鈕的主要事件是Click事件4.6使用選擇控件和框架37VisualBasic程序設(shè)計(jì)教程【例4-4】設(shè)計(jì)三個(gè)單選按鈕,用來控制文本框中文本的字號(hào)10、18、36磅。初始文字大小為10磅。控件:1個(gè)文本框,3個(gè)單選按鈕。事件:Form_Load和各單選按鈕的ClickPrivateSubForm_Load()
Text1.FontSize=10
Option1.Value=True'啟動(dòng)時(shí),10磅單選按鈕處于選中狀態(tài)
Text1.Text="Hello!"
EndSub
PrivateSubOption1_Click()
Text1.FontSize=10
EndSub
PrivateSubOption2_Click()
Text1.FontSize=18
EndSub
PrivateSubOption3_Click()
Text1.FontSize=36
EndSub38VisualBasic程序設(shè)計(jì)教程【例4-5】修改例4-4,增加一個(gè)“確定”命令按鈕,只有當(dāng)單擊“確定”后,才使文本框字號(hào)才發(fā)生變化。單擊單選按鈕時(shí),只作選擇標(biāo)記,編程只對(duì)命令按鈕。PrivateSubForm_Load()
Text1.FontSize=10
Option1.Value=True
Text1.Text="Hello!"
EndSub
39VisualBasic程序設(shè)計(jì)教程PrivateSubCommand1_Click()
IfOption1.Value=TrueThen'是否是第一個(gè)按鈕按下?
Text1.FontSize=10
ElseIfOption2.Value=TrueThen'是否按下第二個(gè)? Text1.FontSize=18
Else'第三個(gè)按鈕被按下
Text1.FontSize=36
EndIf
EndSub▲表達(dá)式Option1.Value=True可直接寫成Option1.Value40VisualBasic程序設(shè)計(jì)教程4.6.2復(fù)選框CheckBox復(fù)選框允許用戶進(jìn)行多項(xiàng)選擇復(fù)選框有三種狀態(tài):選中(√),沒選中和無(wú)效。1.創(chuàng)建復(fù)選框在工具箱內(nèi)選取復(fù)選框工具。2.復(fù)選框的主要屬性(名稱):Name,名稱,默認(rèn)值為Check1
Caption:標(biāo)題內(nèi)容,字符型。默認(rèn)值為Check1
Alignment:對(duì)齊方式,整數(shù)類型。默認(rèn)0表示左對(duì)齊Value:復(fù)選框當(dāng)前狀態(tài)。0:未選中,呈空白;1:選中,呈“√”;2:無(wú)效,呈灰色“√”41VisualBasic程序設(shè)計(jì)教程3.復(fù)選框的事件復(fù)選框的主要事件是Click事件常用的代碼結(jié)構(gòu)為:
IfCheck1.Value=1Then
語(yǔ)句塊
Else或
語(yǔ)句塊
EndIf
SelectCaseCheck1.Value
Case0
語(yǔ)句塊
Case1
語(yǔ)句塊
EndSelect42VisualBasic程序設(shè)計(jì)教程【例4-6】設(shè)計(jì)程序,單擊任一個(gè)復(fù)選框,標(biāo)簽顯示的內(nèi)容都會(huì)發(fā)生變化。什么都不選時(shí),標(biāo)簽顯示“你沒有選擇項(xiàng)目!”對(duì)象:1個(gè)標(biāo)簽和6個(gè)復(fù)選框。事件:各復(fù)選框的Click。屬性設(shè)置
Label1:Caption:你沒有選擇項(xiàng)目!
Check1~Check6:Caption
分別設(shè)為:100米、200米、400米、跳高、跳遠(yuǎn)、鉛球
Form:Caption:田徑項(xiàng)目選擇43VisualBasic程序設(shè)計(jì)教程4.6.2復(fù)選框CheckBox-例(部分程序)PrivateSubCheck1_Click()
DimFlagAsInteger,TAsString
Flag=0
T="你選擇了:"'T暫存標(biāo)簽要顯示的字符串
IfCheck1.Value=1ThenT=T+Check1.Caption+"":Flag=1
IfCheck2.Value=1ThenT=T+Check2.Caption+"":Flag=1
IfCheck3.Value=1ThenT=T+Check3.Caption+"":Flag=1
IfCheck4.Value=1ThenT=T+Check4.Caption+"":Flag=1
IfCheck5.Value=1ThenT=T+Check5.Caption+"":Flag=1
IfCheck6.Value=1ThenT=T+Check6.Caption+"":Flag=1
IfFlag=0ThenT="你沒有選擇項(xiàng)目!"
Label1.Caption=TEndSub44VisualBasic程序設(shè)計(jì)教程其它復(fù)選框的Click事件的內(nèi)部代碼,與Check1完全一樣。Flag作為標(biāo)志變量,只要有一項(xiàng)被選中,F(xiàn)lag就會(huì)變?yōu)?。在學(xué)第8章后,可用過程調(diào)用方法,進(jìn)行程序復(fù)用。在學(xué)第7章后,可用控件數(shù)組,大大簡(jiǎn)化程序。45VisualBasic程序設(shè)計(jì)教程4.6.3框架Frame框架是一種容器性質(zhì)的VB控件窗體、圖片框(第10章)和框架都是容器容器內(nèi)可以放置其它控件框架往往用于控件分組窗體上所有單選按鈕自動(dòng)構(gòu)成一個(gè)組,即只有一個(gè)單選按鈕被選中。1.創(chuàng)建框架在工具箱內(nèi)選取框架工具。46VisualBasic程序設(shè)計(jì)教程2.創(chuàng)建框架容器內(nèi)其它控件的方法:(1)先建框架,在選擇框架后依次創(chuàng)建其中的各控件。此時(shí)不能采用雙擊方法創(chuàng)建控件。(2)對(duì)已在窗體上的控件,放入框架,使用復(fù)制方法:選擇控件→復(fù)制→選擇框架→粘貼。47VisualBasic程序設(shè)計(jì)教程4.6.3
框架Frame3.框架的主要屬性(名稱):Name,框架名稱。默認(rèn)值為Frame1
Caption:框架標(biāo)題,一般說明框架內(nèi)控件特性。
默認(rèn)值為Frame1
Enabled:允許屬性。True表示框架內(nèi)的控件可用,
False為不可用
Visible:可見屬性。Boolean型。
False時(shí),框架及其內(nèi)部的控件都不可見
48VisualBasic程序設(shè)計(jì)教程4.7.1
Goto語(yǔ)句實(shí)現(xiàn)程序流程無(wú)條件轉(zhuǎn)移到本過程的另一處。格式:
Goto行標(biāo)簽|行號(hào)行標(biāo)簽為語(yǔ)句行標(biāo)識(shí)符的簡(jiǎn)稱。行標(biāo)簽的命名與變量命名相同,行標(biāo)簽后跟“:”行號(hào)采用正整數(shù)形式。語(yǔ)句執(zhí)行后,轉(zhuǎn)移到行標(biāo)簽/行號(hào)所在處往下執(zhí)行。4.7如何實(shí)現(xiàn)程序的轉(zhuǎn)移控制49VisualBasic程序設(shè)計(jì)教程如要求輸入一個(gè)>0的數(shù),再進(jìn)行一些處理,代碼:
PrivateSubCommand1_Click()
DimAAsSingle,……
A=Val(InputBox("請(qǐng)輸入一整數(shù)"))
IfA>0ThenGoToProA
MsgBox"數(shù)據(jù)輸入有錯(cuò)!"
GoToProB
ProA:'行標(biāo)簽
Print"正在進(jìn)行處理中..."
……
ProB:'行標(biāo)簽
……
EndSub行標(biāo)簽/行號(hào)不同于SelectCase中的分支,這里僅作標(biāo)記。盡量少用或不用GoTo,以免造成程序可讀性下降。50VisualBasic程序設(shè)計(jì)教程4.7.2On...GoTo語(yǔ)句On...GoTo語(yǔ)句可實(shí)現(xiàn)多分支。格式:
On表達(dá)式GoTo目標(biāo)列表1.有關(guān)格式“表達(dá)式”值應(yīng)為0至255之間的數(shù),一般取整數(shù)。如果表達(dá)式值超范圍,則該語(yǔ)句無(wú)效。<目標(biāo)列表>為一系列行標(biāo)簽或行號(hào),逗號(hào)間隔,表示轉(zhuǎn)向的目標(biāo)位置。51VisualBasic程序設(shè)計(jì)教程2.語(yǔ)句流程先計(jì)算表達(dá)式的值,若值為1,轉(zhuǎn)移到目標(biāo)列表中的第1個(gè)目標(biāo)處若值為2,轉(zhuǎn)移到目標(biāo)列表中的第2個(gè)目標(biāo)處,……。若值小于1或大于目標(biāo)列表總數(shù),則執(zhí)行On…GoTo語(yǔ)句后的下一句代碼。52VisualBasic程序設(shè)計(jì)教程如:進(jìn)行成績(jī)等級(jí)的轉(zhuǎn)換,可以使用以下程序代碼。
IfAverage>100ThenGoToA4 '大于100無(wú)效
IfAverage<0ThenGoToA4 '小于0無(wú)效
OnInt(Average/10)+1GoToA1,A1,A1,A1,_
A1,A1,A2,A2,A2,A3,A3
A1:Print"等級(jí):"&"不合格"
GoToA4
A2:Print"等級(jí):"&"合格"
GoToA4
A3:Print"等級(jí):"&"優(yōu)秀"
A4:……不過現(xiàn)在基本上使用以If和SelectCase語(yǔ)句為主。53VisualBasic程序設(shè)計(jì)教程4.7.3OnError語(yǔ)句程序運(yùn)行出現(xiàn)錯(cuò)誤時(shí),將運(yùn)行OnError語(yǔ)句利用OnError語(yǔ)句可編寫處理錯(cuò)誤程序段OnError語(yǔ)句有三種格式:OnErrorGoToline '轉(zhuǎn)到行標(biāo)簽line處執(zhí)行錯(cuò)誤處理
OnErrorResumeNext '發(fā)生錯(cuò)誤后,忽略錯(cuò)誤繼續(xù)執(zhí)行
OnErrorGoTo0 '禁止當(dāng)前過程任何錯(cuò)誤處理程序54VisualBasic程序設(shè)計(jì)教程【例】求一元二次方程的實(shí)數(shù)解,程序可以編寫成:
PrivateSubForm_Click()
DimAAsSingle,BAsSingle,CAsSingle
DimDAsSingle,X1AsSingle,X2AsSingle
OnErrorGoToErrLine
A=Val(InputBox(“a=”)):B=Val(InputBox(“b=”))
C=Val(InputBox(“c=”))
D=B*B-4*A*C
Print“X1=”;(-B+Sqr(D))/(2*A),“X2=”;(-B-Sqr(D))/(2*A)
ExitSub‘終止當(dāng)前事件過程(Click)的執(zhí)行。ErrLine:
MsgBox"對(duì)負(fù)數(shù)開平方根!",vbCritical,"錯(cuò)誤"
EndSub本例由于簡(jiǎn)單,出錯(cuò)能斷定由Sqr函數(shù)的參數(shù)造成的。復(fù)雜程序應(yīng)根據(jù)錯(cuò)誤號(hào)(Err.Number)來編寫處理程序。55VisualBasic程序設(shè)計(jì)教程模塊化程序設(shè)計(jì)的思想為:“自頂向下,逐步細(xì)化和模塊化”總體出發(fā),把一個(gè)大的任務(wù)分解為若干個(gè)子任務(wù)每個(gè)子任務(wù)作為一個(gè)模塊完成一個(gè)特定的功能。如果子任務(wù)還是太復(fù)雜,則可以對(duì)子任務(wù)再進(jìn)行分解。層層分解,逐步細(xì)化。這些模塊集組合起來形成一個(gè)整體,完成指定功能的問題要求。4.8程序舉例56VisualBasic程序設(shè)計(jì)教程【例4-7】編程,求解一元二次方程:aX2+bX+c=0。其中a、b、c由鍵盤輸入至文本框,單擊命令按鈕后用Msgbox顯示方程的解(可以有復(fù)根)。要求:a、b、c可由用戶任意輸入,但不能讓VB出現(xiàn)編譯錯(cuò)誤或運(yùn)行錯(cuò)誤。為防止出錯(cuò),在編程前應(yīng)考慮周全。顯然有:當(dāng)a、b、c均為零時(shí),方程有無(wú)數(shù)解;當(dāng)a、b為零,c≠0時(shí),方程無(wú)解;當(dāng)a為零,b≠0時(shí),方程解為X=-c/b;當(dāng)a≠0時(shí),求:D=b2-4ac若D≥0,X=(-b±Sqr(D))/(2a)若D<0時(shí),有兩個(gè)不同復(fù)根:X=-b/(2a)±Sqr(-D)/(2a)i57VisualBasic程序設(shè)計(jì)教程【例4-7】方程求解-程序PrivateSubCommand1_Click()
DimAAsSingle,BAsSingle,CAsSingle,DAsSingle
DimX1AsSingle,X2AsSingle,T1AsSingle,T2AsSingle‘T作臨時(shí)變量
A=Val(Text1.Text):B=Val(Text2.Text):C=Val(Text3.Text)
IfA=0Then
IfB=0Then
IfC=0Then
MsgBox"任意X都是方程的解。",,"信息"'a=0,b=0,c=0
Else
MsgBox"方程無(wú)解?。?!",,"出錯(cuò)信息"'a=0,b=0,c≠0
EndIf
Else
X1=-C/B'a=0,b≠0
MsgBox"方程只有一個(gè)解。"&Chr(13)&"X="&Round(X1,4),,"信息"
EndIf
58VisualBasic程序設(shè)計(jì)教程Else
D=B*B-4*A*C'a≠0
IfD>=0Then'a≠0,D≥0
X1=(-B+Sqr(D))/(2*A):X2=(-B-Sqr(D))/(2*A)
MsgBox"X1="&Round(X1,4)&Chr(13)&"X2="&Round(X2,4),,"信息"
Else'a≠0,D<0
T1=Round(-B/(2*A),4):T2=Abs(Round(Sqr(-D)/(2*A),4))
MsgBox"X1="&T1&"+"&T2&"i"&Chr(13)&"X2="&_
T1&"-"&T2&"i",,"信息"
EndIf
EndIf
EndSub(1)T1、T2可改用X1和X2,但并非真正的X值。
(2)完整的復(fù)根沒有存放在變量中(3)Chr(13)表示換行。59VisualBasic程序設(shè)計(jì)教程【例4-8】設(shè)計(jì)一個(gè)四則運(yùn)算的測(cè)試程序,運(yùn)算符和運(yùn)算數(shù)據(jù)均由隨機(jī)函數(shù)隨機(jī)產(chǎn)生。如圖。(1)命令按鈕應(yīng)具有出題和判題兩個(gè)功能。(2)產(chǎn)生1~4的隨機(jī)整數(shù)C,1表示加、2表示減、…。(3)產(chǎn)生1~4的隨機(jī)整數(shù)C1,表示正確答案位置。(4)正確答案Result在出題時(shí)產(chǎn)生,在改題時(shí)要使用,故把Result的聲明放在通用對(duì)象中。(5)標(biāo)志Flag表示答題是否正確,正確為1,否則為0。(6)在屬性窗口將Command1的TabIndex設(shè)為0,使窗體啟動(dòng)后焦點(diǎn)自動(dòng)在Command1上。60VisualBasic程序設(shè)計(jì)教程其它屬性設(shè)置在代碼中進(jìn)行。61VisualBasic程序設(shè)計(jì)教程DimResultAsInteger
PrivateSubForm_Load()
Randomize:Frame1.Visible=False
Form1.Caption="簡(jiǎn)單四則運(yùn)算":Command1.Caption="出題"
Frame1.Caption="可選答案"Label1.FontSize=16:Label1.Caption=""
Text1.Text="":Text2.Text=""
EndSub
4.8程序舉例-四則運(yùn)算
變量Result的聲明和Form_Load初始化對(duì)象屬性62VisualBasic程序設(shè)計(jì)教程PrivateSubCommand1_Click()
DimAAsInteger,BAsInteger,CAsInteger,C1AsInteger,FlagAsInteger
DimR1AsInteger,R2AsInteger,R3AsInteger
IfCommand1.Caption=“出題"Then'出題開始
A=Int(Rnd*9+1):B=Int(Rnd*9+1):C=Int(Rnd*4+1)
IfC=4ThenA=A*B
Text1.Text=A:Text2.Text=B
SelectCaseC'設(shè)置界面運(yùn)算符,獲得正確答案和其它選項(xiàng)值
Case1:Label1.Caption="+":Result=A+B:R1=A-B:R2=A*B:R3=A/B
Case2:Label1.C
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西應(yīng)用工程職業(yè)學(xué)院《書籍形態(tài)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 揚(yáng)州中瑞酒店職業(yè)學(xué)院《人工智能與大模型》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東工藝美術(shù)學(xué)院《電腦立體設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 青海高等職業(yè)技術(shù)學(xué)院《建筑施工組織及BIM應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 濟(jì)南幼兒師范高等??茖W(xué)?!讹L(fēng)景園林設(shè)計(jì)實(shí)驗(yàn)古典園林景觀設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 同濟(jì)大學(xué)浙江學(xué)院《安裝工程施工技術(shù)與造價(jià)審計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年血液透析機(jī)(人工腎)項(xiàng)目發(fā)展計(jì)劃
- 14《促織》《變形記》聯(lián)讀教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文必修下冊(cè)
- 2021年電力工程桿塔拉線施工作業(yè)指導(dǎo)書
- 14-15 故都的秋 荷塘月色 我與地壇(教學(xué)設(shè)計(jì))-2024-2025學(xué)年高一語(yǔ)文必修上冊(cè)同步備課系列(統(tǒng)編版2019)
- 深度學(xué)習(xí)架構(gòu)創(chuàng)新-深度研究
- 供應(yīng)鏈韌性提升與風(fēng)險(xiǎn)防范-深度研究
- 基層醫(yī)療衛(wèi)生服務(wù)能力提升考核試卷
- 化工原理完整(天大版)課件
- 2025年江蘇連云港市贛榆城市建設(shè)發(fā)展集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 砥礪前行決心譜寫華章
- 2025年開學(xué)教導(dǎo)處發(fā)言稿(5篇)
- 機(jī)電設(shè)備安裝旁站監(jiān)理方案
- 2025年度民政局離婚協(xié)議書范本模板官方修訂2篇
- 《百達(dá)翡麗名表介紹》課件
- 《集裝箱標(biāo)識(shí)辨識(shí)》課件
評(píng)論
0/150
提交評(píng)論