




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VisualBasic程序設(shè)計
第九講
第四章程序流程的控制
(一)
2011-7-10
1
關(guān)系表達(dá)式
布爾表達(dá)式
選擇結(jié)構(gòu)
循環(huán)結(jié)構(gòu)
常用控件的使用
2011-7-102
§4.1關(guān)系運算符和關(guān)系表達(dá)式
4.1.1關(guān)系運算符VB提供六種關(guān)系運算符
關(guā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)系運算符,v表達(dá)式2>[v關(guān)系運算符>
v表達(dá)式3>],...]
2.說明:
(1)其中〈表達(dá)式〉可為算術(shù)表達(dá)式、字符串表達(dá)式
和日期型表達(dá)式。
(2)關(guān)系表達(dá)式求值的次序是先求關(guān)系運算符兩邊
表達(dá)式的值,再求關(guān)系表達(dá)式的值。關(guān)系表達(dá)式的
值為Boolean型,只有兩個值True和False。
(3)若關(guān)系運算符兩邊為算術(shù)表達(dá)式時,則應(yīng)先計
算算術(shù)表達(dá)式的值,再進(jìn)行關(guān)系比較。
1?蜀A?1
(4)若關(guān)系運算符兩邊為字符串表達(dá)
式時,按字符串中每個字母的ASCII
碼逐一進(jìn)行比較,若比較的前幾個
字母的ASCII碼都一樣,而當(dāng)比較到
后面哪一個字母不一樣,則哪個字
母的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)系運算符兩邊為日期型表達(dá)式
時,按日期的先后次序,日期在前的值
小。
2011-7-106
例如:
#08/24/98#>#10/23/96#值為True。
#09/13/00#<#09/12/99#值為False。
3.注意:
因為浮點數(shù)在計算機(jī)內(nèi)不能精確表示,
所以在VB中不能用“=”來比較兩個單精度
或雙精度數(shù)的浮點數(shù)。
例如:
5.0*4.0=20.0在數(shù)學(xué)上是成立的,而
在VB中其值可能為False。若需要比較兩個
浮點數(shù)時,則應(yīng)寫成下列形式:
Abs(5.0*4.0-x)<=le-5若(5.0*4.0-x)的絕
款值小于等于le?5時,則認(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布爾運算符和布爾表達(dá)式
對于不能用關(guān)系表達(dá)式表示的較復(fù)雜
的條件可用布爾表達(dá)式來表示。如上面提
判的數(shù)學(xué)不等式lOvxO,在VB中,應(yīng)表
示成x>10Andx<=20o
4.2.1布爾運算符和布爾表達(dá)式
1.布爾運算符。
VB中共有六種布爾運算符,它們是:
And、Or、Not、Xor>Eqv和Imp。
2011-7-109
表4?2布爾運算符
布爾運算符物理意義舉例說明
And邏輯與運算2<3And5>3與運算兩邊的表達(dá)式都為真
值為True時結(jié)果為真,否則為假。
Or邏輯或運算Or5>0或運算兩邊的表達(dá)式只要有一
值為True個為真,結(jié)果就為真(True)
兩邊都為假時結(jié)果才為假。
Not邏輯非運算Notx>=6非運算對表達(dá)式的值取反。
Xor邏輯異或運算"a''v"b"Xor5<0異或運算兩邊表達(dá)式的值不
值為True同,則結(jié)果為真,相等時結(jié)
果為假。
Eqv邏輯等運算3<2Eqv(3-邏輯等運算兩邊表達(dá)式的值
l)<0相同,則結(jié)果為真,不相同
值為True時,結(jié)果為假。
2011-7-1010
表4?2布爾運算符(續(xù))
布爾運算符物理意義舉例說明
Imp邏輯隱含運3<2Imp3>0邏輯隱含運算第一個表達(dá)式
算值為True的值為假(False)則第二個
3<2Imp5<2表達(dá)式不論值為什么值,結(jié)果
值為True都為真(True)
3>0Imp2>0若第一個表達(dá)式值為真,則
值為True第二表達(dá)式為真時結(jié)果為真。
5>3Imp3<2為假時結(jié)果為假。
值為False
11
表4-3布爾運算真值表
abaAndbaOrbNotaaXorbaEqvb
TrueTrueTrueTrueFalseFalseTrue
TrueFalseFalseTrueFalseTrueFalse
FalseTrueFalseTrueTrueTrueFalse
FalseFalseFalseFalseTrueFalseTrue
2011-7-1012
422VB運算符的優(yōu)先級
VB運算符的優(yōu)先級:
算術(shù)運算符運算級最高,關(guān)系運算符次
之,布爾運算符優(yōu)先級別最低。
在算術(shù)運算符中,括號最優(yōu)先,其它優(yōu)
先次序依次是函數(shù)、乘方(人)、乘或除(*
或/)、整除(\)、求余(Mod)、加加減
(+或?)O
在關(guān)系運算符中,六個運算符的級別相
同。
在布爾運算符中最常用的三個布爾運算
符中,Not最高,And次之,Or最低。
1??>1
表4.4VB運算符的優(yōu)先級
運算優(yōu)先級運算符運算符類型
1A(乘方運算)
2-(求負(fù)數(shù))
算術(shù)運算符
3*或/(乘或除)
4\(整除)
5Mod(求余數(shù))
6+或-(加或減)
7&(字符串連接運算)字符串運算符
8<=或<或>=或>或=或<>關(guān)系運算符
9Not(非運算)布爾運算符
10And(與運算)
用11-7-1014
Or(或運算)
已知:a=3.5,b=5.0,c=2.5,d=1.0則
下列表達(dá)式的運算次序為:
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)時應(yīng)先計算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時,則
條件表達(dá)式的值為真,數(shù)值表達(dá)式的值為0
時條件表達(dá)式的值為假。
(4)第一種形式的If結(jié)構(gòu),沒有配對的End
If語句;若Then后面的語句組1省略,則必
須有Else語句及其后的語句組2;若Else語
句省略,則語句組1是必選項。第二種If結(jié)
構(gòu)必須有配對的結(jié)束語句EndIf,不能省
略。其Then后面的兩個可選項也必須選其
中之一。
2011-7-1018
【例4?1】計算分段函數(shù):
Y=l+x(x口0)
LY=l+2*x(x<0)
工程設(shè)計步驟如下:
(1)啟動VB后選“新建工程”的“標(biāo)準(zhǔn)
EXE”出現(xiàn)一個窗體,在此窗體上添加一
個標(biāo)簽控件一個文本框和二個命令按鈕如
下頁圖4?1左圖所不。
(2)設(shè)置窗體及各控件的屬性如下頁圖4-1
右圖所不。
2011-7-10IDI'Z19
圖4-1計算分段函數(shù)的界面設(shè)計及屬性設(shè)置
2011-7-1020
(3)編寫代碼如下:
編寫單擊“計算函數(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)運行結(jié)果。按工具欄上的執(zhí)行按
鈕出現(xiàn)如圖4?1右圖所示的界面。單
擊“計算函數(shù)的值”按鈕出現(xiàn)輸入對
話框如圖4?2左圖所示,輸入數(shù)值后,
出現(xiàn)最后的結(jié)果如圖4?2右圖所示。
2011-7-1022
分科的州的值
函數(shù)值Y=
圖4?2計算分段函數(shù)的運行結(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的值為真時
語句組2執(zhí)行的語句
組。
EndIf]
2011-7-10
4.3.2嵌套的If語句
Else
[Ifv條件表達(dá)式3>
Then
當(dāng)表達(dá)式1
語句組3的值為假時
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】簡單密碼驗證程序。
工程設(shè)計步驟如下:
(1)在窗體上添加二個個標(biāo)簽控件、一個
文本框控件和二個命
令按鈕。
如圖4-3所示。
(2)設(shè)置窗體與各控
件的屬性如表4?5所示。
圖4-3
2011-7-1027
表4?5簡單密碼驗證程序中窗休及各控件的屬性的設(shè)
置
對象屬性屬性值說明
FormlCaption簡單密碼驗證程標(biāo)題
序
Label1Caption空用作輸出
AutosizeTrue自動調(diào)節(jié)尺寸以適應(yīng)內(nèi)
容
Backcolor白色設(shè)背景色為白色
BorderStyle1-FixedSingle有邊框,邊框為凹形的
BackStyle1-Opaque
-H行二16一28
表4-5簡單密碼驗證程序中窗休及各控件的屬性的設(shè)置(續(xù))
對象屬性屬性值說明
Label2Caption請輸入密碼:
AutosizeFalse不能自動調(diào)節(jié)尺寸
BorderStyle0-None沒有邊框
Command1Caption確定標(biāo)題
Command2Caption退出標(biāo)題
TextlText空用于用戶輸入密碼
Passwordchar*輸入密碼時顯示的字符
2011-7-1029
判斷密碼程序N-S結(jié)構(gòu)化流程圖
2011-7-1030
在窗體的聲
明段中聲明
(3)代碼編寫如下的變量在窗
DimPassAsString體的各個模
塊都起作用
DimintDAsInteger
編寫單擊命令按鈕“確定”所執(zhí)行的代碼。
PrivateSubCommandl_Click()
IfTextl.Text=PassThen
intD=3
Labell.Caption="密碼正確,_
可以進(jìn)入系統(tǒng)!”
Else
2011-7-1031
intD=intD-1
MsgBox”密碼錯誤!”
IfintD=0ThenEnd,行IF結(jié)構(gòu)
Labell.Caption="仔細(xì)想想,還有“
&_
Str(intD)&"次!”
Textl.SetFocus
使文本框重
EndIf薪獲得焦點
EndSub
2011-7-1032
編寫單擊命令按鈕“退出”所執(zhí)行的代碼。
PrivateSubCommand2_Click()
End
EndSub
編寫窗體的Form_Load()事件所執(zhí)行的代碼。
PrivateSubForm_Load()
Pass=''Hello''
intD=3
EndSub
2011-7-1033
(4)按F5鍵運行工程,在文本框中輸入密
碼后,單擊“確定”按鈕。若密碼輸入正確,
則在框中顯示“密碼正確,可以進(jìn)入系
統(tǒng)!”。
若密碼錯誤則信息
輸出框顯示密碼錯
誤,按“確定”按鈕
后出現(xiàn)提示允許再
輸入兩次。
結(jié)果如圖4-4和
圖4-5所示。
圖4-4密碼正確顯示結(jié)果
2011-7-1034
圖46密碼錯誤信息輸出框顯示密碼錯誤,
并且提示允許再輸入兩次
2011-7-1035
【例4?3】求平均值和最小數(shù)。
設(shè)計工程界面如圖4-6左圖所示。
界面上有三個文本框,三個標(biāo)簽和四個命令
按鈕。
圖4-6求最小數(shù)和平均數(shù)工程界面的設(shè)置
2011-7-1036
該工程要求:
(1)在“輸入數(shù)據(jù):”文本框的下面輸
入數(shù)據(jù),按回車鍵或者單擊“確定”按
鈕,輸入的數(shù)據(jù)就顯示在“數(shù)據(jù)列表:”
下面的文本框中。如果輸入的不是數(shù)據(jù),
則給出提示"請輸入數(shù)字J
(2)單擊“統(tǒng)計”按鈕在“輸出結(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/輸出的文本框
中同時保存在
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)計”按鈕所執(zhí)行的代碼
PrivateSubCommand2_Click()
DimsiAsString,s2AsString」
s3AsString,hhAsString
<Ifn=0Then
MsgBox”無有效的輸入數(shù)據(jù)!”
ExitSub若n=0則表示沒有
〔EndIf輸入數(shù)字。在消
息框中提示:無
有效的輸入數(shù)據(jù)!
2011-7-1043
si="共計"&Str(n)&"個數(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ā)生時事件執(zhí)行的代碼
PrivateSubForm_Activate()
n=0:Sum=0
Textln.SetFocus
EndSub
編寫單擊“退出”按鈕所執(zhí)行的代碼
PrivateSubCommand3_Click()
End
EndSub
2011-7-1046
(4)運行結(jié)果。按F5鍵運行工程,
在出現(xiàn)的畫面中“輸入數(shù)據(jù)”下面
的文本框中輸入數(shù)據(jù),每輸入1個數(shù)
據(jù)接著按“確定”按鈕,被輸入的
數(shù)據(jù)就在“數(shù)據(jù)列表”下面的文本
框中顯示出來,輸入完數(shù)據(jù)后單擊
“統(tǒng)計”按鈕,就在“輸出結(jié)果”
下面的文本框中顯示出結(jié)果如圖4?7
所示。
2011-7-1047
圖4?7求最小數(shù)和平均數(shù)工程運行結(jié)果
2011-7-1048
4.3.3Ilf函數(shù)
VB中還提供Hf函數(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á)式的值為真時,執(zhí)行語
句1;為假時,執(zhí)行語句2。當(dāng)選擇結(jié)構(gòu)中
無論v條件表達(dá)式〉的值為真還是假,都只
執(zhí)行一個語句時可使用IIF函數(shù)。
2011-7-1049
語句:
y=IIf(v條件表達(dá)式>,V語句1>,<語句2>)
相當(dāng)于:
Ifv條件表達(dá)式>Thenv語句1>Elsev語句2>
例44中計算分段函數(shù)完全可以使用IIF函
數(shù)編寫。其中的If…Else結(jié)構(gòu)可用如下代碼
替換即可,其運行結(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語句是可選項。
(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結(jié)構(gòu)中根據(jù)需要可以
有多個Elself語句,但最多只能有一個
Eke語句,使用時一定要注意。
2011-7-1054
【例4?4】某商場對顧客購物實行打折銷售。規(guī)定
如下:
購物款v500元沒有折扣
500元v購物款01000元折扣5%
1000元v購物款01500元折扣8%
1500元v購物款02000元折扣10%
2000元v購物款02500元折扣15%
購物款>2500元折扣20%
設(shè)計工程,當(dāng)輸入購物款時按“計算”按鈕
就可以輸出折扣后應(yīng)交的實際購物款。
2011-7-1055
工程設(shè)計步驟如下:
(1)新建“標(biāo)準(zhǔn)EXE”工程,在出現(xiàn)的窗
體上添加兩個標(biāo)簽、兩個文本框和兩個
命令按鈕,如函令8所示。
(2)設(shè)置窗體和控件的屬性如圖4?8所示。
2011-7-10圖4?8購物打折銷售計算應(yīng)付款工程的界面設(shè)置56
(3)編寫代碼如下:
編寫單擊“計算”按鈕應(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=''實際交款:n&y&八元"
EndSub
2011-7-1058
編寫單擊“清除”按鈕執(zhí)行下列代碼。
PrivateSubCommand2click()
Text1.Text=
Textl.Text=
EndSub
(4)運行工程。按F5運行工程,出現(xiàn)運行
畫面后,在“請輸入購物款”的右邊的文
本框中輸入實際購物款,然后單擊“計算”
得到實際應(yīng)付款數(shù)顯示在第二個文本框中
如圖4?9所示。
2011-7-1059
圖4?9計算“實際應(yīng)付款數(shù)”工程運行結(jié)果
2011-7-1060
【例4?5】設(shè)計一個流動字幕,如圖4?10所示。
工程設(shè)計步驟如下:
(1)新建“標(biāo)準(zhǔn)EXE”工程,在出現(xiàn)的窗體上
添加一個命令按鈕、一個標(biāo)簽和一個計時器
設(shè)計界面如圖4?10所示。
(2)設(shè)置窗體及控件的屬性如圖4?10所示。
其中計時器的Interval屬性設(shè)置為10,Enable
設(shè)為False。注意此時的命令按鈕“開始”上
有一個熱鍵S,是在給命令按鈕設(shè)置Caption
屬性時加上的只要在選中的字母前面加上一
個符號即可。
2011-7-1061
圖4?10設(shè)計一個流動字幕工程界面及屬性設(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)運行程序。單擊“開始”命令按
鈕,則字幕開始從右向左移動,直到
在左邊消失,然后接著又從右邊開始
向左邊移動。此時單擊“暫?!卑粹o,
則字幕停止移動。若想繼續(xù)移動字幕,
再單擊“繼續(xù)”按鈕。請注意該程序
中只有一個命令按鈕就可以控制各種
情況。如開始、暫停和繼續(xù)。
2011-7-1065
圖4-11流動字幕工程運行結(jié)果
2011-7-1066
【例4-6】求一元二次方程的根。
分析:一元二次方程的根,有以下幾種情況:
(1)當(dāng)a#)時,設(shè)delta=b?-4ac。
當(dāng)判別式delta>0時,方程有兩個不同的實根;
當(dāng)判別式delta=0時,方程有兩個相同的實根;
當(dāng)判別式deltav0時,方程有兩個共甄復(fù)根。
(2)當(dāng)a=0,若b和時,則方程有一個根。
當(dāng)a=0,若b=0時,則方程無意義。
2011-7-1067
工程設(shè)計步驟如下:
(1)新建“標(biāo)準(zhǔn)EXE”工程。在出現(xiàn)的窗體
上添加兩個框架、五個標(biāo)簽、三個文本框
和兩個命令按鈕,其中框架1中包括三個文
本框和三個標(biāo)簽,框架2中包括一個標(biāo)簽,
如圖4-12所示。
(2)設(shè)置窗體及控件的屬性如圖4?12所示。
2011-7-1068
圖4-12求方程的根工程界面設(shè)計和屬性設(shè)置
2011-7-1069
(3)編寫代碼如下:
編寫單擊“計算方程根”命令按鈕所執(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="方程有兩個實根"
pl="xl="&Str(rc+sb)
p2="x2="&Str(rc-sb)
Labell.Caption=pl&Chr(13)&p2
2011-7-1071
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-7-1073
編寫單擊“退出”命令按鈕所執(zhí)行的代碼
PrivateSubCommand2_Click()
End
EndSub
(4)運行程序。在出現(xiàn)的界面上。根據(jù)提
示,首先在三個文本框中輸入一元二次
方程的三個系數(shù)。然后單擊Commandl
命令按鈕”計算方程根”就可得到相應(yīng)
方程的根如圖4-13所示。
2011-7-1074
圖4-13求一元二次方程根的工程運行結(jié)果
4.3.5fflSelectCase語句實現(xiàn)多分支選擇結(jié)構(gòu)
2011-7-1075
VB中還提供SelectCase語句用來實現(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á)式〉為必選項,用來指出被選
擇的表達(dá)式或變量名。可以是任何數(shù)值和字
符串表達(dá)式。
(2)在Case子句中,v表達(dá)式列表,為必選參
數(shù),用來測試是否有與選擇表達(dá)式匹配的表
達(dá)式或變量名,它必須是常量而且必須與選
擇表達(dá)式或變量的類型一致。
(3)在Case子句中,v表達(dá)式列表,可以是一
個或多個表達(dá)式的值,如表4?7所示。
2011-7-1078
表4-7Case表達(dá)式列表的形式
形式示例說明
表達(dá)式Case50*b數(shù)值和字符串表達(dá)式
表達(dá)式To表達(dá)式Case1To10用來指定1個數(shù)值范圍。
Case“a'To"m"
Is關(guān)系表達(dá)式CaseIs>200可以配合比較運算符來
CaseIs<=5,8,20指定1個數(shù)值范圍。這里
Is是關(guān)鍵字。
2011-7-1079
(4)當(dāng)使用多個表達(dá)式列表時,表達(dá)式各
項之間應(yīng)用逗號“,”隔開。
(5)〈語句組〉是一條或多條語句為可選參
數(shù),當(dāng)v表達(dá)式列表,中有值與〈選擇表達(dá)
式》相匹配時執(zhí)行。
(6)CaseElse語句用于指明其他語句序列,
當(dāng)v選擇表達(dá)式〉與所有的Case子句中v表
達(dá)式列表》中的值都不匹配時,執(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子句的寫法是不正確的,程
序運行時并不發(fā)生錯誤,但是運行結(jié)果并
不是所預(yù)料的,應(yīng)避免此類寫法。
Dimx
SelectCasex
Casex=l
Casex="a”
Casex>12Andx<=20
EndSelect
2011-7-1082
【例4?7】例4?4題中計算打折銷售款的
程序也可用SelectCase結(jié)構(gòu)編寫,具體
程序代碼如下所示。
編寫單擊Commandl命令按鈕“計算”
執(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=''實際交款:"&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張票價優(yōu)惠
15%,20張以下,優(yōu)惠5%;在旅游的淡
季1?4月份,11月份,12月份,如果訂票
數(shù)超過20張,票價優(yōu)惠30%,20張以下,
優(yōu)惠20%;其他情況一律優(yōu)惠10%。
設(shè)計程序,根據(jù)月份和訂票數(shù)決定票價優(yōu)
惠率。
分析:根據(jù)題意,畫出流程圖如下頁所示。
2011-7-1087
2011-7-1088
設(shè)計工程步驟如下:
(1)在窗體設(shè)計器上添加兩個文框、四個標(biāo)
簽和一個命令按鈕。
(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獲得焦點事件發(fā)生時的代碼
PrivateSubTextl_GotFocus()
Textl.SelStart=0
Textl.SelLength=Len(Textl.Text)
EndSub
2011-7-1092
編寫Textl_KeyPress事件發(fā)生時的代碼
PrivateSubTextl_KeyPress(KeyAsciiAsInteger)
z-IfKeyAscii=13Then
rlfText1.Text>0AndText1.Text<13Then
(yTextl.SetFocus
〔EndIf
EndIf
EndSub
2011-7-1093
編寫Text2_KeyPress事件發(fā)生時的代碼
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
rIfTextl.Text>0Then
Commandl.SetFocus
(else
Textl.SetFcous
<EndIf
EndIf
EndSub
2011-7-1094
編寫Textl獲得焦點事件發(fā)生時的代碼
PrivateSubText2_GotFocus()
Text2.SelStart=0
Textl.SelLength=Len(Text2.Text)
EndSub
(4)按F5鍵運行結(jié)果,分別輸入不同的值
和運行結(jié)果如下頁圖4-14所示。
2011-7-1095
2011-7-10圖4?1496
SuccesswithMoneyandJoy
附熠人生心語
?成功是一種觀念
?致富是一種義務(wù)
?快樂是一種權(quán)利
?每個人都有能力、有義
務(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年重慶危險品從業(yè)資格證題庫有多少題目
- 2025年出版物發(fā)行零售項目發(fā)展計劃
- 公文寫作與處理考試中的備考策略總結(jié)
- 城市社區(qū)共享服務(wù)協(xié)議
- 教育培訓(xùn)行業(yè)教師資質(zhì)證明書(6篇)
- 2025年公文寫作的框架及試題答案
- 物流行業(yè)員工收入及獎金證明(6篇)
- 行政管理的決策支持系統(tǒng)及試題及答案
- 2025企業(yè)云端存儲服務(wù)合同
- 2025關(guān)于設(shè)備采購合同補充的合同協(xié)議范本
- 2025高考化學(xué)復(fù)習(xí)新題速遞之有機(jī)合成(解答大題)(2025年4月)
- 駕校掛靠合同協(xié)議書
- 2025年福建武夷旅游集團(tuán)有限公司人才教育板塊自主招聘17人筆試參考題庫附帶答案詳解
- 2025-2030中國面粉行業(yè)市場深度調(diào)研及前景趨勢與投資研究報告
- 民法典進(jìn)企業(yè)講稿課件
- 河道管理條例試題及答案
- 2025年計算機(jī)編程能力測試試卷及答案
- 2025屆廣東省佛山市高三下學(xué)期教學(xué)質(zhì)量檢測(二)物理試題及答案
- 2025年四川省成都市成華區(qū)中考二診英語試題(原卷版+解析版)
- 中暑及熱射病防治
- 2025第十三屆貴州人才博覽會遵義市事業(yè)單位人才引進(jìn)47人筆試備考試題及答案解析
評論
0/150
提交評論