計(jì)算機(jī)二級(jí)VB教程4幻燈片資料_第1頁(yè)
計(jì)算機(jī)二級(jí)VB教程4幻燈片資料_第2頁(yè)
計(jì)算機(jī)二級(jí)VB教程4幻燈片資料_第3頁(yè)
計(jì)算機(jī)二級(jí)VB教程4幻燈片資料_第4頁(yè)
計(jì)算機(jī)二級(jí)VB教程4幻燈片資料_第5頁(yè)
已閱讀5頁(yè),還剩61頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論