Visual Basic語言程序設計及實驗教程課件第5章 循環結構程序設計_第1頁
Visual Basic語言程序設計及實驗教程課件第5章 循環結構程序設計_第2頁
Visual Basic語言程序設計及實驗教程課件第5章 循環結構程序設計_第3頁
Visual Basic語言程序設計及實驗教程課件第5章 循環結構程序設計_第4頁
Visual Basic語言程序設計及實驗教程課件第5章 循環結構程序設計_第5頁
已閱讀5頁,還剩64頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章循環結構程序設計5.1循環概念5.2循環結構及循環程序語句5.3循環程序設計舉例5.4列表框與組合框5.1循環概念

在實際的數據處理中,常需要進行一些大量重復的運算和操作,如計算:1+2+3+……+100或1!+2!+3!+……+10!

使用循環可以避免代碼的重復編寫,簡化程序,節約內存,提高程序運行效率。5.2循環結構及程序5.2.1設計循環結構的基本原理例:計算1+2+3+……+100。開始i<=100輸出sum的值結束真假i=i+1Sum=0i=1sum=sum+i循環設計三要素:2、循環條件3、循環體1、初始化(1)用“計數”(2)用“條件”遞推、迭代、窮舉對變量賦初值開始i<=n輸出sum的值結束真假i=i+1Sum=0輸入ni=1sum=sum+i例:計算1+2+3+……+100。開始i<=100輸出sum的值結束真假i=i+1Sum=0i=1sum=sum+i用計數方式設置條件例2:我國有13億人口,按人口年增長0.8%計算,多少年后我國人口超過26億。

分析:解此問題兩種方法,可根據公式:直接利用標準函數對數可求得,但求得的年數不為整數;利用循環實現,算法流程圖如圖:開始p<26輸出p,y結束真假y=y+1p=13y=0p=p*1.08開始p<26輸出p,y

結束真假y=y+1p=13y=0p=p*1.08算法流程圖:5.2.2循環語句

VisualBasic中實現循環結構語句有:

While…Wend

Do…Loop

For…NextForEach…Next(1)While…Wend循環語句

其語法格式為:

While條件循環體

Wend條件循環體真假執行后續語句例:計算1+2+3+……+100。開始i<=100輸出sum的值結束真假i=i+1Sum=0i=1sum=sum+i(2)Do…Loop循環語句1)當型前測試型2)當型后測試型DoWhile條件循環體LoopDo

循環體LoopWhile條件3)直到型前測試4)直到型后測試DoUntil條件循環體LoopDo

循環體LoopUntil條件1)當型循環前測試型語法格式:

DoWhile條件循環體

Loop條件循環體真假例1:計算1+2+3+……+100。開始i<=100輸出sum的值結束真假i=i+1Sum=0i=1sum=sum+i開始p<26

輸出p,y

結束真假y=y+1p=13y=0p=p*1.08例2程序實現:4)直到型循環后測試型語法格式:

Do

循環體

LoopUntil條件條件循環體真假例:下面程序運行結果是()PrivateSubForm_Click()i=4a=5Doi=i+1a=a+2LoopUntili>=7Print"i=";i;Print"a=";aEndSubA.i=4a=5B.i=7a=13C.i=8a=7D.i=7a=11(3)For…Next循環語句格式:

ForV=e1Toe2[Stepe3]

循環體

Next[v]V不超過e2V←e1V←v+e3計算e1,e2,e3循環體執行next后的語句For-Next語句執行過程真假引例:計算1+2+3+……+n。開始i<=n輸出sum的值結束真假i=i+1Sum=0輸入ni=1Sum=sum+i5.3循環程序舉例例:以下程序代碼所計算的數學式是

。PrivateSubCommand1_Click()s=1:n=2DoWhilen<1000s=s+nn=n+2LoopPrint"s=";sEndSubA.s=1+2+4+6+…+998B.s=1+2+4+6+…+1000C.s=2+4+6+…+998D.s=2+4+6+…+1000例:求n!。fact=1:i=1開始i<=n輸出fact的值結束真假fact=fact*ii=i+1

例:輸入兩個正整數,求它的最大公約數。

分析:求最大公約數可以用“輾轉相除法”。如果兩個正整數分別為m和n,其具體操作為:⑴求出m/n的余數r;⑵若r≠0,則把原來的除數n作為新的被除數m,把余數r作為新的除數n;⑶重復⑴、⑵的操作,直到r=0為止。最后的除數n便是最大公約數。例:設計一個窗體,輸入一個十進制整數,將其轉換成二進制數后輸出。(上機操作)

例:編寫程序,計算1×2×3…×n,找出能使計算結果大于106的n的值開始f>106

輸出i-1

結束假i=i+1f=1i=1f=f*i算法流程圖:真例:求素數。輸入一個正整數,判斷該數是否是素數。

分析:所謂的“素數”是指一個自然數除了1和該數本身,不能被任何其它整數整除。判斷一個自然數n(n>=3)是否為素數,只要依次用2~Sqr(n)整數作為除數去除n,若n不能被其中任何一個數整除,則n為素數,否則便不是素數。n不是素數輸入n開始i<=sqr(n)n是素數結束真假i=i+1nmodi<>0i=2假i>sqr(n)真真假例:編寫程序,實現單擊窗體后,在窗體上輸出的圖形如圖所示。5.3多重循環

多重循環的執行過程是:外層循環每執行一次,內層循環就要從頭開始執行一輪。例:編寫程序,計算級數1+1/3!+1/5!+1/(2N+1)!的值,直到最后一個級數項的值小于10-6為止。例:編寫程序,實現單擊窗體后,在窗體上輸出的圖形如圖所示。例:計算1!+2!+3!+…+n!(上機操作)例:編寫程序,實現單擊窗體后,在窗體上輸出的圖形如圖所示。(上機操作)例:計算1!+2!+3!+…+n!(上機操作)

例:求下述數列前n項之和。算法:數列的第1項為2,根據所給出的5項,可以得到求該數列各項的遞推公式。設為數列的第n項,則數列的第n+1項為:例:窮舉法解不定方程。在“算經”里有一百雞問題:雞翁一值錢五,雞母一值錢三,三雞雛值錢一,百錢買百雞。問雞翁、雞母、雞雛各幾何?分析:設公雞x只,母雞y只,小雞z只,依題義可以列出方程組:5.4列表框與組合框5.4.1列表框列表框1.常用屬性

(1)List屬性:

(2)ListIndex屬性:

(3)ListCount屬性:

(4)Selected屬性:

(5)Text屬性:

(6)Style屬性:2.事件列表框可接收Click,DblClick等事件。注意,在程序運行中執行語句向屬性ListIndex賦值的語句,也將觸發列表框的Click事件。3.方法

⑴AddItem方法:object.AddItemitem[,index]⑵RemoveItem方法:object.RemoveItemindex⑶Clear方法:object.Clear例:設計一個程序,找出100~1000范圍內所有能同時被3和7整除的自然數,在列表框中顯示出來。例5-14

選擇和移動數據,用戶界面如圖5-29所示。窗體上有2個標簽、2個列表框和2個命令按鈕。左邊列表框(List1)列出10-99之間的整數,右邊列表框(List2)列出被選中的數。程序運行時,按“選項右移”或“選項左移”可將已選擇項移動到右邊或左邊列表框。5.4.2組合框組合框

這三種樣式和屬性Style設置值為:

下拉式組合框0vbComboDropDown

簡單組合框1vbComboSimple

下拉式列表框2vbComboDropDownList例:設計程序,把一批課程名放入組合框,再對組合框進行項目顯示、添加、刪除、全部刪除等操作。習題5一.單選題1.下列循環語句所確定的循環次數是

。Fork=200#To100Step-2*10n=n+1Next

A.6B.5C.4D.32.寫出下列事件過程的運行結果。PrivateSubCommand1_Click()s=0Fork=10To50Step15s=s+kNextPrintsEndSubA.20B.130C.75D.553.分析下列程序,回答以下問題:⑴語句s=s+n被執行的次數為

。⑵程序的運行結果為

。PrivateSubCommand1_Click()n=1:s=1DoWhilen<6s=s+nIfn<3Thenn=n+1Elsen=n+2LoopPrintsEndSub⑴A.2B.3C.4D.5⑵A.13B.12C.11D.104.寫出下列程序運行的結果。PrivateSubCommand1_Click()s="0123456789":c=""Fork=2ToLen(s)Step3a=Left(s,k)b=Right(a,k)c=Mid(b,k,1)+cNextPrintcEndSubA.7410B.741C.735D.415.執行下列程序后,變量s的值是

。PrivateSubCommand1_Click()s=0Form=1To3n=1DoWhilen<=ms=s+nn=n+1LoopNextPrintsEndSubA.4B.7C.10D.156.以下程序代碼所計算的數學式是

。PrivateSubCommand1_Click()s=1:n=2DoWhilen<1000s=s+nn=n+2LoopPrint"s=";sEndSubA.s=1+2+4+6+…+998B.s=1+2+4+6+…+1000C.s=2+4+6+…+998D.s=2+4+6+…+10007.數列0,1,1,2,3,5,8,…稱為波契納數列,它的前兩個數是0和1,以后每一個數都是前兩個數之各和。輸出這個數列的前20個數。將下列程序代碼補充完整。PrivateSubCommand1_Click()a=0:b=1Printa;b;Fork=3To20

⑴Printc;

NextEndSub⑴A.c=aB.c=a+bC.c=bD.a=c+b⑵A.b=aB.a=cC.a=bD.c=b⑶A.b=aB.b=cC.a=bD.c=a

8.將數據項“計算機”添加到列表框List1中作為第8項的內容,應使用

A.List1.AddItem“計算機”,8B.List1.AddItem“計算機”,7C.List1.AddItem8,“計算機”

D.List1.AddItem7,“計算機”9.讀取列表框中的第3個表項值,把值賦給變量x,不可以采用

A.x=List1.List(2)B.x=List1.Text(2)C.List1.Selected(2)=TrueD.x=List1.Text10.在組合框Combo1中選定某一表項后,單擊命令按鈕(名稱為Command1)即可刪除該表項,Command1的單擊事件過程是:PrivateSubCommand1_Click()IfCombo1.ListIndex<>-1ThenCombo1.RemoveItem

EndIfEndSubA.Combl1.ListCountB.Combo1.ListIndexC.Combo1.TextD.Combo1.MultiSelect二.填空題1.設n和s均為整型變量,分別具有初值1和10。試指出下列循環語句的循環體各執行多少次,以及結束循環后n值各為多少?⑴n=1:s=10⑵n=1:s=10DoWhilen<=s

DoUntiln*s>40

n=n+3

n=n*2

Loop

Loop

⑶n=1:s=10⑷n=1:s=10Do

Do

n=n*3

n=s\nLoopUntiln>s

n=n+2

LoopWhilen<s

⑸n=1:s=10Whilen<sn=n+3Wend2.以下程序段從文本框Text1中輸入一個串,把該字符串按相反的次序顯示在文本框Text2中。如輸入“ABCDE”,輸出“EDCBA”。PrivateSubCommand1_Click()DimsAsString,tAsString,cAsStrings=Trim(Text1.Text):t=""Fork=1To⑴c=⑵t=⑶Next

⑷=tEndSub3.設m和n都是正整數,輸入m,求當2n大于等于m時,n的最小值是多少?將下列程序補充完整。PrivateSubCommand1_Click()DimmAsLong,tAsLong,nAsIntegerm=Val(InputBox("輸入大于1的正整數m:","輸入數據"))n=⑴t=0DoWhileTruen=⑵t=⑶Ift>=mThenPrint"2的";n;"次方≥";mExitDoEndIfLoopEndSub4.如果只允許在列表框中每次只能選擇一個列表項,則必須將其MultiSelect屬性設置為

。5.用戶可以通過

屬性來輸入或取得組合框中的數據。6.在3種組合框中,僅供選擇其中表項數據,但不允許添加數據的組合框是

。7.在下拉組合框中添加表項,可以使用

方法;為組合框刪除表項,可以使用

方法。8.在窗體上已經建立了一個列表框List1和一個標簽Label1,然后編寫如下3個事件過程:PrivateSubForm_Load()List1.AddItem"ItemA"List1.AddItem"ItemB"List1.RemoveItem1List1.AddItem"ItemC"List1.AddItem"ItemD",1List1.RemoveItem2EndSubPrivateSubForm_Click()Label1.Caption=List1.List(List1.ListCount-1)EndSubPrivateSubList1_DblClick()Label1.Caption=List1.TextEndSub運行程序后,開始時在列表框中顯示的表項內容是

。單擊窗體,則在標簽中顯示

。當雙擊列框中的列表項“ItemA”時,則在標簽中顯示

。9.從字符串中查找子字符串“123”,將該子字符串刪除,但“1234”子字符串保留,如將“AB123C1234DE123F”處理成“ABC1234EF”。完成下列程序代碼。PrivateSubForm_Load()x=InputBox("輸入字符串")p=InStr(x,"123")DoWhilep>0IfMid(x,p+3,1)<>"4"Thenx=Left(x,p-1)+

Elsep=p+

EndIfp=InStr(

,x,"123")LoopMsgBox("處理結果:"+x)UnloadMeEndSub上機編程練習51.求級數S=1/(1+4)+1/(1+2×4)+1/(1+3×4)+…+1/(1+n×4)+…的前100項之和。2.如果一個三位整數等于它的各位數

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論