計(jì)算機(jī)課件09 程序流程的控制(一)_第1頁
計(jì)算機(jī)課件09 程序流程的控制(一)_第2頁
計(jì)算機(jī)課件09 程序流程的控制(一)_第3頁
計(jì)算機(jī)課件09 程序流程的控制(一)_第4頁
計(jì)算機(jī)課件09 程序流程的控制(一)_第5頁
已閱讀5頁,還剩106頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VisualBasic程序設(shè)計(jì)

第九講

第四章程序流程的控制

(一)

2011-7-10

1

關(guān)系表達(dá)式

布爾表達(dá)式

選擇結(jié)構(gòu)

循環(huán)結(jié)構(gòu)

常用控件的使用

2011-7-102

§4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式

4.1.1關(guān)系運(yùn)算符VB提供六種關(guān)系運(yùn)算符

關(guān)系物理意義例子說明

運(yùn)算符

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

小于等于若x=2,y=4求x〈=y的值值為True

<=表4?1

>大于“3”>8值為False

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

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

<>2011-7-]0不等于"asd"v>"qwe”值為True3

4.1.2關(guān)系表達(dá)式

LVB中的關(guān)系表達(dá)式格式為:

v表達(dá)式1>v關(guān)系運(yùn)算符,v表達(dá)式2>[v關(guān)系運(yùn)算符>

v表達(dá)式3>],...]

2.說明:

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

和日期型表達(dá)式。

(2)關(guān)系表達(dá)式求值的次序是先求關(guān)系運(yùn)算符兩邊

表達(dá)式的值,再求關(guān)系表達(dá)式的值。關(guān)系表達(dá)式的

值為Boolean型,只有兩個(gè)值True和False。

(3)若關(guān)系運(yùn)算符兩邊為算術(shù)表達(dá)式時(shí),則應(yīng)先計(jì)

算算術(shù)表達(dá)式的值,再進(jìn)行關(guān)系比較。

1?蜀A?1

(4)若關(guān)系運(yùn)算符兩邊為字符串表達(dá)

式時(shí),按字符串中每個(gè)字母的ASCII

碼逐一進(jìn)行比較,若比較的前幾個(gè)

字母的ASCII碼都一樣,而當(dāng)比較到

后面哪一個(gè)字母不一樣,則哪個(gè)字

母的ASCII碼數(shù)值大,則對應(yīng)的字符

串就大。

2011-7-105

例如:

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

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

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

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

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

若關(guān)系運(yùn)算符兩邊為日期型表達(dá)式

時(shí),按日期的先后次序,日期在前的值

小。

2011-7-106

例如:

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

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

3.注意:

因?yàn)楦↑c(diǎn)數(shù)在計(jì)算機(jī)內(nèi)不能精確表示,

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

或雙精度數(shù)的浮點(diǎn)數(shù)。

例如:

5.0*4.0=20.0在數(shù)學(xué)上是成立的,而

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

浮點(diǎn)數(shù)時(shí),則應(yīng)寫成下列形式:

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

款值小于等于le?5時(shí),則認(rèn)為x整扇*4小

在VBe不能把數(shù)學(xué)中的不等區(qū)

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

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

值關(guān)系表達(dá)式10<x<=20的值都為

True。

關(guān)系表達(dá)式10<x<=20相當(dāng)于

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

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

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

然與數(shù)學(xué)中的不等式的意義不同。

2011-7-108

§4.2布爾運(yùn)算符和布爾表達(dá)式

對于不能用關(guān)系表達(dá)式表示的較復(fù)雜

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

判的數(shù)學(xué)不等式lOvxO,在VB中,應(yīng)表

示成x>10Andx<=20o

4.2.1布爾運(yùn)算符和布爾表達(dá)式

1.布爾運(yùn)算符。

VB中共有六種布爾運(yùn)算符,它們是:

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

2011-7-109

表4?2布爾運(yùn)算符

布爾運(yùn)算符物理意義舉例說明

And邏輯與運(yùn)算2<3And5>3與運(yùn)算兩邊的表達(dá)式都為真

值為True時(shí)結(jié)果為真,否則為假。

Or邏輯或運(yùn)算Or5>0或運(yùn)算兩邊的表達(dá)式只要有一

值為True個(gè)為真,結(jié)果就為真(True)

兩邊都為假時(shí)結(jié)果才為假。

Not邏輯非運(yùn)算Notx>=6非運(yùn)算對表達(dá)式的值取反。

Xor邏輯異或運(yùn)算"a''v"b"Xor5<0異或運(yùn)算兩邊表達(dá)式的值不

值為True同,則結(jié)果為真,相等時(shí)結(jié)

果為假。

Eqv邏輯等運(yùn)算3<2Eqv(3-邏輯等運(yùn)算兩邊表達(dá)式的值

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

值為True時(shí),結(jié)果為假。

2011-7-1010

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

布爾運(yùn)算符物理意義舉例說明

Imp邏輯隱含運(yùn)3<2Imp3>0邏輯隱含運(yùn)算第一個(gè)表達(dá)式

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

3<2Imp5<2表達(dá)式不論值為什么值,結(jié)果

值為True都為真(True)

3>0Imp2>0若第一個(gè)表達(dá)式值為真,則

值為True第二表達(dá)式為真時(shí)結(jié)果為真。

5>3Imp3<2為假時(shí)結(jié)果為假。

值為False

11

表4-3布爾運(yùn)算真值表

abaAndbaOrbNotaaXorbaEqvb

TrueTrueTrueTrueFalseFalseTrue

TrueFalseFalseTrueFalseTrueFalse

FalseTrueFalseTrueTrueTrueFalse

FalseFalseFalseFalseTrueFalseTrue

2011-7-1012

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

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

算術(shù)運(yùn)算符運(yùn)算級最高,關(guān)系運(yùn)算符次

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

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

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

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

(+或?)O

在關(guān)系運(yùn)算符中,六個(gè)運(yùn)算符的級別相

同。

在布爾運(yùn)算符中最常用的三個(gè)布爾運(yùn)算

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

1??>1

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

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

1A(乘方運(yùn)算)

2-(求負(fù)數(shù))

算術(shù)運(yùn)算符

3*或/(乘或除)

4\(整除)

5Mod(求余數(shù))

6+或-(加或減)

7&(字符串連接運(yùn)算)字符串運(yùn)算符

8<=或<或>=或>或=或<>關(guān)系運(yùn)算符

9Not(非運(yùn)算)布爾運(yùn)算符

10And(與運(yùn)算)

用11-7-1014

Or(或運(yùn)算)

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

下列表達(dá)式的運(yùn)算次序?yàn)椋?/p>

a>=0.0anda+c>b+dorNotTrue

②True①6.巳口6.0

③False

②False

__________)

Y

④False

J

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

⑤False

最同結(jié)果為False。15

§4.3選擇結(jié)構(gòu)

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

1.行If語句格式如下:

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

2.塊If結(jié)構(gòu)格式如下:

Ifv條件表達(dá)式〉Then

[語句組1]

[Else

[語句組2]]

EndIf

2011-7-1016

3.說明:

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

講的算術(shù)表達(dá)式、關(guān)系表達(dá)式和布爾表達(dá)

式,執(zhí)行該結(jié)構(gòu)時(shí)應(yīng)先計(jì)算V條件表達(dá)式〉

值,然后根據(jù)V條件表達(dá)式>值確定程序的

流向。

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

后面語句組1中各語句;當(dāng)v條件表達(dá)式,

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

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

中各語句執(zhí)行完后,接著應(yīng)執(zhí)行型些

2011-7-1017

(3)在VB中數(shù)值表達(dá)式的值為非0時(shí),則

條件表達(dá)式的值為真,數(shù)值表達(dá)式的值為0

時(shí)條件表達(dá)式的值為假。

(4)第一種形式的If結(jié)構(gòu),沒有配對的End

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

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

句省略,則語句組1是必選項(xiàng)。第二種If結(jié)

構(gòu)必須有配對的結(jié)束語句EndIf,不能省

略。其Then后面的兩個(gè)可選項(xiàng)也必須選其

中之一。

2011-7-1018

【例4?1】計(jì)算分段函數(shù):

Y=l+x(x口0)

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

工程設(shè)計(jì)步驟如下:

(1)啟動VB后選“新建工程”的“標(biāo)準(zhǔn)

EXE”出現(xiàn)一個(gè)窗體,在此窗體上添加一

個(gè)標(biāo)簽控件一個(gè)文本框和二個(gè)命令按鈕如

下頁圖4?1左圖所不。

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

右圖所不。

2011-7-10IDI'Z19

圖4-1計(jì)算分段函數(shù)的界面設(shè)計(jì)及屬性設(shè)置

2011-7-1020

(3)編寫代碼如下:

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

PrivateSubCommandl_Click()

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

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

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

Textl.Text=y

EndSub

2011-7-1021

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

PrivateSubCommand2_Click()

UnloadMe

EndSub

(4)運(yùn)行結(jié)果。按工具欄上的執(zhí)行按

鈕出現(xiàn)如圖4?1右圖所示的界面。單

擊“計(jì)算函數(shù)的值”按鈕出現(xiàn)輸入對

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

出現(xiàn)最后的結(jié)果如圖4?2右圖所示。

2011-7-1022

分科的州的值

函數(shù)值Y=

圖4?2計(jì)算分段函數(shù)的運(yùn)行結(jié)果

2011-7-1023

4.3.2嵌套的If語句

如果上面的塊If結(jié)構(gòu)中的Then下面的語

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

的If結(jié)構(gòu)稱If語句的嵌套,如:

Ifv條件表達(dá)式1>Then

[Ifv條件表達(dá)式2>Then、

語句組1

當(dāng)表達(dá)式1

Else的值為真時(shí)

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

組。

EndIf]

2011-7-10

4.3.2嵌套的If語句

Else

[Ifv條件表達(dá)式3>

Then

當(dāng)表達(dá)式1

語句組3的值為假時(shí)

Else執(zhí)行的語句

語句組4

EndIf]

EndIf

2011-7-1025

塊IF嵌套的N?S結(jié)構(gòu)化流程圖表示

條件表達(dá)式1

YN

條件表達(dá)式2條件表達(dá)式3

YNYN

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

2011-7-1026

【例4?2】簡單密碼驗(yàn)證程序。

工程設(shè)計(jì)步驟如下:

(1)在窗體上添加二個(gè)個(gè)標(biāo)簽控件、一個(gè)

文本框控件和二個(gè)命

令按鈕。

如圖4-3所示。

(2)設(shè)置窗體與各控

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

圖4-3

2011-7-1027

表4?5簡單密碼驗(yàn)證程序中窗休及各控件的屬性的設(shè)

對象屬性屬性值說明

FormlCaption簡單密碼驗(yàn)證程標(biāo)題

Label1Caption空用作輸出

AutosizeTrue自動調(diào)節(jié)尺寸以適應(yīng)內(nèi)

Backcolor白色設(shè)背景色為白色

BorderStyle1-FixedSingle有邊框,邊框?yàn)榘夹蔚?/p>

BackStyle1-Opaque

-H行二16一28

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

對象屬性屬性值說明

Label2Caption請輸入密碼:

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

BorderStyle0-None沒有邊框

Command1Caption確定標(biāo)題

Command2Caption退出標(biāo)題

TextlText空用于用戶輸入密碼

Passwordchar*輸入密碼時(shí)顯示的字符

2011-7-1029

判斷密碼程序N-S結(jié)構(gòu)化流程圖

2011-7-1030

在窗體的聲

明段中聲明

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

DimPassAsString體的各個(gè)模

塊都起作用

DimintDAsInteger

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

PrivateSubCommandl_Click()

IfTextl.Text=PassThen

intD=3

Labell.Caption="密碼正確,_

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

Else

2011-7-1031

intD=intD-1

MsgBox”密碼錯(cuò)誤!”

IfintD=0ThenEnd,行IF結(jié)構(gòu)

Labell.Caption="仔細(xì)想想,還有“

&_

Str(intD)&"次!”

Textl.SetFocus

使文本框重

EndIf薪獲得焦點(diǎn)

EndSub

2011-7-1032

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

PrivateSubCommand2_Click()

End

EndSub

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

PrivateSubForm_Load()

Pass=''Hello''

intD=3

EndSub

2011-7-1033

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

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

則在框中顯示“密碼正確,可以進(jìn)入系

統(tǒng)!”。

若密碼錯(cuò)誤則信息

輸出框顯示密碼錯(cuò)

誤,按“確定”按鈕

后出現(xiàn)提示允許再

輸入兩次。

結(jié)果如圖4-4和

圖4-5所示。

圖4-4密碼正確顯示結(jié)果

2011-7-1034

圖46密碼錯(cuò)誤信息輸出框顯示密碼錯(cuò)誤,

并且提示允許再輸入兩次

2011-7-1035

【例4?3】求平均值和最小數(shù)。

設(shè)計(jì)工程界面如圖4-6左圖所示。

界面上有三個(gè)文本框,三個(gè)標(biāo)簽和四個(gè)命令

按鈕。

圖4-6求最小數(shù)和平均數(shù)工程界面的設(shè)置

2011-7-1036

該工程要求:

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

入數(shù)據(jù),按回車鍵或者單擊“確定”按

鈕,輸入的數(shù)據(jù)就顯示在“數(shù)據(jù)列表:”

下面的文本框中。如果輸入的不是數(shù)據(jù),

則給出提示"請輸入數(shù)字J

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

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

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

入,則給出提示“無有效的輸入數(shù)據(jù)!no

(3)“數(shù)據(jù)列表:”和“輸出結(jié)果:”

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

2011-7-1037

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

對象屬性屬性值說明

Textl(名稱)Textln程序引用名

Text

Text2(名稱)TextOut程序引用名

Text

LockedTrue用戶不能編輯此文本框

MultiLineTrue使文本框接收多行文本

ScrollBars2-Vertical有垂直滾動條

2011-7-11038

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

對象屬性屬性值說明

Text3(名稱)TextResult程序引用名

LockedTrue用戶不能編輯此文本框

MultiLineTrue

Text

Command1DefaultTrue表示按回車鍵即為確定

Command3CancelTrue表示按ESC即為退出

2011-7-1039

(3)編寫代碼如下:

DimnAsInteger,SumAsSingle」

MinAsSingle

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

PrivateSubCommandl_Click()

IfNotIsNumeric(Textln.Text)Then

MsgBox”請輸入數(shù)字”

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

的不是數(shù)字則在

Textln.SetFocus消息框中提示:

ExitSub請輸入數(shù)字

EndIf

2011-7-1040

若文本框是第

一次輸入數(shù)字

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

Ifn=1Then/輸出的文本框

中同時(shí)保存在

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

則輸出的文本

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

再加上新輸入

Else的內(nèi)容。

TextOut.Text=TextOut.Text&

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

2011-7-1041

IfVal(Textln)<MinThen

Min=Val(Textln)

EndIf\

EndIf若文本框

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

數(shù)字小于

Textln.Text=變量Min

Textln.SetFocus的值,則把

新輸入的

EndSub值送入變

量Min中.

2011-7-1042

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

PrivateSubCommand2_Click()

DimsiAsString,s2AsString」

s3AsString,hhAsString

<Ifn=0Then

MsgBox”無有效的輸入數(shù)據(jù)!”

ExitSub若n=0則表示沒有

〔EndIf輸入數(shù)字。在消

息框中提示:無

有效的輸入數(shù)據(jù)!

2011-7-1043

si="共計(jì)"&Str(n)&"個(gè)數(shù)”

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

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

hh=Chr(13)&Chr(lO)

TextResult.Text=si&hh&s2&

hh&s3&hh

EndSub

2011-7-1044

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

PrivateSubCommand4_Click()

TextResult.Text=

TextOut.Text=

n=0:Sum=0

Textln.SetFocus

EndSub

2011-7-1045

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

PrivateSubForm_Activate()

n=0:Sum=0

Textln.SetFocus

EndSub

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

PrivateSubCommand3_Click()

End

EndSub

2011-7-1046

(4)運(yùn)行結(jié)果。按F5鍵運(yùn)行工程,

在出現(xiàn)的畫面中“輸入數(shù)據(jù)”下面

的文本框中輸入數(shù)據(jù),每輸入1個(gè)數(shù)

據(jù)接著按“確定”按鈕,被輸入的

數(shù)據(jù)就在“數(shù)據(jù)列表”下面的文本

框中顯示出來,輸入完數(shù)據(jù)后單擊

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

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

所示。

2011-7-1047

圖4?7求最小數(shù)和平均數(shù)工程運(yùn)行結(jié)果

2011-7-1048

4.3.3Ilf函數(shù)

VB中還提供Hf函數(shù)用來實(shí)現(xiàn)一些比較簡

單的選擇結(jié)構(gòu)。

Ilf函數(shù)的格式如下:

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

說明:

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

式,可為算術(shù)表達(dá)式、關(guān)系表達(dá)式和布爾表

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

句1;為假時(shí),執(zhí)行語句2。當(dāng)選擇結(jié)構(gòu)中

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

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

2011-7-1049

語句:

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

相當(dāng)于:

Ifv條件表達(dá)式>Thenv語句1>Elsev語句2>

例44中計(jì)算分段函數(shù)完全可以使用IIF函

數(shù)編寫。其中的If…Else結(jié)構(gòu)可用如下代碼

替換即可,其運(yùn)行結(jié)果完全相同。

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

2011-7-1050

4.3.4多分支的If選擇結(jié)構(gòu)

1.多分支的If結(jié)構(gòu)如下:

Ifv條件1>Then

[語句組1]

[Elselfv條件2>Then

[語句組2]]

???

[Elselfv條件n>Then

[語句組n]]

[Else

[語句組n+1]]

EndIf

2011-7-1051

2.多分支IF結(jié)構(gòu)的N?S結(jié)構(gòu)化流程圖

判斷條件

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

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

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

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

2011-7-1052

3.說明:

多分支的塊If結(jié)構(gòu)由If語句開始,

EndIf語句結(jié)束,中間的Elself語句和

Else語句是可選項(xiàng)。

(1)執(zhí)行時(shí),先判斷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結(jié)構(gòu)中根據(jù)需要可以

有多個(gè)Elself語句,但最多只能有一個(gè)

Eke語句,使用時(shí)一定要注意。

2011-7-1054

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

如下:

購物款v500元沒有折扣

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

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

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

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

購物款>2500元折扣20%

設(shè)計(jì)工程,當(dāng)輸入購物款時(shí)按“計(jì)算”按鈕

就可以輸出折扣后應(yīng)交的實(shí)際購物款。

2011-7-1055

工程設(shè)計(jì)步驟如下:

(1)新建“標(biāo)準(zhǔn)EXE”工程,在出現(xiàn)的窗

體上添加兩個(gè)標(biāo)簽、兩個(gè)文本框和兩個(gè)

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

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

2011-7-10圖4?8購物打折銷售計(jì)算應(yīng)付款工程的界面設(shè)置56

(3)編寫代碼如下:

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

PrivateSubCommandl_Click()

DimxAsSingle,yAsSingle

x=Val(Textl.Text)

Ifx<=500Then

y=x

Elselfx<=1000Then

y=(l-0.05)x

Elselfx<=1500Then

2011-7-1057

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=''實(shí)際交款:n&y&八元"

EndSub

2011-7-1058

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

PrivateSubCommand2click()

Text1.Text=

Textl.Text=

EndSub

(4)運(yùn)行工程。按F5運(yùn)行工程,出現(xiàn)運(yùn)行

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

本框中輸入實(shí)際購物款,然后單擊“計(jì)算”

得到實(shí)際應(yīng)付款數(shù)顯示在第二個(gè)文本框中

如圖4?9所示。

2011-7-1059

圖4?9計(jì)算“實(shí)際應(yīng)付款數(shù)”工程運(yùn)行結(jié)果

2011-7-1060

【例4?5】設(shè)計(jì)一個(gè)流動字幕,如圖4?10所示。

工程設(shè)計(jì)步驟如下:

(1)新建“標(biāo)準(zhǔn)EXE”工程,在出現(xiàn)的窗體上

添加一個(gè)命令按鈕、一個(gè)標(biāo)簽和一個(gè)計(jì)時(shí)器

設(shè)計(jì)界面如圖4?10所示。

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

其中計(jì)時(shí)器的Interval屬性設(shè)置為10,Enable

設(shè)為False。注意此時(shí)的命令按鈕“開始”上

有一個(gè)熱鍵S,是在給命令按鈕設(shè)置Caption

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

個(gè)符號即可。

2011-7-1061

圖4?10設(shè)計(jì)一個(gè)流動字幕工程界面及屬性設(shè)置

2011-7-1062

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-7-1063

返回/設(shè)置對

PrivateSubTimerl_Timer()象的寬度。

IfLabell.Left+Labell.Width>0Then

Labell.MoveLabell.Left-50

Else

Labell.Left=Forml.ScaleWidth

EndIf

EndSub返回/設(shè)置對

象內(nèi)部的水平

度量單位數(shù)。

2011-7-1064

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

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

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

向左邊移動。此時(shí)單擊“暫停”按鈕,

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

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

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

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

2011-7-1065

圖4-11流動字幕工程運(yùn)行結(jié)果

2011-7-1066

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

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

(1)當(dāng)a#)時(shí),設(shè)delta=b?-4ac。

當(dāng)判別式delta>0時(shí),方程有兩個(gè)不同的實(shí)根;

當(dāng)判別式delta=0時(shí),方程有兩個(gè)相同的實(shí)根;

當(dāng)判別式deltav0時(shí),方程有兩個(gè)共甄復(fù)根。

(2)當(dāng)a=0,若b和時(shí),則方程有一個(gè)根。

當(dāng)a=0,若b=0時(shí),則方程無意義。

2011-7-1067

工程設(shè)計(jì)步驟如下:

(1)新建“標(biāo)準(zhǔn)EXE”工程。在出現(xiàn)的窗體

上添加兩個(gè)框架、五個(gè)標(biāo)簽、三個(gè)文本框

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

本框和三個(gè)標(biāo)簽,框架2中包括一個(gè)標(biāo)簽,

如圖4-12所示。

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

2011-7-1068

圖4-12求方程的根工程界面設(shè)計(jì)和屬性設(shè)置

2011-7-1069

(3)編寫代碼如下:

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

的代碼

PrivateSubCommandl_Click()

DimaAsSingle,bAsSingle,cAsSingle

DimsbAsSingle,xbAsSingle,rcAs

Single

a=Val(Textl.Text)

b=Val(Text2.Text)

c=Val(Text3.Text)

2011-7-1070

Ifa<>0Then

delta=bA2-4*a*c

rc=?b/(2*a)

Ifdelta>0Then

sb=Sqr(delta)/(2a)

Labell.Caption="方程有兩個(gè)實(shí)根"

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

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

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

2011-7-1071

Elselfdelta=0Then

Label2.Caption="方程有兩個(gè)相等的實(shí)根”

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

Else

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

Label2.Caption="方程有兩個(gè)的虛根"

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”方程僅有一個(gè)根”

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

|Else

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

Labell.Caption_,,,,

'EndIf

EndIf

EndSub

2011-7-1073

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

PrivateSubCommand2_Click()

End

EndSub

(4)運(yùn)行程序。在出現(xiàn)的界面上。根據(jù)提

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

方程的三個(gè)系數(shù)。然后單擊Commandl

命令按鈕”計(jì)算方程根”就可得到相應(yīng)

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

2011-7-1074

圖4-13求一元二次方程根的工程運(yùn)行結(jié)果

4.3.5fflSelectCase語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)

2011-7-1075

VB中還提供SelectCase語句用來實(shí)現(xiàn)多分支結(jié)構(gòu)

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

SelectCasev選擇表達(dá)式〉

[Casev表達(dá)式列表1>

[v語句組1>]]

[Casev表達(dá)式列表2>

卜語句組2>]]

[Casev表達(dá)式列表n>

[v語句組n>]]

[CaseElse

[v語句組n+l>]]

坳瞬elect76

多分支選擇結(jié)構(gòu)流程圖

SelectCasev選擇表達(dá)式,

CaseCaseCase

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

情況1情況2情況n

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

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

EndSelect

2011-7-1077

2.說明:

(1)v選擇表達(dá)式〉為必選項(xiàng),用來指出被選

擇的表達(dá)式或變量名。可以是任何數(shù)值和字

符串表達(dá)式。

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

數(shù),用來測試是否有與選擇表達(dá)式匹配的表

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

擇表達(dá)式或變量的類型一致。

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

個(gè)或多個(gè)表達(dá)式的值,如表4?7所示。

2011-7-1078

表4-7Case表達(dá)式列表的形式

形式示例說明

表達(dá)式Case50*b數(shù)值和字符串表達(dá)式

表達(dá)式To表達(dá)式Case1To10用來指定1個(gè)數(shù)值范圍。

Case“a'To"m"

Is關(guān)系表達(dá)式CaseIs>200可以配合比較運(yùn)算符來

CaseIs<=5,8,20指定1個(gè)數(shù)值范圍。這里

Is是關(guān)鍵字。

2011-7-1079

(4)當(dāng)使用多個(gè)表達(dá)式列表時(shí),表達(dá)式各

項(xiàng)之間應(yīng)用逗號“,”隔開。

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

數(shù),當(dāng)v表達(dá)式列表,中有值與〈選擇表達(dá)

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

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

當(dāng)v選擇表達(dá)式〉與所有的Case子句中v表

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

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

在SelectCase結(jié)構(gòu)中加上CaseElse語句,

就可用來處理一些不可預(yù)見的〈選擇表達(dá)

式>的值。

2011-7-1080

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

Dimx

SelectCasex

Case1

Case“a”

Case2,3,8

Case1To5

Case1,6To9

Case1To3,6To8

CaseIs<12,Is>20

WoSelect81

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

序運(yùn)行時(shí)并不發(fā)生錯(cuò)誤,但是運(yùn)行結(jié)果并

不是所預(yù)料的,應(yīng)避免此類寫法。

Dimx

SelectCasex

Casex=l

Casex="a”

Casex>12Andx<=20

EndSelect

2011-7-1082

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

程序也可用SelectCase結(jié)構(gòu)編寫,具體

程序代碼如下所示。

編寫單擊Commandl命令按鈕“計(jì)算”

執(zhí)行的代碼。

PrivateSubCommandl_Click()

DimxAsSingle,yAsSingle

x=Val(Textl.Text)

2011-7-1083

SelectCasex

X為選擇

CaseIs<=500表達(dá)式。

y=x

CaseIs<=1000

y=(i-0.05)

CaseIs<=1500

y=(l-0.08)

CaseIs<=2000

y=(i?o])*

2011-7-1084

CaseIs<=2500

y=(l-0.15)*x

CaseElse

y=(l-0.2)*x

EndSelect

Text2.Text=''實(shí)際交款:"&y&"元"

EndSub

2011-7-1085

編寫單擊“清除”按鈕應(yīng)執(zhí)行下列代

PrivateSubCommand2click()

Textl.Text=

Text2.Text=''''

EndSub

2011-7-1086

【例4?8】某航空公司規(guī)定在旅游的旺季5,

7?10月份,如果訂票數(shù)超過20張票價(jià)優(yōu)惠

15%,20張以下,優(yōu)惠5%;在旅游的淡

季1?4月份,11月份,12月份,如果訂票

數(shù)超過20張,票價(jià)優(yōu)惠30%,20張以下,

優(yōu)惠20%;其他情況一律優(yōu)惠10%。

設(shè)計(jì)程序,根據(jù)月份和訂票數(shù)決定票價(jià)優(yōu)

惠率。

分析:根據(jù)題意,畫出流程圖如下頁所示。

2011-7-1087

2011-7-1088

設(shè)計(jì)工程步驟如下:

(1)在窗體設(shè)計(jì)器上添加兩個(gè)文框、四個(gè)標(biāo)

簽和一個(gè)命令按鈕。

(2)設(shè)置各控件的屬性如下圖所示:

2011-7-1089

(3)編寫程序代碼

編寫單擊命令按鈕1的事件過程代碼如下

PrivateSubCommandl_Click()

DimmAsInteger,nAsInteger,rAsInteger

IfTextl.Text<0OrTextl.Text>=13Then

MsgBox”請重新輸入月份“

Textl.SetFocus

ExitSub

EndIf

m=Val(Textl.Text)

n=Val(Text2.Text)

2011-7-1090

(SelectCasem

CaseIs<=4,11,12

Ifn<20Thenr=20Elser=30

Case5,7To10

Ifn<20Thenr=5Elser=15

CaseElse

r=10

IEndSelect

Label4.Caption=,,所訂機(jī)票的優(yōu)惠率

為:”

&麗(r)&91

為了使用更方便,再增加如下代碼

PrivateSubForm_Load()

,Textl中的默認(rèn)后為當(dāng)前月份

Text1.Text=Month(Date)

EndSub

編寫Textl獲得焦點(diǎn)事件發(fā)生時(shí)的代碼

PrivateSubTextl_GotFocus()

Textl.SelStart=0

Textl.SelLength=Len(Textl.Text)

EndSub

2011-7-1092

編寫Textl_KeyPress事件發(fā)生時(shí)的代碼

PrivateSubTextl_KeyPress(KeyAsciiAsInteger)

z-IfKeyAscii=13Then

rlfText1.Text>0AndText1.Text<13Then

(yTextl.SetFocus

〔EndIf

EndIf

EndSub

2011-7-1093

編寫Text2_KeyPress事件發(fā)生時(shí)的代碼

PrivateSubText2_KeyPress(KeyAsciiAsInteger)

IfKeyAscii=13Then

rIfTextl.Text>0Then

Commandl.SetFocus

(else

Textl.SetFcous

<EndIf

EndIf

EndSub

2011-7-1094

編寫Textl獲得焦點(diǎn)事件發(fā)生時(shí)的代碼

PrivateSubText2_GotFocus()

Text2.SelStart=0

Textl.SelLength=Len(Text2.Text)

EndSub

(4)按F5鍵運(yùn)行結(jié)果,分別輸入不同的值

和運(yùn)行結(jié)果如下頁圖4-14所示。

2011-7-1095

2011-7-10圖4?1496

SuccesswithMoneyandJoy

附熠人生心語

?成功是一種觀念

?致富是一種義務(wù)

?快樂是一種權(quán)利

?每個(gè)人都有能力、有義

務(wù)、有權(quán)利辦到成功

致富快樂

附贈人生心語

成成功不是打敗別人

功成功不是超越別人

成功不是名、利、權(quán)的獲得

致?lián)碛薪】档纳眢w

豐足的物質(zhì)生活

富平衡的心理狀態(tài)

又才能擁有成功

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論