![VB程序設(shè)計第4章Visual+Basic語言程序結(jié)構(gòu)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/a0d9fecf-30c6-44ea-b418-f8582335bfad/a0d9fecf-30c6-44ea-b418-f8582335bfad1.gif)
![VB程序設(shè)計第4章Visual+Basic語言程序結(jié)構(gòu)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/a0d9fecf-30c6-44ea-b418-f8582335bfad/a0d9fecf-30c6-44ea-b418-f8582335bfad2.gif)
![VB程序設(shè)計第4章Visual+Basic語言程序結(jié)構(gòu)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/a0d9fecf-30c6-44ea-b418-f8582335bfad/a0d9fecf-30c6-44ea-b418-f8582335bfad3.gif)
![VB程序設(shè)計第4章Visual+Basic語言程序結(jié)構(gòu)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/a0d9fecf-30c6-44ea-b418-f8582335bfad/a0d9fecf-30c6-44ea-b418-f8582335bfad4.gif)
![VB程序設(shè)計第4章Visual+Basic語言程序結(jié)構(gòu)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/a0d9fecf-30c6-44ea-b418-f8582335bfad/a0d9fecf-30c6-44ea-b418-f8582335bfad5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、VB程序設(shè)計程序設(shè)計第四章第四章 Visual Basic語言程序結(jié)構(gòu)語言程序結(jié)構(gòu) 本章知識點本章知識點: 4.1 4.1 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計 4.2 4.2 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計4.3 4.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計4.4 4.4 常用算法舉例常用算法舉例 4.1 4.1 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計 4.1.1 4.1.1 賦值語句賦值語句 賦值語句一般形式如下:賦值語句一般形式如下:變量名變量名= =表達(dá)式表達(dá)式對象對象. .屬性屬性= =表達(dá)式表達(dá)式功能:完成表達(dá)式的計算,將計算結(jié)果賦值給等號左側(cè)功能:完成表達(dá)式的計算,將計算結(jié)果賦值給等號左側(cè)的
2、變量或?qū)ο蟮膶傩?。例如:的變量或?qū)ο蟮膶傩?。例如?x=1 x=1 把把1 1賦給變量賦給變量x x Text1.text=hello! Text1.text=hello! 把字符串把字符串hello!hello!賦給文賦給文本框本框Text1Text1的的texttext屬性屬性 說明:說明: 執(zhí)行過程:先求表達(dá)式的值,然后將值賦值給左邊的執(zhí)行過程:先求表達(dá)式的值,然后將值賦值給左邊的變量。變量。 右邊的表達(dá)式可以是變量、常量、函數(shù)調(diào)用等特殊的右邊的表達(dá)式可以是變量、常量、函數(shù)調(diào)用等特殊的表達(dá)式。表達(dá)式。 不要將不要將“”理解為數(shù)學(xué)上的等號:理解為數(shù)學(xué)上的等號: A=A+1 A=A+1 是表
3、示將是表示將A A單元的值加單元的值加后以放回到后以放回到A A單元。單元。執(zhí)行過程如右圖執(zhí)行過程如右圖 賦值符號賦值符號“= =”左邊一定只能是變量名或?qū)ο蟮膶傩砸筮呉欢ㄖ荒苁亲兞棵驅(qū)ο蟮膶傩砸茫荒苁浅A?、符號常量、表達(dá)式。用,不能是常量、符號常量、表達(dá)式。 下面的賦值語句都是錯的:下面的賦值語句都是錯的:5=X 5=X 左邊是常量。左邊是常量。Abs(X)=20 Abs(X)=20 左邊是函數(shù)調(diào)用,即是表達(dá)式。左邊是函數(shù)調(diào)用,即是表達(dá)式。 賦值符號賦值符號“= =”兩邊的數(shù)據(jù)類型一般要求應(yīng)一致。如果兩邊的數(shù)據(jù)類型一般要求應(yīng)一致。如果兩邊的類型不同,則以左邊變量或?qū)ο髮傩缘臄?shù)據(jù)類型兩
4、邊的類型不同,則以左邊變量或?qū)ο髮傩缘臄?shù)據(jù)類型為基準(zhǔn),如果右邊表達(dá)式結(jié)果的數(shù)據(jù)類型能夠轉(zhuǎn)換成左為基準(zhǔn),如果右邊表達(dá)式結(jié)果的數(shù)據(jù)類型能夠轉(zhuǎn)換成左邊的數(shù)據(jù)類型,則強(qiáng)制轉(zhuǎn)換后再賦值;如果不能轉(zhuǎn)換,邊的數(shù)據(jù)類型,則強(qiáng)制轉(zhuǎn)換后再賦值;如果不能轉(zhuǎn)換,則系統(tǒng)提示出錯信息。則系統(tǒng)提示出錯信息。 具體處理規(guī)則如下:具體處理規(guī)則如下:若都是數(shù)值型,但精度不同,強(qiáng)制轉(zhuǎn)換成左邊變量的數(shù)據(jù)精度。例如:X%=3.1415926 按四舍五入取整,結(jié)果x=3 Y!=123 將整數(shù)123轉(zhuǎn)換成實數(shù)123.0,結(jié)果Y=123.0當(dāng)表達(dá)式是數(shù)值字符串,左邊變量是數(shù)值型,自動轉(zhuǎn)換成數(shù)值類型再賦值,但若表達(dá)式有非數(shù)值字符或空串,則出錯
5、。例如:Y%=“123” 結(jié)果Y=123 Y%=“123B” 出錯,提示“類型不匹配” Y%=“ ” 出錯,提示“類型不匹配”任何非字符類型數(shù)據(jù)賦值給字符類型,都自動轉(zhuǎn)換為字符類型。當(dāng)邏輯量賦值給數(shù)值型時,True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0;反之當(dāng)數(shù)值型賦值給邏輯性時,非0轉(zhuǎn)換為True,0轉(zhuǎn)換為False。例如:A%=True 結(jié)果A=-1 Dim A as Boolean A=-5 結(jié)果A=True4.1 4.1 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計 4.1.2 4.1.2 數(shù)據(jù)輸入數(shù)據(jù)輸入 用戶主要通過三種方式實現(xiàn)數(shù)據(jù)輸入:使用文本框控件,使用系用戶主要通過三種方式實現(xiàn)數(shù)據(jù)輸入:使用文本
6、框控件,使用系統(tǒng)提供的統(tǒng)提供的InputBoxInputBox函數(shù),使用磁盤數(shù)據(jù)文件。本節(jié)主要介紹函數(shù),使用磁盤數(shù)據(jù)文件。本節(jié)主要介紹InputBoxInputBox函數(shù)。函數(shù)格式如下:函數(shù)。函數(shù)格式如下: 變量名變量名$=InputBox($=InputBox(提示信息,對話框標(biāo)題,缺省值提示信息,對話框標(biāo)題,缺省值) )功能:彈出輸入對話框,供用戶輸入一個數(shù)據(jù)。功能:彈出輸入對話框,供用戶輸入一個數(shù)據(jù)。其中:其中:提示信息:是一個字符串表達(dá)式,最大長度不超過提示信息:是一個字符串表達(dá)式,最大長度不超過10241024個字符,要個字符,要來提示用戶輸入相關(guān)內(nèi)容,可使用來提示用戶輸入相關(guān)內(nèi)容,
7、可使用chr(13)+chr(10)chr(13)+chr(10)實現(xiàn)換行。實現(xiàn)換行。對話框標(biāo)題:是字符串表達(dá)式,可省略,默認(rèn)為應(yīng)用程序名。對話框標(biāo)題:是字符串表達(dá)式,可省略,默認(rèn)為應(yīng)用程序名。缺省值:是顯示在對話框輸入?yún)^(qū)的默認(rèn)值。缺省值:是顯示在對話框輸入?yún)^(qū)的默認(rèn)值。 例如,Dim x% x= Val(InputBox(請輸入一個數(shù) ,輸入框,100 ) 在屏幕上顯示如圖4.2所示的對話框: 圖4.2 InputBox對話框4.1 4.1 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計 4.1.3 4.1.3 數(shù)據(jù)輸出數(shù)據(jù)輸出 1.Print1.Print方法方法 PrintPrint方法的一般格式如下:
8、方法的一般格式如下: 對象名對象名.Print.PrintSpc(n)|Tab(n)Spc(n)|Tab(n) ,| |;說明:說明: ,(逗號):輸出項分隔符,表示各項按標(biāo)準(zhǔn)格式輸出,即以14個字符劃分的區(qū)域中輸出,每區(qū)域輸出一項,輸出位置定位于該區(qū)域首位置 ;(分號):輸出項分隔符,表示各項按緊湊格式輸出,即下一代輸出緊接著本項輸出的后面。 Spc函數(shù):用來確定輸出項之間的相對字符,相對前一個字符而言,n是一正整數(shù),表示字符數(shù)。例如,Print Spc (5);x; Spc (4);y Tab函數(shù):用來確定輸出項的開始輸出位置,用n確定絕對位置,相對每行起始字符而言,在Print中可以使用
9、多個Tab, 每個Tab中的n值應(yīng)該是遞增的。例如,print Tab (5);x; Tab (10);y 輸出項:任意類型的常量或有值變量或表達(dá)式,可以是用分隔符分隔的多個輸出項。Print方法具有計算和輸出雙重功能,若輸出項是一個表達(dá)式,則先計算表達(dá)式的值,然后輸出該值。 例:在窗體Form1的單擊事件中寫入如下代碼:Private Sub Form_Click()a = 10: b = 3.14: c = 100Print a=; a, b=; bPrint a=; a, b=; bPrint a=; a, b=; bPrint 空一行Print ; a=; a, b=; bPrint
10、a=; a, Tab(18); b=; bPrint a=; a, Spc(18); b=; b PrintPrint a=; a, b=; bPrint Tab(18); “a=”; a, “b=”; b 從第18列開始打印輸出Print Spc(18); a=; a, b=; bEnd Sub2. MsgBox函數(shù)和函數(shù)和MsgBox方法方法函數(shù)形式:函數(shù)形式:變量變量% = MsgBox% = MsgBox(提示信息(提示信息 ,對話框類型,對話框類型 ,標(biāo)題,標(biāo)題)(1 1)“標(biāo)題標(biāo)題”和和“提示信息提示信息”與與InputBoxInputBox函數(shù)中對應(yīng)的函數(shù)中對應(yīng)的參數(shù)相同;參數(shù)相
11、同;(2 2)對話框類型由)對話框類型由“按鈕圖標(biāo)按鈕圖標(biāo) + +缺省按鈕缺省按鈕+ +模式模式”4 4項項組成,是整型表達(dá)式,決定信息框按鈕數(shù)目、出現(xiàn)在信組成,是整型表達(dá)式,決定信息框按鈕數(shù)目、出現(xiàn)在信息框上的圖標(biāo)類型及操作模式如表息框上的圖標(biāo)類型及操作模式如表4.14.1所示。所示。 分組分組內(nèi)部常數(shù)內(nèi)部常數(shù)取值取值描述描述按鈕數(shù)目按鈕數(shù)目VBOKONLYVBOKONLYVBokcancelVBokcancelVBabortretryignreVBabortretryignreVByesnocancelVByesnocancelVByesnoVByesnoVBretrycancelVBre
12、trycancel0 01 12 23 34 45 5只顯示只顯示“確定確定”按鈕按鈕顯示顯示“確定確定”及及“取消取消”按鈕按鈕顯示顯示“終止終止”、 “重試重試”及及“忽略忽略”按鈕按鈕顯示顯示“是是”、 “否否”及及“取消取消”按鈕按鈕顯示顯示“是是”及及“否否”按鈕按鈕顯示顯示“重試重試”及及“取消取消”按鈕按鈕圖標(biāo)類型圖標(biāo)類型VBCriticalVBCriticalVBQuestionVBQuestionVBExclamationVBExclamationVBInformationVBInformation1616323248486464“停止停止”圖標(biāo)圖標(biāo) “X X”“問號問號”圖
13、標(biāo)圖標(biāo) ? ?“驚嘆號驚嘆號”圖標(biāo)圖標(biāo) ! !“信息信息”圖標(biāo)圖標(biāo) i i默認(rèn)按鈕默認(rèn)按鈕VBDefaultButton1VBDefaultButton1VBDefaultButton2VBDefaultButton2VBDefaultButton3VBDefaultButton30 0256256512512第第1 1個按鈕為默認(rèn)按鈕個按鈕為默認(rèn)按鈕第第2 2個按鈕為默認(rèn)按鈕個按鈕為默認(rèn)按鈕第第3 3個按鈕為默認(rèn)按鈕個按鈕為默認(rèn)按鈕模式模式VBApplicationModelVBApplicationModelVBSystemModelVBSystemModel0 040964096應(yīng)用模式
14、應(yīng)用模式系統(tǒng)模式系統(tǒng)模式例如:i=Msgbox(“注意:你輸入的數(shù)據(jù)不正確”,2+48+0+0,“錯誤提示”),結(jié)果如圖4.4所示。圖4.4 Msgbox對話框4.2 4.2 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計4.2.1 IF4.2.1 IF語句語句1 1)IfIfThenThen語句語句( (單分支結(jié)構(gòu)單分支結(jié)構(gòu)) ) If If Then Then 語句塊語句塊 End IfEnd If 或:或:If If Then Then 圖4.5 選擇結(jié)構(gòu)流程圖例4.4 設(shè)密碼。用IF語句來判定輸入密碼的正確性。Private Sub Command1_Click() Dim a As String,
15、 b As String a = 111111 b = InputBox(請輸入密碼:, 密碼對話框) If a = b Then MsgBox (密碼正確) End IfEnd Sub 2)IfThenElse語句(雙分支結(jié)構(gòu))格式1:If Then Else End If格式2: If Then Else 例4.5 計算下列分段函數(shù)的值 分析:對于此分段函數(shù),由于包含X=0 和X= 0 Then y = (1 - x) 2 Else y = x 2 - 1 End If Print y=; yEnd Sub22(1)010 xxyxx3)IfThenElseIf語句(多分支結(jié)構(gòu)) 使用形式
16、: If Then ElseIf Then Else 語句塊 n+1 End If 例4.6 輸入一學(xué)生成績,評定其等級。方法是:90100分為“優(yōu)秀”,8089分為“良好”,7079分為“中等”,6069分為“及格”,60分以下以為“不合格”。Private Sub Form_Click() Dim x As Integer x = Val(InputBox(請輸入成績:) If x = 90 Then Print 優(yōu)秀 ElseIf x = 80 Then Print 良好 ElseIf x = 70 Then Print 中等 ElseIf x = 60 Then Print 及格 El
17、se Print 不及格 End IfEnd Sub4.2 4.2 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計4.2.2 Select Case4.2.2 Select Case語句語句 Select Case Select Case 條件表達(dá)式條件表達(dá)式Case Case 表達(dá)式列表表達(dá)式列表1 1語句塊語句塊1 1Case Case 表達(dá)式列表表達(dá)式列表2 2語句塊語句塊2 2Case ElseCase Else語句塊語句塊n+1n+1End SelectEnd Select說明:說明: 與與 是同類型的,為下面是同類型的,為下面3 3種形式之一:種形式之一:(1 1) 一組枚舉表達(dá)式一組枚舉表達(dá)式
18、( (用逗號分隔用逗號分隔) ):例如,:例如, 2, 4, 6, 82, 4, 6, 8。 (2 2) 表達(dá)式表達(dá)式1 To 1 To 表達(dá)式表達(dá)式2 2 :例如,:例如,60 to 10060 to 100。(3 3) Is Is 關(guān)系運算符表達(dá)式:例如,關(guān)系運算符表達(dá)式:例如,Is 60Is 60。將例4.6 使用Select Case語句來實現(xiàn)。程序段如下:Private Sub Form_Click()Dim x As Integerx = Val(InputBox(請輸入成績:)Select Case x Case 90 To 100 Print 優(yōu)秀 Case 80 To 89
19、Print 良好 Case 70 To 79 Print 中等 Case 60 To 69 Print 及格 Case Else Print 不及格End SelectEnd Sub 4.2 4.2 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計4.2.3 4.2.3 選擇結(jié)構(gòu)的嵌套選擇結(jié)構(gòu)的嵌套 如果在選擇結(jié)構(gòu)中又出現(xiàn)如果在選擇結(jié)構(gòu)中又出現(xiàn)IFIF語句或語句或selectselect語句,就是選擇結(jié)構(gòu)的嵌套語句,就是選擇結(jié)構(gòu)的嵌套 (1) IF Then IF Then Else . End If Else IF Then . Else . End If End IF(2) IF Then Select
20、Case 條件1_1 Case 值1_1 IF Then Else . End If Case值1_2. . End Select . End IF 注意:只要在一個分支內(nèi)嵌注意:只要在一個分支內(nèi)嵌套,不出現(xiàn)交叉,滿足結(jié)構(gòu)套,不出現(xiàn)交叉,滿足結(jié)構(gòu)規(guī)則,其嵌套的形式將有很規(guī)則,其嵌套的形式將有很多種,嵌套層次也可以任意多種,嵌套層次也可以任意多。對于多層多。對于多層IFIF嵌套結(jié)構(gòu)中,嵌套結(jié)構(gòu)中,要特別注意要特別注意IFIF與與ElseElse的配對的配對關(guān)系,一個關(guān)系,一個ElseElse必須與必須與IFIF配配結(jié),配對的原則是:在寫含結(jié),配對的原則是:在寫含有多層嵌套的程序時,建議有多層嵌套
21、的程序時,建議使用縮進(jìn)對齊方式,這樣容使用縮進(jìn)對齊方式,這樣容易閱讀和維護(hù)。易閱讀和維護(hù)。例4.7 在文本框中輸入1100之間的數(shù)字,如果輸入非數(shù)字,或數(shù)字超界,給予提示,并重新輸入。Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then 回車鍵的ascii碼值是13 If IsNumeric(Text1.Text) Then x = Val(Text1.Text) If x 100 Then Text1.Text = Text1.SetFocus Label1.Caption = 數(shù)字超界,重輸入! Else
22、Label1.Caption = 數(shù)字輸入正確! End If Else Text1.Text = Text1.SetFocus Label1.Caption = 不是輸入的數(shù)字! End IfEnd IfEnd Sub圖 4.7 例4.7運行結(jié)果4.2 4.2 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計4.2.4 4.2.4 條件函數(shù)條件函數(shù) VBVB提供的條件函數(shù):提供的條件函數(shù):IIFIIF函數(shù)和函數(shù)和ChooseChoose函數(shù),用于簡單函數(shù),用于簡單的判斷場合,的判斷場合,IIFIIF函數(shù)可代替函數(shù)可代替IFIF語句,語句,ChooseChoose函數(shù)可代替函數(shù)可代替select casese
23、lect case語句。語句。1 1)IIFIIF函數(shù)函數(shù)語法格式:語法格式:IIFIIF( , 1, 2) 例如:例如:x=-2: y= IIF (x=0,x,-x) x=-2: y= IIF (x=0,x,-x) y y是是x x的絕對值。的絕對值。4.2 4.2 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計4.2.4 4.2.4 條件函數(shù)條件函數(shù) 2 2)ChooseChoose函數(shù)函數(shù)語法格式:語法格式:Choose(Choose( , 1, 2. ., )n)功能:根據(jù)功能:根據(jù) 的值來確定返回值列表中某個值。的值來確定返回值列表中某個值。 的值為的值為1 1,返回,返回 1,如果,如果 的值為
24、的值為2 2,返回返回 2,以此類推。,以此類推。例如:例如:x = Val(InputBox(x = Val(InputBox(請輸入請輸入1-61-6之間整數(shù)之間整數(shù))Print Choose(x, red, yellow, blue, green, black, white) 用數(shù)字表示顏色。 4.34.3循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計4.3.1 Do 4.3.1 Do looploop循環(huán)循環(huán)1 1)形式)形式1 1:(當(dāng)型循環(huán)):(當(dāng)型循環(huán)) Do While|Until Do While|Until 語句塊語句塊 Exit DoExit Do 語句塊語句塊 LoopLoop2 2
25、)形式)形式2 2:( (直到循環(huán))直到循環(huán))Do Do 語句塊語句塊 Exit DoExit Do 語句塊語句塊Loop While|Until Loop While|Until 例4.8 用輾轉(zhuǎn)相除法求兩個自然數(shù)的最大公約數(shù)(gcd)和最小公倍數(shù)(lcm)。Private Sub Form_Click() Dim n%, m%, nm%, r% m = Val(InputBox(m=) n = Val(InputBox(n=) nm = n * m If m n Then t = m: m = n: n = t r = m Mod n Do While (r 0) m = n n = r
26、r = m Mod n Loop Print 最大公約數(shù)=, n Print 最小公倍數(shù)=, nm / nEnd Sub用Do UntilLoop 循環(huán)來實現(xiàn)例4.8,程序代碼如下:Private Sub Form_Click() Dim n%, m%, nm%, r% m = Val(InputBox(m=) n = Val(InputBox(n=) nm = n * m If m 00時,初值時,初值 終值;步長終值;步長=1=1時時, ,可省略;步長可省略;步長0 終值;步長終值;步長=0=0時,死循環(huán),循時,死循環(huán),循環(huán)次數(shù)計算公式為:環(huán)次數(shù)計算公式為:Exit For :Exit F
27、or :退出循環(huán),執(zhí)行退出循環(huán),執(zhí)行NextNext后的下一條語句后的下一條語句 -(+1)Int終 值 初 值循 環(huán) 次 數(shù)步 長例4.9 編程計算:S=1+2+3+100 Private Sub Form_Click()Dim S%, I%S = 0 累加前變量S為0For I = 1 To 100 S = S + INext IPrint S=; Format(S, 0000)End Sub 4.34.3循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計4.3.3 While4.3.3 WhileWendWend循環(huán)循環(huán)使用格式如下:使用格式如下:While While WendWend說明:該語句的功能
28、與說明:該語句的功能與Do While Do While LoopLoop實現(xiàn)的循環(huán)完全相同。實現(xiàn)的循環(huán)完全相同。例4.11 從鍵盤輸入一些字符數(shù)據(jù),對輸入的字符數(shù)據(jù)進(jìn)行計數(shù)。當(dāng)輸入的字符為“#”,停止計數(shù)并輸出結(jié)果。分析:因為輸入次數(shù)不定,故不使用for 循環(huán)。代碼如下:Private Sub Form_click() Dim c As String, n As Integer n = 0 c = InputBox( 輸入字符:) While Not (c = #) n = n + 1 c = InputBox( 輸入字符:) WendPrint 字符數(shù)是:; n; 個End Sub 4.3
29、4.3循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計4.3.4 For Each4.3.4 For EachNextNext循環(huán)循環(huán)語法格式:語法格式:For Each For Each 成員成員 In In 數(shù)組數(shù)組 語句塊語句塊 Exit ForExit ForNext Next 成員成員具體使用將在具體使用將在“數(shù)組數(shù)組”章節(jié)講解章節(jié)講解 4.34.3循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計4.3.54.3.5循環(huán)嵌套循環(huán)嵌套多重循環(huán)結(jié)構(gòu)多重循環(huán)結(jié)構(gòu) 如果在一個循環(huán)內(nèi)完整地包含另一個循環(huán)結(jié)構(gòu),則如果在一個循環(huán)內(nèi)完整地包含另一個循環(huán)結(jié)構(gòu),則稱為多重循環(huán),或循環(huán)嵌套,嵌套的層數(shù)可以根據(jù)需要稱為多重循環(huán),或循環(huán)嵌套
30、,嵌套的層數(shù)可以根據(jù)需要而定,嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán)。而定,嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán)。對于循環(huán)的嵌套,要注意以下事項:對于循環(huán)的嵌套,要注意以下事項:(1) (1) 內(nèi)循環(huán)變量與外循環(huán)變量不能同名;內(nèi)循環(huán)變量與外循環(huán)變量不能同名;(2) (2) 外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉; (3) (3) 不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),也不能從外循環(huán)不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),也不能從外循環(huán)轉(zhuǎn)向內(nèi)循環(huán)。轉(zhuǎn)向內(nèi)循環(huán)。正正 確確錯錯 誤誤 For i =1 To 10 For j=1 To 20 Next i Next j For i
31、 =1 To 10 For i=1 To 20 Next i Next i For i =1 To 10 For j=1 To 20 Next j Next i For i =1 To 10 Next i For i =1 To 10 Next i 循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套 在循環(huán)結(jié)構(gòu)中可以完整嵌套選擇結(jié)構(gòu)即整個在循環(huán)結(jié)構(gòu)中可以完整嵌套選擇結(jié)構(gòu)即整個選擇結(jié)構(gòu)都屬于循環(huán)體。選擇結(jié)構(gòu)都屬于循環(huán)體。 在選擇結(jié)構(gòu)中嵌套循環(huán)結(jié)構(gòu)時,則要求整個在選擇結(jié)構(gòu)中嵌套循環(huán)結(jié)構(gòu)時,則要求整個循環(huán)結(jié)構(gòu)必須完整地嵌套在一個分支內(nèi),一循環(huán)結(jié)構(gòu)必須完整地嵌套在一個分支內(nèi),一個循環(huán)結(jié)構(gòu)不允許出現(xiàn)在兩個
32、或兩個以上的個循環(huán)結(jié)構(gòu)不允許出現(xiàn)在兩個或兩個以上的分支內(nèi)。分支內(nèi)。 (1)For I= IF Then End IF Next I(6) IF Then For I= End IF Next I(5)Select Case For I= Case Case Next I End Select(3)For I= IF Then Next I End IF(2)IF Then For I= Next I End IF(4)For I= Select Case Case Case End Select Next I例4.12 打印九九乘法表。程序代碼如下:Private Sub Form_Click
33、()Dim i%, j%, jj$For i = 1 To 9 For j = 1 To 9 jj = i & & j & = & i * j Picture1.Print Tab(j - 1) * 9 + 2); jj; Next j Picture1.Print Next iEnd Sub 圖4.13 例4.12運行結(jié)果程序代碼如下:Private Sub Form_Click()單擊窗體顯示乘法表 Dim i As Integer, j As Integer For i = 1 To 9 For j = 1 To i Print Tab(j - 1) *
34、10 + 1); i & & j & = & i * j; Next j Next iEnd Sub 例4.13 使用循環(huán)語句在窗體上輸出有*組成的簡單圖形 Private Sub Form_Click() Dim n As Integer, i%, j% Cls 清屏 n = Val(Text1.Text) 輸入組成圖形的行數(shù) For i = 1 To n Print Tab(20); For j = 1 To i Print *; Next j Print Next iEnd Sub 圖4.14 例4.13運行結(jié)果 例:編一程序驗證哥德巴赫猜想:一例:編一程
35、序驗證哥德巴赫猜想:一個大于等于個大于等于6 6的偶數(shù)可以表示為兩個素的偶數(shù)可以表示為兩個素數(shù)之和。例如:數(shù)之和。例如: 6=3+3 8=3+5 6=3+3 8=3+5 10= 3+710= 3+7算法設(shè)計:設(shè)算法設(shè)計:設(shè)N N為大于等于為大于等于6 6的任一偶的任一偶數(shù),將其分解為數(shù),將其分解為N1N1和和N2N2兩個數(shù),使用兩個數(shù),使用N1+N2=NN1+N2=N,分別判斷,分別判斷N1N1和和N2N2是否為素數(shù),是否為素數(shù),若都是,則為一組解。若若都是,則為一組解。若N1N1不是素數(shù),不是素數(shù),就不必再檢查就不必再檢查N2N2是否素數(shù)。先從是否素數(shù)。先從N1=3N1=3開始,直到開始,直
36、到N1=N/2N1=N/2為止。算法流程圖為止。算法流程圖如圖如圖4-294-29所示。將程序代碼寫到窗體所示。將程序代碼寫到窗體的單擊事件中。的單擊事件中。實現(xiàn)上面算法的程序代碼如下:實現(xiàn)上面算法的程序代碼如下:Private Sub Form_Click() Dim N%, N1%, N2%, I%, K1%, K2% N=Val(InputBox(輸入大于輸入大于6的偶數(shù)的偶數(shù)) For N1 = 3 To N 2 Step 2 K1 = Int(Sqr(N1) For I = 2 To K1 判斷判斷N1是否是素數(shù)是否是素數(shù) If N1 Mod I = 0 Then Exit For
37、Next I If I K1 Then 如果如果N1為素數(shù),將為素數(shù),將N分解為分解為N1+N2 N2 = N - N1 K2 = Int(Sqr(N2) For I = 2 To K2 判斷判斷N2是否是素數(shù)是否是素數(shù) If N2 Mod I = 0 Then Exit For Next I If I K2 Then 如果如果N2也為素數(shù),則打印輸出也為素數(shù),則打印輸出 Print N & = & N1 & + & N2 End If End If Next N1End Sub4.34.3循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計4.3.64.3.6循環(huán)的退出循環(huán)的退出
38、 語句格式: Exit For 強(qiáng)制退出For Next循環(huán) Exit Do 強(qiáng)制退出Do Loop循環(huán)例4.15 用ForNext循環(huán)結(jié)構(gòu)計算1100之和,當(dāng)和大于等于2000時終止循環(huán),并輸出實際循環(huán)的次數(shù)。Private Sub Command1_Click() Dim s%, i% s = 0 累加前變量S為0 For i = 1 To 100 s = s + i If s = 2000 Then Exit For Next i Label2.Caption = s Label4.Caption = iEnd Sub圖4.16 例4.15運行結(jié)果4.34.3循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序
39、設(shè)計4.3.74.3.7幾種循環(huán)語句比較幾種循環(huán)語句比較 循環(huán)語句循環(huán)語句ForFornextnextDo Do while|untiwhile|until l Loop LoopDoDoLoop Loop while|untilwhile|until循環(huán)類型循環(huán)類型次數(shù)循環(huán)次數(shù)循環(huán)當(dāng)型循環(huán)當(dāng)型循環(huán)直到型循環(huán)直到型循環(huán)循環(huán)條件循環(huán)條件循環(huán)變量大于或循環(huán)變量大于或小于終值小于終值條件成立條件成立/ /不成不成立立條件成立條件成立/ /不不成立成立循環(huán)初值循環(huán)初值在在forfor語句中語句中在在dodo之前之前在在dodo之前之前使循環(huán)結(jié)使循環(huán)結(jié)束束Exit forExit forExit doE
40、xit doExit doExit do使用場合使用場合循環(huán)次數(shù)易確定循環(huán)次數(shù)易確定條件易給出條件易給出條件易給出條件易給出4.4 4.4 常用算法舉例常用算法舉例 4.4.1 4.4.1 找最大值、最小值找最大值、最小值例例4.17 4.17 隨機(jī)產(chǎn)生隨機(jī)產(chǎn)生1010個個100-200100-200之間整數(shù),求最大之間整數(shù),求最大值。程序運行結(jié)果如圖值。程序運行結(jié)果如圖4.174.17所示。所示。 分析:先產(chǎn)生一個隨機(jī)數(shù)假設(shè)這一個數(shù)是最大數(shù)分析:先產(chǎn)生一個隨機(jī)數(shù)假設(shè)這一個數(shù)是最大數(shù)(變量取名(變量取名maxmax), ,然后再產(chǎn)生一個隨機(jī)數(shù),與然后再產(chǎn)生一個隨機(jī)數(shù),與maxmax比較,大者存
41、入比較,大者存入maxmax,反復(fù)(循環(huán))操作產(chǎn)生,反復(fù)(循環(huán))操作產(chǎn)生隨機(jī)數(shù)、比較,這樣比較完每個數(shù)后,隨機(jī)數(shù)、比較,這樣比較完每個數(shù)后,maxmax中就中就放的是最大數(shù)了。放的是最大數(shù)了。Private Sub Form_Click() Dim I As Integer, x As Integer, max As Integer Randomize 初始化隨機(jī)數(shù)的種子數(shù) x = Int(Rnd * 100 + 100) max = x For I = 2 To 10 Print x; x = Int(Rnd * 100 + 100) If x max Then max = x Next I
42、 Print Print max=; maxEnd Sub4.4 4.4 常用算法舉例常用算法舉例 4.4.2 4.4.2 素數(shù)問題素數(shù)問題例例4.18 4.18 求求200200以內(nèi)的素數(shù)。以內(nèi)的素數(shù)。 分析:判定某個數(shù)是否素數(shù),然后是對于找某范圍內(nèi)的數(shù)據(jù)的判定,用2重循環(huán)來實現(xiàn):內(nèi)循環(huán)是判定某數(shù)是否素數(shù),外循環(huán)一次列舉該范圍內(nèi)的每個數(shù)。判定素數(shù)方法是:利用素數(shù)定義,從2 到 n-1 之間整數(shù)一次去除n,如果都不能整除,n是素數(shù),反之,有一個除盡,n 就不是素數(shù)。 Private Sub Form_Click() Dim i%, j%, n% Form1.Caption = 求200以內(nèi)的素
43、數(shù) Print 2, 2是特例輸出 n = 1 記素數(shù)的個數(shù) For i = 3 To 200 Step 2 For j = 2 To i - 1 If i Mod j = 0 Then Exit For End If Next j If j = i Then 這個條件表示i一次也沒被除盡,是素數(shù) Print i, n = n + 1 If n Mod 5 = 0 Then Print End IfNext iEnd Sub 4.4 4.4 常用算法舉例常用算法舉例 4.4.3 4.4.3 窮舉法窮舉法窮舉方法的實現(xiàn)主要依賴于以下兩個基本要點:窮舉方法的實現(xiàn)主要依賴于以下兩個基本要點: 搜尋可
44、能值的范圍如何確定。搜尋可能值的范圍如何確定。 被搜尋可能值的判定方法。被搜尋可能值的判定方法。 例4.19 “百雞百錢”問題?!半u翁一,值錢五,雞母一,值錢三,雞雛三,值錢一;百錢買百雞,問雞翁、雞母、雞雛各幾何?”編寫程序,給出結(jié)果。分析:設(shè)x、y、z分別表示雞翁、雞母、雞雛的數(shù)目,根據(jù)題意,100錢最多買雞翁20只、買雞母33只,雞雛數(shù)為100 -雞翁數(shù) -雞母數(shù),搜尋值得判定式為:5 * x + 3 * y + (z / 3) = 100。 程序代碼如下:Private Sub form_Click()Dim x, y, z As IntegerFor x = 1 To 20 For
45、y = 1 To 33 z = 100 - x - y If 5 * x + 3 * y + (z / 3) = 100 Then Print 公雞,母雞,小雞的數(shù)目分別為: Print x, y, z End If Next y Next xEnd Sub4.4 4.4 常用算法舉例常用算法舉例 4.4.4 4.4.4 迭代法迭代法 一個不斷地由變量的舊值按照一定的規(guī)律推出變量的新值的過程,迭代亦稱為遞推。迭代一般與三個因素有關(guān),它們是:初始值,迭代公式,迭代結(jié)束條件(迭代次數(shù))。例4.21 求菲波拉契(Fibonacci)數(shù)列。已知一對小兔出生一個月后變成一對成兔,兩個月后這對成兔就會生出
46、一對小兔,三個月后這對成兔將生出第二對小兔,而第一對小兔又長大變成一對成兔,即一月成熟,二月生育,如此類推。請編程求解一對小兔經(jīng)n月后將繁衍成多少對兔子?分析:設(shè)f1、f2和f3表示相鄰的3個裴波那契數(shù)據(jù)項,根據(jù)題意有f1、f2的初始值為1,即迭代的初始條件為:f1=f2=1;迭代的公式為:f3=f1+f2。 程序代碼如下:Private Sub Form_Click() Dim f1, f2, f3, i, n As Integer f1 = 1: f2 = 1 n = Text1.Text For i = 3 To n f3 = f1 + f2 f1 = f2 f2 = f3圖4.22 例
47、4.22運行結(jié)果 Next i Print Print Tab(5); 經(jīng)過 & n; 個月生產(chǎn); f3 & 對兔子End Sub例例4.22 4.22 用迭代法求一個數(shù)的平方根用迭代法求一個數(shù)的平方根 。已知求平方根的。已知求平方根的迭代公式為:迭代公式為:分析:設(shè)平方根的解為分析:設(shè)平方根的解為x x,可假定以初值,可假定以初值x0=a/2(x0=a/2(估計值估計值) ),根據(jù)迭代公式得到一個新值根據(jù)迭代公式得到一個新值x1,x1,這個新值比初值更接近要這個新值比初值更接近要求的值求的值x x,再以新值作為初值,再以新值作為初值x0 x0,求,求x1x1,反復(fù)這個過程直,
48、反復(fù)這個過程直到到|x1-x0|x1-x0|(某一精度,很小的數(shù)如(某一精度,很小的數(shù)如0.000010.00001),此時),此時x1x1即問題的解。即問題的解。1001x =()2axx程序代碼如下:程序代碼如下: Private Sub Form_Click() Dim x0, x1, x, i As Integer, a As Single Const q As Single = 0.000001 a = Val(Text1.Text) If Abs(a) q Then x = 0 ElseIf a q x0 = x1 x1 = (x0 + a / x0) / 2 Loop x = x
49、1 End If Print Tab(5); a & 的平方根是:的平方根是:; Format(x, #.#)End Sub習(xí)習(xí) 題題 一 選擇題選擇題1結(jié)構(gòu)化程序設(shè)計方法的核心規(guī)定了三種基本結(jié)構(gòu):順序結(jié)構(gòu),_結(jié)構(gòu),循環(huán)結(jié)構(gòu)。 A. 條件 B. 分支 C. 當(dāng)形 D. 邏輯2若要退出For循環(huán),可使用的語句為_。A. Exit B. Exit Do C. Exit Sub D. Exit For3. 對Do循環(huán)結(jié)構(gòu)作用說明正確的是:_。A. 不能用Do循環(huán)設(shè)計出預(yù)先知道循環(huán)次數(shù)的循環(huán)B. While和Until關(guān)鍵字必須選擇其中之一C. While和Until關(guān)鍵字可以同時使用D. W
50、hile和Until關(guān)鍵字的作用相反4. 執(zhí)行下面的程序后,x的值是_。x = 5For i=1 To 20 Step 2x=x+i 5Next iA. 21 B. 22 C. 23 D. 24 習(xí)習(xí) 題題5. Do 循環(huán)的語法結(jié)構(gòu)如下:Do While 條件語句塊_A. End Do B. Loop C. Next D. End While6. 在窗體放置一個命令按鈕Command1,并編寫如下程序:Private Sub Command1_Click()For i=1 To 20 x=x+i Next iPrint xEnd Sub單擊按鈕后,窗體顯示的結(jié)果是_。A. 34 B. 50 C. 150 D. 210 習(xí)習(xí) 題題7. 在窗體放置一個命令按鈕Command1和一個文本框Text1,并編寫如下程序:Private Sub Command1_Click()x=A : y=B : z=CFor
溫馨提示
- 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年中國塑料鏡片拋光劑市場調(diào)查研究報告
- 2025年輕紡機(jī)械襯套項目可行性研究報告
- 2025至2030年中國雙軸玻璃鋼管纏繞機(jī)數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國包銅箱數(shù)據(jù)監(jiān)測研究報告
- 2025年中國計算機(jī)數(shù)據(jù)信號電涌保護(hù)器市場調(diào)查研究報告
- 2025年中國牙膏蠟市場調(diào)查研究報告
- 創(chuàng)意產(chǎn)業(yè)對城市社區(qū)的影響和改造考核試卷
- 保險客戶忠誠度提升考核試卷
- 公路客運企業(yè)服務(wù)質(zhì)量持續(xù)改進(jìn)策略考核試卷
- 廣播電視設(shè)備用光發(fā)射與接收模塊考核試卷
- 精神科患者服藥依從性健康宣教
- 2024年湖南省普通高中學(xué)業(yè)水平考試政治試卷(含答案)
- 零售企業(yè)加盟管理手冊
- 設(shè)備維保的維修流程與指導(dǎo)手冊
- 招標(biāo)代理服務(wù)的關(guān)鍵流程與難點解析
- GB/T 5465.2-2023電氣設(shè)備用圖形符號第2部分:圖形符號
- 材料預(yù)定協(xié)議
- 2023年河北省中考數(shù)學(xué)試卷(含解析)
- 《學(xué)習(xí)的本質(zhì)》讀書會活動
- 高氨血癥護(hù)理課件
- 物流營銷(第四版) 課件 胡延華 第3、4章 物流目標(biāo)客戶選擇、物流服務(wù)項目開發(fā)
評論
0/150
提交評論