vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計_第1頁
vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計_第2頁
vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計_第3頁
vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計_第4頁
vb第5章循環(huán)結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第5 5章章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計n5 51 1 循環(huán)結(jié)構(gòu)程序設(shè)計的概念循環(huán)結(jié)構(gòu)程序設(shè)計的概念n 循環(huán)結(jié)構(gòu)可以避免重復(fù)操作,循環(huán)重復(fù)執(zhí)行的循環(huán)結(jié)構(gòu)可以避免重復(fù)操作,循環(huán)重復(fù)執(zhí)行的程序塊稱為程序塊稱為“循環(huán)體循環(huán)體”。從而簡化程序,節(jié)約內(nèi)存。從而簡化程序,節(jié)約內(nèi)存。n 循環(huán)結(jié)構(gòu)的語句有:循環(huán)結(jié)構(gòu)的語句有:n 1. DoLoop1. DoLoopn 2. WhileWend 2. WhileWendn 3. For.Next 3. For.Nextn 4. For EachNext 4. For EachNext等。等。n其中最常用的是其中最常用的是DoloopDoloop和和For

2、.NextFor.Next。n循環(huán)結(jié)構(gòu)應(yīng)根據(jù)循環(huán)類型與條件,確保循環(huán)體得以循環(huán)結(jié)構(gòu)應(yīng)根據(jù)循環(huán)類型與條件,確保循環(huán)體得以終止(即非死循環(huán))。終止(即非死循環(huán))。5 52 Do.Loop2 Do.Loop語句語句n DOLoop DOLoop語句有兩種語法形式語句有兩種語法形式: :n 1. 1.前測型前測型 2.2.后測型后測型n5 52 21 1 前測型前測型DOLoopDOLoop循環(huán)循環(huán)n 首先判斷條件,根據(jù)條件決定是否執(zhí)行循首先判斷條件,根據(jù)條件決定是否執(zhí)行循環(huán)。其流程圖如圖環(huán)。其流程圖如圖5-15-1所示。所示。圖圖5-1 5-1 前測型循環(huán)結(jié)構(gòu)流程圖前測型循環(huán)結(jié)構(gòu)流程圖 其語法為其語

3、法為n DoDoWhile |UntilWhile |Until(條件)(條件)n (語句列(語句列1 1)n Exit DoExit Don (語句列(語句列2 2)n LoopLoopn說明:說明:n(l l)Do WhileLoopDo WhileLoop是是當型循環(huán)當型循環(huán)語句,當條件為真(語句,當條件為真(TrueTrue)時執(zhí)行循環(huán)體,條件為假(時執(zhí)行循環(huán)體,條件為假(FalseFalse)時,終止循環(huán)。)時,終止循環(huán)。n Do UntilLoopDo UntilLoop是是直到型循環(huán)直到型循環(huán)語句,條件為假時執(zhí)行循語句,條件為假時執(zhí)行循環(huán)體,直到條件為真時,終止循環(huán)。環(huán)體,直到條

4、件為真時,終止循環(huán)。n n(2 2)(條件)是條件表達式,為循環(huán)的條件。其)(條件)是條件表達式,為循環(huán)的條件。其值為值為TrueTrue或或FalseFalse。n(3 3)(語句列)是一條或多條命令(循環(huán)體),)(語句列)是一條或多條命令(循環(huán)體),它們將被重復(fù)當或直到條件為它們將被重復(fù)當或直到條件為TrueTrue。n(4 4)在循環(huán)體中可以有)在循環(huán)體中可以有Exit DoExit Do語句,隨時跳出語句,隨時跳出DoLoopDoLoop循環(huán)。循環(huán)。 * *【例【例 5 5l l】求累加和】求累加和 1 12 23 3. . 100100(如圖(如圖 5 52 2)。)。n 分析:采用

5、累加的方法,用變量分析:采用累加的方法,用變量S S來存放累加的和(開始為來存放累加的和(開始為0 0),用變量),用變量n n來存放來存放“加數(shù)加數(shù)”(加到(加到s s中的數(shù))。這中的數(shù))。這里里n n又稱為計數(shù)器,從又稱為計數(shù)器,從1 1開始到開始到100100為止。為止。n 根據(jù)以上分析畫出流程圖如圖根據(jù)以上分析畫出流程圖如圖5 53 3所示所示設(shè)計步驟如下:設(shè)計步驟如下:n窗體界面的設(shè)計參見前面章節(jié),這里僅給出命令按鈕的Click事件代碼:nPrivate Sub Command1_Click()nDim s As Integer, n As Integerns = 0: n = 1n

6、Do While n 100Do Until n 100ns = s + ns = s + nnn = n + 1n = n + 1nLoopLoopnLabel1.Caption = l+2+3+.+l00 = & sLabel1.Caption = l+2+3+.+l00 = & snEnd SubEnd Sub 略【例略【例5 52 2】輸入一個正整】輸入一個正整數(shù),利用數(shù),利用“當型當型”循環(huán)判斷是否循環(huán)判斷是否素數(shù)。素數(shù)。n 分析:所謂分析:所謂“素數(shù)素數(shù)”是指除了是指除了1 1和該數(shù)本和該數(shù)本身,不能被任何整數(shù)整除的數(shù)。判斷一個自身,不能被任何整數(shù)整除的數(shù)。判斷一個自然數(shù)然數(shù)n n

7、(n3n3)是否素數(shù),只要依次用)是否素數(shù),只要依次用2 2n n的的開平方作除數(shù)去除開平方作除數(shù)去除n,n,若若n n不能被其中任何一個不能被其中任何一個數(shù)整除,則數(shù)整除,則n n即為素數(shù),如圖即為素數(shù),如圖5 54 4所示。所示。設(shè)計步驟如下:設(shè)計步驟如下:n窗體界面的設(shè)計參見前面章節(jié),這里給出命令按鈕窗體界面的設(shè)計參見前面章節(jié),這里給出命令按鈕的的CliCkCliCk事件代碼事件代碼nPrivate Sub Command1_Click()Private Sub Command1_Click()nDim n As LongDim n As LongnSelect Case Val(Tex

8、t1.Text)Select Case Val(Text1.Text)nCase Is 3Case Is 2Case Is 2nMsgBox”MsgBox”此數(shù)太大!此數(shù)太大!”,vblnformationvblnformationvbOKOnlyvbOKOnly,”注意注意”nCase ElseCase Elsenn = Val(Text1.Text)n = Val(Text1.Text)ns = 0: i = 2s = 0: i = 2nDo While i = Sqr(n) And s = 0Do While i = Sqr(n) And s = 0nIf n Mod i = 0 The

9、nIf n Mod i = 0 Thenns = 1s = 1nElseElseni = i + 1i = i + 1nEnd IfEnd IfnLoopLoopn a a 是一個素數(shù)是一個素數(shù) nElseElsen a=” a=”不是素數(shù)不是素數(shù)”nEnd IfEnd IfnLabel1 .Caption = Str(n) & aLabel1 .Caption = Str(n) & anEnd SelectEnd SelectnText1.SetFocusText1.SetFocusnEnd SubEnd Sub n另外,為了使用文本框得到焦點后,文本立另外,為了使用文本框得到焦點后,文本立

10、即被選中,編寫即被選中,編寫Text1Text1的的GotFocusGotFocus事件代事件代n碼如下:碼如下:nPrivate Sub Text1_GotFocus()Private Sub Text1_GotFocus()nText1.SelStart = 0Text1.SelStart = 0nText1.SelLength = Len(Text1.Text)Text1.SelLength = Len(Text1.Text)nEnd SubEnd Sub5 52 22 2 后測型后測型Do LoopDo Loop循環(huán)循環(huán)n 后測型后測型DOLoopDOLoop循環(huán)結(jié)構(gòu),首先執(zhí)行循循環(huán)結(jié)

11、構(gòu),首先執(zhí)行循環(huán)體,然后判斷條件,根據(jù)條件決定是否繼環(huán)體,然后判斷條件,根據(jù)條件決定是否繼續(xù)執(zhí)行循環(huán),其語法為:續(xù)執(zhí)行循環(huán),其語法為:n DODOn (語句列(語句列1 1) n Exit DO Exit DO n (語句列(語句列2 2) n Loop Loop While UntilWhile Until(條件)(條件) n說明:同前測型說明:同前測型 略略 例例5 53 3】輸入有效數(shù)字的位數(shù),利】輸入有效數(shù)字的位數(shù),利用下述公式計算圓周率用下述公式計算圓周率pipi的近似值:的近似值:n 分析:首先找出公式中無窮乘積各項的規(guī)律:分析:首先找出公式中無窮乘積各項的規(guī)律:設(shè)第設(shè)第n n項的

12、分母為項的分母為pnpn,則第,則第n n1 1項的分項的分n母為母為Pn+1=2+pn Pn+1=2+pn 若設(shè)若設(shè) n n項項 積為積為 SnSn,則前,則前n n項乘積項乘積為為 Sn+1Sn+12Sn/pn+12Sn/pn+1 圖圖5 57 7 計算圓周率的流程圖計算圓周率的流程圖n 設(shè)計步驟如下:設(shè)計步驟如下:n (1 1)建立應(yīng)用程序用戶界面與設(shè)置對象)建立應(yīng)用程序用戶界面與設(shè)置對象屬性。參照第屬性。參照第3 3章的方法建立用戶界面與設(shè)置章的方法建立用戶界面與設(shè)置對對n象屬性,如圖象屬性,如圖5 58 8所示。所示。n (2 2)編寫程序代碼。)編寫程序代碼。n 根據(jù)流程圖,可以寫

13、出命令按鈕根據(jù)流程圖,可以寫出命令按鈕Command1Command1的的ClickClick事件代碼為事件代碼為nPrivate Sub Command1_Click()Private Sub Command1_Click()nDim m As Integer.Dim m As Integer.nm = Val(Text1.Text)m = Val(Text1.Text)np = 0#:s = 2#:e = 0.lmp = 0#:s = 2#:e = 0.lmnDoDont = s: p = Sqr(2 + p): s = s t = s: p = Sqr(2 + p): s = s * *

14、 2/ p 2/ pnLooP Until Abs(t - s) 0.1 mLooP Until Abs(t - s) 0.1 mnf = String(m - 1, #)f = String(m - 1, #)nText2.Text = Format(s, 0. & f)Text2.Text = Format(s, 0. & f)nTex1.SetFocusTex1.SetFocusnEnd subEnd subn文本框文本框Text1Text1的的GotFocusGotFocus事件代碼:事件代碼:nPrivate Sub Text1_GotFocus()Private Sub Text1

15、_GotFocus()nTex1.SelStart = 0Tex1.SelStart = 0nText1.SelLength = Len(Tex1.Text)Text1.SelLength = Len(Tex1.Text)nEnd SubEnd Sub * *例例5.45.4輸入兩個正整數(shù),求它們輸入兩個正整數(shù),求它們的最大公約數(shù)。的最大公約數(shù)。n 分析:求最大公約數(shù)可以用分析:求最大公約數(shù)可以用“輾轉(zhuǎn)相除法輾轉(zhuǎn)相除法”,方,方法如下:法如下:n (1 1)以大數(shù))以大數(shù)m m作被除數(shù),小數(shù)作被除數(shù),小數(shù)n n做除數(shù),相除后余做除數(shù),相除后余數(shù)為數(shù)為r r。n (2 2)若)若r0r0,則,則

16、m=nm=n,n=rn=r,繼續(xù)相除得到新的,繼續(xù)相除得到新的r r。若仍有若仍有r0r0,則重復(fù)此過程,直到,則重復(fù)此過程,直到r r0 0為止。為止。n (3 3)最后的)最后的n n就是最大公約數(shù)。根據(jù)此分析畫出就是最大公約數(shù)。根據(jù)此分析畫出流程圖如圖流程圖如圖5 59 9所示。所示。n圖圖5 59 9 輾轉(zhuǎn)相除法輾轉(zhuǎn)相除法設(shè)計步驟如下設(shè)計步驟如下: :n窗體界面的設(shè)計如圖窗體界面的設(shè)計如圖5-10 5-10 所示,所示,這里給出命令按鈕的這里給出命令按鈕的ClickClick事件代事件代碼:碼:nPrivate Sub Command1_Click()Private Sub Comma

17、nd1_Click()nm = Val(Text1.Text)m = Val(Text1.Text)nn = Val(Text2.Text)n = Val(Text2.Text)nlf n lf n * * m = 0 Then m = 0 ThennMsgBoxMsgBox兩數(shù)都不能為兩數(shù)都不能為 0 0! nExit SubExit SubnEnd IfEnd IfnIf m n ThenIf m n Thennt = m: m = n: n = tt = m: m = n: n = tnEnd IfEnd IfnDoDonr = m Mod nr = m Mod nnm = nm = n

18、nn = rn = rnLoop While r 0Loop While r 0nText3.Text = mText3.Text = mnEnd SubEnd Sub5 53 For Next3 For Next語句語句n 在不知道循環(huán)內(nèi)需要執(zhí)行多少次語句時,宜用在不知道循環(huán)內(nèi)需要執(zhí)行多少次語句時,宜用DoloopDoloop循環(huán)。但是若知道要執(zhí)行的循環(huán)次數(shù)時,循環(huán)。但是若知道要執(zhí)行的循環(huán)次數(shù)時,則最好使用則最好使用For.NextFor.Next循環(huán)。與循環(huán)。與DoLoopDoLoop循環(huán)不同,循環(huán)不同,F(xiàn)orFor循環(huán)使用一個循環(huán)變量,每重復(fù)一次循環(huán)之后,循環(huán)使用一個循環(huán)變量,每重復(fù)一次

19、循環(huán)之后,循環(huán)變量的值就會自動增加或者減少。循環(huán)變量的值就會自動增加或者減少。 其語法其語法為為: :nForFor(循環(huán)變量)(初值)(循環(huán)變量)(初值)TOTO(終值)(終值)StepStep(步長)(步長)n (語句列(語句列1 1) n Exit For Exit Forn (語句列(語句列2 2)nNextNext(循環(huán)變量)(循環(huán)變量) 說明:說明:n (l l)(循環(huán)變量)為必要參數(shù),被用作循環(huán))(循環(huán)變量)為必要參數(shù),被用作循環(huán)計數(shù)器的數(shù)值變量。計數(shù)器的數(shù)值變量。n (2 2)(初值)和(終值)都是必要參數(shù);如)(初值)和(終值)都是必要參數(shù);如果沒有指定(步長),則缺省值為果

20、沒有指定(步長),則缺省值為1 1。n (3 3)(步長)可以是正數(shù)或負數(shù)。步長參數(shù))(步長)可以是正數(shù)或負數(shù)。步長參數(shù)值決定循環(huán)的執(zhí)行情況:如果步長的值為正數(shù),則值決定循環(huán)的執(zhí)行情況:如果步長的值為正數(shù),則必須初值必須初值= = 終值;否則必須初值終值;否則必須初值= = 終值。終值。n (4 4)可以在循環(huán)中的任何位置放置任意個)可以在循環(huán)中的任何位置放置任意個 Exit ForExit For語句,隨時退出循環(huán)。語句,隨時退出循環(huán)。n (5 5)如果省略)如果省略NextNext語句中的(循環(huán)變量),語句中的(循環(huán)變量),將不影響循環(huán)的執(zhí)行。將不影響循環(huán)的執(zhí)行。 * *【例【例5 55

21、5利用利用ForFor循環(huán)結(jié)構(gòu)顯示循環(huán)結(jié)構(gòu)顯示10001000以內(nèi)的所有能被以內(nèi)的所有能被3737整除的自然數(shù)整除的自然數(shù)設(shè)計步驟如下:設(shè)計步驟如下:n (1 1)窗體界面的設(shè)計與屬性設(shè)置。在新)窗體界面的設(shè)計與屬性設(shè)置。在新建的窗體中增加一個文本框建的窗體中增加一個文本框Text1Text1、一個命令、一個命令按鈕按鈕Command1Command1和一個框架和一個框架Frame1Frame1。選中。選中Frame1Frame1,在其中增加一個標簽,在其中增加一個標簽Label1Label1,用來,用來顯示程序的說明。其中各對象的屬性設(shè)置參顯示程序的說明。其中各對象的屬性設(shè)置參見圖見圖5 5

22、1313。 (2 2)編寫代碼。)編寫代碼。n 編寫命令按鈕的編寫命令按鈕的ClickClick事件代碼:事件代碼:nPrivate Sub Command1_Click()Private Sub Command1_Click()na = a = nFor n = 1 To 1000For n = 1 To 1000nIf n Mod 37 = 0 ThenIf n Mod 37 = 0 Thenna = a & Str(n) & vbCrLfa = a & Str(n) & vbCrLfnEnd IfEnd IfnNextNextnText1.Text = aText1.Text = anE

23、nd SubEnd Subn 說明:常量說明:常量VbCrLfVbCrLf表示插入一個回車與換行符組合,也表示插入一個回車與換行符組合,也可以直接用一個回車加上換行符(可以直接用一個回車加上換行符(ChrChr(l3l3)ChrChr(1010)來產(chǎn)生一個行斷點。來產(chǎn)生一個行斷點。 【例【例 5 56 6】求從】求從10001000到到11001100之間的所有素數(shù)。之間的所有素數(shù)。n 分析:例分析:例5-25-2介紹了利用介紹了利用DoloopDoloop循環(huán)循環(huán)判斷素數(shù)的方法,現(xiàn)在只需對判斷素數(shù)的方法,現(xiàn)在只需對10001000l100l100之之間的各整數(shù)依次測試。在如圖間的各整數(shù)依次測

24、試。在如圖5-145-14所示的流所示的流程圖中,使用了雙重程圖中,使用了雙重FORFOR循環(huán)。循環(huán)。n 窗體界面的設(shè)計參見圖窗體界面的設(shè)計參見圖5 51515,這里給出,這里給出命令按鈕的命令按鈕的ClickClick事件代碼:事件代碼:nPrivate Sub Command1_Click()Private Sub Command1_Click()n a = a = nFor n = 1001 To 1100 Step 2For n = 1001 To 1100 Step 2ns = 0s = 0nFor i = 2 To Int(Sqr(n)For i = 2 To Int(Sqr(n)

25、nif n Mod i = 0 Thenif n Mod i = 0 Thenns = 1s = 1nExit ForExit FornEnd IfEnd IfnNextNextnIf s = 0 Then a = a & Str(n) & vbCrLfIf s = 0 Then a = a & Str(n) & vbCrLfnNextNextnText1.Text = aText1.Text = anEnd SubEnd Sub5 54 4 列表框與組合框列表框與組合框n 列表框和組合框為用戶提供選項和信息列表。列表框和組合框為用戶提供選項和信息列表。在列表框中,任何時候都能看到多個項,而在

26、組合在列表框中,任何時候都能看到多個項,而在組合框中,平時只能看到一個項,用鼠標單擊向下按鈕框中,平時只能看到一個項,用鼠標單擊向下按鈕可以看到多項的列表??梢钥吹蕉囗椀牧斜怼5 54 41 1 列表框列表框n 當列表框不能同時顯示所有選擇項時,當列表框不能同時顯示所有選擇項時,VBVB將自將自動給列表框加上一個垂直的滾動條,使用戶可以上動給列表框加上一個垂直的滾動條,使用戶可以上下滾動列表框,以查閱所有的選項。下滾動列表框,以查閱所有的選項。n 1 1列表框的屬性與方法列表框的屬性與方法 n 表表5-15-1列出了常用的列表框?qū)傩浴A谐隽顺S玫牧斜砜驅(qū)傩浴?表表5-1 5-1 常用的列表框

27、屬性。常用的列表框?qū)傩浴?屬屬 性性 說說 明明 1. List 1. List 設(shè)置或返回列表中選項,使用設(shè)置或返回列表中選項,使用ListList屬性可以得屬性可以得到列表中的任何選項。到列表中的任何選項。 例如例如List1.List(2)List1.List(2)表表示列表框示列表框List1List1中第中第3 3項的值項的值 2. ListCount 2. ListCount 返回列表框中的選項數(shù)返回列表框中的選項數(shù) 3. ListIndex 3. ListIndex 返回當前選項的索引號,如果沒有選項被選中,返回當前選項的索引號,如果沒有選項被選中,該屬性為該屬性為-1 -1 4

28、. selected 4. selected 在程序運行使用代碼來選定列表中的選項,例在程序運行使用代碼來選定列表中的選項,例如如 List1.Selected(2)List1.Selected(2)TrueTrue使得列表框使得列表框List1List1中的第中的第3 3條選項被選中條選項被選中 5. Text 5. Text 設(shè)置或返回列表中設(shè)置或返回列表中當前選項當前選項的值的值 表表5-2 5-2 常用列表框方法常用列表框方法nn方方 法法 說說 明明 nnAddItem AddItem 用來向列表框中添加數(shù)據(jù)用來向列表框中添加數(shù)據(jù)nnClear Clear 清除列表中的各項清除列表中

29、的各項 nnRemoveItemRemoveItem用來從列表框中刪除數(shù)據(jù)用來從列表框中刪除數(shù)據(jù)n 2 2使用列表框顯示數(shù)據(jù)使用列表框顯示數(shù)據(jù)n 【例【例5 57 7】將例】將例5 56 6中的文本框改為列表框中的文本框改為列表框(如圖(如圖5 51616所示)。所示)。n 將窗體中的文本框換為列表框,無需修改列表將窗體中的文本框換為列表框,無需修改列表框的屬性,只需修改命令按鈕的框的屬性,只需修改命令按鈕的ClickClick事件代碼:事件代碼:nPrivate sub conmmand1_Click()Private sub conmmand1_Click()nList1.ClearLis

30、t1.ClearnFor n = 1001 To 1100 Step 2For n = 1001 To 1100 Step 2ns = 0s = 0nFor i = 2 To Int(Sqr(n)For i = 2 To Int(Sqr(n)nIf n Mod i = 0 ThenIf n Mod i = 0 Thenns = 1: Exit Fors = 1: Exit FornEnd IfEnd IfnNextNextnIf s = 0 Then List1.AddItem nIf s = 0 Then List1.AddItem nnNextNextnEnd SubEnd Subn使用列

31、表框的使用列表框的AddAdd方法增加列表項方法增加列表項【例【例5 58 8】“同構(gòu)數(shù)同構(gòu)數(shù)”是指這樣的整數(shù):它恰好出現(xiàn)是指這樣的整數(shù):它恰好出現(xiàn)在其平方數(shù)的右端,例如在其平方數(shù)的右端,例如 1 1和和 5 5就是這樣的數(shù)。試找就是這樣的數(shù)。試找出出 l l99999999之間的全部之間的全部“同構(gòu)數(shù)同構(gòu)數(shù)”(如圖(如圖5-175-17所示)。所示)。分析:分析:l l位同構(gòu)數(shù)位同構(gòu)數(shù) n n應(yīng)滿足條件:應(yīng)滿足條件:n nn2 Mod 10n2 Mod 10 2 2位同構(gòu)數(shù)位同構(gòu)數(shù) n n應(yīng)滿足條件:應(yīng)滿足條件:n nn2 Mod 100n2 Mod 100 3 3位同構(gòu)數(shù)位同構(gòu)數(shù) n n應(yīng)

32、滿足條件:應(yīng)滿足條件:n nn2 Mod 1000n2 Mod 1000 4 4位同構(gòu)數(shù)位同構(gòu)數(shù) n n應(yīng)滿足條件:應(yīng)滿足條件:n nn2 Mod 10000n2 Mod 10000窗體界面的設(shè)計參見圖窗體界面的設(shè)計參見圖5 51717流程圖如圖流程圖如圖5-l85-l8命令按鈕的命令按鈕的ClickClick事件代碼:事件代碼:nPrivate Sub Command1_Click()Private Sub Command1_Click()nList1.ClearList1.ClearnFor n = 1 To 9999For n = 1 To 9999nSelect Case nSelec

33、t Case nnCase n 2 Mod 10Case n 2 Mod 10nList1.AddItem Format(n, ) & Format(n 2, List1.AddItem Format(n, ) & Format(n 2, )nCase n 2 Mod 100Case n 2 Mod 100nList1.AddItem Format(n, ) & Format(n 2, List1.AddItem Format(n, ) & Format(n 2, )nCase n 2 Mod 1000Case n 2 Mod 1000nList1.AddItem Format(n, ) &

34、Format(n 2, List1.AddItem Format(n, ) & Format(n 2, )nCase n 2 Mod 10000Case n 2 Mod 10000nList1.AddItem Format(n, ) & Format(n 2, List1.AddItem Format(n, ) & Format(n 2, )nEnd SelectEnd SelectnNextNextnEnd SubEnd Sub 例例5 599小學生做加減法的算術(shù)練習程序小學生做加減法的算術(shù)練習程序n隨機給出兩位數(shù)的加減法算術(shù)題,要求學生回答,隨機給出兩位數(shù)的加減法算術(shù)題,要求學生回答,答對

35、的打答對的打“ ”,答錯的打,答錯的打“X”X”。將做過的題目。將做過的題目存放在列表框中備查,并隨時給出答題的正確率存放在列表框中備查,并隨時給出答題的正確率(如圖(如圖5 51919所示)。所示)。n分析:分析:n隨機函數(shù)隨機函數(shù)RndRnd是返回一個(是返回一個(0 0,l l)之間的隨機小數(shù);)之間的隨機小數(shù);生成某范圍內(nèi)隨機整數(shù)生成某范圍內(nèi)隨機整數(shù) 最小值,最大值最小值,最大值 n公式為:公式為:Int( Int( 最大值最大值- -最小值最小值+1+1)* * Rnd+ Rnd+最小值)最小值)n 設(shè)計步驟如下:設(shè)計步驟如下:n(1 1)建立應(yīng)用程序用戶界面。)建立應(yīng)用程序用戶界面

36、。n一個標簽一個標簽Label1Label1(顯示題目)、一個文本框(顯示題目)、一個文本框Text1Text1(輸入答案)、一個列表框(輸入答案)、一個列表框List1List1(保(保存做過的題目)、一個命令按鈕存做過的題目)、一個命令按鈕Command1Command1、n一個圖像一個圖像Image1Image1以及一個框架以及一個框架Frame1Frame1。激活。激活Frame1Frame1后,在其中增加兩個標簽,圖后,在其中增加兩個標簽,圖5 520 20 (2 2)設(shè)置對象屬性,見表)設(shè)置對象屬性,見表5 53 3。 表表5 53 3 屬性的設(shè)置屬性的設(shè)置nn對象對象 屬性屬性屬

37、性值屬性值說明說明 nnForm1 Tag 0.0 Form1 Tag 0.0 存放題目總數(shù)存放題目總數(shù) nnList1 Tag 0.0 List1 Tag 0.0 存放答對的題數(shù)存放答對的題數(shù)n(3 3)編寫代碼)編寫代碼n出題部分由窗體的激活(出題部分由窗體的激活(ActivateActivate)事件代碼完成:)事件代碼完成:nPrivate Sub Form_Activate()Private Sub Form_Activate()nRandomize (Time)Randomize (Time)na = Int(10 + 90 a = Int(10 + 90 * * Rnd) Rnd

38、)nb = Int(10 + 90 b = Int(10 + 90 * * Rnd) Rnd)np = Int(2 p = Int(2 * * Rnd) Rnd)nSelect CaseSelect Case p pnCaseCase 0 0nLabel1.Caption = a & + & b & =Label1.Caption = a & + & b & =nText1.Tag = a + b Text1.Tag = a + b 將本題答案放入將本題答案放入Text1.TapText1.Tap中中nCase Case 1 1nIf a b Then T = a: a = b: b = TI

39、f a b Then T = a: a = b: b = TnLabel1.Caption = a & - & b & =Label1.Caption = a & - & b & =nText1.Tag = a - b Text1.Tag = a - b 將本題答案放入將本題答案放入Tex1.TagTex1.Tag中中nEnd SelectEnd SelectnForm1.Tag = Form1.Tag + 1Form1.Tag = Form1.Tag + 1nText1.setfocusText1.setfocusnText1.Text = Text1.Text = nEnd SubEnd

40、Subn答題部分由文本框的按健(答題部分由文本框的按?。↘eyPressKeyPress)事件代碼完成:)事件代碼完成:nPrivate Sub Text1_KeyPress(KeyAscii As Integer)Private Sub Text1_KeyPress(KeyAscii As Integer)nIfIf KeyAscii = 13 ThenKeyAscii = 13 Thennfm = !fm = !nIfIf Val(Text1.Text) = Text1.Tag Then Val(Text1.Text) = Text1.Tag ThennItem = Format(Labe

41、l1.Caption & Text1.Text, fm) & Item = Format(Label1.Caption & Text1.Text, fm) & nList1.Tag = List1.Tag + 1List1.Tag = List1.Tag + 1nElseElsenItem = Format(Label1.Caption & Text1.Text, fm) & Item = Format(Label1.Caption & Text1.Text, fm) & nEnd IfEnd IfnList1.AddItem Item, 0 List1.AddItem Item, 0 將題目

42、和回答插入到列表框中的第將題目和回答插入到列表框中的第1 1項項nLabel2.Caption = Label2.Caption = 共共 & Form1.Tag & & Form1.Tag & 題,題, & Chr(13) & & Chr(13) & 正確率為:正確率為: nLabel3.Caption = Format(List1.Tag / Form1.Tag, Label3.Caption = Format(List1.Tag / Form1.Tag, #0.0#%)#0.0#%)nForm_Activate Form_Activate 調(diào)用出題代碼調(diào)用出題代碼nEnd IfEnd I

43、fnEnd SubEnd Subn“關(guān)閉關(guān)閉”按鈕的按鈕的ClickClick事件代碼:事件代碼:nPrivate Sub Command1_Click()Private Sub Command1_Click()nUnload MeUnload MenEnd SubEnd Sub 3 3選擇和移動數(shù)據(jù)選擇和移動數(shù)據(jù)n 【例【例5 51010】利用循環(huán)結(jié)構(gòu)和列表框控件,】利用循環(huán)結(jié)構(gòu)和列表框控件,設(shè)計的設(shè)計的“選項移動選項移動”窗體。如圖窗體。如圖5 52121所示。所示。 設(shè)計步驟如下:設(shè)計步驟如下:n (1 1)建立應(yīng)用程序用戶界面與設(shè)置對象)建立應(yīng)用程序用戶界面與設(shè)置對象屬性。其中列表框的

44、屬性設(shè)置參見表屬性。其中列表框的屬性設(shè)置參見表5 54 4。 表表5-4 5-4 屬性設(shè)置屬性設(shè)置n對對 象象 屬屬 性性 屬性值屬性值 說說 明明nList1 Multiselect 0-None List1 Multiselect 0-None 多項選擇多項選擇n style 1-Checkbox style 1-Checkbox 風格風格n nList2 Multiselect 2-Extended List2 Multiselect 2-Extended 多項選擇多項選擇 說明:說明:n(1 1)多重選擇)多重選擇(Multiselect(Multiselect屬性屬性) )nMult

45、iselectMultiselect0 0 不能不能nMultlselectMultlselectl l 簡單多重簡單多重( (可選多項可選多項) )nMultiselectMultiselect2 2 擴展多重擴展多重n擴展多重:擴展多重:Shift+Shift+單擊鼠標左鍵單擊鼠標左鍵( (選連續(xù)項選連續(xù)項) )n Ctrl+ Ctrl+單擊鼠標左鍵單擊鼠標左鍵( (可選不連續(xù)項可選不連續(xù)項) )n(2 2)List1.Selected(i)List1.Selected(i)TrueTrue表示列表框表示列表框 List1List1中的第中的第 i+1i+1項選項被選中。項選項被選中。n(

46、3 3)List1.List(i) List1.List(i) 表示列表框表示列表框List1List1中第中第i+1i+1項項的值。的值。(2 2)編寫事件代碼。)編寫事件代碼。n編寫窗體的讀入(編寫窗體的讀入(LoadLoad)事件代碼:)事件代碼:nPrivate Sub Form_Load()Private Sub Form_Load()n List1.AddItem List1.AddItem 電冰箱電冰箱 n List1.AddItem List1.AddItem 洗衣機洗衣機 n List1.AddItem List1.AddItem 彩色電視機彩色電視機 n List1.Add

47、Item List1.AddItem 組合音響組合音響 n List1.AddItem List1.AddItem 影碟機影碟機 n List1.AddItem List1.AddItem 電水壺電水壺 n List1.AddItem List1.AddItem 飲水機飲水機 n List1.AddItem List1.AddItem 微波爐微波爐 n List1.AddItem List1.AddItem 照相機照相機 n Label3 = Ctrl Label3 = Ctrl或或Shift + Shift + 鼠標左鍵可以在鼠標左鍵可以在右框中選擇多項。右框中選擇多項。 nEnd SubE

48、nd Sub編寫命令按鈕的編寫命令按鈕的ClickClick事件代碼:事件代碼:nPrivate Sub Command1_Click()Private Sub Command1_Click()ni = 0i = 0nDo While i List1.ListCountDo While i List1.ListCountnIf List1.Selected(i) = True ThenIf List1.Selected(i) = True ThennList2.AddItem List1.List(i)List2.AddItem List1.List(i)nList1.RemoveItem i

49、List1.RemoveItem inElseElseni = i + 1i = i + 1nEnd IfEnd IfnLoopLoopnEnd SubEnd SubnPrivate Sub Command2_Click()Private Sub Command2_Click()nFor i = 0 To List1.ListCount - 1For i = 0 To List1.ListCount - 1nList2.AddItem List1.List(i)List2.AddItem List1.List(i)nNextNextnList1.ClearList1.ClearnEnd Sub

50、End SubnPrivate Sub Command3_Click()ni = 0nDo While i List2.ListCountnIf List2.Selected(i) = True ThennList1.AddItem List2.List(i)nList2.RemoveItem inElseni = i + 1nEnd IfnLoopnEnd SubnPrivate Sub Command4_Click()nFor i = 0 To List2.ListCount - 1nList1.AddItem List2.List(i)nNextnList2.ClearnEnd Sub5

51、.4.2 5.4.2 組合框組合框n 組合框組合框ComboBoxComboBox兼有兼有 TextBoxTextBox和和 ListBoxListBox兩者兩者的功能,有的功能,有3 3種形式的組合框:可設(shè)置種形式的組合框:可設(shè)置StyleStyle屬性值屬性值選擇。選擇。nStyleStyle屬性為:屬性為:n2 2Dropdown ListDropdown List(下拉列表框)(下拉列表框) 一般只能選項,可以單擊向下按鈕顯示一般只能選項,可以單擊向下按鈕顯示下拉列表下拉列表框框。n1 1Simple ComboSimple Combo(簡單組合框)(簡單組合框) 將文本框和列表框簡單

52、地組合在一起。將文本框和列表框簡單地組合在一起。n0 0Dropdown ComboDropdown Combo(下拉組合框)(下拉組合框) (默認)(默認) 將文本框和將文本框和下拉列表框下拉列表框組合在一起,可以單擊向組合在一起,可以單擊向下按鈕顯示可滾動的選項列表,還可以輸入新選項。下按鈕顯示可滾動的選項列表,還可以輸入新選項。 1 1下拉列表框下拉列表框n n 略【例略【例5 51111】將例】將例5 59 9算術(shù)練習中的列表框改算術(shù)練習中的列表框改為組合框(下拉列表框),如圖為組合框(下拉列表框),如圖5 52222所示。所示。n圖圖5 522 22 使用下拉列表框使用下拉列表框n

53、設(shè)計步驟如下:設(shè)計步驟如下:n (1 1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性。)建立應(yīng)用程序用戶界面與設(shè)置對象屬性。在例在例5 59 9中將列表框改為組合框,并修中將列表框改為組合框,并修改其屬性見表改其屬性見表5 55 5。 表表5 55 5 屬性設(shè)置屬性設(shè)置n對對 象象 屬屬 性性 屬性值屬性值 說說 明明nCombol Style 2- Dropdown List Combol Style 2- Dropdown List 下拉列表框下拉列表框 n Tag 0.0 Tag 0.0 存放答對的題數(shù)存放答對的題數(shù)n另外,增加一個命令按鈕(重置)另外,增加一個命令按鈕(重置)Command4C

54、ommand4,其他,其他界面的修改與屬性的設(shè)置,請參見圖界面的修改與屬性的設(shè)置,請參見圖5 52222。 (2 2)編寫程序代碼)編寫程序代碼n 修改文本框修改文本框 Text1Text1的按健(的按?。↘eyPressKeyPress)事件代)事件代碼:碼:nPrivate Sub Text1_KeyPress (KeyAscii As Private Sub Text1_KeyPress (KeyAscii As Integer)Integer)nIf KeyAscii = l3 ThenIf KeyAscii = l3 ThennFm = !Fm = !nlf Text1.Text =

55、 Text1.Tag Thenlf Text1.Text = Text1.Tag ThennItem = Format(Label1.Caption & Text1.Text, Item = Format(Label1.Caption & Text1.Text, Fm) & JFm) & JnCombo1.Tag = Combo1.Tag + 1Combo1.Tag = Combo1.Tag + 1nEIseEIsenItem = Format(Label1.Caption & Text1.Text, Item = Format(Label1.Caption & Text1.Text, Fm)

56、 & XFm) & XnAnd IfAnd IfnCombo1.AddItem Item, 0Combo1.AddItem Item, 0nCombo1.ListIndex = 0Combo1.ListIndex = 0nLabel3Label3CaptionCaption 共共 & Form1.Tap& & Form1.Tap&題,正確題,正確率為:率為: nLabel2.Caption = Format(Combo1.Tag / Label2.Caption = Format(Combo1.Tag / Form1.Tag, #0.0#%)Form1.Tag, #0.0#%)nForm_Ac

57、tivateForm_ActivatenEnd IfEnd IfnEnd SubEnd Sub編寫命令按鈕編寫命令按鈕Command2Command2的的ClickClick事件代碼:事件代碼:nPrivate Sub Command2_Click()Private Sub Command2_Click()nForm1.Tag = 0#Form1.Tag = 0#nCombo1.Tag = 0#Combo1.Tag = 0#nCombo1.ClearCombo1.ClearnLabel3.CaptionLabel3.Caption 歡迎重新開始歡迎重新開始!nLabel2.Caption =

58、Label2.Caption = nForm ActivateForm ActivatenText1.SetFocusText1.SetFocusnEnd SubEnd Subn 其他代碼同例其他代碼同例5- 95- 9。n n2 2簡單組合框簡單組合框n 【例【例5 51212】“簡易抽獎機簡易抽獎機”。在組合框中。在組合框中輸入號碼,按輸入號碼,按“開始開始”按鈕可以得到中獎的號碼按鈕可以得到中獎的號碼(如圖(如圖5 52323所示)。圖所示)。圖5- 24 5- 24 建立程序界面建立程序界面n 設(shè)計步驟如下:設(shè)計步驟如下:n (1 1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性。)建立應(yīng)用程序

59、用戶界面與設(shè)置對象屬性。增加一個框架增加一個框架Frame1Frame1,選中,選中Frame1Frame1,在其中增加一,在其中增加一個組合框個組合框Combo1Combo1、一個標簽、一個標簽Label1Label1和一個命令按鈕和一個命令按鈕Command1Command1。將。將Combo1Combo1的的 StyleStyle屬性改為:屬性改為:l lSimple ComboSimple Combo,其他屬性的設(shè)置參見圖,其他屬性的設(shè)置參見圖5 52424。 (2 2)編寫事件代碼。)編寫事件代碼。n 編寫組合框編寫組合框Combo1Combo1的按?。ǖ陌唇。↘eyPressKey

60、Press)事件代碼:)事件代碼:nPrivate Sub Combo1_KeyPress(KeyAscii As Private Sub Combo1_KeyPress(KeyAscii As Integer)Integer)nIf KeyAscii = 13 Then If KeyAscii = 13 Then 按回車鍵后,接收輸入的按回車鍵后,接收輸入的選項選項nCombo1.AddItem Combo1.Text, 0Combo1.AddItem Combo1.Text, 0nCombo1.SelStart = 0Combo1.SelStart = 0nCombo1.SelLength

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論