VB9 程序流程的控制_第1頁
VB9 程序流程的控制_第2頁
VB9 程序流程的控制_第3頁
VB9 程序流程的控制_第4頁
VB9 程序流程的控制_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

VisualBasic程序設計

第九講

第四章程序流程的控制

(一)

2011-6-28

1

關系表達式

布爾表達式

選擇結構

循環(huán)結構

常用控件的使用

2011-6-282

§4.1關系運算符和關系表達式

4.1.1關系運算符VB提供六種關系運算符

關系物理意義例子說明

運算符

<小于若x=5,y=2求x<y的值值為False

小于等于若求〈=的值值為

<=x=2,y=4xyTrue表4?1

>大于“3”>8值為False

>=大于等于0>=(1<5)值為True

—等于若乂="wer”求x="wer”值為True

<>2011-6-:!8不等于"asd"v>"qwe”值為True3

)?A>1

4.1.2關系表達式

LVB中的關系表達式格式為:

v表達式1>v關系運算符,v表達式2>[v關系運算符>

v表達式3>],...]

2.說明:

(1)其中〈表達式〉可為算術表達式、字符串表達式

和日期型表達式。

(2)關系表達式求值的次序是先求關系運算符兩邊

表達式的值,再求關系表達式的值。關系表達式的

值為Boolean型,只有兩個值True和False。

(3)若關系運算符兩邊為算術表達式時,則應先計

算算術表達式的值,再進行關系比較。

1?蜀A?1

(4)若關系運算符兩邊為字符串表達

式時,按字符串中每個字母的ASCII

碼逐一進行比較,若比較的前幾個

字母的ASCII碼都一樣,而當比較到

后面哪一個字母不一樣,則哪個字

母的ASCII碼數值大,則對應的字符

串就大。

2011-6-285

例如:

“qwert”>="qweRt”的值為True。

常見字符的ASCH值大小排列如下:

“空格”v"O"vTv…v“9”

v“A"v“B"v.?.v“Z”

v“a"v“b”v...v“z”

若關系運算符兩邊為日期型表達式

時,按日期的先后次序,日期在前的值

小。

2011-6-286

例如:

#08/24/98#>#10/23/96#值為True。

#09/13/00#<#09/12/99#值為False。

3.注意:

因為浮點數在計算機內不能精確表示,

所以在VB中不能用“=”來比較兩個單精度

或雙精度數的浮點數。

例如:

5.0*4.0=20.0在數學上是成立的,而

在VB中其值可能為False。若需要比較兩個

浮點數時,則應寫成下列形式:

Abs(5.0*4.0-x)<=le-5若(5.0*4.0-x)的絕

款值小于等于le?5時,則認為x整扇*4小

在VBe不能把數學中的不等區(qū)

10〈xW20表示成10<x<=20,若表示

成10<x<=20這種形式,不論x為柯

值關系表達式10<x<=20的值都為

True。

關系表達式10<x<=20相當于

(10<x)<=20由于(10<x)的值

無論為True(-l)或False(O)都小于20,

所以10vxv=20的值總為True。這顯

然與數學中的不等式的意義不同。

2011-6-288

§4.2布爾運算符和布爾表達式

對于不能用關系表達式表示的較復雜

的條件可用布爾表達式來表示。如上面提

判的數學不等式lOvxO,在VB中,應表

示成x>10Andx<=20o

4.2.1布爾運算符和布爾表達式

1.布爾運算符。

VB中共有六種布爾運算符,它們是:

And、Or、Not、Xor>Eqv和Imp。

2011-6-289

表4?2布爾運算符

布爾運算符物理意義舉例說明

And邏輯與運算2<3And5>3與運算兩邊的表達式都為真

值為True時結果為真,否則為假。

Or邏輯或運算Or5>0或運算兩邊的表達式只要有一

值為True個為真,結果就為真(True)

兩邊都為假時結果才為假。

Not邏輯非運算Notx>=6非運算對表達式的值取反。

Xor邏輯異或運算"a''v"b"Xor5<0異或運算兩邊表達式的值不

值為True同,則結果為真,相等時結

果為假。

Eqv邏輯等運算3<2Eqv(3-邏輯等運算兩邊表達式的值

l)<0相同,則結果為真,不相同

值為True時,結果為假。

2011-6-2810

表4?2布爾運算符(續(xù))

布爾運算符物理意義舉例說明

Imp邏輯隱含運3<2Imp3>0邏輯隱含運算第一個表達式

算值為True的值為假(False)則第二個

3<2Imp5<2表達式不論值為什么值,結果

值為True都為真(True)

3>0Imp2>0若第一個表達式值為真,則

值為True第二表達式為真時結果為真。

5>3Imp3<2為假時結果為假。

值為False

nni1乙GQ11

表4-3布爾運算真值表

abaAndbaOrbNotaaXorbaEqvb

TrueTrueTrueTrueFalseFalseTrue

TrueFalseFalseTrueFalseTrueFalse

FalseTrueFalseTrueTrueTrueFalse

FalseFalseFalseFalseTrueFalseTrue

2011-6-2812

422VB運算符的優(yōu)先級

VB運算符的優(yōu)先級:

算術運算符運算級最高,關系運算符次

之,布爾運算符優(yōu)先級別最低。

在算術運算符中,括號最優(yōu)先,其它優(yōu)

先次序依次是函數、乘方(人)、乘或除(*

或/)、整除(\)、求余(Mod)、加加減

(+或?)O

在關系運算符中,六個運算符的級別相

同。

在布爾運算符中最常用的三個布爾運算

符中,Not最高,And次之,Or最低。

1??>1

表4.4VB運算符的優(yōu)先級

運算優(yōu)先級運算符運算符類型

1A(乘方運算)

2-(求負數)

算術運算符

3*或/(乘或除)

4\(整除)

5Mod(求余數)

6+或-(加或減)

7&(字符串連接運算)字符串運算符

8<=或<或>=或>或=或<>關系運算符

9Not(非運算)布爾運算符

10And(與運算)

用11-6-2814

Or(或運算)

已知:a=3.5,b=5.0,c=2.5,d=1.0則

下列表達式的運算次序為:

a>=0.0anda+c>b+dorNotTrue

②True①6.巳口6.0

③False

②False

__________)

Y

④False

J

----------Y------

⑤False

最-后結果為False。15

§4.3選擇結構

4.3.1If.…一Then......語句

1.行If語句格式如下:

Ifv條件表達式,Then卜語句組1>][Elsev語句組2>]

2.塊If結構格式如下:

Ifv條件表達式〉Then

[語句組1]

[Else

[語句組2]]

EndIf

2011-6-2816

3.說明:

(1)If語句后面的V條件表達式,可以是前面

講的算術表達式、關系表達式和布爾表達

式,執(zhí)行該結構時應先計算V條件表達式〉

值,然后根據V條件表達式>值確定程序的

流向。

(2)當v條件表達式〉的值為真,執(zhí)行Then

后面語句組1中各語句;當v條件表達式,

的值為假,則執(zhí)行Eke后面的語句組2中各

語句。無論是執(zhí)行語句組1或執(zhí)行語句組2

中各語句執(zhí)行完后,接著應執(zhí)行也djf。

2011-6-28IDZZl17

(3)在VB中數值表達式的值為非0時,則

條件表達式的值為真,數值表達式的值為0

時條件表達式的值為假。

(4)第一種形式的If結構,沒有配對的End

If語句;若Then后面的語句組1省略,則必

須有Else語句及其后的語句組2;若Else語

句省略,則語句組1是必選項。第二種If結

構必須有配對的結束語句EndIf,不能省

略。其Then后面的兩個可選項也必須選其

中之一。

2011-6-2818

【例4?1】計算分段函數:

Y=l+x(x口0)

LY=l+2*x(x<0)

工程設計步驟如下:

(1)啟動VB后選“新建工程”的“標準

EXE”出現一個窗體,在此窗體上添加一

個標簽控件一個文本框和二個命令按鈕如

下頁圖4?1左圖所不。

(2)設置窗體及各控件的屬性如下頁圖4-1

右圖所不。

2011-6-28IDI'Z19

圖4-1計算分段函數的界面設計及屬性設置

2011-6-2820

(3)編寫代碼如下:

編寫單擊“計算函數值”按鈕執(zhí)行的代碼。

PrivateSubCommandl_Click()

Rem使用輸入對話框提示輸入自變量的值

x=Val(InputBox(“自變量的值”,“請輸入”))

Ifx>=0Theny=1+xElsey=1+2*x

Textl.Text=y

EndSub

2011-6-2821

編寫單擊“退出”按鈕執(zhí)行的代碼。

PrivateSubCommand2_Click()

UnloadMe

EndSub

(4)運行結果。按工具欄上的執(zhí)行按

鈕出現如圖4?1右圖所示的界面。單

擊“計算函數的值”按鈕出現輸入對

話框如圖4?2左圖所示,輸入數值后,

出現最后的結果如圖4?2右圖所示。

2011-6-2822

分科的州的值

函數值Y=

圖4?2計算分段函數的運行結果

2011-6-2823

4.3.2嵌套的If語句

如果上面的塊If結構中的Then下面的語

句組1或者在Else下面的語句組2又包含另外

的If結構稱If語句的嵌套,如:

Ifv條件表達式1>Then

[Ifv條件表達式2>Then、

語句組1

當表達式1

Else的值為真時

語句組2執(zhí)行的語句

組。

EndIf]

2011-6-2824

4.3.2嵌套的If語句

Else

[Ifv條件表達式3>

Then

當表達式1

語句組3的值為假時

Else執(zhí)行的語句

語句組4

EndIf]

EndIf

2011-6-2825

塊IF嵌套的N?S結構化流程圖表示

條件表達式1

YN

條件表達式2條件表達式3

YNYN

語句組1語句組2語句組3語句組4

2011-6-2826

【例4?2】簡單密碼驗證程序。

工程設計步驟如下:

(1)在窗體上添加二個個標簽控件、一個

文本框控件和二個命

令按鈕。

如圖4-3所示。

(2)設置窗體與各控

件的屬性如表4?5所示。

圖4-3

2011-6-2827

表4?5簡單密碼驗證程序中窗休及各控件的屬性的設

對象屬性屬性值說明

FormlCaption簡單密碼驗證程標題

Label1Caption空用作輸出

AutosizeTrue自動調節(jié)尺寸以適應內

Backcolor白色設背景色為白色

BorderStyle1-FixedSingle有邊框,邊框為凹形的

BackStyle1-Opaque

一沏1628一28

表4-5簡單密碼驗證程序中窗休及各控件的屬性的設置(續(xù))

對象屬性屬性值說明

Label2Caption請輸入密碼:

AutosizeFalse不能自動調節(jié)尺寸

BorderStyle0-None沒有邊框

Command1Caption確定標題

Command2Caption退出標題

TextlText空用于用戶輸入密碼

Passwordchar*輸入密碼時顯示的字符

2011-6-2829

判斷密碼程序N-S結構化流程圖

2011-6-2830

在窗體的聲

明段中聲明

(3)代碼編寫如下的變量在窗

DimPassAsString體的各個模

塊都起作用

DimintDAsInteger

編寫單擊命令按鈕“確定”所執(zhí)行的代碼。

PrivateSubCommandl_Click()

IfTextl.Text=PassThen

intD=3

Labell.Caption="密碼正確,_

可以進入系統(tǒng)!”

Else

2011-6-2831

intD=intD-1

MsgBox”密碼錯誤!”

IfintD=0ThenEnd,行IF結構

Labell.Caption="仔細想想,還有“

&_

Str(intD)&"次!”

Textl.SetFocus

使文本框重

EndIf薪獲得焦點

EndSub

2011-6-2832

編寫單擊命令按鈕“退出”所執(zhí)行的代碼。

PrivateSubCommand2_Click()

End

EndSub

編寫窗體的Form_Load()事件所執(zhí)行的代碼。

PrivateSubForm_Load()

Pass=''Hello''

intD=3

EndSub

2011-6-2833

(4)按F5鍵運行工程,在文本框中輸入密

碼后,單擊“確定”按鈕。若密碼輸入正確,

則在框中顯示“密碼正確,可以進入系

統(tǒng)!”。

若密碼錯誤則信息

輸出框顯示密碼錯

誤,按“確定”按鈕

后出現提示允許再

輸入兩次。

結果如圖4-4和

圖4-5所示。

圖4-4密碼正確顯示結果

2011-6-2834

圖46密碼錯誤信息輸出框顯示密碼錯誤,

并且提示允許再輸入兩次

2011-6-2835

【例4?3】求平均值和最小數。

設計工程界面如圖4-6左圖所示。

界面上有三個文本框,三個標簽和四個命令

按鈕。

圖4-6求最小數和平均數工程界面的設置

2011-6-2836

該工程要求:

(1)在“輸入數據:”文本框的下面輸

入數據,按回車鍵或者單擊“確定”按

鈕,輸入的數據就顯示在“數據列表:”

下面的文本框中。如果輸入的不是數據,

則給出提示"請輸入數字J

(2)單擊“統(tǒng)計”按鈕在“輸出結果:”

下面的文本框輸出結果,顯示共有多少

數、最小值和生均值所示。如果沒有輸

入,則給出提示“無有效的輸入數據!no

(3)“數據列表:”和“輸出結果:”

下面的文本框中不允許用戶編輯。

2011-6-2837

表4-6求最小數和平均值工程窗體及控件屬性設置值

對象屬性屬性值說明

Textl(名稱)Textln程序引用名

Text

Text2(名稱)TextOut程序引用名

Text

LockedTrue用戶不能編輯此文本框

MultiLineTrue使文本框接收多行文本

ScrollBars2-Vertical有垂直滾動條

2011-6-:>838

表4-6求最小數和平均值工程窗體及控件屬性設置值(續(xù))

對象屬性屬性值說明

Text3(名稱)TextResult程序引用名

LockedTrue用戶不能編輯此文本框

MultiLineTrue

Text

Command1DefaultTrue表示按回車鍵即為確定

Command3CancelTrue表示按ESC即為退出

201T-6-2839

(3)編寫代碼如下:

DimnAsInteger,SumAsSingle」

MinAsSingle

編寫單擊“確定”所執(zhí)行的命令代碼

PrivateSubCommandl_Click()

IfNotIsNumeric(Textln.Text)Then

MsgBox”請輸入數字”

Textln.Text=""若文本框中輸入

的不是數字則在

Textln.SetFocus消息框中提示:

ExitSub請輸入數字

EndIf

2011-6-2840

若文本框是第

一次輸入數字

11=11+]/則把它顯示在

Ifn=1Then/輸出的文本框

中同時保存在

TextOut.Text=Textln.Text變量Min中,否

則輸出的文本

Min=Val(Textin)框顯示的內容

再加上新輸入

Else的內容。

TextOut.Text=TextOut.Text&

Chr(13)&Chr(10)&Textln.Text

2011-6-2841

IfVal(Textln)<MinThen

Min=Val(Textln)

EndIf\

EndIf若文本框

Sum=Sum+Val(Textln)中輸入的

數字小于

Textln.Text=變量Min

Textln.SetFocus的值,則把

新輸入的

EndSub值送入變

量Min中.

2011-6-2842

編寫單擊“統(tǒng)計”按鈕所執(zhí)行的代碼

PrivateSubCommand2_Click()

DimsiAsString,s2AsString」

s3AsString,hhAsString

<Ifn=0Then

MsgBox”無有效的輸入數據!”

ExitSub若n=0則表示沒有

〔EndIf輸入數字。在消

息框中提示:無

有效的輸入數據!

2011-6-2843

si="共計"&Str(n)&"個數”

s2="最小值:“&Str(Min)

s3="平均值:"&Str(Sum/n)

hh=Chr(13)&Chr(lO)

TextResult.Text=si&hh&s2&

hh&s3&hh

EndSub

2011-6-2844

編寫單擊“清除”按鈕所執(zhí)行的代碼

PrivateSubCommand4_Click()

TextResult.Text=

TextOut.Text=

n=0:Sum=0

Textln.SetFocus

EndSub

2011-6-2845

編寫Form_Activate發(fā)生時事件執(zhí)行的代碼

PrivateSubForm_Activate()

n=0:Sum=0

Textln.SetFocus

EndSub

編寫單擊“退出”按鈕所執(zhí)行的代碼

PrivateSubCommand3_Click()

End

EndSub

2011-6-2846

(4)運行結果。按F5鍵運行工程,

在出現的畫面中“輸入數據”下面

的文本框中輸入數據,每輸入1個數

據接著按“確定”按鈕,被輸入的

數據就在“數據列表”下面的文本

框中顯示出來,輸入完數據后單擊

“統(tǒng)計”按鈕,就在“輸出結果”

下面的文本框中顯示出結果如圖4?7

所示。

2011-6-2847

圖4?7求最小數和平均數工程運行結果

2011-6-2848

4.3.3Ilf函數

VB中還提供Hf函數用來實現一些比較簡

單的選擇結構。

Ilf函數的格式如下:

Ilf(v條件表達式〉,〈語句1>,v語句2>)

說明:

同上面提到的IF語句一樣,<條件表達

式,可為算術表達式、關系表達式和布爾表

達式。當條件表達式的值為真時,執(zhí)行語

句1;為假時,執(zhí)行語句2。當選擇結構中

無論v條件表達式〉的值為真還是假,都只

執(zhí)行一個語句時可使用IIF函數。

2011-6-2849

語句:

y=IIf(v條件表達式>,V語句1>,<語句2>)

相當于:

Ifv條件表達式>Thenv語句1>Elsev語句2>

例44中計算分段函數完全可以使用IIF函

數編寫。其中的If…Else結構可用如下代碼

替換即可,其運行結果完全相同。

y=IIf(x>=0,1+x,1+2*x)

2011-6-2850

4.3.4多分支的If選擇結構

1.多分支的If結構如下:

Ifv條件1>Then

[語句組1]

[Elselfv條件2>Then

[語句組2]]

???

[Elselfv條件n>Then

[語句組n]]

[Else

[語句組n+1]]

EndIf

2011-6-2851

2.多分支IF結構的N?S結構化流程圖

判斷條件

IFElseIf????????????ElseIfElse

條件1成立條件2成立條件n成立

執(zhí)行語執(zhí)行語執(zhí)行語執(zhí)行語

句組1句組2????????????句組n句組n+1

2011-6-2852

3.說明:

多分支的塊If結構由If語句開始,

EndIf語句結束,中間的Elself語句和

Else語句是可選項。

(1)執(zhí)行時,先判斷If語句后面的條件1,

如果條件1值為真,則執(zhí)行語句組1中的

各語句,執(zhí)行完后再執(zhí)行EndIf語句;

(2)若條件1的值為假,則判斷條件2,如

果條件2的值為真,則執(zhí)行語句組2中的

各語句,執(zhí)行完后再執(zhí)行EndIf語

2011句;...口53

(3)若條件n?l的值為假,則判斷條件n,

如果條件n的值為真,則執(zhí)行語句組n中

的各語句,執(zhí)行完后再執(zhí)行EndIf語句;

否地執(zhí)行Else后面語句組n+1中的各語句,

執(zhí)行完后再執(zhí)行EndIf語句。

(4)在多分支的塊If結構中根據需要可以

有多個Elself語句,但最多只能有一個

Eke語句,使用時一定要注意。

2011-6-2854

【例4?4】某商場對顧客購物實行打折銷售。規(guī)定

如下:

購物款v500元沒有折扣

500元v購物款01000元折扣5%

1000元v購物款01500元折扣8%

1500元v購物款02000元折扣10%

2000元v購物款02500元折扣15%

購物款>2500元折扣20%

設計工程,當輸入購物款時按“計算”按鈕

就可以輸出折扣后應交的實際購物款。

2011-6-2855

工程設計步驟如下:

(1)新建“標準EXE”工程,在出現的窗

體上添加兩個標簽、兩個文本框和兩個

命令按鈕,如函令8所示。

(2)設置窗體和控件的屬性如圖4?8所示。

2011-6-28圖4?8購物打折銷售計算應付款工程的界面設置56

(3)編寫代碼如下:

編寫單擊“計算”按鈕應執(zhí)行下列代碼。

PrivateSubCommandl_Click()

DimxAsSingle,yAsSingle

x=Val(Textl.Text)

Ifx<=500Then

y=x

Elselfx<=1000Then

y=(l-0.05)x

Elselfx<=1500Then

2011-6-2857

y=(l-0.08)x

Elselfx<=2000Then

y=(l-04)*x

Elselfx<=2500Then

y=(l-0.15)*x

Else

y=(l-0.2)*x

EndIf

Text2.Text=''實際交款:n&y&八元"

EndSub

2011-6-2858

編寫單擊“清除”按鈕執(zhí)行下列代碼。

PrivateSubCommand2click()

Text1.Text=

Textl.Text=

EndSub

(4)運行工程。按F5運行工程,出現運行

畫面后,在“請輸入購物款”的右邊的文

本框中輸入實際購物款,然后單擊“計算”

得到實際應付款數顯示在第二個文本框中

如圖4?9所示。

2011-6-2859

圖4?9計算“實際應付款數”工程運行結果

2011-6-2860

【例4?5】設計一個流動字幕,如圖4?10所示。

工程設計步驟如下:

(1)新建“標準EXE”工程,在出現的窗體上

添加一個命令按鈕、一個標簽和一個計時器

設計界面如圖4?10所示。

(2)設置窗體及控件的屬性如圖4?10所示。

其中計時器的Interval屬性設置為10,Enable

設為False。注意此時的命令按鈕“開始”上

有一個熱鍵S,是在給命令按鈕設置Caption

屬性時加上的只要在選中的字母前面加上一

個符號即可。

2011-6-2861

圖4?10設計一個流動字幕工程界面及屬性設置

2011-6-2862

PrivateSubCommandl_Click()

,IfCommandl.Caption="開始&S''Then

Commandl.Caption="暫停&S”

Timer1.Enabled=True

ElselfCommandl.Caption="暫停&SnThen

)Commandl.Caption="繼續(xù)&C''

'Timerl.Enabled=False

Else

Commandl.Caption="暫停&S''

ITimerl.Enabled=True

EndIf

EndSub

2011-6-2863

返回/設置對

PrivateSubTimerl_Timer()象的寬度。

IfLabell.Left+Labell.Width>0Then

Labell.MoveLabell.Left-50

Else

Labell.Left=Forml.ScaleWidth

EndIf

EndSub返回/設置對

象內部的水平

度量單位數。

2011-6-2864

(4)運行程序。單擊“開始”命令按

鈕,則字幕開始從右向左移動,直到

在左邊消失,然后接著又從右邊開始

向左邊移動。此時單擊“暫?!卑粹o,

則字幕停止移動。若想繼續(xù)移動字幕,

再單擊“繼續(xù)”按鈕。請注意該程序

中只有一個命令按鈕就可以控制各種

情況。如開始、暫停和繼續(xù)。

2011-6-2865

圖4-11流動字幕工程運行結果

2011-6-2866

【例4-6】求一元二次方程的根。

分析:一元二次方程的根,有以下幾種情況:

(1)當a#)時,設delta=b?-4ac。

當判別式delta>0時,方程有兩個不同的實根;

當判別式delta=0時,方程有兩個相同的實根;

當判別式deltav0時,方程有兩個共甄復根。

(2)當a=0,若b和時,則方程有一個根。

當a=0,若b=0時,則方程無意義。

2011-6-2867

工程設計步驟如下:

(1)新建“標準EXE”工程。在出現的窗體

上添加兩個框架、五個標簽、三個文本框

和兩個命令按鈕,其中框架1中包括三個文

本框和三個標簽,框架2中包括一個標簽,

如圖4-12所示。

(2)設置窗體及控件的屬性如圖4?12所示。

2011-6-2868

圖4-12求方程的根工程界面設計和屬性設置

2011-6-2869

(3)編寫代碼如下:

編寫單擊“計算方程根”命令按鈕所執(zhí)行

的代碼

PrivateSubCommandl_Click()

DimaAsSingle,bAsSingle,cAsSingle

DimsbAsSingle,xbAsSingle,rcAs

Single

a=Val(Textl.Text)

b=Val(Text2.Text)

c=Val(Text3.Text)

2011-6-2870

Ifa<>0Then

delta=bA2-4*a*c

rc=?b/(2*a)

Ifdelta>0Then

sb=Sqr(delta)/(2a)

Labell.Caption="方程有兩個實根"

pl="xl="&Str(rc+sb)

p2="x2="&Str(rc-sb)

Labell.Caption=pl&Chr(13)&p2

2011-6-2871

Elselfdelta=0Then

Label2.Caption="方程有兩個相等的實根”

Labell.Caption=nxl=x2n&Str(rc)

Else

xb=Sqr(-delta)/(2*a)

Label2.Caption="方程有兩個的虛根"

pl=nxl=M&Str(rc)&&IIf(xb=1,_

Str(xb))&""

p2="x2=''&Str(rc)&"&IIf(xb=1,_

Str(xb))&"i"

Labell.Caption=pl&Chr(13)&p2

EndIf

Else

M???1

cIfb<>0Then

y="b/c

Label2.Caption”方程僅有一個根”

}Labell.Caption"x=''&Str(y)

|Else

Labell.Caption="方程無意義!”

Labell.Caption_,,,,

'EndIf

EndIf

EndSub

2011-6-2873

編寫單擊“退出”命令按鈕所執(zhí)行的代碼

PrivateSubCommand2_Click()

End

EndSub

(4)運行程序。在出現的界面上。根據提

示,首先在三個文本框中輸入一元二次

方程的三個系數。然后單擊Commandl

命令按鈕”計算方程根”就可得到相應

方程的根如圖4-13所示。

2011-6-2874

圖4-13求一元二次方程根的工程運行結果

4.3.5fflSelectCase語句實現多分支選擇結構

2011-6-2875

VB中還提供SelectCase語句用來實現多分支結構

1.SelectCase語句的一般格式如下:

SelectCasev選擇表達式〉

[Casev表達式列表1>

[v語句組]

[Casev表達式列表2>

卜語句組2>]]

[Casev表達式列表n>

[v語句組n>]]

[CaseElse

[v語句組n+l>]]

76

多分支選擇結構流程圖

SelectCasev選擇表達式,

CaseCaseCase

????????????CaseElse

情況1情況2情況n

執(zhí)行語執(zhí)行語執(zhí)行語執(zhí)行語

句組1句組2????????????句組n句組n+1

EndSelect

2011-6-2877

2.說明:

(1)v選擇表達式〉為必選項,用來指出被選

擇的表達式或變量名??梢允侨魏螖抵岛妥?/p>

符串表達式。

(2)在Case子句中,v表達式列表,為必選參

數,用來測試是否有與選擇表達式匹配的表

達式或變量名,它必須是常量而且必須與選

擇表達式或變量的類型一致。

(3)在Case子句中,v表達式列表,可以是一

個或多個表達式的值,如表4?7所示。

2011-6-2878

表4-7Case表達式列表的形式

形式示例說明

表達式Case50*b數值和字符串表達式

表達式To表達式Case1To10用來指定1個數值范圍。

Case“a'To"m"

Is關系表達式CaseIs>200可以配合比較運算符來

CaseIs<=5,8,20指定1個數值范圍。這里

Is是關鍵字。

2011-6-2879

(4)當使用多個表達式列表時,表達式各

項之間應用逗號“,”隔開。

(5)〈語句組〉是一條或多條語句為可選參

數,當v表達式列表,中有值與〈選擇表達

式》相匹配時執(zhí)行。

(6)CaseElse語句用于指明其他語句序列,

當v選擇表達式〉與所有的Case子句中v表

達式列表》中的值都不匹配時,執(zhí)行Case

Else后面的語句,雖然不是必須的。但若

在SelectCase結構中加上CaseElse語句,

就可用來處理一些不可預見的〈選擇表達

式>的值。

2011-6-2880

下列Case子句的寫法是正確的:

Dimx

SelectCasex

Case1

Case“a”

Case2,3,8

Case1To5

Case1,6To9

Case1To3,6To8

CaseIs<12,Is>20

坳ESelect81

下列Case子句的寫法是不正確的,程

序運行時并不發(fā)生錯誤,但是運行結果并

不是所預料的,應避免此類寫法。

Dimx

SelectCasex

Casex=l

Casex="a”

Casex>12Andx<=20

EndSelect

2011-6-2882

【例4?7】例4?4題中計算打折銷售款的

程序也可用SelectCase結構編寫,具體

程序代碼如下所示。

編寫單擊Commandl命令按鈕“計算”

執(zhí)行的代碼。

PrivateSubCommandl_Click()

DimxAsSingle,yAsSingle

x=Val(Textl.Text)

2011-6-28

溫馨提示

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

評論

0/150

提交評論