版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VisualBasic的程序語(yǔ)句順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)其他控制語(yǔ)句第四章
程序設(shè)計(jì)基礎(chǔ)4.2順序結(jié)構(gòu)4.2.1數(shù)據(jù)輸出4.2.2數(shù)據(jù)輸入返回退出4.2順序控制結(jié)構(gòu)
順序結(jié)構(gòu)就是各語(yǔ)句按出現(xiàn)的先后次序執(zhí)行。一般的程序設(shè)計(jì)語(yǔ)言中,順序結(jié)構(gòu)的語(yǔ)句主要是賦值語(yǔ)句、輸入/輸出語(yǔ)句等。在VB中也有賦值語(yǔ)句,而輸入/輸出可以通過(guò)文本框、print方法等實(shí)現(xiàn),也可以通過(guò)系統(tǒng)提供的函數(shù)和過(guò)程來(lái)實(shí)現(xiàn)。
4.2.1賦值語(yǔ)句賦值語(yǔ)句的一般形式如下:
變量名=表達(dá)式
對(duì)象.屬性=表達(dá)式程序執(zhí)行時(shí),先計(jì)算右邊表達(dá)式的值,然后將值賦給左邊的變量或?qū)傩浴?/p>
例如:
X=100
‘把數(shù)值賦給變量X;
Text1.Text="VB歡迎你"
‘把字符串賦給Text1的Text屬性
Label1.Caption=Date()
‘把Date函數(shù)的結(jié)果賦給Label1的Caption屬性
Label1.Top=Label1.Top-100
‘把表達(dá)式的值賦給Label1的Top屬性
在賦值語(yǔ)句中,賦值運(yùn)算符"="代表賦值操作,而不代表等量關(guān)系。
4.2.1數(shù)據(jù)輸出
1Print方法2與Print方法有關(guān)的函數(shù)3使用位置屬性4清除方法CLS5使用“標(biāo)簽”控件的輸出1Print方法Print方法的語(yǔ)法格式為:object.Print{Spc(n)|Tab(n)}expressioncharpos其中:object:窗體、圖片框、打印機(jī)等對(duì)象。Expression:要打印的數(shù)值表達(dá)式或字符串表達(dá)式。Charpos:逗號(hào)或分號(hào),指定下個(gè)字符的插入點(diǎn)。2.與Print方法有關(guān)的函數(shù)與Print相配合的函數(shù):(1)Tab函數(shù)與Print#語(yǔ)句或Print方法一起使用,對(duì)輸出進(jìn)行定位。格式:Tab[(n)]當(dāng)在一個(gè)Print方法中有多個(gè)Tab函數(shù)時(shí),每個(gè)Tab函數(shù)對(duì)應(yīng)一個(gè)輸出項(xiàng),各輸入項(xiàng)之間用分號(hào)隔開(kāi)。例題PrivateSubForm_Click()Print"12345678901234567890"PrintTab(5);"5";Tab(10-2);"8","'注意這里10-2>當(dāng)前位置5,故同行顯示"PrintTab(5);"5";Tab(10-6);"4";Tab(20-15);"5";"'注意這里10-6<當(dāng)前位置5,故換行顯示;20-15>當(dāng)前位置4,故同行顯示"EndSub程序執(zhí)行結(jié)果見(jiàn)圖4-1。程序中已經(jīng)對(duì)程序顯示特點(diǎn)做出解釋。圖4-1Print方法與Tab()函數(shù)結(jié)合(2)Spc函數(shù)格式:Spc(n)在顯示或打印列表中的下一個(gè)表達(dá)式之前插入n個(gè)空白數(shù),n為0~32767之間的整數(shù)。Spc函數(shù)與輸出項(xiàng)之間用分號(hào)隔開(kāi)。如果n小于輸出行的寬度,則下一個(gè)打印位置將緊接在數(shù)個(gè)已打印的空白之后。如果n大于輸出行的寬度,則Spc利用下列公式計(jì)算下一個(gè)打印位置:當(dāng)前位置+(nMod行寬)Spc函數(shù)與Tab函數(shù)的作用類似,可以互相代替。但應(yīng)注意,Tab函數(shù)從對(duì)象的左端開(kāi)始記數(shù),而Spc函數(shù)只表示兩個(gè)輸出項(xiàng)之間的間隔。3.使用位置屬性位置屬性CurrentX和CurrentY常用來(lái)把文本精確地輸出到窗體、圖片框或打印頁(yè)上。這兩個(gè)屬性分別表示當(dāng)前輸出位置的橫坐標(biāo)與縱坐標(biāo)。格式:[對(duì)象名稱].CurrentX[=x][對(duì)象名稱].CurrentY[=y]例如:下面程序?qū)D片框相對(duì)于窗體居中顯示,圖片框中的文字居中顯示。PrivateSubForm_Click()Dimstr1AsStringstr1="圖片框相對(duì)窗體、文字相對(duì)圖片框居中顯示"Picture1.FontName="宋體"'圖片框中文字的字體
Picture1.FontSize=16'圖片框中文字的字號(hào)
Picture1.Left=(ScaleWidth-Picture1.Width)/2'圖片框水平位置
Picture1.Top=(ScaleHeight-Picture1.Height)/2'圖片框垂直位置
Picture1.CurrentX=Picture1.ScaleLeft+Picture1.Width/2-Picture1.TextWidth(str1)/2'輸出水平位置
Picture1.CurrentY=Picture1.ScaleTop+Picture1.Height/2-Picture1.TextHeight(str1)/2'輸出垂直位置
Picture1.Printstr1'在圖片框中輸出字符串str1EndSub各對(duì)象的其他參數(shù)保持默認(rèn)值。程序設(shè)計(jì)時(shí)和運(yùn)行結(jié)果見(jiàn)圖4-2。無(wú)論怎樣調(diào)整窗體,只要單擊窗體,都會(huì)按題目要求調(diào)整圖片框和文本的位置。TextWidth()為求文本寬度的函數(shù)。
(a)設(shè)計(jì)時(shí)(b)運(yùn)行時(shí)圖4-2位置屬性的應(yīng)用4.清除方法CLSCls將清除圖形和打印語(yǔ)句在運(yùn)行時(shí)所產(chǎn)生的文本和圖形,清除后的區(qū)域以背景色填充。但是設(shè)計(jì)時(shí)在Form中使用Picture屬性設(shè)置的背景位圖和放置的控件不受Cls影響。語(yǔ)法:[〈對(duì)象名稱〉.]Cls例如,為了在運(yùn)行時(shí)雙擊窗體時(shí)清除圖片框中的文本,編寫(xiě)的程序?yàn)椋篜rivateSubForm_DblClick()Picture1.Cls'清除圖片框中的文本EndSub如果將代碼由Picture1.Cls改為.Cls,將無(wú)法清除圖片框中的文本。5.使用“標(biāo)簽”控件的輸出標(biāo)簽(Label)是VB中最常用的輸出文本信息的工具,目前幾乎完全取代了Print方法。例如:建立一個(gè)Label控件和Command控件,按表4-1設(shè)置設(shè)計(jì)時(shí)屬性。加入如下代碼,運(yùn)行程序。PrivateSubCommand1_Click()Label1.WordWrap=TrueLabel1.AutoSize=TrueLabel1.BorderStyle=1Label1.BackColor=&H80000014EndSub由運(yùn)行結(jié)果可知,單擊命令按鈕后,標(biāo)簽控件可以自動(dòng)適用內(nèi)容,并自動(dòng)換行,且加上邊框,背景色為白色以突出顯示文字。表4-1屬性設(shè)置對(duì)象屬性設(shè)計(jì)時(shí)屬性值說(shuō)明Command1Caption單擊此按鈕,令WordWrap=True,AutoSize=True命令按鈕標(biāo)題Label1Caption將WordWrap屬性設(shè)置為T(mén)rue,則Caption屬性的內(nèi)容自動(dòng)換行并垂直擴(kuò)充;將AutoSize屬性設(shè)置為T(mén)rue,控件自動(dòng)適應(yīng)內(nèi)容標(biāo)簽控件的內(nèi)容WordWrapFalse不自動(dòng)換行AutoSizeFalse控件不能自動(dòng)調(diào)整Font宋體、三號(hào)(a)設(shè)計(jì)時(shí)(b)運(yùn)行結(jié)果圖4-3利用標(biāo)簽控件輸出4.2.2數(shù)據(jù)輸入
1使用“文本框”控件進(jìn)行輸入2SetFocus方法3與用戶交互的函數(shù)和過(guò)程1使用“文本框”控件進(jìn)行輸入例4-1:,設(shè)計(jì)建立四個(gè)標(biāo)簽控件和三個(gè)文本框控件,各要求在運(yùn)行時(shí),雙擊填寫(xiě)意見(jiàn)的文本框,可以將該文本框放大至窗口的1/2。設(shè)計(jì)步驟如下:(1)建立應(yīng)用程序用戶界面單擊“文件|新建工程”,進(jìn)入窗體設(shè)計(jì)器。增加四個(gè)標(biāo)簽Label1~Label4和三個(gè)文本框Text1~Text3。(2)屬性設(shè)置設(shè)置各對(duì)象的屬性值,其他屬性值不變。(3)編寫(xiě)代碼雙擊Text3文本框,打開(kāi)Text3的代碼窗口,在過(guò)程下拉列表框中選擇“DblClick”,編寫(xiě)Text3的DblClick事件的代碼:PrivateSubText3_DblClick()Text3.Left=0Text3.Width=Width'Text3的寬度為窗口寬度Text3.Height=Height/2'Text3的高度為窗口高度的1/2Label4.Top=Text3.Top+Text3.Height+100'Label4始終在Text3之下EndSub2SetFocus方法使某個(gè)控件獲得焦點(diǎn),可以有多種方法:(1)直接單擊這一控件。(2)按Tab鍵(或Tab+Shfit組合鍵)按規(guī)定的次序在各控件之間移動(dòng)焦點(diǎn)。(3)在代碼中使用SetFocus方法使得某一控件獲得焦點(diǎn)。使用SetFocus方法的格式為:<對(duì)象名稱>.SetFocus其中:<對(duì)象名稱>:為對(duì)象表達(dá)式,其值為可以獲得焦點(diǎn)的控件對(duì)象名稱。例4-2:在上述工程中,增添一個(gè)命令按鈕,單擊該按鈕時(shí)將清空所有文本框中的內(nèi)容(完善的工程將要編寫(xiě)保存用戶信息的代碼)。(1)增加Command命令按鈕。在窗體的合適位置增加一個(gè)Command命令按鈕,調(diào)整其大小。(2)設(shè)置屬性可以將Caption屬性值設(shè)置為“發(fā)送”。設(shè)置Font屬性符合整體風(fēng)格。(3)編寫(xiě)Command1的Click事件的代碼PrivateSubCommand1_Click()Text1.Text=""Text2.Text=""Text3.Text=""Text1.SetFocusEndSub并在上例代碼的后面增加一行如下代碼:Command1.Top=Text3.Top+Text3.Height+100'Command1始終在Text3之下該代碼使得Command1控件始終保持在Text3控件之下。3與用戶交互的函數(shù)和過(guò)程
1.InputBox函數(shù)作用:在一對(duì)話框中顯示提示,等待用戶輸入正文或按下按鈕,并返回包含文本框中內(nèi)容,函數(shù)值的類型為String類型。語(yǔ)法格式:
[變量[%]]=InputBox(<提示>[,<標(biāo)題>][,<默認(rèn)>][,<x坐標(biāo)位置>][,<y坐標(biāo)位置>][,<helpfile>,<context>])2.MsgBox函數(shù)和MsgBox過(guò)程作用:在對(duì)話框中顯示信息,等待用戶單擊按鈕,并返回一個(gè)整數(shù)以標(biāo)明用戶單擊了哪個(gè)按鈕。語(yǔ)法格式[變量[%]]=MsgBox(<提示>[,<按鈕>][,<標(biāo)題>][,<helpfile>,<context>])例4-3:在上述實(shí)例中,要求單擊“發(fā)送”命令按鈕后,顯示如下對(duì)話框,提示您輸入身份證號(hào),并將輸入內(nèi)容保存在變量strIDcard中。增添的代碼為:PrivateSubCommand1_Click()DimstrIDcardAsString,strTextAsStringstrText="請(qǐng)輸入您的身份證號(hào)并單擊“確定”"+Chr(13)+Chr(10)+"重新填寫(xiě)請(qǐng)單擊“取消”"strIDcard=InputBox$(strText,"身份證號(hào)",,100,100)Text1.SetFocusEndSub如果單擊“確定”按鈕,則strIDcard的值為輸入值“123456789”,否則為空字符串。圖4-5使用InputBox
函數(shù)(2)MsgBox函數(shù)和MsgBox過(guò)程MsgBox函數(shù)在對(duì)話框中顯示信息,等待用戶單擊按鈕,并返回一個(gè)整數(shù)以標(biāo)明用戶單擊了哪個(gè)按鈕。其語(yǔ)法格式為:[變量[%]]=MsgBox(<提示>[,<按鈕>][,<標(biāo)題>][,<helpfile>,<context>])MsgBox語(yǔ)句的用法為:MsgBox<提示>[,<按鈕>][,<標(biāo)題>][,<helpfile>,<context>]其中:<提示>、<標(biāo)題>、<Helpfile>和<context>的意義同InputBox函數(shù)。<按鈕>可選項(xiàng)。整型表達(dá)式,指定顯示按鈕的數(shù)目及形式,使用的圖標(biāo)類型,缺省按鈕的種類以及消息框的強(qiáng)制回應(yīng)等。如果省略,則<按鈕>的缺省值為0。表4-3<按鈕>設(shè)置值及其意義分組系統(tǒng)常數(shù)值描述按鈕數(shù)目vbOKOnly0只顯示
OK按鈕。VbOKCancel1顯示
OK及
Cancel按鈕。VbAbortRetryIgnore2顯示
Abort、Retry及
Ignore按鈕。VbYesNoCancel3顯示
Yes、No及
Cancel按鈕。VbYesNo4顯示
Yes及
No按鈕。VbRetryCancel5顯示
Retry及
Cancel按鈕。圖標(biāo)類型VbCritical16顯示
CriticalMessage圖標(biāo)。VbQuestion32顯示
WarningQuery圖標(biāo)。VbExclamation48顯示
WarningMessage圖標(biāo)。VbInformation64顯示
InformationMessage圖標(biāo)。默認(rèn)按鈕vbDefaultButton10第一個(gè)按鈕是缺省值。vbDefaultButton2256第二個(gè)按鈕是缺省值。vbDefaultButton3512第三個(gè)按鈕是缺省值。模式vbApplicationModal0應(yīng)用程序強(qiáng)制返回;應(yīng)用程序一直被掛起,直到用戶對(duì)消息框作出響應(yīng)才繼續(xù)工作。vbSystemModal4096系統(tǒng)強(qiáng)制返回;全部應(yīng)用程序都被掛起,直到用戶對(duì)消息框作出響應(yīng)才繼續(xù)工作。表4-4MsgBox函數(shù)的返回值系統(tǒng)常數(shù)返回值描述VbOK1確定vbCancel2取消vbAbort3終止vbRetry4重試vbIgnore5忽略VbYes6是VbNo7否單擊“是”:完成提交操作,顯示如圖4-7對(duì)話框,單擊“確定”結(jié)束程序。單擊“否”:返回Command1_click事件,重新顯示如圖4-5所示輸入對(duì)話框。單擊“取消”:沒(méi)有提交操作,顯示如圖4-8對(duì)話框,單擊“確定”結(jié)束程序。圖4-6MsgBox對(duì)話框的應(yīng)用(a)例4-4:在上例中,如果要求在單擊InputBox對(duì)話框中的“確定”按鈕后,彈出一個(gè)如圖4-6所示的對(duì)話框,以便用戶進(jìn)行審查并作出如下選擇:
圖4-7MsgBox對(duì)話框的應(yīng)用圖4-8MsgBox對(duì)話框的應(yīng)用修改的Command1_click事件代碼為:PrivateSubCommand1_Click()DimintMsginAsIntegerDimstrmsgAsStringstrText="請(qǐng)輸入您的身份證號(hào)并單擊“確定”"+Chr(13)+Chr(10)+"重新填寫(xiě)請(qǐng)單擊“取消”"strIDcard=InputBox$(strText,"身份證號(hào)",,100,100)strmsg="請(qǐng)確認(rèn)您的身份證號(hào)碼:"+Chr(13)+Chr(10)+strIDcard'圖4-9對(duì)話框顯示的內(nèi)容IfstrIDcard<>""ThenintMsgin=MsgBox(strmsg,vbYesNoCancel+vbQuestion+vbDefaultButton2,"確認(rèn)身份證")EndIfSelectCaseintMsginCase6'……..提交意見(jiàn)單的代碼略MsgBox"您的意見(jiàn)已經(jīng)提交,謝謝!",vbOKOnly+vbInformation,"已經(jīng)提交"Case7Command1_Click'重新執(zhí)行Command1_Click事件Case2MsgBox"您已經(jīng)放棄提交意見(jiàn),歡迎下次參加!",vbOKOnly+vbCritical,"放棄提交"EndSelectEndEndSub例
編寫(xiě)一醫(yī)生工作站的登錄檢驗(yàn)程序,運(yùn)行界面如圖。對(duì)登錄名(醫(yī)生工號(hào))和密碼的規(guī)定如下:(1)醫(yī)生工號(hào)不超過(guò)6位數(shù)字,密碼為6位字符,密碼輸入時(shí)顯示為“*”。本題假設(shè)密碼為“cljuan”。(2)當(dāng)醫(yī)生工號(hào)輸入非數(shù)字字符,密碼不正確時(shí),顯示相關(guān)信息。(3)若單擊“重試”按鈕,則清除原來(lái)輸入的內(nèi)容,焦點(diǎn)定位在原輸入文本框,等待用戶輸入。若單擊取消按鈕,程序停止運(yùn)行。
本程序運(yùn)行結(jié)果如圖所示,程序代碼見(jiàn)后頁(yè)。例4-2程序代碼如下:PrivateSubCommand1_Click()DimIAsIntegerIFNotText2="cljuan"ThenI=MsgBox("密碼錯(cuò)誤",5+64+0+VBSystemModel,"登錄密碼")IFI=2ThenEndElseText2=""‘用戶單擊“取消”按鈕返回按鈕值
‘用戶單擊”重試”按鈕文本框置空,等待用戶重新輸入
Text2.SetFocus‘將焦點(diǎn)設(shè)置在文本框2上,方便用戶輸入EndIFEndSubPrivateSubText1_LostFocus()‘焦點(diǎn)離開(kāi)文本框1時(shí)觸發(fā)LostFocus事件IFNotIsNumeric(Text1)Then‘利用IsNumeric()函數(shù)判斷文本框中輸入的是否為數(shù)字字符
MsgBox"醫(yī)生工號(hào)必須是數(shù)字字符"Text1=""Text1.SetFocusEndIFEndSub4.3選擇結(jié)構(gòu)程序設(shè)計(jì)
4.3.1If條件語(yǔ)句4.3.2SelectCase4.3.3條件函數(shù)返回退出4.3.1If條件語(yǔ)句
1.單分支條件結(jié)構(gòu)(If...Then語(yǔ)句)2.雙分支結(jié)構(gòu)(If...Then...Else語(yǔ)句)3.多分支結(jié)構(gòu)(If…Then…ElseIf語(yǔ)句)4.If語(yǔ)句的嵌套1.單分支條件結(jié)構(gòu)(If...Then語(yǔ)句)用If...Then結(jié)構(gòu)有條件地執(zhí)行一個(gè)或多個(gè)語(yǔ)句。單行語(yǔ)法和多行塊語(yǔ)法都可以使用:(1)If<
表達(dá)式>
Then<語(yǔ)句塊>(2)If<
表達(dá)式>Then<語(yǔ)句塊>EndIf下面兩個(gè)例子等價(jià):(1)IftodayDate<NowThentodayDate=Now(2)IftodayDate<NowThentodayDate=NowEndIf注意:If...Then的單行格式不用EndIf語(yǔ)句。如果<表達(dá)式>為T(mén)rue時(shí)要執(zhí)行多行代碼,則必須使用多行塊If...Then...EndIf語(yǔ)法。例如:IftodayDate<NowThentodayDate=NowTimer1.Enabled=False'定時(shí)器控制失效。EndIf
<表達(dá)式>TrueFalse<語(yǔ)句>空
todayDate<NowTrueFalsetodayDate=Now空Timer1.Enabled=False圖4-12單分支條件語(yǔ)句圖4-13單分支條件語(yǔ)句實(shí)例1.IF……Then語(yǔ)句(單分支結(jié)構(gòu))語(yǔ)句形式:(1)IF<表達(dá)式>Then
語(yǔ)句塊
EndIF(2)IF<表達(dá)式>Then語(yǔ)句塊表達(dá)式語(yǔ)句塊FT單分支結(jié)構(gòu)流程示意圖其中:表達(dá)式:一般為關(guān)系表達(dá)式、邏輯表達(dá)式,也可以為算術(shù)表達(dá)式。表達(dá)式的值按非零為T(mén)rue,零為False進(jìn)行處理。語(yǔ)句塊:可以是一條或多條語(yǔ)句。如果采用形式(2)表示則語(yǔ)句之間要用冒號(hào)分隔,并且一定寫(xiě)在同一行上。例4-3已知兩個(gè)變量x和y,比較它們的大小,使x中的值大于y。(要實(shí)現(xiàn)兩個(gè)變量中的數(shù)互相交換通常以使用第三變量為過(guò)渡,在此為t)語(yǔ)句如下:IFx<yThent=x
‘將變量x中的值暫時(shí)存放于變量t中
x=y‘用變量y中的值替代變量x中的值
y=t‘再將原變量x中的值替代變量y中的值EndIF或者
IFx<yThent=x:x=y:y=t2.雙分支結(jié)構(gòu)(If...Then...Else語(yǔ)句)可以用If...Then...Else塊定義幾個(gè)語(yǔ)句塊,執(zhí)行其中一個(gè)語(yǔ)句。其語(yǔ)法格式也有兩種形式:(1)If<表達(dá)式>Then<語(yǔ)句塊1>Else<語(yǔ)句塊2>EndIf(2)If<表達(dá)式>Then<語(yǔ)句1>Else<語(yǔ)句2>當(dāng)<表達(dá)式>的值為真時(shí),執(zhí)行Then后面的語(yǔ)句塊1(或語(yǔ)句1),否則執(zhí)行Else后面的語(yǔ)句塊2(或語(yǔ)句2)。其流程見(jiàn)圖4-11。y=
<表達(dá)式>TrueFalse<語(yǔ)句塊1><語(yǔ)句塊2>圖4-14雙分支結(jié)構(gòu)流程2.IF……..Then……Else(雙分支結(jié)構(gòu))語(yǔ)句形式:
IF<表達(dá)式>Then
<語(yǔ)句塊1>
Else
<語(yǔ)句塊2>
EndIF或者:IF<表達(dá)式>Then<語(yǔ)句塊1>Else<語(yǔ)句塊2>如果表達(dá)式的值為非零或True執(zhí)行語(yǔ)句塊1,否則執(zhí)行語(yǔ)句塊2。
表達(dá)式語(yǔ)句塊1語(yǔ)句塊2FT雙分支結(jié)構(gòu)流程示意圖
x≥0TrueFalse
例如:計(jì)算分段函數(shù)y=
本題在選擇條件時(shí),可以選擇x<0作為條件,也可以選擇x≥0作為條件。這里選擇x≥0作為條件。畫(huà)出如圖4-12所示流程圖。y=圖4-12雙分支結(jié)構(gòu)流程實(shí)例y=3*x*x+4*x-51)用單分支結(jié)構(gòu)實(shí)現(xiàn)y=3*x*x+4*x-5Ifx≥0Theny=或Ifx<0Theny=3*x*x+4*x-5Ifx≥0Theny=但是,不能這樣表示:Ifx≥0Theny=(2)用雙分支結(jié)構(gòu)實(shí)現(xiàn)Ifx≥0Theny=Elsey=3*x*x+4*x-5EndIfy=3*x*x+4*x-53.多分支結(jié)構(gòu)(If…Then…ElseIf語(yǔ)句)多分支結(jié)構(gòu)可以處理兩個(gè)或兩個(gè)以上分支。其語(yǔ)句形式為:If<表達(dá)式1>Then<語(yǔ)句塊1>ElseIf<表達(dá)式2>Then<語(yǔ)句塊2>…[Else<語(yǔ)句塊n+1>]EndIfVisualBasic首先測(cè)試<表達(dá)式1>。如果它為False,VisualBasic就測(cè)試<表達(dá)式2>,依次類推,直到找到一個(gè)為T(mén)rue的條件。當(dāng)它找到一個(gè)為T(mén)rue的條件時(shí),VisualBasic就會(huì)執(zhí)行相應(yīng)的語(yǔ)句塊,然后執(zhí)行EndIf后面的代碼。作為一個(gè)選擇,可以包含Else語(yǔ)句塊,如果條件都不是True,則VisualBasic執(zhí)行Else語(yǔ)句塊。3.IF……Then……ElseIF(多分支結(jié)構(gòu))語(yǔ)句形式:
IF<表達(dá)式1>Then
<語(yǔ)句塊1>
ElseIF<表達(dá)式2>Then
<語(yǔ)句塊2>
[Else
<語(yǔ)句塊n+1>]
EndIFTTTTTT表達(dá)式1表達(dá)式2表達(dá)式n語(yǔ)句塊1語(yǔ)句塊2語(yǔ)句塊n語(yǔ)句塊n+1FFF多分支結(jié)構(gòu)流程示意圖……<表達(dá)式1>語(yǔ)句塊1<表達(dá)式2>語(yǔ)句塊2……語(yǔ)句塊n語(yǔ)句塊n+1<表達(dá)式n>圖4-13多分支結(jié)構(gòu)流程FalseTrueTrueFalseTrueFalse語(yǔ)句塊n+1
語(yǔ)句塊n
例4-5:利用If...Then...Else語(yǔ)句編寫(xiě)求函數(shù)y=的值的程序,要求只要在文本框Text1中輸入自變量x的值,就在標(biāo)簽欄label1上顯示函數(shù)值。根據(jù)題意,在窗體上添加一個(gè)文本控件Text1和標(biāo)簽控件label1,代碼應(yīng)包含在Text1_change事件中。代碼為:PrivateSubText1_Change()DimxAsDouble,yAsDoubleLabel1.Caption=""'清空Label1的內(nèi)容
x=CDbl(Text1.Text)'將字符串類型轉(zhuǎn)化為雙精度類型
If(x<1#)Theny=1#-xElseIf(x>=1#Andx<=2#)Theny=(1#-x)*(2#-x)Elsey=-(2#-x)EndIfLabel1.Caption=y'在Label1上顯示結(jié)果EndSubx<1#x>=1#Andx<=2#TrueFalsey=(1#-x)*(2#-x)
y=-(2#-x)圖4-14多分支結(jié)構(gòu)流程實(shí)例TrueFalsey=1#-x例4-6:大學(xué)錄取新生時(shí),根據(jù)學(xué)生總分情況給與獎(jiǎng)勵(lì),條件如下:(1)四門(mén)總分不低于700分,特等獎(jiǎng)。(2)四門(mén)總分680分(含680分)~700分(不含700分),優(yōu)秀獎(jiǎng)。(3)前三門(mén)單科不低于145分,第四門(mén)不低于280分),特別獎(jiǎng)。(4)獎(jiǎng)勵(lì)按特等獎(jiǎng)、優(yōu)秀獎(jiǎng)、特別獎(jiǎng)由高到低,不重復(fù)計(jì)獎(jiǎng)(包括單科)。要求:四科成績(jī)(intmark1、intmark2、intmark3、intmark4)依次在四個(gè)文本框中輸入,總分(intmark0)在標(biāo)簽控件上顯示。單擊命令按鈕Command1后,在對(duì)話框中顯示獲獎(jiǎng)情況。分析:獲獎(jiǎng)條件表達(dá)式分別為:(1)intmark0>=700(2)intmark0>=680ANDintmark0<700(3)intmark1>=145ORintmark2>=145ORintmark3>=145ORintmark4>=280流程圖見(jiàn)圖4-18。設(shè)計(jì)步驟如下:(1)建立應(yīng)用程序用戶界面按如圖4-19建立四個(gè)文本框(Text1~Text4)接受成績(jī)輸入,兩個(gè)標(biāo)簽控件(Label1~Label2),一個(gè)命令按鈕Command1,設(shè)置各控件的屬性,其中Command1的Caption屬性值為“查詢”。intmark0>=700TrueFlase特等獎(jiǎng)優(yōu)秀獎(jiǎng)intmark1>148ORintmark2>148ORintmark3>148ORintmark4>148intmark0>=680ANDintmark0<700特別獎(jiǎng)您沒(méi)有獲獎(jiǎng)圖4-15多分支結(jié)構(gòu)流程實(shí)例TrueFlaseTrueFlase圖4-16應(yīng)用程序運(yùn)行情況(2)編寫(xiě)程序代碼根據(jù)流程圖,編寫(xiě)出Command_click事件的代碼為:PrivateSubCommand1_Click()Dimintmark0AsInteger,intmark1AsIntegerDimintmark2AsInteger,intmark3AsInteger,intmark4AsIntegerintmark1=CInt(Text1.Text)intmark2=CInt(Text2.Text)intmark3=CInt(Text3.Text)intmark4=CInt(Text4.Text)intmark0=intmark1+intmark2+intmark3+intmark4Label3.Caption=intmark0Ifintmark0>=700ThenMsgBox"您獲得了特等獎(jiǎng)",vbOKOnly+vbInformation,"獲獎(jiǎng)通知"ElseIfintmark0>=680ThenMsgBox"您獲得了優(yōu)秀獎(jiǎng)",vbOKOnly+vbInformation,"獲獎(jiǎng)通知"ElseIfintmark1>=145Orintmark2>=145Orintmark3>=145Orintmark4>=280ThenMsgBox"您獲得了特別獎(jiǎng)",vbOKOnly+vbInformation,"獲獎(jiǎng)通知"ElseMsgBox"很遺憾,您沒(méi)有獲獎(jiǎng)",vbOKOnly+vbInformation,"獲獎(jiǎng)通知"EndIfEndSubPrivateSubCommand1_Click()Dimx,yPicture1.Clsx=Val(Text1.Text)‘將文本轉(zhuǎn)換為數(shù)值型后賦值給變量x,yy=Val(Text2.Text)IFx<90Andy<60Then
Picture1.Print"血壓偏低"ElseIFx<=140Andy<=90Then
Picture1.Print"血壓正常"ElseIFx<160Andy<95Then
Picture1.Print"臨界高血壓"Else
Picture1.Print"高血壓"EndIFEndSubPrivateSubCommand2_Click()EndEndSub例按照世界衛(wèi)生組織(WHo)建議使用的血壓標(biāo)準(zhǔn)是:凡正常成人收縮壓應(yīng)小于或等于140MmHg,舒張壓小于或等于90MmHg。如果成人收縮壓大于或等于160MmHg,舒張壓大于或等于95MmHg為高血壓;血壓值在上述兩者之間,亦即收縮壓在141—159MmHg之間,舒張壓在91-94MmHg之間,為臨界高血壓。低血壓通常指血壓低于90/60MmHg。運(yùn)行界面與程序代碼如下:4.If語(yǔ)句的嵌套上面學(xué)習(xí)了If語(yǔ)句的基本形式,可以通過(guò)這些基本形式加以復(fù)合,獲得更為復(fù)雜的If結(jié)構(gòu),稱為If語(yǔ)句的嵌套。一般形式如圖4-17所示。圖4-18為在Else塊中嵌套If結(jié)構(gòu)的形式。可根據(jù)實(shí)際情況選擇采用何種結(jié)構(gòu)。圖4-17If語(yǔ)句復(fù)合結(jié)構(gòu)的一般形式圖4-18在Else塊中嵌套If結(jié)構(gòu)的形式圖4-19正確與錯(cuò)誤的轉(zhuǎn)向例4-7:求a、b、c中三個(gè)實(shí)數(shù)的最大值、最小值,程序中不得使用循環(huán)結(jié)構(gòu)和轉(zhuǎn)向語(yǔ)句。a、b、c三值從三個(gè)文本框中輸入,當(dāng)單擊命令按鈕時(shí)將結(jié)果顯示在窗體上。畫(huà)出流程圖。(1)設(shè)計(jì)流程圖根據(jù)題意,畫(huà)出如圖4-20所示流程圖。
a<bTrueFalseb<cTruea<c
Mininabc=aMininabc=cMaxinabc=ba<cMaxinabc=ab<c圖4-20求三個(gè)數(shù)極值的流程Maxinabc=cMininabc=aFalseTrueMaxinabc=aMaxinabc=cMininabc=bMininabc=cTrueFalseMininabc=bFalseTrueMaxinabc=c(2)設(shè)置界面與控件屬性在窗體上添加三個(gè)文本框,一個(gè)命令按鈕,設(shè)置各自的屬性(主要是Caption屬性和Font屬性)。FalseIF語(yǔ)句的嵌套語(yǔ)句形式:
IF<表達(dá)式1>Then
語(yǔ)句塊1
IF<表達(dá)式2>Then
語(yǔ)句塊2
…
EndIF
語(yǔ)句塊3
…
EndIF例
輸入3個(gè)整數(shù),按從小到大的順序輸出。程序運(yùn)行界面如圖程序代碼如下:PrivateSubCommand1_Click()Dimx%,y%,z%,t%Form1.Clsx=Val(InputBox("請(qǐng)輸入1個(gè)整數(shù)"))y=Val(InputBox("請(qǐng)輸入1個(gè)整數(shù)"))z=Val(InputBox("請(qǐng)輸入1個(gè)整數(shù)"))Print"您輸入三個(gè)的數(shù)是:";x;Spc(1);y;Spc(1);zIFx>yThen‘如果x>y則x,y交換
t=x:x=y:y=tEndIFIFy>zThen
t=y:y=z:z=tIFx>yThen
t=x:x=y:y=tEndIFEndIFPrint"從小到大的順序是:";x;Spc(1);y;Spc(1);zEndSubPrivateSubCommand2_Click()EndEndSub例在文本框中輸入1-1000之間的數(shù)字,如果輸入非數(shù)值,或數(shù)值超出范圍,給予提示,并重新輸入。運(yùn)行效果及程序代碼如下:PrivateSubForm_Load()Text1.Text=""Text2.Text=""EndSubPrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Then'回車(chē)鍵的ASCII碼值為13IfIsNumeric(Text1.Text)Then'判斷是否是數(shù)值
x=Val(Text1.Text)Ifx<0Orx>1000ThenText1.Text=""Text1.SetFocus'焦點(diǎn)回到文本框
Text2.Text="數(shù)值超出范圍,再輸入!"'文本框中顯示提示信息
ElseText2.Text="輸入正確!"EndIfElseText1.SetFocusText2.Text="請(qǐng)輸入數(shù)字!"EndIfEndIfEndSub4.3.2SelectCaseSelectCase的結(jié)構(gòu)形式為:SelectCase<測(cè)試表達(dá)式>[Case<表達(dá)式列表1>[<語(yǔ)句塊1>]][Case<表達(dá)式列表3>[<語(yǔ)句塊2>]]…[Case<表達(dá)式列表n>[<語(yǔ)句塊n>]][CaseElse[<語(yǔ)句塊n+1>]]EndSelectSelectCase選擇結(jié)構(gòu)執(zhí)行的過(guò)程為:(1)計(jì)算<測(cè)試表達(dá)式>的值(2)將<測(cè)試表達(dá)式>的值與Case語(yǔ)句中的<表達(dá)式列表>中的每一個(gè)值逐一進(jìn)行比較。如果與其中的一個(gè)值相匹配,則執(zhí)行該語(yǔ)句中的<語(yǔ)句塊>。如果不止一個(gè)Case與<測(cè)試表達(dá)式>相匹配,則只對(duì)第一個(gè)匹配的Case執(zhí)行與之相關(guān)聯(lián)的<語(yǔ)句塊>。如果在表達(dá)式列表中沒(méi)有一個(gè)值與測(cè)試表達(dá)式相匹配,則VisualBasic執(zhí)行CaseElse子句(此項(xiàng)是可選的)中的語(yǔ)句。最后執(zhí)行EndSelect語(yǔ)句。<測(cè)試表達(dá)式>圖4-22SelectCase選擇結(jié)構(gòu)流程V<表達(dá)式列表1><語(yǔ)句塊1>……<語(yǔ)句塊n+1><表達(dá)式列表n+1><表達(dá)式列表n><語(yǔ)句塊n>……4.3.2SelectCase語(yǔ)句SelectCase語(yǔ)句是多分支結(jié)構(gòu)的又一種表示形式,又稱情況語(yǔ)句。語(yǔ)句形式:
SelectCase變量或表達(dá)式
Case表達(dá)式列表1
<語(yǔ)句塊1>
Case表達(dá)式列表2
<語(yǔ)句塊2>
……
[CaseElse
<語(yǔ)句塊n+1>]
EndSelectF表達(dá)式列表1語(yǔ)句塊1表達(dá)式列表2語(yǔ)句塊2表達(dá)式列表n語(yǔ)句塊n…..語(yǔ)句塊n+1TTTSelect語(yǔ)句流程示意圖FF…..例4-8:表4-5為華中航空總公司機(jī)票打折表。試根據(jù)此表編寫(xiě)程序。日期、機(jī)票數(shù)從文本框中輸入,打折情況在窗體上輸出。如圖4-23。
表4-5機(jī)票優(yōu)惠率月日訂票數(shù)(張)優(yōu)惠率(%)1、2、3、6、11、12全部>=3025<30104、928~30>=3035<3015其它>=3025<30105、101~8>=3035<3015其它>=3025<30107、8全部>=3030<3020(2)設(shè)計(jì)應(yīng)用程序用戶界面添加6個(gè)標(biāo)簽控件Label1~Label6,按順序見(jiàn)圖4-23所示。Label1~Label5的Caption屬性依次為:“請(qǐng)輸入日期”、“月”、“日”、“請(qǐng)輸入訂票數(shù)”、“張”,Label6的Caption屬性設(shè)計(jì)時(shí)為空白,運(yùn)行時(shí)用來(lái)顯示優(yōu)惠率。添加3個(gè)文本框控件Text1~Text3,按順序見(jiàn)圖4-23所示。添加一個(gè)命令按鈕Command1。圖4-23機(jī)票優(yōu)惠率查詢系統(tǒng)(3)編寫(xiě)代碼根據(jù)流程圖,編寫(xiě)出Command1_Click事件的代碼如下:PrivateSubCommand1_Click()DimintnnAsLongDimintssAsInteger,strdateAsIntegerintnn=Clng(Text3.Text)strdate=Cint(Trim(Text1.Text)&Trim(Text2.Text))SelectCasestrdateCase428To431,51To57,928To931,101To107Ifintnn>=30Thenintss=35Elseintss=15Case71To79,710To731,81To89,810To831Ifintnn>=30Thenintss=30Elseintss=20CaseElseIfintnn>=30Thenintss=25Elseintss=10EndSelectLabel6.Caption="您所訂機(jī)票優(yōu)惠率為:"&str(intss)&"%"EndSub另外,可以取系統(tǒng)的日期作為輸入日期,該事件可以指定為T(mén)ext1_DbClick事件,即雙擊Text1發(fā)生的事件,代碼為:PrivateSubText1_DblClick()Text1.Text=Month(Now)Text2.Text=Day(Now)EndSub當(dāng)要重新輸入數(shù)據(jù)時(shí),可以自動(dòng)清空各文本框的內(nèi)容。其中單擊Text1清空所有文本框的內(nèi)容,單擊其他文本框,只清空被單擊的文本框的內(nèi)容。PrivateSubText1_Click()Text1.Text=""Text2.Text=""Text3.Text=""EndSubPrivateSubText2_Click()Text2.Text=""EndSubPrivateSubText3_Click()Text3.Text=""EndSub此外,還應(yīng)為每一個(gè)文本框的鍵盤(pán)按下事件編寫(xiě)如下代碼,表明當(dāng)按回車(chē)鍵時(shí),自動(dòng)跳到下一個(gè)必要的控件:PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenText2.SetFocusEndSubPrivateSubText2_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenText3.SetFocusEndSubPrivateSubText3_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenCommand1.SetFocusEndSub7月~8月<3010
日期
>=30<30>=30<30>=3035153020104/28~5/7,9/28~10/7
>=30
7月~8月圖4-24機(jī)票優(yōu)惠率計(jì)算流程圖其他滿足條件>=30>=3025<30<30<301030203515PrivateSubCommand1_Click()DimcodeAsStringcode=Trim(Text2.Text)SelectCasecode
Case"+"
Text4.Text=Val(Text1)+Val(Text3)
Case"-"
Text4.Text=Val(Text1)-Val(Text3)
Case"*"
Text4.Text=Val(Text1)*Val(Text3
Case"/"
IFVal(Text3)=0Then
MsgBox("除數(shù)不能為0,請(qǐng)重新輸入")
Text3="“
Text4.Text=""
Text3.SetFocus
Else
Text4=Val(Text1)/Val(Text3
EndIFEndSelectEndSubPrivateSubCommand2_Click()EndEndSubPrivateSubCommand3_Click()Text1=""Text2=""Text3=""Text4=""Text1.SetFocusEndSub例4-7編寫(xiě)一個(gè)簡(jiǎn)便四則運(yùn)算器,應(yīng)用SelectCase判斷運(yùn)算符。運(yùn)行界面如圖【程序代碼】4.3.3條件函數(shù)1.IIf函數(shù)2.Choose函數(shù)IIf函數(shù)的功能是根據(jù)表達(dá)式的值,來(lái)返回兩部分中的其中一個(gè)。其語(yǔ)法格式為:IIf(<測(cè)試表達(dá)式>,<真值部分>,<假值部分>)例如,求分段函數(shù):y=函數(shù)值的語(yǔ)句可以簡(jiǎn)單地表示為:y=Iif(x<0,2*x+3,4-3*x)Choose函數(shù)的功能是:從參數(shù)列表中選擇并返回一個(gè)值。其語(yǔ)法格式為:Choose(<整數(shù)表達(dá)式>,<選項(xiàng)1>[,
<選項(xiàng)2>,...[,<選項(xiàng)n>]])下面的示例使用Choose函數(shù)來(lái)顯示某天的執(zhí)勤人員情況,strDay參數(shù)傳遞到過(guò)程之中的索引。FunctionGetChoice(strDayAsstring)strName=Choose(strDay,"王大虎","謝偉烽","馬家棟","何右嘉","吳仁杰",)EndFunction當(dāng)strDay的值為1時(shí),返回字符串“王大虎”,當(dāng)strDay的值為2時(shí),返回字符串“謝偉烽”,以此類推。當(dāng)strDay的值不在1~5之間時(shí),返回NULL。4.3.3條件函數(shù)
VB中提供的條件函數(shù):IIF()函數(shù)和Choose()函數(shù),適用于簡(jiǎn)單的判斷場(chǎng)合。前者代替IF語(yǔ)句,后者可代替SelectCase語(yǔ)句,IIF()函數(shù)函數(shù)形式:
IFF(表達(dá)式,條件為T(mén)rue時(shí)的值,條件為False時(shí)的值)例如:求x,y中大的數(shù),放入變量T中,可以應(yīng)用語(yǔ)句T=IFF(x>y,x,y)Choose()函數(shù)函數(shù)形式:
Choose(整型表達(dá)式,選項(xiàng)列表)其中整型表達(dá)式的值決定函數(shù)返回選項(xiàng)列表中的哪個(gè)值。如果整型表達(dá)式為1,則函數(shù)返回選項(xiàng)列表中的第一項(xiàng)的值,若整型表達(dá)式為2,則函數(shù)返回選項(xiàng)列表中的第2項(xiàng)的值,…依次類推。如果整型表達(dá)式的值小于1或大于列出的選項(xiàng)數(shù)目時(shí),函數(shù)返回Null。如果整型表達(dá)式的值為非整型時(shí),系統(tǒng)自動(dòng)取其整數(shù)進(jìn)行判斷。例如,根據(jù)x是1~4的值,轉(zhuǎn)換成“內(nèi)科”、“外科”、“婦科”、“兒科”的語(yǔ)句可以寫(xiě)成:kb=Choose(x,“內(nèi)科”,“外科”,“婦科”,“兒科”)4.4.2While循環(huán)4.4.1For循環(huán)返回退出4.4.3Do…LOOP循環(huán)控制結(jié)構(gòu)4.4.4多重循環(huán)4.4循環(huán)結(jié)構(gòu)4.4.2Do...Loop語(yǔ)句1.前測(cè)型Do...Loop循環(huán)在前測(cè)型Do...Loop循環(huán)中,只要<循環(huán)條件>為T(mén)rue就執(zhí)行<循環(huán)體>。其語(yǔ)法格式為:Do[{While|Until}<循環(huán)條件>]<循環(huán)體>Loop例4-9:編寫(xiě)程序,根據(jù)多項(xiàng)式:π=求π的近似值。精度要求<10-12。根據(jù)題意和要求可先求出(1)設(shè)計(jì)流程圖根據(jù)題目要求,設(shè)計(jì)出如圖4-25所示的流程圖。的和。輸出循環(huán)次數(shù)isum=0#;temp=1#;i=1當(dāng)temp>=1.0E-12sum=sum+tempi=i+1temp=1#/i/i輸出π的近似值圖4-25求π的近似值流程圖(2)設(shè)計(jì)應(yīng)用程序界面應(yīng)用程序所需的控件及其屬性值見(jiàn)表4-6。Picture1和Picture2分別用來(lái)顯示運(yùn)算次數(shù)i的值和π的近似值。控件Caption屬性值Label1運(yùn)算次數(shù)Label2近似值Picture1空白(設(shè)計(jì)時(shí))Picture2空白(設(shè)計(jì)時(shí))Command1求π的近似值表4-6求π的近似值應(yīng)用程序控件屬性值(3)編寫(xiě)代碼根據(jù)流程圖編寫(xiě)Command1_click事件的代碼如下:PrivateSubCommand1_Click()DimsumAsDouble,tempAsDouble,piAsDoubleDimiAsDoublesum=0#temp=1#i=1圖4-26求π的近似值的程序運(yùn)行結(jié)果DoWhile(temp>=0.000000000001)sum=sum+tempi=i+1temp=1#/i/iLooppi=Sqr(6#*sum)Picture1.Printi;"次"Picture2.PrintpiEndSub由于程序代碼是直接從設(shè)計(jì)界面拷貝過(guò)來(lái),所有代碼書(shū)寫(xiě)格式已經(jīng)經(jīng)過(guò)VB格式化。程序運(yùn)行情況參見(jiàn)圖4-26。輸入數(shù)據(jù)nVal(Text1.Text)>2147483647TrueFalse數(shù)據(jù)溢出,重新輸入n當(dāng)k<=m=1k=k+1nModk=0TrueFalses=0TrueFalse例4-10:編寫(xiě)程序::判斷一個(gè)數(shù)是否為素?cái)?shù)。(1)設(shè)計(jì)流程圖根據(jù)題目要求,設(shè)計(jì)出如圖4-27所示的流程圖。當(dāng)k<=圖4-27求素?cái)?shù)流程圖n不是素?cái)?shù)n是素?cái)?shù)Andm=0(2)設(shè)計(jì)應(yīng)用程序界面應(yīng)用程序所需的控件及其屬性值見(jiàn)表4-7??丶﨏aption屬性值Label1自然數(shù)Label2空白(設(shè)計(jì)時(shí))Text11空白(設(shè)計(jì)時(shí))Command1輸入自然數(shù)后單擊此按鈕表4-7判斷素?cái)?shù)應(yīng)用程序控件屬性值(3)編寫(xiě)代碼根據(jù)流程圖,編寫(xiě)Command1_click事件代碼如下:PrivateSubCommand1_Click()Dimmasinteger,kasintegerDimnAsLongIfVal(Text1.Text)>2147483647ThenMsgBox"數(shù)據(jù)溢出,請(qǐng)重新輸入",vbOKOnly+vbOKCancel+vbInformation,"數(shù)據(jù)錯(cuò)誤"Text1.Text=""Else圖4-28判斷素?cái)?shù)程序運(yùn)行實(shí)例
n=CLng(Text1.Text)m=0:k=2DoWhilek<=Sqr(n)Andm=0IfnModk=0Thenm=1Elsek=k+1EndIfLoopIfm=0ThenLabel2.Caption="是一個(gè)素?cái)?shù)"ElseLabel2.Caption="不是一個(gè)素?cái)?shù)"EndIfEndIfText1.SetFocus
EndSub2.后測(cè)型Do...Loop循環(huán)Do...Loop語(yǔ)句的另一種演變形式是先執(zhí)行<循環(huán)體>,然后在每次執(zhí)行后測(cè)試<循環(huán)條件>。稱為后測(cè)型Do...Loop循環(huán)。這種形式保證<循環(huán)體>至少執(zhí)行1次,其語(yǔ)法格式為:Do
<循環(huán)體>Loop[{While|Until}<循環(huán)條件>]輸入m,nm存放大數(shù),n存放小數(shù)輸出n求m/n的余數(shù)m←n數(shù)n←r的余數(shù)例4-11:求兩個(gè)正整數(shù)m和n的最大公約數(shù)。求最大公約數(shù)最常用的方法是輾轉(zhuǎn)相除法。其設(shè)計(jì)思路是:(1)假設(shè)m大于n;(2)用n作除數(shù)除m,得余數(shù)r。(3)若r≠0,則令m←n,n←r,繼續(xù)相除得到新的r值,直到r=0為止。(4)最后的n即為最大公約數(shù)。解題步驟如下:(1)設(shè)計(jì)流程圖根據(jù)題意,設(shè)計(jì)出如圖4-29所示流程圖。圖4-29求最大公約數(shù)的流程圖直到r=0(2)設(shè)計(jì)應(yīng)用程序界面所需添加的控件的屬性值參見(jiàn)表4-8。控件Caption(或Text)屬性值Label1請(qǐng)輸入兩個(gè)正整數(shù)Label2mnLabel3m和
n的最大公約數(shù)是Label4空白(設(shè)計(jì)時(shí))Text11空白(設(shè)計(jì)時(shí))Text12空白(設(shè)計(jì)時(shí))Command1求
解表4-8判斷素?cái)?shù)應(yīng)用程序控件屬性值(3)編寫(xiě)代碼PrivateSubCommand1_Click()DimmAsLong,nAsLong,tempAsLongIf(Val(Text1.Text)=0OrVal(Text2.Text)=0)OrVal(Text1.Text)>2147483647OrVal(Text2.Text)>2147483647ThenMsgBox"輸入的數(shù)0或溢出,請(qǐng)重新輸入!"MsgBox"輸入的數(shù)0或溢出,請(qǐng)重新輸入!",vbInformation+vbOKOnly,"數(shù)據(jù)錯(cuò)誤"Text1.Text=""Text2.Text=""圖4-30求最大公約數(shù)程序運(yùn)行實(shí)例
Text1.SetFocusElsem=Val(Text1.Text)n=Val(Text2.Text)Ifm<nThentemp=m:m=n:n=tempEndIfDor=mModnm=nn=rLoopWhiler<>0Label3.Caption=mEndIfEndSub4.4.1For...Next語(yǔ)句Do循環(huán)使用于在不知道執(zhí)行多少次<循環(huán)體>時(shí)。有時(shí),循環(huán)的次數(shù)是已知的,這時(shí)最好使用For...Next循環(huán)。與Do循環(huán)不同,F(xiàn)or循環(huán)使用一個(gè)叫做計(jì)數(shù)器的變量,每重復(fù)一次循環(huán)之后,計(jì)數(shù)器變量的值就會(huì)增加或者減少。For循環(huán)的語(yǔ)法如下:For<循環(huán)變量>=<初值>To<終值>[Step<步長(zhǎng)>]<循環(huán)體>Next[<循環(huán)變量>]4.4.1循環(huán)結(jié)構(gòu)4.4.1For循環(huán)語(yǔ)句For循環(huán)語(yǔ)句是計(jì)數(shù)型循環(huán)語(yǔ)句,用于控制循環(huán)次數(shù)預(yù)知的循環(huán)結(jié)構(gòu)。語(yǔ)句形式:For循環(huán)變量=初值To終值[Step步長(zhǎng)]
Next循環(huán)變量說(shuō)明:循環(huán)變量必須是數(shù)值型步長(zhǎng):一般為正數(shù),初值小于終值;若為負(fù)數(shù),初值大于終值;
Step缺省時(shí)默認(rèn)為1。語(yǔ)句塊:重復(fù)執(zhí)行的部分,構(gòu)成循環(huán)體,可以是一句或多句。ExitFor:退出循環(huán),執(zhí)行Next后的下一條語(yǔ)句。循環(huán)次數(shù):n=Int(
+1)<語(yǔ)句塊>
[ExitFor]<語(yǔ)句塊>循環(huán)體終值-初值
步長(zhǎng)TF循環(huán)變量=初值循環(huán)變量≤終值語(yǔ)句塊有ExitFor語(yǔ)句塊循環(huán)變量=循環(huán)變量+步長(zhǎng)FT步長(zhǎng)>0時(shí)For循環(huán)語(yǔ)句流程示意圖例4-12:求1~1000之間所有能夠被13整除的數(shù)。按每行各行10個(gè)數(shù)排滿足條件的數(shù)。(1)設(shè)計(jì)流程圖根據(jù)題意,設(shè)計(jì)如圖4-34所示流程圖。圖4-31求被1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四季度工作安排領(lǐng)導(dǎo)講話三篇
- 生產(chǎn)專利許可使用合同(33篇)
- 有關(guān)文明養(yǎng)犬倡議書(shū)范文(31篇)
- 感恩教育300字心得體會(huì)(35篇)
- 21.2.2 二次函數(shù)y=ax2+bx+c的圖象和性質(zhì) 同步練習(xí)
- 江蘇省蘇州市姑蘇區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期中考試歷史卷(含答案)
- 湖南省衡陽(yáng)市2024-2025學(xué)年高一上學(xué)期期中物理試題(無(wú)答案)
- 廣西玉林市2024-2025學(xué)年八年級(jí)上學(xué)期期中教學(xué)質(zhì)量監(jiān)測(cè)物理試卷
- (教研室)山東省臨沂市費(fèi)縣2024-2025學(xué)年七年級(jí)上學(xué)期期中考試生物試題
- 2022年高考語(yǔ)文復(fù)習(xí)專項(xiàng)訓(xùn)練:論述類文本閱讀
- 機(jī)場(chǎng)使用手冊(cè)飛行區(qū)場(chǎng)地管理
- XX學(xué)院項(xiàng)目主體封頂儀式策劃方案
- 凱泉水泵使用說(shuō)明書(shū)
- 低血糖處理流程
- 鋁擠成型工藝介紹
- 讓那諾爾油藏簡(jiǎn)介
- 電信維基網(wǎng)注冊(cè)指南
- 書(shū)籍設(shè)計(jì)賞析PPT優(yōu)秀課件
- 縣高標(biāo)準(zhǔn)基本農(nóng)田項(xiàng)目檔案資料管理實(shí)施細(xì)則
- 坑探安全技術(shù)規(guī)程
- 室內(nèi)墻面石材干掛法施工方案(完整版)
評(píng)論
0/150
提交評(píng)論