




已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章VB程序語(yǔ)句與控制結(jié)構(gòu)一個(gè)VB應(yīng)用程序主要由用戶(hù)界面和響應(yīng)各事件的程序代碼組成,程序代碼是應(yīng)用程序的核心。本章首先介紹程序代碼設(shè)計(jì)的基礎(chǔ)知識(shí),再通過(guò)一些典型的例子,使大家逐步掌握編程的思路和技巧。VB雖然是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,但在代碼設(shè)計(jì)中仍然支持結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。本章將主要介紹數(shù)據(jù)的輸入與輸出、三種基本程序控制結(jié)構(gòu)及語(yǔ)句。3.1數(shù)據(jù)的輸入與輸出VB的輸入/輸出有多種形式,常用的輸入方式有:使用鍵盤(pán)輸入數(shù)據(jù)的函數(shù)InputBox以及文本框等控件。常用的輸出方式有:Print方法、MsgBox函數(shù)和過(guò)程以及圖形框、文本框、標(biāo)簽等控件。有關(guān)控件的使用在其第六章中介紹,本節(jié)主要介紹InputBox函數(shù)、MsgBox函數(shù)與過(guò)程以及Print方法的使用。311 InputBox函數(shù)格式:InputBox(提示,標(biāo)題,默認(rèn),x坐標(biāo)位置,y坐標(biāo)位置)功能:InputBox函數(shù)產(chǎn)生一個(gè)對(duì)話(huà)框,作為輸入數(shù)據(jù)的界面,等待用戶(hù)輸入內(nèi)容,當(dāng)用戶(hù)單擊“確定”按鈕或按回車(chē)鍵,函數(shù)返回輸入的值,其值的類(lèi)型為字符串(String)。說(shuō)明:(1)“提示”:必選項(xiàng)。字符串表達(dá)式,在對(duì)話(huà)框中作為提示信息顯示,可為漢字。若要多行顯示,必須在每行行末加回車(chē)符Chr(13)和換行符Chr(10)符或VB符號(hào)常數(shù)vbCrLf。(2)“標(biāo)題”:可選項(xiàng)。字符串表達(dá)式,在對(duì)話(huà)框的標(biāo)題區(qū)顯示;若省略,默認(rèn)為應(yīng)用程序名。(3)“默認(rèn)”:可選項(xiàng)。字符串表達(dá)式,當(dāng)輸入對(duì)話(huà)框中無(wú)輸入時(shí),則該默認(rèn)值作為輸入的內(nèi)容。(4)“x坐標(biāo)位置、y坐標(biāo)位置”:可選項(xiàng)。整型表達(dá)式,確定對(duì)話(huà)框左上角相對(duì)于屏幕左上角的x、y坐標(biāo),單位為twip。該項(xiàng)省略時(shí),對(duì)話(huà)框出現(xiàn)在屏幕水平、垂直中間的位置?!咀⒁狻扛黜?xiàng)參數(shù)次序必須一一對(duì)應(yīng),除了“提示”一項(xiàng)不能省略外,其余各項(xiàng)均可省略,處于中間的默認(rèn)部分要用逗號(hào)占位符跳過(guò)。例如,運(yùn)行如下代碼段,結(jié)果顯示如圖3-1所示,當(dāng)單擊“確定”按鈕后,變量strName的值為“李林”。Dim strName as String*20Title = InputBox函數(shù)示例Msg1 = 請(qǐng)輸入你的姓名StrName=InputBox(Msg1,Title, ,200,200)圖3-1312 Msgbox函數(shù)與過(guò)程MsgBox用于輸出數(shù)據(jù),它會(huì)在屏幕上顯示一個(gè)對(duì)話(huà)框。在對(duì)話(huà)框中顯示消息,等待用戶(hù)單擊按鈕,并返回所選按鈕的整數(shù)值。有函數(shù)和過(guò)程兩種形式。MsgBox函數(shù)格式: 變量=MsgBox(提示,按鈕,標(biāo)題)MsgBox過(guò)程格式: MsgBox 提示,按鈕,標(biāo)題說(shuō)明:(1)“提示”和“標(biāo)題”的意義與InputBox函數(shù)中對(duì)應(yīng)的參數(shù)相同。(2)“按鈕”:可選項(xiàng)。數(shù)值表達(dá)式,決定信息框按鈕的數(shù)目和類(lèi)型及出現(xiàn)在信息框上的圖標(biāo)類(lèi)型。該數(shù)值表達(dá)式的值由4部分?jǐn)?shù)值求和得到,它也可以用符號(hào)常量表示。其設(shè)置見(jiàn)表3.1。(3)MsgBox函數(shù)返回所選按鈕整數(shù)值的意義見(jiàn)表3.2(4)MsgBox過(guò)程與MsgBox函數(shù)的區(qū)別是:MsgBox過(guò)程沒(méi)有返回值,也不用圓括號(hào)“()”,所以常用于較簡(jiǎn)單的信息顯示。其他用法與MsgBox函數(shù)相同。表3.1“按鈕”設(shè)置及意義類(lèi)別符號(hào)常量按鈕值意義按鈕數(shù)目vbOkOnlyvbOkCancelvbAbortRetryIgnorevbYesNoCancelvbYesNovbRetryCancel012345只顯示“確定”按鈕。顯示“確定”和“取消”按鈕。顯示“終止”、“重試”和“忽略”按鈕。顯示“是”、“否”和“取消”按鈕。顯示“是”和“否”按鈕。顯示“重試”和“取消”按鈕。圖標(biāo)類(lèi)型vbCriticalvbQuestionvbExclamationvbInformation16324864顯示警示圖標(biāo),紅色STOP標(biāo)志。顯示詢(xún)問(wèn)圖標(biāo)?。顯示警告消息圖標(biāo)!。顯示信息圖標(biāo)i。默認(rèn)按鈕vbDefaultButton1vbDefaultButton2vbDefaultButton30256512第一個(gè)按鈕為默認(rèn)按鈕。第二個(gè)按鈕為默認(rèn)按鈕。第三個(gè)按鈕為默認(rèn)按鈕。模式vbApplicationModalvbSystemModal04096應(yīng)用程序模式系統(tǒng)模式表3.2MsgBox函數(shù)的返回值返回值符號(hào)常量被單擊的按鈕1vbOk確定2vbCancel取消3vbAbort終止4vbRetry重試5vbIgnore忽略6vbYes是7vbNo否例如,在代碼中加入以下語(yǔ)句,程序在運(yùn)行中會(huì)打開(kāi)圖3-2所示的消息框。Msg=”程序運(yùn)行出錯(cuò),繼續(xù)嗎?”Title=”Msgbox演示程序”Resp=MsgBox(Msg,308,Title)If Resp=6 thenPrint“你選擇了是!”ElsePrint“你選擇了否!”End If圖3-2程序中,MsgBox函數(shù)的參數(shù)308也可以寫(xiě)成符號(hào)常量的形式。因308=4+48+256,因而可將數(shù)字308寫(xiě)成vbYesNo+vbCritical+vbDefaultButton2的常量表達(dá)式的形式;同樣,If語(yǔ)句也可寫(xiě)成If Resp=vbYes then的形式。【例3.1】輸入圓的半徑,求圓的面積。(1)進(jìn)入代碼窗口,編輯程序代碼如下:Private Sub Form_Click()Const Pi = 3.14定義常量PiDim r As Double, a as Doubler = InputBox(請(qǐng)輸入圓的半徑)a = Pi * r * rMsgBox(圓的面積為: & a )End Sub(2)運(yùn)行程序,輸入半徑為5,輸入、輸出對(duì)話(huà)框如圖3-3所示。圖3-3313 Print方法Print方法常用于在屏幕上輸出信息。在本書(shū)第一章1.4.2節(jié)中已有介紹。例如,執(zhí)行如下代碼:a = 10:b=15c$ =“歡迎使用Visual Basic”P(pán)rint“數(shù)值表達(dá)式a+b的值為:”;a+bPrintPrint“字符串變量c$的值為:”;c$運(yùn)行結(jié)果如下:“數(shù)值表達(dá)式a+b的值為: 25“字符串變量c$的值為:歡迎使用Visual Basic【例3.2】 用Print方法輸出圖形。程序運(yùn)行結(jié)果如圖3-4所示。Private Sub Form_Click()For i=1 to 5Print Tab(i);String(6-i,”)Next IEnd Sub圖3-4【注意】當(dāng)Tab(i)中i的值小于當(dāng)前位置的值時(shí),重新定位在下一行的i列。例如,執(zhí)行以下語(yǔ)句:Print tab(5);“abcdefg”;tab(8);“1234567”運(yùn)行結(jié)果如下:abcdefg1234567314打印機(jī)輸出Visual Basic除了可以在屏幕上輸出以外,還可以在打印機(jī)上輸出所需要的信息。1用PrintForm方法打印格式:窗體名.PrintForm功能:將指定窗體的信息傳送到打印機(jī)進(jìn)行打印。說(shuō)明:(1)缺省窗體名,則打印當(dāng)前窗體的信息。(2)PrintForm方法不僅可以打印窗體上的文本,而且還可以打印出窗體上的任何可見(jiàn)的控件及圖形。若窗體中包含圖形,需要將輸出窗體的AutoReDraw屬性設(shè)置為T(mén)rue。2用Printer對(duì)象打印格式:Printer.Print 表達(dá)式列表功能:把“表達(dá)式列表”中的內(nèi)容輸出到打印機(jī)上。例如,下列語(yǔ)句行將字符串“歡迎使用Visual Basic”輸出到Windows系統(tǒng)的缺省打印機(jī)上。Printer.Print 歡迎使用Visual BasicPrinter對(duì)象包含多種屬性和方法用以控制打印的各種特性。Printer對(duì)象的屬性不能在屬性窗口中設(shè)置,只能在運(yùn)行時(shí)通過(guò)程序代碼來(lái)設(shè)置。下面介紹一些Printer對(duì)象常用的屬性和方法。(1)Page屬性Page屬性用來(lái)保持和返回當(dāng)前的頁(yè)號(hào),格式為:Printer.Page每當(dāng)打印完一頁(yè)后,Page屬性值自動(dòng)增1。通常用Page屬性打印頁(yè)號(hào),例如:Printer.Print 第; Printer.Page; 頁(yè)(2)NewPage方法NewPage方法用以結(jié)束 Printer 對(duì)象中的當(dāng)前頁(yè)并前進(jìn)到下一頁(yè),也就是實(shí)現(xiàn)換頁(yè)操作,格式為:Printer.NewPage執(zhí)行NewPage方法可以強(qiáng)制使打印機(jī)前進(jìn)到下一個(gè)打印頁(yè),并將打印位置重置到新頁(yè)的左上角。調(diào)用 NewPage方法時(shí),它將 Printer 對(duì)象的 Page 屬性加 1。(3)EndDoc 方法EndDoc方法用來(lái)結(jié)束文件打印,格式為:Printer.EndDoc執(zhí)行EndDoc方法表明打印操作的結(jié)束,并向打印機(jī)管理程序發(fā)送最后一頁(yè)的退出信號(hào),并把Page屬性重置為1。(4)KillDoc方法KillDoc方法用于立即終止當(dāng)前打印作業(yè),格式為:Printer.KillDoc執(zhí)行KillDoc方法將中斷Print函數(shù)的執(zhí)行,且清除打印緩沖區(qū)中的所有信息?!纠?.3】 編寫(xiě)程序,實(shí)現(xiàn)連續(xù)打印“打印測(cè)試頁(yè)1”和“打印測(cè)試頁(yè)2”兩張測(cè)試頁(yè)。Private Sub Form_Click()Printer.Print 打印測(cè)試頁(yè);Printer.PagePrinter.NewPagePrinter.Print 打印測(cè)試頁(yè);Printer.PagePrinter.EndDocEnd Sub單擊窗體后,打印機(jī)打印兩頁(yè),分別為“打印測(cè)試頁(yè)1”和“打印測(cè)試頁(yè)2”。3.2順序結(jié)構(gòu)順序結(jié)構(gòu)就是程序的各語(yǔ)句按出現(xiàn)的先后次序執(zhí)行。在Visual Basic中順序結(jié)構(gòu)的語(yǔ)句主要有賦值語(yǔ)句、輸入語(yǔ)句、輸出語(yǔ)句等。3.2.1賦值語(yǔ)句賦值語(yǔ)句是程序設(shè)計(jì)中最基本的語(yǔ)句,也是為變量和事件的屬性賦值的最主要的方法。賦值語(yǔ)句的一般形式為:變量名= 表達(dá)式或?qū)ο竺?屬性 = 表達(dá)式賦值語(yǔ)句的作用:先計(jì)算右邊表達(dá)式的值,然后賦給左邊的變量或控件屬性。例如:sum= 100把數(shù)值常量100賦給變量sumaver=sum/10將表達(dá)式sum/10的值賦給變量averText1.Text =”Hello!”為文本框顯示字符串Text1.Text=”清除文本框的內(nèi)容【注意】(1)表達(dá)式可以是任何類(lèi)型的表達(dá)式,一般應(yīng)與變量名的類(lèi)型一致,當(dāng)表達(dá)式的類(lèi)型與變量的類(lèi)型不一致時(shí),作如下處理:若左邊是字符型變量,將右邊非字符型轉(zhuǎn)換成左邊的類(lèi)型。例如:C$=123數(shù)值常量123轉(zhuǎn)換為字符型數(shù)據(jù)”123”賦給c若左邊是數(shù)值型變量,右邊表達(dá)式為數(shù)字字符串時(shí),自動(dòng)轉(zhuǎn)換成數(shù)值類(lèi)型賦給左邊變量。若右邊表達(dá)式有非數(shù)字字符或空串時(shí),則出現(xiàn)類(lèi)型不匹配錯(cuò)誤。例如:m%=”100”數(shù)字串”100”轉(zhuǎn)換為數(shù)值100賦給變量mm%=”a100”出現(xiàn)類(lèi)型不匹配的錯(cuò)誤m%=”出現(xiàn)類(lèi)型不匹配的錯(cuò)誤若左邊是邏輯型變量,右邊是數(shù)值型表達(dá)式,非0轉(zhuǎn)換為T(mén)rue,0轉(zhuǎn)換為False;反之,將邏輯型表達(dá)式的值賦給數(shù)值型變量時(shí),True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0。例如:Dim f as Booleanx%=10:y%=5f=x+yf中結(jié)果為T(mén)ruef=x-10f中結(jié)果為Falsen%=xy表達(dá)式xy值為T(mén)rue,n中結(jié)果為-1n%=x=y表達(dá)式x=y值為False,n中結(jié)果為0不管表達(dá)式的值是什么類(lèi)型,都可以直接賦給一個(gè)變體類(lèi)型的變量。(2)賦值號(hào)與關(guān)系運(yùn)算符等于都用“=”表示,但系統(tǒng)不會(huì)產(chǎn)生混淆,會(huì)根據(jù)所處的位置自動(dòng)判斷是何種意義的符號(hào)。也就是在條件表達(dá)式中出現(xiàn)的是等號(hào),否則是賦值號(hào)。例如:賦值語(yǔ)句a=b與b=a是兩個(gè)結(jié)果不相同的賦值語(yǔ)句,而在關(guān)系表達(dá)式中a=b與b=a兩種表示方法是等價(jià)的。(3)賦值號(hào)左邊只能是變量,不能是常量、符號(hào)常量、表達(dá)式。下列語(yǔ)句均為錯(cuò)誤的賦值語(yǔ)句:5 = x + y左邊是常量vbcrlf=34左邊是符號(hào)常量x + y = 5左邊是表達(dá)式(4)不能在一條賦值語(yǔ)句中,同時(shí)給多個(gè)變量賦值。例如:要對(duì)x,y,z三個(gè)變量值賦初值1,如下面語(yǔ)句書(shū)寫(xiě)語(yǔ)法上沒(méi)錯(cuò),但結(jié)果不正確:Dim x%, y%, z%x = y = z = 1執(zhí)行該語(yǔ)句前x,y,z的變量值默認(rèn)是0,Visual Basic在編譯時(shí),將右邊兩個(gè)“=”作為關(guān)系運(yùn)算符處理,先進(jìn)行y=z比較,結(jié)果為T(mén)rue(-1);接著True=1比較結(jié)果False(0);最后將False賦值給x,因此最后三個(gè)變量中的值仍為0。正確書(shū)寫(xiě)應(yīng)分別使用三條賦值語(yǔ)句完成,寫(xiě)成:x=1y=1z=1或x=1:y=1:z=1書(shū)寫(xiě)在同一行上(5)如下賦值語(yǔ)句形式很常用:sum=sum+x表示將變量sum、x中的值相加后再賦給sum,與循環(huán)結(jié)構(gòu)結(jié)合使用,起到累加作用。n=n+1表示將變量n的值加1后再賦給n,與循環(huán)結(jié)構(gòu)結(jié)合使用,起到計(jì)數(shù)器的作用。3.2.2順序結(jié)構(gòu)舉例【例3.4】輸入某位同學(xué)的三門(mén)課程的成績(jī),求它們的平均分。程序代碼如下:Private Sub Form_Click()Dim s1!,s2!,s3!,aver!s1=InputBox(“輸入第一門(mén)課程的成績(jī)”)s2=InputBox(“輸入第二門(mén)課程的成績(jī)”)s3=InputBox(“輸入第三門(mén)課程的成績(jī)”)aver=(s1+s2+s3)/3print“aver=”;averEnd Sub33選擇結(jié)構(gòu)在人們所處理的問(wèn)題中,常常需要根據(jù)某些給定的條件是否滿(mǎn)足來(lái)決定所執(zhí)行的操作。選擇結(jié)構(gòu)就是對(duì)給定條件進(jìn)行判斷,從而選擇執(zhí)行不同分支,一般可由條件語(yǔ)句來(lái)完成。VB中的條件語(yǔ)句包括If語(yǔ)句和Select語(yǔ)句。331 If條件語(yǔ)句1ifThen語(yǔ)句語(yǔ)句格式:(1)If Then (2)If ThenEnd If語(yǔ)句功能:當(dāng)?shù)闹禐門(mén)rue或非零時(shí),執(zhí)行Then后面的語(yǔ)句(或語(yǔ)句塊),否則不做任何操作,實(shí)現(xiàn)單分支選擇結(jié)構(gòu)。其流程如圖3-5圖3-5說(shuō)明:(1)表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式,也可為算術(shù)表達(dá)式。例如:If n=0 Then EndIf 年齡=35 and 職稱(chēng)=”講師”Then n=n+1If x-5 Then print“x5”(2)格式(1)中的是單行語(yǔ)句,若要執(zhí)行多條語(yǔ)句,語(yǔ)句間用冒號(hào)分隔,且必須在一行上。格式(2)中的可以是一條或多條語(yǔ)句。例如,語(yǔ)句If xy Then x=x-5:y=y+5也可寫(xiě)成If xy Thenx=x-5y=y+5End If【例3.5】 輸入x的值,并輸出其絕對(duì)值。程序代碼如下:Private Sub Command1_Click()Dim x!x = InputBox(請(qǐng)輸入一個(gè)數(shù))If x0 Thenx = -xPrint 絕對(duì)值是:; xEnd Sub2IfThenElse語(yǔ)句語(yǔ)句格式:(1)If Then Else (2)If ThenElseEnd If語(yǔ)句功能:當(dāng)?shù)闹禐門(mén)rue或非零時(shí),執(zhí)行Then后面的語(yǔ)句(或語(yǔ)句塊),否則執(zhí)行Else后面的語(yǔ)句(或語(yǔ)句塊),實(shí)現(xiàn)雙分支選擇結(jié)構(gòu)。其流程如圖3-6圖3-6例如:輸入一個(gè)整數(shù),判斷其奇偶性。程序代碼如下:Private Sub Form_Click()Dim x as integerx=InputBox(“請(qǐng)輸入一個(gè)整數(shù)”)Ifx mod 2=0 Then Print x;”是偶數(shù)”Else Print x;”是奇數(shù)”End Sub3IfThenElseIf語(yǔ)句語(yǔ)句格式:If ThenElseIf ThenElseEnd If語(yǔ)句功能:根據(jù)不同的表達(dá)式值確定執(zhí)行哪個(gè)語(yǔ)句塊,實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。其流程如圖3-7圖3-7使用說(shuō)明:先計(jì)算的值,若為真,則執(zhí)行,并跳過(guò)其他分支語(yǔ)句執(zhí)行If語(yǔ)句的后續(xù)語(yǔ)句(即End If后面的語(yǔ)句);若為假,則計(jì)算的值,依此類(lèi)推,直到找到一個(gè)為真的條件時(shí),才執(zhí)行相應(yīng)的語(yǔ)句塊,然后執(zhí)行End If后面的語(yǔ)句。格式中的Else是可選項(xiàng),表示若無(wú)任何表達(dá)式值為真時(shí),則執(zhí)行;若無(wú)Else選項(xiàng),且所有條件表達(dá)式值都不為真,則不執(zhí)行If語(yǔ)句中的任何語(yǔ)句塊?!咀⒁狻慨?dāng)If語(yǔ)句內(nèi)有多個(gè)表達(dá)式的值為真時(shí),只執(zhí)行第一個(gè)為真的表達(dá)式后的語(yǔ)句塊。【例3.6】在文本框中輸入若干字符,統(tǒng)計(jì)其中字母字符、數(shù)字字符以及其他字符的個(gè)數(shù),并顯示結(jié)果。程序代碼如下:Dim countX%,countY%,countZ%Private Sub Text1_KeyPress(KeyAscii As Integer)Dim c$c=chr(KeyAscii)將文本框中輸入的字符賦給變量cIf Ucase(c)=”A”And Ucase(c)=”0”And c=”9”ThencountY=county+1ElsecountZ=countZ+1End IfIf KeyAscii=13 Then當(dāng)按回車(chē)鍵字符輸入完畢,顯示結(jié)果Print“字母字符有”;countX;”個(gè)”P(pán)rint“數(shù)字字符有”;countY;”個(gè)”P(pán)rint“其他字符有”;countZ;”個(gè)”End IfEnd Sub332 Select Case語(yǔ)句Select Case語(yǔ)句是多分支結(jié)構(gòu)的另一種表示形式,它可使程序代碼更加簡(jiǎn)單、清晰、易讀。語(yǔ)句格式:Select CaseCaseCaseCase ElseEnd Select語(yǔ)句功能:根據(jù)條件表達(dá)式的值轉(zhuǎn)向相應(yīng)的語(yǔ)句塊,實(shí)現(xiàn)多路分支。其流程如圖3-8。圖3-8使用說(shuō)明:先求出條件表達(dá)式的值,然后從上到下跟各個(gè)Case子句中的表達(dá)式列表進(jìn)行匹配,如果找到了相匹配的值,則執(zhí)行該子句下的語(yǔ)句塊。若有多個(gè)Case子句的值與條件表達(dá)式的值相匹配,則只執(zhí)行第一個(gè)與之匹配的Case子句后面的語(yǔ)句塊。如果沒(méi)有任何Case子句中的表達(dá)式列表與之匹配,則執(zhí)行Case Else子句中的語(yǔ)句塊。格式說(shuō)明:(1)條件表達(dá)式可以是數(shù)值表達(dá)式或字符串表達(dá)式,一般為變量。(2)表達(dá)式列表用來(lái)描述條件表達(dá)式的可能取值情況,可以由多個(gè)表達(dá)式組成,表達(dá)式與表達(dá)式之間要用“,”隔開(kāi),必須與條件表達(dá)式的數(shù)據(jù)類(lèi)型相同且有確定的值。表達(dá)式列表有以下三種形式:表達(dá)式或由逗號(hào)分隔的多個(gè)表達(dá)式例如:Case“A”Case 1,2,3Case a,b To 例如:Case -10 to 10Case“A”to“F”Casea to bIs 例如:Is =a+b【例3.7】某商店進(jìn)行購(gòu)物打折優(yōu)惠活動(dòng)促銷(xiāo),根據(jù)每位顧客一次性購(gòu)物的消費(fèi)額給予不同的折扣,具體方法如下:(1) 購(gòu)物1000元以上的九五折優(yōu)惠,(2) 購(gòu)物2000元以上的九折優(yōu)惠,(3) 購(gòu)物3000元以上的八五折優(yōu)惠,(4) 購(gòu)物5000元以上的八折優(yōu)惠。程序代碼如下:Private Sub Command1_Click()Dim x As Single, y As Singlex = InputBox(請(qǐng)輸入購(gòu)物金額:)Select Case xCase Is 1000Print 不優(yōu)惠y = xCase Is 2000Print 九五折優(yōu)惠y = 0.95 * xCase Is 3000Print 九折優(yōu)惠y = 0.9 * xCase Is = 5000Print 八折優(yōu)惠y = 0.8 * xEnd SelectPrint 優(yōu)惠后應(yīng)收款額為:; yEnd Sub333選擇結(jié)構(gòu)的嵌套將一個(gè)選擇結(jié)構(gòu)放在另一個(gè)選擇結(jié)構(gòu)內(nèi),稱(chēng)為選擇結(jié)構(gòu)的嵌套。If語(yǔ)句的多分支格式實(shí)際上是一種If結(jié)構(gòu)的嵌套形式。選擇結(jié)構(gòu)的嵌套既可以是同一種結(jié)構(gòu)的嵌套,也可以是不同結(jié)構(gòu)之間的嵌套。例如可以在If結(jié)構(gòu)中又包含If語(yǔ)句,或在If結(jié)構(gòu)中包含Select語(yǔ)句等形式。例如:若x大于0,則y等于1;若x小于0,則y等于-1;否則,y等于0。語(yǔ)句如下:If x0 Then y=1 Else If x0方程有兩個(gè)不同實(shí)根s=sqr(disc)Print“x1=”;(-b+s)/(2*a)Print“x2=”;(-b-s)/(2*a)Case Is=0方程有兩個(gè)相同實(shí)根Print“The root is:”P(pán)rint“x=”;-b/(2*a)Case Else方程沒(méi)有實(shí)根Print“No real root.”End SelectEnd IfEnd Sub334條件函數(shù)1IIF函數(shù)使用IIf函數(shù)也可以實(shí)現(xiàn)簡(jiǎn)單的雙分支選擇結(jié)構(gòu)。語(yǔ)句格式:result = IIF(條件表達(dá)式,)語(yǔ)句說(shuō)明:(1)“result”是函數(shù)的返回值:當(dāng)條件表達(dá)式為真時(shí),函數(shù)返回的值,當(dāng)條件表達(dá)式為假時(shí),函數(shù)返回的值。(2)和可以是任何表達(dá)式。例如:語(yǔ)句If xy Then max=x Else max=Y也可寫(xiě)成:Max=IIf(xy,x,y)2Choose()函數(shù)使用Choose函數(shù)也可以實(shí)現(xiàn)簡(jiǎn)單的多分支選擇結(jié)構(gòu)。語(yǔ)句格式:result=Choose(整數(shù)表達(dá)式,選項(xiàng)列表)語(yǔ)句說(shuō)明:Choose函數(shù)根據(jù)整數(shù)表達(dá)式的值來(lái)決定返回選項(xiàng)列表中的某個(gè)值。若整數(shù)表達(dá)式值是1,則Choose函數(shù)會(huì)返回列表中的第1個(gè)選項(xiàng)。若整數(shù)表達(dá)式值是2,則會(huì)返回列表中的第2個(gè)選項(xiàng),以此類(lèi)推。若整數(shù)表達(dá)式的值小于1或大于列出的選項(xiàng)數(shù)目時(shí),Choose函數(shù)返回Null。例如:c=Choose(x,”red”,”green”,”blue”)當(dāng)x值為1時(shí),返回“red”;當(dāng)x值為2時(shí),返回“green”;當(dāng)x值為3時(shí),返回“blue”;當(dāng)x不在1-3之間,函數(shù)返回Null。3、Switch函數(shù)Switch函數(shù)稱(chēng)開(kāi)關(guān)函數(shù),計(jì)算一個(gè)條件表達(dá)式列表,并返回與該表中一個(gè)等于True的條件表達(dá)式相聯(lián)系的一個(gè)表達(dá)式的值。語(yǔ)句格式:Result=Switch(,)語(yǔ)句說(shuō)明:當(dāng)條件表達(dá)式1為T(mén)rue時(shí),返回表達(dá)式1的值;當(dāng)條件表達(dá)式2為T(mén)rue時(shí),返回表達(dá)式2的值,依此類(lèi)推。例如:y=switch(x0,1,x=0,0,x0,-1)34循環(huán)結(jié)構(gòu)在實(shí)際應(yīng)用中,經(jīng)常遇到一些需要反復(fù)多次處理的問(wèn)題,例如求若干個(gè)數(shù)之和、積等。重復(fù)執(zhí)行某一程序塊稱(chēng)作循環(huán)。Visual Basic提供了多種不同風(fēng)格的循環(huán)結(jié)構(gòu)語(yǔ)句,包括Do Loop、While Wend,F(xiàn)or Next,F(xiàn)or Each Next等,其中最常用的是For Next語(yǔ)句和Do Loop語(yǔ)句。341計(jì)數(shù)循環(huán)For循環(huán)又稱(chēng)計(jì)數(shù)循環(huán),常用于循環(huán)次數(shù)預(yù)知的場(chǎng)合。語(yǔ)句格式如下:For = ToStep Next 說(shuō)明:(1)參數(shù)、和都是數(shù)值型。(2)內(nèi)是一系列VB合法的語(yǔ)句,構(gòu)成循環(huán)體。(3)步長(zhǎng)為可選參數(shù),如果沒(méi)有指定,則默認(rèn)值為1。步長(zhǎng)可以為正,也可以為負(fù)。若為正,則初值應(yīng)小于或等于終值;若為負(fù),則初值應(yīng)大于或等于終值,這樣才能保證執(zhí)行循環(huán)體內(nèi)的語(yǔ)句;若為0,循環(huán)永遠(yuǎn)不能結(jié)束(即出現(xiàn)死循環(huán))。(4)該語(yǔ)句的執(zhí)行過(guò)程如圖3-9所示:把“初值”賦給“循環(huán)變量”,僅被賦值一次。檢查循環(huán)變量的值是否超過(guò)終值,若是就結(jié)束循環(huán),執(zhí)行Next后的下一語(yǔ)句;否則執(zhí)行一次循環(huán)體。執(zhí)行Next語(yǔ)句,循環(huán)變量的值增加一個(gè)步長(zhǎng),轉(zhuǎn)繼續(xù)循環(huán)。圖3-9【例3.9】求1到100的和。Private Sub Command1_Click()Dim i As Integer, sum As Integersum = 0給變量sum賦初值0For i = 1 To 100sum = sum + i累加Next iPrint sumEnd Sub思考:若要將上例的求和問(wèn)題改為求積,如求10!,應(yīng)如何編寫(xiě)代碼?【注意】(1)一般在循環(huán)體內(nèi)不要修改循環(huán)變量的值,否則會(huì)影響原有的循環(huán)控制狀況。例如以下程序段:For i=1 To 5If i Mod 2 = 0 Then i = i + 1Print i;Next i程序執(zhí)行打印結(jié)果為:1 3 5循環(huán)體執(zhí)行了3次,若沒(méi)有第二行,程序應(yīng)執(zhí)行5次。(2)如果在循環(huán)體中沒(méi)有修改循環(huán)變量的值,則循環(huán)的次數(shù)可以從For語(yǔ)句中指定的參數(shù)直接計(jì)算出來(lái):循環(huán)次數(shù)=Int(循環(huán)終值-循環(huán)初值)/步長(zhǎng))+1如:For i=1 To 10 Step 3Print i;Next i循環(huán)次數(shù)=int(10-1)/3)+1=4【例3.10】 求Fibonacci數(shù)列的前30個(gè)數(shù)。這個(gè)數(shù)列有如下特點(diǎn):前兩個(gè)數(shù)為1,從第三個(gè)數(shù)開(kāi)始,其值是前兩個(gè)數(shù)的和,即:F1=1 (n=1)F2=1 (n=2)Fn= Fn1+ Fn2(n3)程序如下:Private Sub Command1_Click()Dim i As IntegerDim f1 As Long, f2 As Long, fn As Longf1 = 1f2 = 1Print f1,Print f2,For i = 3 To 30f1,f2已知,從第三個(gè)數(shù)開(kāi)始計(jì)算fn = f1 + f2f1 = f2f2 = fn更改f1,f2的值Print fn,If i Mod 4 = 0 Then Print打印4個(gè)數(shù)后換行打印NextEnd Sub運(yùn)行結(jié)果如圖3-10:圖3-10342條件型循環(huán)條件型循環(huán)是根據(jù)某個(gè)條件決定循環(huán)的次數(shù)。常用的循環(huán)結(jié)構(gòu)有:While循環(huán)結(jié)構(gòu)及Do循環(huán)結(jié)構(gòu)。1. While循環(huán)結(jié)構(gòu)While循環(huán)結(jié)構(gòu)用WhileWend語(yǔ)句來(lái)實(shí)現(xiàn),語(yǔ)句格式如下:While Wend語(yǔ)句說(shuō)明:(1)“條件表達(dá)式”可以是關(guān)系表達(dá)式、邏輯表達(dá)式或數(shù)值表達(dá)式。如果是數(shù)值表達(dá)式,值為0被作為False,非零值則為T(mén)rue。(2)語(yǔ)句的執(zhí)行過(guò)程是:先計(jì)算條件表達(dá)式的值,若為T(mén)rue,則執(zhí)行循環(huán)中的語(yǔ)句塊,遇到Wend語(yǔ)句時(shí)返回While語(yǔ)句繼續(xù)判斷條件表達(dá)式的值,若仍為真,則繼續(xù)執(zhí)行語(yǔ)句塊,重復(fù)上述過(guò)程直到條件表達(dá)式的值為False,則退出循環(huán)結(jié)構(gòu),執(zhí)行Wend語(yǔ)句的后續(xù)語(yǔ)句。循環(huán)環(huán)執(zhí)行過(guò)程如圖3-11。(3)如果條件一開(kāi)始就不成立,則語(yǔ)句塊一次也不會(huì)被執(zhí)行。圖3-11例如,用While循環(huán)語(yǔ)句改寫(xiě)例3.9,程序代碼如下:Private Sub Command1_Click()Dim i As Integer, sum As Integersum = 0 :i=1While i=100sum = sum + ii=i+1WendPrint sumEnd Sub2. Do循環(huán)結(jié)構(gòu)Do循環(huán)結(jié)構(gòu)的形式較靈活,可分為以下幾種:(1)先判斷條件的DoLoop循環(huán)格式一:Do WhileLoop語(yǔ)句執(zhí)行過(guò)程:先計(jì)算條件表達(dá)式的值,若為T(mén)rue,則執(zhí)行語(yǔ)句塊中的語(yǔ)句;若為False則退出循環(huán)結(jié)構(gòu)。循環(huán)環(huán)執(zhí)行過(guò)程如圖3-12。格式二:Do UntilLoop語(yǔ)句執(zhí)行過(guò)程和格式一基本相同,唯一不同的是,它在條件表達(dá)式為False時(shí)重復(fù)執(zhí)行語(yǔ)句塊,直到條件為T(mén)rue時(shí)退出循環(huán)結(jié)構(gòu)。循環(huán)環(huán)執(zhí)行過(guò)程如圖3-13。圖3-12圖3-13【例311】將10000元存入銀行,按3.25%的利率,試問(wèn)多長(zhǎng)時(shí)間就會(huì)連本帶利翻一番。程序代碼如下:Private Sub Form_Click()Dim year%,money!,original!,interest!original=10000money=originalInterest=3.25/100Do While money2*originalyear=year+1money=money+interest*money累計(jì)每過(guò)一年的連本帶利的金額LoopPrint“In”;year;”years,youll have”;moneyEnd Sub請(qǐng)讀者自己使用格式二改寫(xiě)上述程序。(2)后判斷條件的DoLoop循環(huán)格式三:DoLoop While語(yǔ)句執(zhí)行過(guò)程:首先執(zhí)行語(yǔ)句塊中語(yǔ)句,然后計(jì)算條件表達(dá)式,如果條件表達(dá)式值為T(mén)rue,則繼續(xù)執(zhí)行語(yǔ)句塊,否則退出循環(huán)結(jié)構(gòu)。循環(huán)體至少執(zhí)行一次。循環(huán)環(huán)執(zhí)行過(guò)程如圖3-14。格式四:DoLoop Until格式四的執(zhí)行過(guò)程和格式三基本一樣,也是先執(zhí)行后判斷。唯一不同的是,它在條件表達(dá)式值為假時(shí)重復(fù)執(zhí)行語(yǔ)句塊,直到條件表達(dá)式值為真時(shí)退出循環(huán)結(jié)構(gòu)。循環(huán)環(huán)執(zhí)行過(guò)程如圖3-15。圖3-14圖3-15【例312】用輾轉(zhuǎn)相除法求兩正整數(shù)m,n的最大公約數(shù)。求最大公約數(shù)的算法如下:(1)對(duì)于已知兩數(shù)m,n,使得mn;(2)m除以n得余數(shù)r;(3)令mn,nr;(4)若r0,轉(zhuǎn)到(2)繼續(xù)執(zhí)行,直到r=0求得最大公約數(shù)為m,循環(huán)結(jié)束。程序代碼如下:Private Sub Form_Click()Dim m%,n%m = InputBox(輸入m)n = InputBox(輸入n)If mnt=mm=nn=tEnd Ifm1=mn1=nDor = m Mod nm = nn = rLoop while ( r 0)Print m1; ,; n1; 的最大公約數(shù)為; mEnd Sub(3)無(wú)條件循環(huán)格式:DoLoop重復(fù)執(zhí)行循環(huán)體,循環(huán)不會(huì)停止,除非在循環(huán)體中有Exit Do語(yǔ)句或在執(zhí)行時(shí)按下Ctrl+Break鍵。例如:Private Sub Form_Click()s=0i=0Doi=i+1s=s+iIf s=3000 Then Exit Do當(dāng)s3000,執(zhí)行Exit Do語(yǔ)句退出循環(huán)LoopPrint i,sEnd Sub343循環(huán)結(jié)構(gòu)的嵌套在一個(gè)循環(huán)語(yǔ)句的循環(huán)體內(nèi)又包含另一個(gè)循環(huán)語(yǔ)句,稱(chēng)為循環(huán)的嵌套。循環(huán)的嵌套既可以是同一種循環(huán)結(jié)構(gòu)的嵌套,也可以是不同循環(huán)結(jié)構(gòu)之間的嵌套。例如,可以在For循環(huán)中包含另一個(gè)For循環(huán),也可以在Do循環(huán)中包含一個(gè)For循環(huán)?!纠?13】輸出3-100之間的素?cái)?shù)。素?cái)?shù),就是一個(gè)大于2且只能被1和本身整除的整數(shù)。判斷某數(shù)m是否為素?cái)?shù)的算法是:對(duì)于m從i=2,3,m-1判別m能否被i整除,只要有一個(gè)能整除,m就不是素?cái)?shù),否則m是素?cái)?shù)。程序代碼如下:Private Sub Form_Click()Dim m%,i%,k%,Flag As BooleanFor m=3 To 100Flag=TrueFor i=2 To m-1內(nèi)循環(huán)判斷m是否為素?cái)?shù)If (m mod i)=0 Then Flag=FalseNext iIf Flag Thenk = k + 1If (k Mod 10) = 0 Then Print m Else Print m;每行顯示10個(gè)End IfNext mEnd Sub實(shí)際上m不可能被大于m的數(shù)整除,因此為減少循環(huán)次數(shù),可將內(nèi)循環(huán)語(yǔ)句改為:For i=2 To int(sqr(m)循環(huán)次數(shù)就會(huì)大大減少?!咀⒁狻浚?)內(nèi)外循環(huán)不能交叉。例如,以下程序段是錯(cuò)誤的:For i=1 to 10For i=1 to 10For j=1 to 10應(yīng)改為:For j=1 to 10Next iNext jNext jNext i(2)兩個(gè)并列的循環(huán)結(jié)構(gòu)的循環(huán)變量可以同名,但嵌套結(jié)構(gòu)中的內(nèi)循環(huán)變量不能與外循環(huán)變量同名。例如:正確的程序段錯(cuò)誤的程序段For i=1 to 10For i=1 to 10For i=1 to 10Next iFor i=1 to 10Next iNext iNext i35輔助控制語(yǔ)句351 End語(yǔ)句End語(yǔ)句的作用是使程序結(jié)束運(yùn)行,它可以放在任何事件過(guò)程中。語(yǔ)句格式如下:End在過(guò)程、函數(shù)、分支等的結(jié)束部分都用到以End開(kāi)頭的語(yǔ)句,這些語(yǔ)句一般只結(jié)束某個(gè)過(guò)程或語(yǔ)句塊。如End Sub、End If、End Function等。352 With語(yǔ)句語(yǔ)句格式:With End With語(yǔ)句功能:用于對(duì)單個(gè)對(duì)象或用戶(hù)自定義類(lèi)型變量執(zhí)行一系列語(yǔ)句,而不需重復(fù)地給出對(duì)象名或用戶(hù)自定義類(lèi)型變量名。使用說(shuō)明:(1)語(yǔ)句格式中,是指單個(gè)對(duì)象或用戶(hù)自定義類(lèi)型變量。(2)該語(yǔ)句可以嵌套。(3)使用With語(yǔ)句對(duì)某個(gè)對(duì)象
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 食品追溯技術(shù)助力供給側(cè)改革:2025年行業(yè)應(yīng)用與體系建設(shè)研究
- 防范和打擊非法集資培訓(xùn)
- 工業(yè)噪音污染講解課件
- 寫(xiě)字樓開(kāi)業(yè)活動(dòng)執(zhí)行方案
- 公務(wù)接待培訓(xùn)課件
- 成功勵(lì)志教育
- 廢料過(guò)磅流程標(biāo)準(zhǔn)化實(shí)施規(guī)范
- DM培訓(xùn)流程方案
- 會(huì)議管理實(shí)務(wù)培訓(xùn)課件
- 孕產(chǎn)婦健康管理經(jīng)驗(yàn)交流
- -2024-2025學(xué)年統(tǒng)編版語(yǔ)文二年級(jí)下冊(cè) 期末復(fù)習(xí)練習(xí)題(含答案)
- 2025年中國(guó)融通農(nóng)業(yè)發(fā)展有限集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 齊齊哈爾大學(xué)教師教育實(shí)踐中心申報(bào)材料匯總
- 百家麗-中國(guó)-照明電器有限公司的精益生產(chǎn)應(yīng)用
- 中考物理總復(fù)習(xí)課教案(第一輪)
- 工廠開(kāi)工試車(chē)方案
- 變電站土石方工程施工方案(42頁(yè))
- 英語(yǔ)專(zhuān)業(yè)四級(jí)寫(xiě)作評(píng)分標(biāo)準(zhǔn)
- 汽油柴油一書(shū)一簽
- SAP銷(xiāo)售啟用發(fā)出商品業(yè)務(wù)配置及操作手冊(cè)(共15頁(yè))
- 模具外發(fā)加工與驗(yàn)收標(biāo)準(zhǔn)及流程
評(píng)論
0/150
提交評(píng)論