計(jì)算機(jī)vb二級 第4章 VB程序設(shè)計(jì)基礎(chǔ)(分支結(jié)構(gòu))_第1頁
計(jì)算機(jī)vb二級 第4章 VB程序設(shè)計(jì)基礎(chǔ)(分支結(jié)構(gòu))_第2頁
計(jì)算機(jī)vb二級 第4章 VB程序設(shè)計(jì)基礎(chǔ)(分支結(jié)構(gòu))_第3頁
計(jì)算機(jī)vb二級 第4章 VB程序設(shè)計(jì)基礎(chǔ)(分支結(jié)構(gòu))_第4頁
計(jì)算機(jī)vb二級 第4章 VB程序設(shè)計(jì)基礎(chǔ)(分支結(jié)構(gòu))_第5頁
已閱讀5頁,還剩101頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第4章VB程序設(shè)計(jì)基礎(chǔ)4.1VB的程序語句4.2順序結(jié)構(gòu)4.3選擇(分支)結(jié)構(gòu)4.4循環(huán)結(jié)構(gòu)4.5其它控制語句4.6綜合應(yīng)用4.3選擇結(jié)構(gòu)

問題:順序結(jié)構(gòu)程序設(shè)計(jì)我們做過求三角形面積的程序,但是該程序不完善----程序不能處理當(dāng)輸入的三條邊邊長構(gòu)不成三角形的情況,會(huì)出錯(cuò)解決該問題需要用到選擇結(jié)構(gòu)的程序設(shè)計(jì)計(jì)算三角形面積:輸入3條邊長,按照t=(a+b+c)/2,s=PrivateSubCommand1_Click()Dima!,b!,c!,t!,s!a=Val(InputBox("輸入邊長a:"))b=Val(InputBox("輸入邊長b:"))c=Val(InputBox("輸入邊長c:"))t=(a+b+c)/2s=Sqr(t*(t-a)*(t-b)*(t-c))Form1.Print"三角形的三條邊分別為:",a,b,cForm1.Print"三角形的面積為:",sEndSub注意:輸入的數(shù)據(jù)必須滿足任意兩條邊長之和大于第三條邊。4.3選擇結(jié)構(gòu)

4.3.1IF語句4.3.2SelectCase語句4.2.3條件函數(shù)4.2.4分支語句的嵌套VB中提供了多種形式的條件語句來實(shí)現(xiàn)選擇結(jié)構(gòu)。4.3選擇結(jié)構(gòu)

4.3.1IF語句4.3.2SelectCase語句4.2.3條件函數(shù)4.2.4分支語句的嵌套單分支結(jié)構(gòu):

If…Then

語句2.雙分支結(jié)構(gòu):

If…Then…Else語句3.多分支結(jié)構(gòu)----If…Then…ElseIf

語句

4.3.1If條件語句

1.單分支結(jié)構(gòu):If…Then

語句

格式1:If<表達(dá)式>Then

語句塊

EndIf說明:語句塊(可以是一句或多句語句)格式2:If<表達(dá)式>Then<語句>說明:

<語句>只能是一句語句或語句間用冒號分隔,而且必須在一行上書寫。作用:當(dāng)表達(dá)式的值為True,執(zhí)行Then后面的語句塊,否則不做任何操作。

計(jì)算三角形面積:輸入3條邊長,按照以下公式求三角形面積,在窗體上輸出。t=(a+b+c)/2,s=要求用IF語句控制程序必須輸入的3個(gè)數(shù)據(jù)滿足任意2個(gè)之和大于第3個(gè)才進(jìn)行面積的計(jì)算,否則不計(jì)算,要求重新輸入單分支結(jié)構(gòu)舉例1計(jì)算三角形面積PrivateSubCommand1_Click()Dima!,b!,c!,t!,s!a=Val(InputBox("輸入邊長a:"))b=Val(InputBox("輸入邊長b:"))c=Val(InputBox("輸入邊長c:"))If

(a+b)<cOr(b+c)<aOr(a+c)<bThen

MsgBox"輸入的數(shù)據(jù)構(gòu)不成三角形!請重新輸入!"a=Val(InputBox("輸入邊長a:"))b=Val(InputBox("輸入邊長b:"))c=Val(InputBox("輸入邊長c:"))EndIft=(a+b+c)/2s=Sqr(t*(t-a)*(t-b)*(t-c))Form1.Print"三角形的三條邊分別為:",a,b,cForm1.Print"三角形的面積為:",sEndSub用IF語句控制程序必須輸入的3個(gè)數(shù)據(jù)滿足任意2個(gè)之和大于第3個(gè)才進(jìn)行面積的計(jì)算,否則不計(jì)算,要求重新輸入注意:縮進(jìn)格式例:成績有效性檢驗(yàn)。單分支實(shí)例2文本框數(shù)據(jù)有效性檢驗(yàn)

設(shè)計(jì)如圖所示求平均成績的程序。要求利用文本框的LostFocus事件檢驗(yàn)數(shù)據(jù),保證輸入的數(shù)據(jù)在0-100之間,如不在此范圍內(nèi),顯示如圖所示的對話框,重新輸入。Text1.Text=""Text2.Text=""Text3.Text=""EndDimcj1%,cj2%cj1=Val(Text1.Text)cj2=Val(Text2.Text)Text3.Text=(cj1+cj2)/2例:成績數(shù)據(jù)有效性檢驗(yàn)。利用文本框的LostFocus事件檢驗(yàn)數(shù)據(jù)Private

SubText1_LostFocus()Dimx!x=Val(Text1.Text)

Ifx>100Orx<0Then

MsgBox"成績數(shù)據(jù)超界(只能為0-100),重新輸入"Text1.Text=""Text1.SetFocus

EndIfEndSub

讓焦點(diǎn)不離開text1單分支實(shí)例2文本框數(shù)據(jù)有效性檢驗(yàn)PrivateSubText1_LostFocus()

Dimx!x=Val(Text1.Text)Ifx>100Orx<0Then

MsgBox"成績數(shù)據(jù)超界(只能為0-100),重新輸入"Text1.Text=""Text1.SetFocusEndIfEndSubPrivateSubText2_LostFocus()

Dimx!x=Val(Text2.Text)Ifx>100Orx<0Then

MsgBox"成績數(shù)據(jù)超界(只能為0-100),重新輸入"Text2.Text=""Text2.SetFocusEndIfEndSub格式1

If<表達(dá)式>

Then

語句Else

語句塊2EndIf(簡化)格式2

If

表達(dá)式

Then

語句1Else

語句2作用:當(dāng)表達(dá)式的值為True時(shí),執(zhí)行Then后面的語句塊1,否則執(zhí)行Else后面的語句塊。2.雙分支結(jié)構(gòu)----If…Then…Else語句雙分支結(jié)構(gòu)舉例1從鍵盤輸入一考生成績,存入變量mark中,假設(shè)錄取線為580,判斷是否通過了考試,要求結(jié)果在窗體上輸出.

Dimmark%,Str$mark=val(InputBox(“輸入成績”))ifmark>=580then

str="通過!"ELSE

str="未通過"EndifForm1.PrintStrifmark>=580then

str="通過!"Else

str="未通過"從鍵盤輸入一個(gè)整型數(shù),存入x中,求出它的絕對值,所求結(jié)果存入y中,最后用msgbox過程顯示結(jié)果。(要求不要直接用VB函數(shù)求,自己編寫程序求)

Dimx%,y%從鍵盤輸入x的值如果小于0,那么

y=-x否則

y=x輸出y的值實(shí)驗(yàn)第1題:雙分支練習(xí)例:從鍵盤輸入一個(gè)整型數(shù),存入x中,求出它的絕對值,所求結(jié)果存入y中,最后用msgbox過程顯示結(jié)果。(要求不要直接用VB函數(shù)求,自己編寫程序求)

Dimx%,y%x=InputBox("Inputx:")Ifx<0Theny=-xElse y=xEndIfMsgBox"x的絕對值="&y實(shí)驗(yàn)第1題:雙分支練習(xí)例:思考:從鍵盤輸入一個(gè)數(shù),存入x中,求出它的絕對值,所求結(jié)果存入y中,最后用msgbox過程顯示結(jié)果。(要求不用函數(shù)),如何用單分支解決?求絕對值,也可用單分支實(shí)現(xiàn)Dimx!,y!x=val(InputBox("Inputx:"))y=xIfx<0Theny=-xEndIfMsgBox"x的絕對值=“&y用單分支實(shí)現(xiàn)求絕對值問題雙分支實(shí)例2----能進(jìn)行加、減運(yùn)算的計(jì)算器實(shí)例多功能計(jì)算器,可實(shí)現(xiàn)加,減計(jì)算,但具體是加還是減只能在程序運(yùn)行時(shí)由用戶決定,編程時(shí)并不知道。實(shí)例多功能計(jì)算器,可實(shí)現(xiàn)加,減計(jì)算

Dimn1AsSingle,n2AsSingle'原始變量

Dimn3AsSingle'結(jié)果變量

DimysfAsString*1'控制變量

n1=Val(Text1.Text):n2=Val(Text3.Text)

ysf=Text2.Text

Ifysf="+"Thenn3=n1+n2Elsen3=n1–n2EndifText4.Text=n3雙分支實(shí)例2----能進(jìn)行加、減運(yùn)算的計(jì)算器實(shí)驗(yàn)第2題:雙分支練習(xí)例:設(shè)計(jì)如圖所示能進(jìn)行加減運(yùn)算的計(jì)算器。程序運(yùn)行時(shí)界面如圖:雙分支結(jié)構(gòu)舉例3實(shí)例從鍵盤輸入兩個(gè)數(shù)a,b,用下列信息框顯示a/b的值。

PrivateSubCommand1_Click()Dima%,b%,c!a=Val(InputBox("輸入被除數(shù)a:"))b=Val(InputBox("輸入除數(shù)b(注意不能為0):"))c=a/bMsgBox"a/b="&c,0+48,"計(jì)算結(jié)果"EndSub以下2句等價(jià):MsgBox"a/b="&c,0+48,"計(jì)算結(jié)果“MsgBoxa&"/"&b&"="&c,vbOKOnly+vbInformation,"計(jì)算結(jié)果"實(shí)例同前題。但要求在輸入除數(shù)b時(shí)由程序判斷b是否為0:如不為0,計(jì)算2個(gè)數(shù)相除的值,輸出結(jié)果;如b=0,則要顯示如圖出錯(cuò)信息框,然后詢問是否繼續(xù)計(jì)算,如選否,則結(jié)束程序運(yùn)行;如選是,則可繼續(xù)計(jì)算。

雙分支結(jié)構(gòu)舉例3—功能擴(kuò)展雙分支實(shí)例3Dima!,b!,c!a=val(InputBox("請輸入第一個(gè)數(shù)a","輸入"))b=val(InputBox("請輸入第二個(gè)數(shù)b","輸入"))Ifb<>0Thenc=a/b

MsgBox"a/b="&c,vbInformation,"計(jì)算結(jié)果"Else

MsgBox"除數(shù)不能為0!",vbExclamation,"錯(cuò)誤"EndIfDimi%i=MsgBox("繼續(xù)計(jì)算嗎?",vbYesNo+vbQuestion,"詢問")Ifi=vbNoThenEndEndIf等價(jià)于:Ifi=7Then復(fù)習(xí):MsgBox函數(shù)的使用形式:

變量[%]=MsgBox(提示信息[,按鈕值][,對話框標(biāo)題])MsgBox函數(shù)所選按鈕返回值

內(nèi)部常數(shù)返回值被單擊的按鈕vbOk1確定vbCancel2取消vbAbort3終止vbRetry4重試vbIgnore5忽略vbYes6是vbNo7否復(fù)習(xí):MsgBox按鈕設(shè)置第3個(gè)按鈕為默認(rèn)512VBDefaultButton3第2個(gè)按鈕為默認(rèn)

56VBDefaultButton2第1個(gè)按鈕為默認(rèn)

0VBDefaultButton1默認(rèn)按鈕

信息圖標(biāo)

64VBInformation警告信息圖標(biāo)

48VBExclamation詢問信息圖標(biāo)

32VBQuestion關(guān)鍵信息圖標(biāo)

16VBCritical圖標(biāo)類型

重試、取消按鈕

5VBRetryCancel是、否按鈕

4VBYesNo是、否、取消按鈕

3VBYesNoCancel終止、重試、忽略按鈕

2VBAbortRetryIgnore確定、取消按鈕

1VBOkCancel確定按鈕(缺省)

0VBOkOnly按鈕數(shù)目描述值內(nèi)部常數(shù)分組問題:使用雙分支可以解決2個(gè)分支的問題----當(dāng)運(yùn)算符為+怎么辦?當(dāng)運(yùn)算符為-怎么辦?現(xiàn)在要求編寫具有+,-,*,/四種運(yùn)算的計(jì)算器,怎么辦?4分支問題現(xiàn)實(shí)生活中經(jīng)常要解決多分支問題使用多分支結(jié)構(gòu)!

3.多分支結(jié)構(gòu)引言格式:

If表達(dá)式1Then

語句塊1ElseIf

表達(dá)式2Then

語句塊2 …

[Else

語句塊n+1]

EndIf作用:根據(jù)不同表達(dá)式的值決定執(zhí)行哪個(gè)語句塊3.多分支結(jié)構(gòu)----If…Then…ElseIf

語句

多分支實(shí)例1多功能計(jì)算器可實(shí)現(xiàn)加,減,乘,除計(jì)算多分支實(shí)例多功能計(jì)算器實(shí)現(xiàn)加,減,乘,除計(jì)算,大致程序如下:

...............Ifysf="+"Thenn3=n1+n2

ElseIf

ysf="-"Thenn3=n1-n2

ElseIf

ysf="*"Thenn3=n1*n2Elsen3=n1/n2EndIfText4.Text=n3

思考:如何排除運(yùn)算符輸入錯(cuò)?多分支實(shí)例多功能計(jì)算器

Ifysf="+"Thenn3=n1+n2

ElseIf

ysf="-"Thenn3=n1-n2

ElseIf

ysf="*"Thenn3=n1*n2

ElseIf

ysf="/"n3=n1/n2Else

MsgBox"運(yùn)算符錯(cuò)誤!",vbExclamation,"錯(cuò)誤"

EndIfText4.Text=n3

排除運(yùn)算符輸入錯(cuò)將前面所做加減法運(yùn)算器程序修改為能進(jìn)行加減乘除四種運(yùn)算的程序課堂練習(xí):多分支練習(xí)Dimn1AsSingle,n2AsSingleDimn3AsSingleDimysfAsString*1n1=Val(Text1.Text):

n2=Val(Text3.Text)

ysf=Text2.Text

Ifysf="+"Thenn3=n1+n2

ElseIf

ysf="-"Thenn3=n1-n2

ElseIf

ysf="*"Thenn3=n1*n2

ElseIf

ysf="/"Thenn3=n1/n2Else

MsgBox"運(yùn)算符錯(cuò)誤!",vbExclamation,"錯(cuò)誤"EndIfText4.Text=n3實(shí)現(xiàn)加,減,乘,除計(jì)算程序,計(jì)算按鈕的單擊事件:編寫程序:輸入x的值,求y的值,將x,y在窗體上輸出。

3xx>0Y=0x=0x2x<0課堂練習(xí):多分支練習(xí)例:PrivateSubCommand1_Click()Dimx!,y!x=val(Text1.Text)Ifx>0Theny=3*xElseIfx=0Theny=0Elsey=x^2EndIfText2.Text=yEndSub判斷輸入字符的類型:從鍵盤輸入一個(gè)字符,判斷該字符是字母字符、數(shù)字字符還是其他字符,結(jié)果用信息框輸出。多分支結(jié)構(gòu)例2例

判斷輸入字符的類型多分支結(jié)構(gòu)例預(yù)備知識:判斷數(shù)值變量n在兩數(shù)范圍之內(nèi)(比如0---100)Ifn>=0Andn<=100then.........Endif

注意:不能寫成100<=n<=200判斷數(shù)值變量n不在兩數(shù)范圍之內(nèi)(超出范圍)Ifn<0Orn>100then.............例4.7判斷輸入字符的類型多分支結(jié)構(gòu)例預(yù)備知識:判斷字符變量ch在兩字符范圍之內(nèi)(比如"A"---"Z")Ifch>="A"And

ch<="Z"then……Endif

注意:不能寫成"A"<=ch<="Z"

American

StandardCodeforInformationInterchange

美國標(biāo)準(zhǔn)信息交換代碼

標(biāo)準(zhǔn)ASCII碼:用一個(gè)字節(jié)(8位)表示一個(gè)字符,并規(guī)定其最高位為0,實(shí)際只用到7位,因此可表示27=128

個(gè)不同字符。它包括英文大小寫字母52個(gè),0~9共10個(gè)數(shù)字,標(biāo)點(diǎn)符號、運(yùn)算符號和控制命令符號等。ASCII碼表的規(guī)律:數(shù)字、大寫字母、小寫字母的ASCII碼相鄰,后面的比前面大1。同一個(gè)字母的ASCII碼值小寫比大寫字母大32。

相關(guān)知識復(fù)習(xí):字符編碼——ASCII碼A的ASCII碼為01000001B=65Da的ASCII碼為01100001B=97D例4.7

判斷輸入字符的類型:從鍵盤輸入一個(gè)字符,存放在變量ch中。判斷該字符是字母字符、數(shù)字字符還是其他字符,結(jié)果用信息框輸出。用中文表達(dá),此題目可寫如下:多分支結(jié)構(gòu)例定義字符型變量ch并限制只允許存放一個(gè)字符從鍵盤輸入一個(gè)字符,存放在ch中如果ch的值在字符0到9之間,那么

用信息框顯示ch是數(shù)字字符否則的話,再判斷ch是不是大小寫字母,如果是,那么用信息框顯示ch"是字母字符如果前2種情況都不是的話,那么

用信息框顯示ch

是其他字符結(jié)束判斷例4.7

判斷輸入字符的類型:從鍵盤輸入一個(gè)字符,存放在變量ch中。判斷該字符是字母字符、數(shù)字字符還是其他字符,結(jié)果用信息框輸出。翻譯成相應(yīng)的VB語句,程序如下:多分支結(jié)構(gòu)例dimchasstring*1ch=InputBox("輸入字符")Ifch>="0"Andch<="9"

Then

MsgBox

ch&"是數(shù)字字符"ElseIf

ch>="A"Andch<="Z"Orch>="a"Andch<="z"Then

MsgBox

ch&"是字母字符"Else

MsgBox

ch&"是其他字符"EndIf例4.7

判斷輸入字符的類型:從鍵盤輸入一個(gè)字符,存放在變量ch中。判斷該字符是字母字符、數(shù)字字符還是其他字符,結(jié)果用信息框輸出??梢院喕癁椋憾喾种ЫY(jié)構(gòu)例dimchasstring*1ch=InputBox("輸入字符")ifch>="0"andch<="9"then

msgbox

ch&"是數(shù)字字符"elseif

Ucase(ch)>="A"andUcase(ch)<="Z"

then

msgbox

ch&"是字母字符"else

msgbox

ch&"是其他字符"endif也可以將輸入的字符用asc()函數(shù)求出該字符的ascii碼·值,然后將該值與字符的ascii碼值進(jìn)行比較數(shù)字(0~9)的ascii碼值:48~57大寫字母(A~Z)的ascii碼值:65~90小寫字母(a~z)的ascii碼值:97~122多分支結(jié)構(gòu)例:例4.7

判斷輸入字符的類型:

PrivateSubCommand1_Click()DimchAsString*1,xAsIntegerch=InputBox("輸入字符")x=Asc(ch)Ifx>=48Andx<=57Then

MsgBox

ch&"是數(shù)字字符"ElseIf(x>=65Andx<=90)Or(x>=97Andx<=122)Then

MsgBox

ch&"是字母字符"Else

MsgBox

ch&"是其他字符"EndIfEndSub因?yàn)樾枰唧w寫出ascii碼值,麻煩,因此不提倡,此寫法只是幫助你理解。輸入一學(xué)生百分成績mark,將百分制轉(zhuǎn)化為優(yōu)良中等級制.90---100優(yōu)秀

80---89良好

70---79中

60---69及格

<60不及格

Dimmark%,Str$mark=val(InputBox("輸入成績"))。。。PrintStr多分支結(jié)構(gòu)例3Dimmark%,str$mark=Val(InputBox("輸入成績"))Ifmark>=90Then

str="優(yōu)秀"ElseIfmark>=80Then

str="良好"ElseIfmark>=70Then

str="中"ElseIfmark>=60Then

str="及格"Else

str="不及格"EndIfPrintstr實(shí)現(xiàn)方法1實(shí)現(xiàn)方法2Dimmark%,

str$mark=val(InputBox("輸入成績"))Ifmark>=90andmark<=100then

str="優(yōu)秀"elseifmark>=80andmark<=89then

str="良好"elseifmark>=70andmark<=89then

str="中"elseifmark>=60andmark<=89then

str="及格"else

str="不及格"endifPrintStr正確但不需要!Dimmark%,str$mark=InputBox("輸入成績")Ifmark<60then

str="不及格"elseifmark<70then

str="及格"elseifmark<80then

str="中"elseifmark<90then

str="良好"else

str="優(yōu)秀"endifPrintStr實(shí)現(xiàn)方法3

Dimmark%,str$mark=InputBox("輸入成績")Ifmark>=60then

str="及格"elseifmark>=70then

str="中"elseifmark>=80then

str="良好"elseifmark>=90then

str="優(yōu)秀"else

str="不及格"endifPrintStr這樣如何?出錯(cuò)!例如輸入100,輸出及格輸入坐標(biāo)x,y,輸出在第幾象限.x>0并且y>0第1象限x<0并且y>0第2象限x<0并且y<0第3象限x>0并且y<0第4象限x=0并且y=0在原點(diǎn)其他在坐標(biāo)軸上要求用msgbox過程輸出結(jié)果。課堂練習(xí):多分支結(jié)構(gòu)---判斷坐標(biāo)點(diǎn)象限X>0并且y>0X<0并且y>0X<0并且y<0X>0并且y<0Dimx%,y%x=Val(InputBox("輸入x值:"))y=Val(InputBox("輸入y值:"))Ifx>0Andy>0Then

MsgBox("第1象限")ElseIfx<0Andy>0Then

MsgBox("第2象限")ElseIfx<0Andy<0Then

MsgBox("第3象限")ElseIfx>0Andy<0Then

MsgBox("第4象限")ElseIfx=0Andy=0Then

MsgBox("在原點(diǎn)")Else

MsgBox("在坐標(biāo)軸上")EndIf課堂練習(xí):多分支結(jié)構(gòu)---判斷坐標(biāo)點(diǎn)象限

答案輸入工資,計(jì)算個(gè)人所得稅扣稅工資<=2000不扣工資>2000---50005%

工資>5000---1000010%

工資>1000015%

多分支結(jié)構(gòu)例----計(jì)算扣稅注意:采用累進(jìn)稅率!Dimgz!,ks!'原始變量,結(jié)果變量gz=Val(InputBox("工資"))If

gz<=2000Then

ks=0ElseIf

gz<=5000Then

ks=(gz-2000)*0.05ElseIf

gz<=10000Then

ks=3000*0.05+(gz-5000)*0.1Else

ks=3000*0.05+5000*0.1+(gz-10000)*0.15EndIfMsgBox"工資是:"&gz&","&"應(yīng)扣稅="&ks多分支結(jié)構(gòu)例----計(jì)算扣稅用于解決多分支問題有些情況下使用會(huì)使程序比較簡潔,但比較受限制,不如If---elseif----endif使用廣泛4.3.2SelectCase語句4.3.2SelectCase語句----

多分支語句之二將判斷表達(dá)式的值與比較表達(dá)式進(jìn)行匹配,決定執(zhí)行哪個(gè)語句塊SelectCase<判斷表達(dá)式>Case<比較表達(dá)式1>

語句塊1Case<比較表達(dá)式2>

語句塊2 …[CaseElse

語句塊n+1]EndSelect

Dimx%,g$x=Val(InputBox("請輸入成績:"))

SelectCasex

Case5g="優(yōu)秀"

Case4g="良好"

Case3g="中"

Case2g="及格"

Case1g="掛了"

CaseElseg="輸入有誤!"

EndSelect

MsgBoxg例:假設(shè)成績是5分制:

5分—優(yōu)秀

4分—良好

3分—中

2分-及格

1分—不及格

要求從鍵盤上輸入成績,用信息框,輸出優(yōu)良中比If多分支直觀,程序可讀性強(qiáng)。問題:如果輸入的成績是百分制的分?jǐn)?shù),怎么解決?輸入一學(xué)生百分成績mark,將百分制轉(zhuǎn)化為優(yōu)良中等級制輸出。

90---100優(yōu)秀

80---89良好

70---79中

60---69及格

<60不及格Dimmark%,Str$mark=val(InputBox("輸入成績"))。。。Form1.PrintStr

SelectCase語句中的

比較表達(dá)式的其它使用方法SelectCase<判斷表達(dá)式>Case<比較表達(dá)式1>

語句塊1Case<比較表達(dá)式2>

語句塊2 …[CaseElse

語句塊n+1]EndSelect比較表達(dá)式可以是下面4種形式之一:1.數(shù)值型或字符串表達(dá)式例:100

例:50*22.一組用逗號分隔的表達(dá)式列表例:2,4,6,8

3.表達(dá)式1To

表達(dá)式260To1004.Is關(guān)系運(yùn)算符表達(dá)式Is<60(只能有關(guān)系運(yùn)算符)SelectCase語句例----用Is關(guān)系運(yùn)算符表達(dá)式Dimx%,g$x=InputBox("請輸入成績:")SelectCasexCaseIs>=90g="優(yōu)秀"CaseIs>=80g="良好"CaseIs>=70g="中"CaseIs>=60g="及格"CaseElseg="掛了"EndSelect

MsgBoxg例:

輸入百分成績,輸出優(yōu)良等級。另一寫法SelectCase語句例----用表達(dá)式1To表達(dá)式2

形式Dimx%,g$x=InputBox("請輸入成績:")SelectCasexCase90To100g="優(yōu)秀"Case80To89g="良好"Case70To79g="中"Case60To69g="及格"CaseElseg="掛了"EndSelect

MsgBoxg例:

輸入百分成績,輸出優(yōu)良等級。另一寫法例:

輸入百分制成績,輸出優(yōu)良等級,100分時(shí)輸出“滿分”

Dimx%,g$x=InputBox("請輸入成績:")SelectCasexCase100g="滿分"Case90,91,92,93,94,95,96,97,98,99g="優(yōu)秀"Case80To89g="良好"CaseIs>=70g="中"CaseIs>=60g="及格"CaseElseg="掛了"EndSelect

MsgBoxg1.數(shù)值型或字符串表達(dá)式

2.一組用逗號分隔的表達(dá)式列表3.表達(dá)式1To

表達(dá)式24.Is關(guān)系運(yùn)算符表達(dá)式這樣不對,為什么?Dimx%,g$x=InputBox("請輸入成績:")SelectCasexCaseis>=90andis<=100g="優(yōu)秀"Casex>=80g="良好"Casex>=70g="中"Casex>=60g="及格"CaseElseg="掛了"EndSelect

MsgBoxg不能有and語法錯(cuò)誤!應(yīng)使用is代表xSelectCase舉例將例4.7改用SelectCase語句實(shí)現(xiàn):

SelectCasech Case"a"To"z","A"To"Z"

MsgBox

ch+"是字母字符" Case"0"To"9"

MsgBox

ch+"是數(shù)字字符"

CaseElse

MsgBox

ch+"是其他字符"EndSelect

前情回顧:例4.7輸入一個(gè)字符判斷該字符是字母字符,數(shù)字字符還是其他字符。用If…Then…ElseIf語句實(shí)現(xiàn)DimchAsString*1ch=InputBox("輸入1個(gè)字符:")IfUCase(ch)>="A"AndUCase(ch)<="Z"Then

MsgBox

ch+"是字母字符"ElseIf

ch>="0"Andch<="9"Then

MsgBox

ch+"是數(shù)字字符"Else

MsgBox

ch+"是其他字符"EndIfSelectCase舉例將例4.7改用SelectCase語句實(shí)現(xiàn):

SelectCasech Case"a"To"z","A"To"Z"

MsgBox

ch+"是字母字符" Case"0"To"9"

MsgBox

ch+"是數(shù)字字符"

CaseElse

MsgBox

ch+"是其他字符"EndSelect例4.7輸入一個(gè)字符判斷該字符是字母字符,數(shù)字字符還是其他字符。DimchAsString*1

ch=InputBox("輸入1個(gè)字符:")SelectCasechCase"a"To"z","A"To"Z"

MsgBox

ch+"是字母字符"Case"0"To"9"

MsgBox

ch+"是數(shù)字字符"CaseElse

MsgBox

ch+"是其他字符"EndSelect多分支問題:計(jì)算扣稅輸入工資,計(jì)算個(gè)人所得稅扣稅工資<=2000不扣工資>2000---50005%

工資>5000---1000010%

工資>1000015%

多分支問題:計(jì)算扣稅用If多分支Dimgz!,ks!'原始變量,結(jié)果變量gz=Val(InputBox("輸入工資:"))Ifgz<=2000Then

ks=0ElseIf

gz<=5000Then

ks=(gz-2000)*0.05ElseIf

gz<=10000Then

ks=3000*0.05+(gz-5000)*0.1Else

ks=3000*0.05+5000*0.1+(gz-10000)*0.15EndIfMsgBox"應(yīng)扣稅="&ks問題:計(jì)算扣稅用Select多分支Dimgz!,ks!'原始變量,結(jié)果變量gz=Val(InputBox("工資"))SelectCasegzCaseIs<=2000

ks=0CaseIs<=5000

ks=(gz-2000)*0.05CaseIs<=10000

ks=3000*0.05+(gz-5000)*0.1CaseElse

ks=3000*0.05+5000*0.1+(gz-10000)*0.15EndSelectMsgBox"工資="&gz&";應(yīng)扣稅="&ks&";實(shí)發(fā)="&gz-ks問題:判斷坐標(biāo)點(diǎn)象限

能否用SelectCase?輸入坐標(biāo)x,y,輸出在第幾象限.x>0并且y>0第1象限x<0并且y>0第2象限x<0并且y<0第3象限x>0并且y<0第4象限x=0并且y=0在原點(diǎn)其他在坐標(biāo)軸上SelectCase不能用于對多值的判斷!只能對一個(gè)值進(jìn)行判斷!故使用受限!4.3.3條件函數(shù)

1.IIf函數(shù)IIf(表達(dá)式,表達(dá)式為真時(shí)的值,表達(dá)式為假時(shí)的值)IIf函數(shù)是If…Then…Else結(jié)構(gòu)的簡潔表示例如,將x,y中大的數(shù),放入Tmax變量中:Tmax=IIf(x>y,x,y)該語句與如下語句等價(jià):Ifx>yThenTmax=xElseTmax=y該語句與如下語句等價(jià):Ifx>yThen

Tmax=x

Else

Tmax=y

Endif4.3.3條件函數(shù)

(2)Choose函數(shù)

Choose(整數(shù)表達(dá)式,選項(xiàng)列表)根據(jù)整數(shù)表達(dá)式的值i,返回選項(xiàng)列表中第i個(gè)選項(xiàng)。例:輸入5分制成績,顯示優(yōu)良等級。dimi%,str$i=val(inputbox("輸入5分制成績"))str=Choose(i,"不及格","及格","中等","良好","優(yōu)秀")MsgBox

str例:輸入5分制成績,顯示優(yōu)良等級。dimi%,str$i=val(inputbox("輸入5分制成績"))str=Choose(i,"不及格","及格","中等","良好","優(yōu)秀")MsgBox

strDimx%,g$:x=Val(InputBox("請輸入成績:"))

SelectCasex

Case5g="優(yōu)秀"

Case4g="良好"

Case3g="中"

Case2g="及格"

Case1g="掛了"

CaseElseg="輸入有誤!"

EndSelect

MsgBoxg等價(jià)4.3.3條件函數(shù)

(2)Choose函數(shù)

Choose(整數(shù)表達(dá)式,選項(xiàng)列表)根據(jù)表達(dá)式的值i,返回選項(xiàng)列表中第i個(gè)選項(xiàng)。注意該函數(shù)的值是字符型例:例4.10

根據(jù)當(dāng)前日期,顯示今日是星期幾。Dimt$t=Choose(Weekday(Now),"星期日","星期一","星期二","星期三","星期四","星期五","星期六")MsgBox("今天是:"&Now&t)復(fù)習(xí):WeekDay(C|D)

返回星期幾對應(yīng)數(shù)值。周日為1,周一為2.Dimt$t=Choose(Weekday(Now),"星期日","星期一","星期二","星期三","星期四","星期五","星期六")MsgBox("今天是:"&Now&t)Dimt$SelectCaseWeekday(Now)Case1t="星期日"Case2t="星期一"Case3t="星期二"Case4t="星期三"Case5t="星期四"Case6t="星期五"Case7t="星期六"EndSelectMsgBox("今天是:"&Now&t)等價(jià)Dimt$t=Choose(Weekday(Now),"星期日","星期一","星期二","星期三","星期四","星期五","星期六")MsgBox("今天是:"&Now&t)Dimt$IfWeekday(Now)=1Thent="星期日"ElseIf

Weekday(Now)=2Thent="星期一"ElseIf

Weekday(Now)=3Thent="星期二"ElseIf

Weekday(Now)=4Thent="星期三"ElseIf

Weekday(Now)=5Thent="星期四"ElseIf

Weekday(Now)=6Thent="星期五"Elset="星期六"EndIfMsgBox("今天是:"&Now&t)等價(jià)4.3.4If語句的嵌套If語句的嵌套是指If或Else后面的語句塊中又包含If語句實(shí)際問題中非常需要If<表達(dá)式>Then

語句塊

EndIfIf<表達(dá)式>Then

語句塊

EndIfIf<表達(dá)式>Then

語句塊

EndIfIf<表達(dá)式>

Then

語句Else

語句塊2EndIfIf<表達(dá)式>Then

語句塊

EndIfIf表達(dá)式1Then

語句塊1ElseIf

表達(dá)式2Then

語句塊2 …

[Else

語句塊n+1]

EndIf

If

表達(dá)式1Then

If

表達(dá)式2Then…EndIfElse

If

表達(dá)式3Then…

EndIf…End

If

If表達(dá)式1Then

語句塊1

ElseIf

表達(dá)式2Then

語句塊2 …

[Else

語句塊n+1]

EndIfIf<表達(dá)式>Then

語句塊

EndIfIf<表達(dá)式>

Then

語句Else

語句塊2EndIfIf表達(dá)式1Then

語句塊1ElseIf

表達(dá)式2Then

語句塊2 …

[Else

語句塊n+1]

EndIfIf語句的嵌套舉例----密碼檢驗(yàn)程序例:編寫一賬號和密碼輸入的檢驗(yàn)程序,假設(shè)正確的賬號是“123456”,密碼為“abcd”.(要求輸入賬號和密碼時(shí)在文本框中顯示*)例1.當(dāng)賬號和密碼輸入正確,顯示如圖對話框:2.當(dāng)賬號或密碼輸入不正確,顯示如圖所示對話框,如用戶單擊了重試按鈕,則text1獲得焦點(diǎn),重新輸入賬號和密碼;如用戶單擊了取消按鈕,則結(jié)束程序運(yùn)行。If語句的嵌套舉例----密碼檢驗(yàn)程序MsgBox"賬號密碼正確",0,"歡迎使用本系統(tǒng)“或者:MsgBox"賬號密碼正確",vbOKOnly,"歡迎使用本系統(tǒng)"需要的對話框分析:復(fù)習(xí):MsgBox過程按鈕設(shè)置第3個(gè)按鈕為默認(rèn)512VBDefaultButton3第2個(gè)按鈕為默認(rèn)

56VBDefaultButton2第1個(gè)按鈕為默認(rèn)

0VBDefaultButton1默認(rèn)按鈕

信息圖標(biāo)

64VBInformation警告信息圖標(biāo)

48VBExclamation詢問信息圖標(biāo)

32VBQuestion關(guān)鍵信息圖標(biāo)

16VBCritical圖標(biāo)類型

重試、取消按鈕

5VBRetryCancel是、否按鈕

4VBYesNo是、否、取消按鈕

3VBYesNoCancel終止、重試、忽略按鈕

2VBAbortRetryIgnore確定、取消按鈕

1VBOkCancel確定按鈕(缺省)

0VBOkOnly按鈕數(shù)目描述值內(nèi)部常數(shù)分組i=MsgBox("密碼錯(cuò)誤",5+48,"警告")i=MsgBox("密碼錯(cuò)誤",vbRetryCancel+vbExclamation,"警告")i=MsgBox("密碼錯(cuò)誤",5+vbExclamation,"警告")i=MsgBox("密碼錯(cuò)誤",vbRetryCancel+48,"警告")復(fù)習(xí):MsgBox過程按鈕設(shè)置第3個(gè)按鈕為默認(rèn)512VBDefaultButton3第2個(gè)按鈕為默認(rèn)

56VBDefaultButton2第1個(gè)按鈕為默認(rèn)

0VBDefaultButton1默認(rèn)按鈕

信息圖標(biāo)

64VBInformation警告信息圖標(biāo)

48VBExclamation詢問信息圖標(biāo)

32VBQuestion關(guān)鍵信息圖標(biāo)

16VBCritical圖標(biāo)類型

重試、取消按鈕

5VBRetryCancel是、否按鈕

4VBYesNo是、否、取消按鈕

3VBYesNoCancel終止、重試、忽略按鈕

2VBAbortRetryIgnore確定、取消按鈕

1VBOkCancel確定按鈕(缺省)

0VBOkOnly按鈕數(shù)目描述值內(nèi)部常數(shù)分組4種寫法等價(jià)i=MsgBox("密碼錯(cuò)誤",5+48,"警告")復(fù)習(xí):MsgBox函數(shù)的使用形式:

變量[%]=MsgBox(提示信息[,按鈕值][,對話框標(biāo)題])MsgBox函數(shù)所選按鈕返回值

內(nèi)部常數(shù)返回值被單擊的按鈕vbOk1確定vbCancel2取消vbAbort3終止vbRetry4重試vbIgnore5忽略vbYes6是vbNo7否PrivateSubCommand1_Click()Dimzh$,ma$zh=Text1.Textma=Text2.TextDimiAsInteger

Ifzh<>"123456"Orma<>"abcd"Theni=MsgBox("賬號或密碼錯(cuò)誤",5+48,"警告")

Ifi=2Then'如果用戶單擊了“取消”按鈕

EndElseText1.Text=""Text2.Text=""Text1.SetFocusEndIfElse

MsgBox"賬號密碼正確",0,"歡迎使用本系統(tǒng)"

EndIf

EndSub外層IF內(nèi)層嵌套IFPrivateSubCommand1_Click()Dimzh$,ma$zh=Text1.Textma=Text2.TextDimiAsInteger

Ifzh<>"123456"Orma<>"abcd"Theni=MsgBox("賬號或密碼錯(cuò)誤",_

vbRetryCancel+vbExclamation,"警告")

Ifi=vbCancelThenEndElseText1.Text=""Text2.Text=""Text1.SetFocusEndIf

Else

MsgBox"賬號密碼正確",0,"歡迎使用本系統(tǒng)"EndIfEndSub與前頁完全等價(jià)的寫法,但使用VB的常量例完善前例功能:在前面的程序中輸入密碼時(shí)需要用鼠標(biāo)單擊將插入點(diǎn)定位到要輸入數(shù)據(jù)的文本框中,其實(shí),為了用戶操作方便,經(jīng)常需要在輸入完數(shù)據(jù)后打回車鍵插入點(diǎn)自動(dòng)定位到下一個(gè)文本框中。要求:

1.當(dāng)在Text1中鍵入回車鍵時(shí),光標(biāo)能自動(dòng)移到Text2中

2.當(dāng)在Text2中鍵入回車鍵時(shí),自動(dòng)執(zhí)行命令按鈕的單擊事件過程

解決方法:利用文本框的KeyPress事件處理回車鍵

If語句的嵌套舉例----密碼檢驗(yàn)程序事件程序框架(模板)PrivateSubText1_KeyPress(KeyAsciiAsInteger)……EndSub

使用:按下并且釋放鍵盤上的一個(gè)鍵時(shí),引發(fā)焦點(diǎn)所在控件的KeyPress事件,所按鍵的值存放在參數(shù)KeyAscii中常見用例:對回車的判斷

KeyAscii=13

復(fù)習(xí):文本框的常用事件之一----KeyPress事件

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

IfKeyAscii=13Then

'回車字符編碼=13

Text2.SetFocusEndIfEndSubPrivateSubText2_KeyPress(KeyAsciiAsInteger)

IfKeyAscii=13Then

Command1_Click

'執(zhí)行Command1的單擊事件過程

EndIfEndSub在之前的程序中增加如下事件程序:IF嵌套舉例2:多功能計(jì)算器

IF嵌套舉例2:多功能計(jì)算器

IF嵌套舉例:多功能計(jì)算器

Ifysf="+"Thenn3=n1+n2

ElseIf

ysf="-"Thenn3=n1-n2

ElseIf

ysf="*"Thenn3=n1*n2

ElseIf

ysf="/"n3=n1/n2Else

MsgBox"運(yùn)算符錯(cuò)誤!"EndIfText4.Text=n3

如何防止除數(shù)為0?IF嵌套例:解決多功能計(jì)算器程序中分母不能為0問題

If

ysf="+"Thenn3=n1+n2

ElseIf

ysf="-"Thenn3=n1-n2

ElseIf

ysf="*"Thenn3=n1*n2

ElseIf

ysf="/"

Ifn2=0Then

MsgBox"除數(shù)不能為0!"Text3.Text=""Text3.SetFocusElsen3=n1/n2EndIf

Else

MsgBox

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論