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

下載本文檔

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

文檔簡介

VisualBasic程序設(shè)計VisualBasic程序設(shè)計1第6章

循環(huán)結(jié)構(gòu)程序設(shè)計●6.1

For...Next語句●6.2

Do…Loop循環(huán)語句●6.2.1前測型Do…Loop循環(huán)語句●6.1.2

后測型Do…Loop循環(huán)語句●6.3列表框與組合框

●6.1.3列表框控件●6.1.4

組合框控件●習(xí)題6

第6章循環(huán)結(jié)構(gòu)程序設(shè)計●6.1For...Nex2●6.1For...Next語句

1.For...Next語句的語法格式For...Next語句的語法格式為:For〈循環(huán)變量〉=〈初值〉To〈終值〉[Step〈步長〉][〈語句組1〉][ExitFor][〈語句組2〉]Next[〈循環(huán)變量〉]2.For...Next語句的執(zhí)行過程3.For...Next循環(huán)的循環(huán)次數(shù)循環(huán)體不被執(zhí)行:l

當(dāng)〈步長〉為正數(shù)時,〈初值〉大于〈終值〉。l

當(dāng)〈步長〉為負(fù)數(shù)時,〈初值〉小于〈終值〉。通過下式計算:循環(huán)次數(shù)=INT((終值—初值)/步長+1)●6.1For...Next語句34.For...Next語句使用示例【例6-1】用For...Next語句求1+2+3+…+100的值。設(shè)計步驟如下:1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性,如圖6-3所示。2)編寫事件代碼。編寫“計算”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0 '累加器賦初值0Forn=1To100 '初值為1,終值為100,步長為1(省略)s=s+n '進行累加NextnText1.Text=s '輸出累加結(jié)果EndSub4.For...Next語句使用示例4【例6-2】輸出1000以內(nèi)所有能被37整除的自然數(shù)。設(shè)計步驟如下:1)建立用戶界面。在新建的窗體中增加一個文本框Text1、一個命令按鈕Command1和一個框架Fram1。選中Frame1,在其中增加一個標(biāo)簽Label1,用來顯示程序的說明。如圖6-6(左)所示。2)設(shè)置對象屬性3)編寫事件代碼【例6-2】輸出1000以內(nèi)所有能被37整除的自然數(shù)。5編寫“開始”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()a=""Forn=1To1000IfnMod37=0Thena=a&Str(n)&Chr(13)&Chr(10) '用Chr(13)&Chr(10)設(shè)置行斷點EndIfNextText1.Text=aEndSub5.For...Next語句的嵌套For...Next循環(huán)可以嵌套使用,嵌套層數(shù)沒有具體限制,其基本要求是:l

每個循環(huán)必須有一個唯一的變量名作為控制變量。l

內(nèi)層循環(huán)必須完全放在外循環(huán)體內(nèi),內(nèi)外循環(huán)不得互相交叉騎跨。例如,下面的嵌套是錯誤的:Fora=1To5Forb=3To9...NextaNextb編寫“開始”命令按鈕Command1的Click(單擊)事6NextbFor...Next循環(huán)的嵌套通常有以下3種形式:1)一般嵌套形式。Fora1=...Fora2=...Fora3=......Nexta3Nexta2Nexta12)上式中Next后面的a1、a2、a3可以省略不寫。3)當(dāng)內(nèi)層循環(huán)與外層循環(huán)有相同的終點時,可共用一個Next語句。但是,控制變量名不能省略。例如:Fora=1To2Forb=2To3Forc=3To4Printa,b,cNextc,b,a【例6-3】打印出如圖6-7所示的乘法“九九表”。Nextb7直接在窗體上輸出。窗體Form的Load(載入)事件代碼為:PrivateSubForm_Load()ShowFontSize=12 ‘設(shè)置字號PrintTab(25);"九九表" '輸出標(biāo)題Print '輸出空行Print"*";Fori=1To9 '輸出第一行數(shù)字(1~9)PrintTab(i*6);i;'每列空5格,定位輸出NextiPrint '換行Forj=1To9 '外層循環(huán)Printj;"";Fork=1To9 '內(nèi)層循環(huán)直接在窗體上輸出。窗體Form的Load(載入)事件代碼為:8m=j*k '計算乘積PrintTab(k*6);m;""; '定位輸出NextkPrint '換行NextjEndSub●6.2

Do…Loop循環(huán)語句●6.2.1前測型Do…Loop循環(huán)語句1.前測型Do…Loop的語法格式其語法格式為:Do[{While|Until}〈條件〉][〈語句組1〉][ExitDo][〈語句組2〉]Loop3.前測型Do…Loop使用示例m=j*k '計算9【例6-4】用Do…Loop語句,計算1+2+3+…+100的值。設(shè)計步驟如下:1)建立用戶界面與設(shè)置對象屬性,如圖6-9所示。2)設(shè)置對象屬性,參見圖6-10所示。3)編寫事件代碼。采用當(dāng)型循環(huán)結(jié)構(gòu)編寫“計算”命令按鈕Command1的Click(單擊)事件代碼為:PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1 '累加器s賦初值0,計數(shù)器n賦初值1DoWhilen<=100 '當(dāng)型循環(huán)s=s+n '累加和n=n+1 '計數(shù)器累加1LoopLabel2.Caption=sEndSub【例6-4】用Do…Loop語句,計算1+2+3+10“計算”命令按鈕Command1的Click(單擊)事件代碼還可以改為直到型:PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1DoUntiln>100 '直到型循環(huán)s=s+nn=n+1LoopLabel2.Caption=sEndSub該事件代碼還可以利用ExitDo來編寫:PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1Dos=s+nn=n+1

“計算”命令按鈕Command1的Click(單擊)事件代碼11Ifn>100ThenExitDo'如果n>100,則跳出循環(huán)LoopLabel2.Caption=sEndSub【例6-5】已知s=1×2×3×…×n,計算出s不大于5000時的最大n值。設(shè)計步驟如下:1)建立用戶界面和設(shè)置對象屬性,如圖6-11所示。2)編寫事件代碼。編寫“計算”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()DimnAsInteger,sAsLongCurrentY=Label2.Height+200 '確定輸出位置n=1 '計數(shù)器賦初值1s=1 '累乘器賦初值1DoWhiles<=5000 '循環(huán)條件n=n+1 '計數(shù)器累加1s=s*n '累乘Printn,s '通過本行可以看到循環(huán)過程LoopIfn>100ThenExitDo12Label1.Caption="n="&Str(n–1)EndSub【例6-6】輸入一個正整數(shù),利用Do循環(huán)判斷是否素數(shù)。設(shè)計步驟如下:1)建立用戶界面和設(shè)置對象屬性,如圖6-13所示。2)編寫事件代碼。編寫“判定素數(shù)”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()DimnAsLongSelectCaseVal(Text1.Text)CaseIs<3MsgBox"請輸入一個大于2的整數(shù)!",vbInformation+vbOKOnly,"注意"CaseIs>2147483647MsgBox"此數(shù)太大!",vbInformation+vbOKOnly,"注意"CaseElsen=Val(Text1.Text)s=0:i=2DoWhilei<=Sqr(n)Ands=0Label1.Caption="n="&Str13IfnModi=0Thens=1Elsei=i+1EndIfLoopIfs=0Thena="是一個素數(shù)"Elsea="不是素數(shù)"EndIfLabel1.Caption=Str(n)&aEndSelectText1.SetFocusEndSub【例6-7】輸出100~200之間不能被3整除的數(shù)。設(shè)計步驟如下:1)建立用戶界面和設(shè)置對象屬性,如圖6-14所示。IfnModi=0Then142)編寫事件代碼。編寫“開始”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()DimxAsIntegerx=100DoUntilx>200IfxMod3<>0ThenText1.Text=Text1.Text&Str(x)&Chr(13)&Chr(10)EndIfx=x+1LoopEndSub編寫“清除”命令按鈕Command2的Click(單擊)事件代碼:PrivateSubCommand2_Click()Text1.Text=""EndSub●6.1.2

后測型Do…Loop循環(huán)語句2)編寫事件代碼。151.后測型Do…Loop的語法格式后測型Do…Loop循環(huán)結(jié)構(gòu)的語法格式為:Do[〈語句組1〉][ExitDo][〈語句組2〉]Loop[{While|Until}〈條件〉]2.后測型Do…Loop的執(zhí)行過程分為當(dāng)型和直到型:l

當(dāng)型Do…WhileLoop:當(dāng)條件為真(True)時繼續(xù)執(zhí)行循環(huán)體,條件為假(False)時,終止循環(huán)。l

直到型Do…UntilLoop:當(dāng)條件為假時繼續(xù)執(zhí)行循環(huán)體,直到條件為真時,終止循環(huán)。在Do…Loop中,可以在循環(huán)體中放置任意個ExitDo語句,隨時跳出Do…Loop循環(huán)

3.

后測型Do…Loop使用示例1.后測型Do…Loop的語法格式16【例6-8】輸入有效數(shù)字的位數(shù),利用下述公式計算圓周率π的近似值:設(shè)計步驟如下:

1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性,如圖6-17所示2)編寫程序代碼。根據(jù)流程圖,可以寫出“計算”命令按鈕Command1的Click事件代碼為:PrivateSubCommand1_Click()DimmAsIntegerm=Val(Text1.Text)p=0#:s=2#:e=0.1^mDot=s:p=Sqr(2+p):s=s*2/pLoopUntilAbs(t-s)<0.1^mf=String(m-1,"#")Text2.Text=Format(s,"0."&f)Text1.SetFocusEndSub【例6-8】輸入有效數(shù)字的位數(shù),利用下述公式計算圓周率π的近17文本框Text1的GotFocus事件代碼:PrivateSubText1_GotFocus()Text1.SelStart=0Text1.SelLength=Len(Text1.Text)EndSub【例6-9】輸入兩個正整數(shù),求它們的最大公約數(shù)。設(shè)計步驟如下:1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性,如圖6-19所示。文本框Text1的GotFocus事件代碼:182)編寫程序代碼。根據(jù)流程圖,編寫“計算”命令按鈕Command1的Click事件代碼為:PrivateSubCommand1_Click()DimmAsInteger,nAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)Ifm<nThent=m:m=n:n=t'交換數(shù)據(jù),使大數(shù)在前,小數(shù)在后EndIfDo '求最大公約數(shù)Ifn<=0Orm<=0Then ‘檢驗數(shù)據(jù)范圍MsgBox"請重新輸入數(shù)據(jù)!"ExitDoEndIf

2)編寫程序代碼。根據(jù)流程圖,編寫“計算”命令按鈕Com19r=mModnm=n n=rLoopWhiler<>0 '當(dāng)r<>0時輾轉(zhuǎn)相除Label3.Caption=m '輸出結(jié)果EndSuab【例6-10】設(shè)華氏溫度為h,攝氏溫度為s,已知將華氏溫度轉(zhuǎn)換為溫度的公式為:窗體Form1的Load(載入)事件代碼為:PrivateSubForm_Load()DimhAsString,sAsSingle,tsAsStringDo

r=mModn20h=InputBox("請輸入華氏溫度","華氏溫度") '利用輸入對話框輸入華氏溫度Ifh<>""Thens=Int((h-32)*5/9)'計算攝氏溫度MsgBox"攝氏溫度為"&Str(s),0+48+256,"轉(zhuǎn)換為攝氏溫度"EndIfLoopWhileh<>""'若輸入框中的值不為空,反復(fù)計算EndSub●6.3列表框與組合框●6.1.3列表框控件1.列表框的屬性(1)基本屬性列表框的常用屬性有Name、Enabled、Visible、Index等。

h=InputBox("請輸入華氏溫度","華氏溫度"21(2)List屬性(3)Text屬性(4)ListCount屬性(5)ListIndex屬性(6)Selected屬性(7)Sorted屬性(8)MultiSelect屬性2.列表框的方法AddItem方法形式如下:〈對象〉.AddItem〈字符串表達式〉[,〈位置〉](2)Clear方法形式如下:〈對象〉.Clear(3)RemoveItem方法。形式如下:〈對象〉.RemoveItem〈位置〉3.列表框使用示例【例6-11】在列表框中,顯示200以內(nèi)能被6整除的自然數(shù)。設(shè)計步驟如下:1)建立用戶界面與設(shè)置對象屬性(2)List屬性(3)Text屬性222)編寫事件代碼。編寫“顯示”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()List1.Clear '清空列表框的內(nèi)容Forn=1To200IfnMod6=0ThenList1.AddItemn'若n能被6整除,則添到列表框中NextnEndSub編寫“關(guān)閉”命令按鈕Command2的Click(單擊)事件代碼:2)編寫事件代碼。23PrivateSubCommand2_Click() UnloadMeEndSub【例6-12】從文本框中輸入或從列表框中選擇姓名,并且顯示結(jié)果,如圖6-25所示。設(shè)計步驟如下:1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性PrivateSubCommand2_Click() 242)編寫程序代碼。編寫列表框List1的Click事件代碼:PrivateSubList1_Click()Text1.Text=List1.TextEndSub編寫文本框Text1的Change事件代碼:PrivateSubText1_Change()Label1.Caption="您所選擇的代表是:"EndSub編寫命令按鈕Command1的Click事件代碼:PrivateSubCommand1_Click()Text1.SelStart=0Text1.SelLength=Len(Text1.Text)Label1.Caption="您所選擇的代表是:"+Text1.TextEndSub2)編寫程序代碼。25【例6-13】在列表框之間移動數(shù)據(jù),如圖6-26所示。設(shè)計步驟如下:1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性。2)編寫程序代碼。編寫窗體的Load事件代碼:PrivateSubForm_Load()List1.AddItem"青菜"List1.AddItem"羅卜"List1.AddItem"豆腐"List1.AddItem"蘋果"List1.AddItem"香蕉"List1.AddItem"桔子"EndSub編寫命令按鈕Command1的Click事件代碼:PrivateSubCommand1_Click()List2.AddItemList1.TextList1.RemoveItemList1.ListIndexEndSub

【例6-13】在列表框之間移動數(shù)據(jù),如圖6-26所示。26編寫命令按鈕Command2的Click事件代碼:PrivateSubCommand2_Click()List1.AddItemList2.TextList2.RemoveItemList2.ListIndexEndSub【例6-14】修改例6-13,允許從一個列表框中將選中的多項選項移至另一個列表框,如圖6-27所示。2)修改程序代碼。命令按鈕Command1的Click事件代碼:PrivateSubCommand1_Click()i=0DoWhilei<List1.ListCount-1IfList1.Selected(i)=TrueThenList2.AddItemList1.List(i)List1.RemoveItemiElsei=i+1EndIfLoopEndSub編寫命令按鈕Command2的Click事件代碼:27命令按鈕Command2的Click事件代碼:PrivateSubCommand2_Click()i=0DoWhilei<List2.ListCount-1IfList2.Selected(i)=TrueThenList1.AddItemList2.List(i)List2.RemoveItemiElsei=i+1EndIfLoopEndSub●6.1.4

組合框控件

1.下拉組合框

2.簡單組合框命令按鈕Command2的Click事件代碼:283.下拉列表框4.組合框使用示例【例6-15】利用組合框設(shè)計“自動抽獎機”。設(shè)計步驟如下:(1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性。

(2)編寫事件代碼。編寫組合框Combo1的KeyPress(按鍵)事件代碼:PrivateSubCombo1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Then '按Enter鍵Combo1.AddItemCombo1.Text,0 '接受輸入的號碼Combo1.SelStart=0 '設(shè)置組合框的起始位置Combo1.SelLength=Len(Combo1.Text)'設(shè)置選擇組合框的長度EndIfIfKeyAscii=27Then '按Esc鍵IfCombo1.ListIndex<>-1ThenCombo1.RemoveItemCombo1.ListIndex '移去選項EndIfEndIfEndSub3.下拉列表框29編寫“自動抽獎”命令按鈕Command1的Click(單擊)事件代碼,使之可以隨機地抽取獎號:PrivateSubCommand1_Click()Randomizen=Combo1.ListCount '求組合框中的項目數(shù)a=Int(Rnd*n) '利用隨機數(shù)函數(shù)求隨機序號Combo1.ListIndex=aLabel2.Caption="中獎的號碼是:"&Chr(13)&Combo1.TextEndSub編寫“退出”命令按鈕Command2的Click(單擊)事件代碼:PrivateSubCommand2_Click()UnloadMeEndSub編寫“自動抽獎”命令按鈕Command1的Click(單擊30【例6-16】將例6-13中的左列表框改為組合框(下拉列表框),如圖6-30所示?!窳?xí)題66.1輸入初始值,輸出100個不能被3整除的數(shù)。6.2設(shè)計程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。6.3設(shè)s=11×22×33×…×nn,求s不大于400000時最大的n。6.4設(shè)有一張厚為x毫米,面積足夠大的紙,將它不斷地對折。試問對折多少次后,其厚度可達珠穆朗瑪峰的高度(8848米)。6.5我國古代數(shù)學(xué)家張丘建在“算經(jīng)”里提出一個世界數(shù)學(xué)史上有名的百雞問題:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問雞翁、母、雛各幾何?請編寫程序,求出結(jié)果。6.6打印乘法“九九表”,輸出結(jié)果分別如圖6-31所示。【例6-16】將例6-13中的左列表框改為組合框(下拉列表框316.7“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)的立方和等于該數(shù),如:153=13+53+33編寫程序,輸出所有的“水仙花數(shù)”(如圖6-32所示)。提示:此題的關(guān)鍵是把任意三位數(shù)的每一位數(shù)分離出來。設(shè)a,b,c分別是三位整數(shù)n的百位數(shù)、十位數(shù)、個位數(shù),則:a=Int(n/100)b=Int((n–a*100)/10)c=n–a*100–b*106.8求從1000到1100之間的所有素數(shù)(如圖6-33所示)。6.7“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)的立方和等于該326.9利用下述公式計算圓周率π的近似值:當(dāng)最后一項的絕對值小于0.000001時停止計算。6.10在窗體上輸出如圖6-34所示的圖形。6.11馬克思曾經(jīng)做過這樣一道趣味數(shù)學(xué)題:有30個人在一家小飯館里用餐,其中有男人、女人和小孩。每個男人花了3先令,每個女人花了2先令,每個小孩花了1先令,一共花去50先令。問男人、女人和小孩各有幾人(如圖6-35所示)?6.12利用循環(huán)在窗體中顯示不同字型大小。顯示窗體如圖6-36所示。6.9利用下述公式計算圓周率π的近似值:336.13用1、2、3、4這4個數(shù)字可以組成一個4位數(shù)。編寫程序,打印出所有可能的4位數(shù)(4個數(shù)字可以相同),并統(tǒng)計出所組成的4位數(shù)的個數(shù)。6.14用“篩法”找1~100之間的全部素數(shù),如圖6-37所示。6.15利用列表框,編寫能對本學(xué)期選修課程進行課程添加、修改和刪除的應(yīng)用程序,如圖6.18所示。6.13用1、2、3、4這4個數(shù)字可以組成一個4位數(shù)。34VisualBasic程序設(shè)計VisualBasic程序設(shè)計35第6章

循環(huán)結(jié)構(gòu)程序設(shè)計●6.1

For...Next語句●6.2

Do…Loop循環(huán)語句●6.2.1前測型Do…Loop循環(huán)語句●6.1.2

后測型Do…Loop循環(huán)語句●6.3列表框與組合框

●6.1.3列表框控件●6.1.4

組合框控件●習(xí)題6

第6章循環(huán)結(jié)構(gòu)程序設(shè)計●6.1For...Nex36●6.1For...Next語句

1.For...Next語句的語法格式For...Next語句的語法格式為:For〈循環(huán)變量〉=〈初值〉To〈終值〉[Step〈步長〉][〈語句組1〉][ExitFor][〈語句組2〉]Next[〈循環(huán)變量〉]2.For...Next語句的執(zhí)行過程3.For...Next循環(huán)的循環(huán)次數(shù)循環(huán)體不被執(zhí)行:l

當(dāng)〈步長〉為正數(shù)時,〈初值〉大于〈終值〉。l

當(dāng)〈步長〉為負(fù)數(shù)時,〈初值〉小于〈終值〉。通過下式計算:循環(huán)次數(shù)=INT((終值—初值)/步長+1)●6.1For...Next語句374.For...Next語句使用示例【例6-1】用For...Next語句求1+2+3+…+100的值。設(shè)計步驟如下:1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性,如圖6-3所示。2)編寫事件代碼。編寫“計算”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0 '累加器賦初值0Forn=1To100 '初值為1,終值為100,步長為1(省略)s=s+n '進行累加NextnText1.Text=s '輸出累加結(jié)果EndSub4.For...Next語句使用示例38【例6-2】輸出1000以內(nèi)所有能被37整除的自然數(shù)。設(shè)計步驟如下:1)建立用戶界面。在新建的窗體中增加一個文本框Text1、一個命令按鈕Command1和一個框架Fram1。選中Frame1,在其中增加一個標(biāo)簽Label1,用來顯示程序的說明。如圖6-6(左)所示。2)設(shè)置對象屬性3)編寫事件代碼【例6-2】輸出1000以內(nèi)所有能被37整除的自然數(shù)。39編寫“開始”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()a=""Forn=1To1000IfnMod37=0Thena=a&Str(n)&Chr(13)&Chr(10) '用Chr(13)&Chr(10)設(shè)置行斷點EndIfNextText1.Text=aEndSub5.For...Next語句的嵌套For...Next循環(huán)可以嵌套使用,嵌套層數(shù)沒有具體限制,其基本要求是:l

每個循環(huán)必須有一個唯一的變量名作為控制變量。l

內(nèi)層循環(huán)必須完全放在外循環(huán)體內(nèi),內(nèi)外循環(huán)不得互相交叉騎跨。例如,下面的嵌套是錯誤的:Fora=1To5Forb=3To9...NextaNextb編寫“開始”命令按鈕Command1的Click(單擊)事40NextbFor...Next循環(huán)的嵌套通常有以下3種形式:1)一般嵌套形式。Fora1=...Fora2=...Fora3=......Nexta3Nexta2Nexta12)上式中Next后面的a1、a2、a3可以省略不寫。3)當(dāng)內(nèi)層循環(huán)與外層循環(huán)有相同的終點時,可共用一個Next語句。但是,控制變量名不能省略。例如:Fora=1To2Forb=2To3Forc=3To4Printa,b,cNextc,b,a【例6-3】打印出如圖6-7所示的乘法“九九表”。Nextb41直接在窗體上輸出。窗體Form的Load(載入)事件代碼為:PrivateSubForm_Load()ShowFontSize=12 ‘設(shè)置字號PrintTab(25);"九九表" '輸出標(biāo)題Print '輸出空行Print"*";Fori=1To9 '輸出第一行數(shù)字(1~9)PrintTab(i*6);i;'每列空5格,定位輸出NextiPrint '換行Forj=1To9 '外層循環(huán)Printj;"";Fork=1To9 '內(nèi)層循環(huán)直接在窗體上輸出。窗體Form的Load(載入)事件代碼為:42m=j*k '計算乘積PrintTab(k*6);m;""; '定位輸出NextkPrint '換行NextjEndSub●6.2

Do…Loop循環(huán)語句●6.2.1前測型Do…Loop循環(huán)語句1.前測型Do…Loop的語法格式其語法格式為:Do[{While|Until}〈條件〉][〈語句組1〉][ExitDo][〈語句組2〉]Loop3.前測型Do…Loop使用示例m=j*k '計算43【例6-4】用Do…Loop語句,計算1+2+3+…+100的值。設(shè)計步驟如下:1)建立用戶界面與設(shè)置對象屬性,如圖6-9所示。2)設(shè)置對象屬性,參見圖6-10所示。3)編寫事件代碼。采用當(dāng)型循環(huán)結(jié)構(gòu)編寫“計算”命令按鈕Command1的Click(單擊)事件代碼為:PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1 '累加器s賦初值0,計數(shù)器n賦初值1DoWhilen<=100 '當(dāng)型循環(huán)s=s+n '累加和n=n+1 '計數(shù)器累加1LoopLabel2.Caption=sEndSub【例6-4】用Do…Loop語句,計算1+2+3+44“計算”命令按鈕Command1的Click(單擊)事件代碼還可以改為直到型:PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1DoUntiln>100 '直到型循環(huán)s=s+nn=n+1LoopLabel2.Caption=sEndSub該事件代碼還可以利用ExitDo來編寫:PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1Dos=s+nn=n+1

“計算”命令按鈕Command1的Click(單擊)事件代碼45Ifn>100ThenExitDo'如果n>100,則跳出循環(huán)LoopLabel2.Caption=sEndSub【例6-5】已知s=1×2×3×…×n,計算出s不大于5000時的最大n值。設(shè)計步驟如下:1)建立用戶界面和設(shè)置對象屬性,如圖6-11所示。2)編寫事件代碼。編寫“計算”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()DimnAsInteger,sAsLongCurrentY=Label2.Height+200 '確定輸出位置n=1 '計數(shù)器賦初值1s=1 '累乘器賦初值1DoWhiles<=5000 '循環(huán)條件n=n+1 '計數(shù)器累加1s=s*n '累乘Printn,s '通過本行可以看到循環(huán)過程LoopIfn>100ThenExitDo46Label1.Caption="n="&Str(n–1)EndSub【例6-6】輸入一個正整數(shù),利用Do循環(huán)判斷是否素數(shù)。設(shè)計步驟如下:1)建立用戶界面和設(shè)置對象屬性,如圖6-13所示。2)編寫事件代碼。編寫“判定素數(shù)”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()DimnAsLongSelectCaseVal(Text1.Text)CaseIs<3MsgBox"請輸入一個大于2的整數(shù)!",vbInformation+vbOKOnly,"注意"CaseIs>2147483647MsgBox"此數(shù)太大!",vbInformation+vbOKOnly,"注意"CaseElsen=Val(Text1.Text)s=0:i=2DoWhilei<=Sqr(n)Ands=0Label1.Caption="n="&Str47IfnModi=0Thens=1Elsei=i+1EndIfLoopIfs=0Thena="是一個素數(shù)"Elsea="不是素數(shù)"EndIfLabel1.Caption=Str(n)&aEndSelectText1.SetFocusEndSub【例6-7】輸出100~200之間不能被3整除的數(shù)。設(shè)計步驟如下:1)建立用戶界面和設(shè)置對象屬性,如圖6-14所示。IfnModi=0Then482)編寫事件代碼。編寫“開始”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()DimxAsIntegerx=100DoUntilx>200IfxMod3<>0ThenText1.Text=Text1.Text&Str(x)&Chr(13)&Chr(10)EndIfx=x+1LoopEndSub編寫“清除”命令按鈕Command2的Click(單擊)事件代碼:PrivateSubCommand2_Click()Text1.Text=""EndSub●6.1.2

后測型Do…Loop循環(huán)語句2)編寫事件代碼。491.后測型Do…Loop的語法格式后測型Do…Loop循環(huán)結(jié)構(gòu)的語法格式為:Do[〈語句組1〉][ExitDo][〈語句組2〉]Loop[{While|Until}〈條件〉]2.后測型Do…Loop的執(zhí)行過程分為當(dāng)型和直到型:l

當(dāng)型Do…WhileLoop:當(dāng)條件為真(True)時繼續(xù)執(zhí)行循環(huán)體,條件為假(False)時,終止循環(huán)。l

直到型Do…UntilLoop:當(dāng)條件為假時繼續(xù)執(zhí)行循環(huán)體,直到條件為真時,終止循環(huán)。在Do…Loop中,可以在循環(huán)體中放置任意個ExitDo語句,隨時跳出Do…Loop循環(huán)

3.

后測型Do…Loop使用示例1.后測型Do…Loop的語法格式50【例6-8】輸入有效數(shù)字的位數(shù),利用下述公式計算圓周率π的近似值:設(shè)計步驟如下:

1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性,如圖6-17所示2)編寫程序代碼。根據(jù)流程圖,可以寫出“計算”命令按鈕Command1的Click事件代碼為:PrivateSubCommand1_Click()DimmAsIntegerm=Val(Text1.Text)p=0#:s=2#:e=0.1^mDot=s:p=Sqr(2+p):s=s*2/pLoopUntilAbs(t-s)<0.1^mf=String(m-1,"#")Text2.Text=Format(s,"0."&f)Text1.SetFocusEndSub【例6-8】輸入有效數(shù)字的位數(shù),利用下述公式計算圓周率π的近51文本框Text1的GotFocus事件代碼:PrivateSubText1_GotFocus()Text1.SelStart=0Text1.SelLength=Len(Text1.Text)EndSub【例6-9】輸入兩個正整數(shù),求它們的最大公約數(shù)。設(shè)計步驟如下:1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性,如圖6-19所示。文本框Text1的GotFocus事件代碼:522)編寫程序代碼。根據(jù)流程圖,編寫“計算”命令按鈕Command1的Click事件代碼為:PrivateSubCommand1_Click()DimmAsInteger,nAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)Ifm<nThent=m:m=n:n=t'交換數(shù)據(jù),使大數(shù)在前,小數(shù)在后EndIfDo '求最大公約數(shù)Ifn<=0Orm<=0Then ‘檢驗數(shù)據(jù)范圍MsgBox"請重新輸入數(shù)據(jù)!"ExitDoEndIf

2)編寫程序代碼。根據(jù)流程圖,編寫“計算”命令按鈕Com53r=mModnm=n n=rLoopWhiler<>0 '當(dāng)r<>0時輾轉(zhuǎn)相除Label3.Caption=m '輸出結(jié)果EndSuab【例6-10】設(shè)華氏溫度為h,攝氏溫度為s,已知將華氏溫度轉(zhuǎn)換為溫度的公式為:窗體Form1的Load(載入)事件代碼為:PrivateSubForm_Load()DimhAsString,sAsSingle,tsAsStringDo

r=mModn54h=InputBox("請輸入華氏溫度","華氏溫度") '利用輸入對話框輸入華氏溫度Ifh<>""Thens=Int((h-32)*5/9)'計算攝氏溫度MsgBox"攝氏溫度為"&Str(s),0+48+256,"轉(zhuǎn)換為攝氏溫度"EndIfLoopWhileh<>""'若輸入框中的值不為空,反復(fù)計算EndSub●6.3列表框與組合框●6.1.3列表框控件1.列表框的屬性(1)基本屬性列表框的常用屬性有Name、Enabled、Visible、Index等。

h=InputBox("請輸入華氏溫度","華氏溫度"55(2)List屬性(3)Text屬性(4)ListCount屬性(5)ListIndex屬性(6)Selected屬性(7)Sorted屬性(8)MultiSelect屬性2.列表框的方法AddItem方法形式如下:〈對象〉.AddItem〈字符串表達式〉[,〈位置〉](2)Clear方法形式如下:〈對象〉.Clear(3)RemoveItem方法。形式如下:〈對象〉.RemoveItem〈位置〉3.列表框使用示例【例6-11】在列表框中,顯示200以內(nèi)能被6整除的自然數(shù)。設(shè)計步驟如下:1)建立用戶界面與設(shè)置對象屬性(2)List屬性(3)Text屬性562)編寫事件代碼。編寫“顯示”命令按鈕Command1的Click(單擊)事件代碼:PrivateSubCommand1_Click()List1.Clear '清空列表框的內(nèi)容Forn=1To200IfnMod6=0ThenList1.AddItemn'若n能被6整除,則添到列表框中NextnEndSub編寫“關(guān)閉”命令按鈕Command2的Click(單擊)事件代碼:2)編寫事件代碼。57PrivateSubCommand2_Click() UnloadMeEndSub【例6-12】從文本框中輸入或從列表框中選擇姓名,并且顯示結(jié)果,如圖6-25所示。設(shè)計步驟如下:1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性PrivateSubCommand2_Click() 582)編寫程序代碼。編寫列表框List1的Click事件代碼:PrivateSubList1_Click()Text1.Text=List1.TextEndSub編寫文本框Text1的Change事件代碼:PrivateSubText1_Change()Label1.Caption="您所選擇的代表是:"EndSub編寫命令按鈕Command1的Click事件代碼:PrivateSubCommand1_Click()Text1.SelStart=0Text1.SelLength=Len(Text1.Text)Label1.Caption="您所選擇的代表是:"+Text1.TextEndSub2)編寫程序代碼。59【例6-13】在列表框之間移動數(shù)據(jù),如圖6-26所示。設(shè)計步驟如下:1)建立應(yīng)用程序用戶界面與設(shè)置對象屬性。2)編寫程序代碼。編寫窗體的Load事件代碼:PrivateSubForm_Load()List1.AddItem"青菜"List1.AddItem"羅卜"List1.AddItem"豆腐"List1.AddItem"蘋果"List1.AddItem"香蕉"List1.AddItem"桔子"EndSub編寫命令按鈕Command1的Click事件代碼:PrivateSubCommand1_Click()List2.AddItemList1.TextList1.RemoveItemList1.ListIndexEndSub

【例6-13】在列表框之間移動數(shù)據(jù),如圖6-26所示。60編寫命令按鈕Command2的Click事件代碼:PrivateSubCommand2_Click()List1.AddItemList2.TextList2.RemoveItemList2.ListIndexEndSub【例6-14】修改例6-13,允許從一個列表框中將選中的多項選項移至另一個列表框,如圖6-27所示。2)修改程序代碼。命令按鈕Command1的Click事件代碼:PrivateSubCommand1_Click()i=0DoWhilei<List1.ListCount-1IfList1.Selected(i)=TrueThenList2.AddItemList1.List(i)List1.RemoveItemiElsei=i+1EndIfLoopEndSub編寫命令按鈕Command2的Click事件代碼:61命令按鈕Command2的Click事件代碼:PrivateSubCommand2_C

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論