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

下載本文檔

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

文檔簡介

會(huì)計(jì)學(xué)1vb控制結(jié)構(gòu)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

本章內(nèi)容及要求:(1)掌握For…..Next語句及ExitFor語句的使用;(2)掌握Do….Loop循環(huán)語句與ExitDo語句的使用;(3)掌握循環(huán)結(jié)構(gòu)的嵌套應(yīng)用;(4)掌握循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)的嵌套應(yīng)用。第1頁/共49頁6.1概述在VisualBasic程序設(shè)計(jì)中,實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語句主要有下列幾種:

l

For…Next語句

Do…Loop語句

l

While…Wend語句

DoWhile<條件>…Loop形式Do…LoopWhile<條件>形式DoUntil<條件>…Loop形式Do…LoopUntil<條件>形式Do…Loop形式第2頁/共49頁打印九九乘法表

Dim

Sgs

As

String

Dim

i,

j

As

Integer

For

i

=

1

To

9

’被乘數(shù)從1變到9

For

j

=

i

To

9

’乘數(shù)從1變到9

Sgs

=

i

&

"×"

&

j

&

"="

&

Str(i

*

j)

’打印公式如1×1=1

Picture1.Print

Tab((j

-

1)

*

9

+

1);Sgs;

Next

j

Picture1.Print

Next

I

第3頁/共49頁For循環(huán)語句(一般用于循環(huán)次數(shù)已知)形式:For循環(huán)變量=初值to終值[Step步長]

語句塊

[ExitFor]

語句塊Next[循環(huán)變量]循環(huán)體>=0循環(huán)變量<=終值<0循環(huán)變量>=終值=1可省略

步長6.2For...Next循環(huán)結(jié)構(gòu)第4頁/共49頁循環(huán)次數(shù)例:ForI=2To13Step3PrintI,NextIPrint“I=“,I循環(huán)執(zhí)行次數(shù)

4輸出I的值分別為:25811出了循環(huán)輸出為:I=146.2For...Next循環(huán)結(jié)構(gòu)第5頁/共49頁6.2For...Next循環(huán)結(jié)構(gòu)注意跳出FOR循環(huán)時(shí)的循環(huán)變量的值Fori=1to10step1s=s+iNextiPrintiFori=-1to-10step-1s=s+iNextiPrinti第6頁/共49頁6.2For...Next循環(huán)結(jié)構(gòu)注意對于For…Next語句來說,一旦進(jìn)入循環(huán),其“終止值”和“增量”便不會(huì)再改變了。PrivateSubForm_Click()DimiAsInteger,jAsInteger,kAsIntegerj=10:k=1Fori=1TojStepkPrintij=j-1k=k+1NextPrintj,kEndSub第7頁/共49頁練習(xí):分析下面程序段結(jié)束時(shí)窗體上顯示的值是多少?

(2)i2=0Fori=1To-2Step-1 i2=i2+1NextPrinti,i2(-34)(1)Fori=1To10 i2=i2+1NextPrinti

(11)(3)i2=0Fori=1To5Step2 i2=i2+1NextPrinti(7)(4)i2=1Fori=1To10 i=i+1 i2=i2+1NextPrinti,i2(116)(5)i2=1i3=10i=10Fori=1Toi3 i=i+1 i2=i2+1 i3=i3+1NextPrinti,i2(116)(6)i2=0Fori=1To10i2=i2+1Ifi>6ThenExitForNextPrinti,i2(77)(7)i2=0i=10Doi2=i2+1LoopWhilei=i2Printi2(1)第8頁/共49頁例6.7編程計(jì)算:S=1+2+3+…+100DimS%,I%S=0'累加前變量S為0ForI=1to100S=S+INextIPrint"S=",S當(dāng)I<=100I=I+1打印SS=0,I=1S=S+I例6.7的算法流程圖6.2For...Next循環(huán)結(jié)構(gòu)第9頁/共49頁前測型:

DoWhile<條件>

語句塊

[ExitDo]

語句塊

LoopDo…Loop循環(huán)語句使用形式6.3Do...Loop循環(huán)結(jié)構(gòu)第10頁/共49頁6.2Do...Loop循環(huán)結(jié)構(gòu)PrivateSubForm_Click()DimiAsInteger:DimaAsInteger'定義所需變量

i=0:a=0'給變量賦初值0,這兩條語句可省略

DoWhilei<100i=i+1'每次循環(huán),變量i都增加1a=a+i'每次循環(huán),變量a都加變量i的值

LoopPrinta'計(jì)算完畢,變量a的值即為所求EndSub例:使用DoWhile…Loop循環(huán)語句計(jì)算1+2+3+…+100的值第11頁/共49頁后測型:

Do

語句塊

[ExitDo]

語句塊

LoopWhile<條件>6.3Do...Loop循環(huán)結(jié)構(gòu)第12頁/共49頁6.3Do...Loop循環(huán)結(jié)構(gòu)例:使用Do…LoopWhile循環(huán)語句計(jì)算1+2+3+…+n的值,n的值由文本框輸入。PrivateSubCommand1_Click()DimiAsInteger,nAsInteger,aAsInteger'定義所需變量

n=Text1.Text'得到輸入的值

Doi=i+1'每次循環(huán),變量i都增加1a=a+i'每次循環(huán),變量a都加變量i的值

LoopWhilei<nText2.Text=a'顯示計(jì)算結(jié)果,變量a的值即為所求EndSub第13頁/共49頁前測型:

DoUntil<條件>

語句塊

[ExitDo]

語句塊

LoopDo…Loop循環(huán)語句使用形式6.3Do...Loop循環(huán)結(jié)構(gòu)第14頁/共49頁6.3Do...Loop循環(huán)結(jié)構(gòu)例:計(jì)算階乘n!的值(n的值由文本框輸入)。PrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimaAsLongn=Text1.Text'得到輸入的值na=1'必須為變量a賦初值1DoUntili=ni=i+1'每次循環(huán),變量i都增加1a=a*i'每次循環(huán),變量a都乘以變量i的值

LoopText2.Text=a'計(jì)算完畢,變量a的值即為所求EndSub第15頁/共49頁后測型:

Do

語句塊

[ExitDo]

語句塊

LoopUntil<條件>6.3Do...Loop循環(huán)結(jié)構(gòu)第16頁/共49頁例:使用級數(shù)求π的值。根據(jù)下式,計(jì)算圓周率π的近似值,當(dāng)計(jì)算到絕對值小于0.0001的通項(xiàng)時(shí),認(rèn)為滿足精度要求,停止計(jì)算。π/4=1-1/3+1/5-1/7+…+(-1)n+11/2n-1+…6.3Do...Loop循環(huán)結(jié)構(gòu)第17頁/共49頁P(yáng)rivateSubcmdPi_Click()DimaAsSingle'變量a保存通項(xiàng)之和

DimmAsSingle'變量m保存通項(xiàng)的絕對值

DimsAsInteger'變量s產(chǎn)生通項(xiàng)的符號

DimiAsInteger'變量i產(chǎn)生通項(xiàng)的分母

s=1'第一項(xiàng)符號為正

i=1'第一項(xiàng)為1Do'開始循環(huán)

m=1/i'計(jì)算通項(xiàng)的絕對值

a=a+s*m'總和加上一個(gè)通項(xiàng)

i=i+2'產(chǎn)生下一個(gè)通項(xiàng)分母

s=-s'輪流轉(zhuǎn)換通項(xiàng)的正負(fù)號

LoopUntilm<0.0001'測試是否滿足精度要求

Text1.Text=a*4'輸出計(jì)算結(jié)果EndSub6.3Do...Loop循環(huán)結(jié)構(gòu)第18頁/共49頁6.3Do...Loop循環(huán)結(jié)構(gòu)Do

語句塊

[ExitDo]

語句塊LoopPrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimaAsLongn=val(Text1.Text)a=1Doi=i+1a=a*iIfi=nThenExitDoLoopText2.Text=aEndSub例6.5:計(jì)算n!第19頁/共49頁本節(jié)小結(jié):(1)當(dāng)使用While<條件>構(gòu)成循環(huán)時(shí),當(dāng)條件為“真”,則反復(fù)執(zhí)行循環(huán)體,當(dāng)條件為“假”,則退出循環(huán)。(2)當(dāng)使用Until<條件>構(gòu)成循環(huán)時(shí),當(dāng)條件為“假”,則反復(fù)執(zhí)行循環(huán)體,直到條件成立,即為“真”時(shí),則退出循環(huán)。

(3)在循環(huán)體內(nèi)一般應(yīng)有一個(gè)專門用來改變條件表達(dá)式中變量的語句,以使隨著循環(huán)的執(zhí)行,條件趨于不成立(或成立),最后達(dá)到退出循環(huán)。(4)語句ExitDo的作用是退出它所在的循環(huán)結(jié)構(gòu),它只能用在DO/Loop結(jié)構(gòu)中,并且常常是同選擇結(jié)構(gòu)一起出現(xiàn)在循環(huán)結(jié)構(gòu)中,用來實(shí)現(xiàn)當(dāng)滿足某一條件時(shí)提前退出循環(huán)。6.3Do...Loop循環(huán)結(jié)構(gòu)第20頁/共49頁

思考:將一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制。

算法流程圖6.3Do...Loop循環(huán)結(jié)構(gòu)

用Do...Loop循環(huán)的五種形式分別完成第21頁/共49頁

將一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制。

算法流程圖6.3Do...Loop循環(huán)結(jié)構(gòu)分析:將一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制采用連除2取余數(shù)的方法,即將十進(jìn)制數(shù)除以2取余數(shù),直到商為0,然后所得的余數(shù)即為二進(jìn)制數(shù)各位的數(shù)碼,從右到左排列,第一次除2的余數(shù)在最右邊。算法設(shè)計(jì)如下:用變量Dec表示十進(jìn)制數(shù),Bin表示轉(zhuǎn)換所得的二進(jìn)制數(shù)字符串。(1)

輸入十進(jìn)制Dec(2)

Dec除以2得余數(shù)Res,商又賦值給Dec;讓Bin=Res&Bin(3)

若Dec=0,則算法結(jié)束;否則執(zhí)行(2)第22頁/共49頁將一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制的程序如下:

PrivateSubForm_Click()DimDecAsInteger'表示十進(jìn)制數(shù)

DimBinAsString'轉(zhuǎn)換為二進(jìn)制表示

DimResAsIntegerDec=Val(InputBox("輸入一個(gè)十進(jìn)制數(shù)Dec=?"))Print"十進(jìn)制數(shù):";DecDoRes=DecMod2'求出除以2的余數(shù)

Bin=Res&BinDec=Dec\2LoopUntilDec=0Print"轉(zhuǎn)換為二進(jìn)制數(shù)為:";BinEndSub

6.3Do...Loop循環(huán)結(jié)構(gòu)第23頁/共49頁6.4.1While…Wend語句使用格式如下:

While<條件><循環(huán)塊>Wend

說明:該語句的功能與DoWhile<條件>….Loop實(shí)現(xiàn)的循環(huán)完全相同。6.4While…Wend語句第24頁/共49頁

6.5.1循環(huán)的嵌套——多重循環(huán)結(jié)構(gòu)

如果在一個(gè)循環(huán)內(nèi)完整地包含另一個(gè)循環(huán)結(jié)構(gòu),則稱為多重循環(huán),或循環(huán)嵌套,嵌套的層數(shù)可以根據(jù)需要而定,嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán)。上面介紹的幾種循環(huán)控制結(jié)構(gòu)可以相互嵌套,下面是幾種常見的二重嵌套形式:6.5嵌套結(jié)構(gòu)第25頁/共49頁(1)ForI=….…..ForJ=….….NextJ…..NextI(2)ForI=….…..DoWhile/Until….….Loop…..NextI(3)DoWhile….…..ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..DoWhile/Until….….Loop…..Loop6.5嵌套結(jié)構(gòu)第26頁/共49頁Fori=1To10Forj=1To20… NextjNextiFori=1To10…NextiFori=1To10…Nexti對于循環(huán)的嵌套,要注意以下事項(xiàng):

(1)內(nèi)循環(huán)變量與外循環(huán)變量不能同名;

(2)外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;下面是正確的嵌套

6.5嵌套結(jié)構(gòu)第27頁/共49頁

Fori=1To10Forj=1To20… Nexti NextjFori=1To10Fori=1To20… Nexti Nexti下面是不正確的嵌套

6.5嵌套結(jié)構(gòu)第28頁/共49頁

PrivateSubForm_Click()DimiAsInteger,jAsIntegerFori=1To3Print"i=";iForj=1To3PrintTab;"j=";jNextNextEndSub循環(huán)嵌套的執(zhí)行流程:6.5嵌套結(jié)構(gòu)第29頁/共49頁6.5嵌套結(jié)構(gòu)PrivateSubCommand1_Click()Dimx%,a%,y%Forx=1to2a=0Fory=1tox+1a=a+1NextyPrinta;NextxEndSub程序運(yùn)行后,單擊命令按鈕,在窗體上顯示的值是

(23)第30頁/共49頁6.5嵌套結(jié)構(gòu)Exit

Do和ExitFor語句在循環(huán)嵌套時(shí)的作用第31頁/共49頁6.5嵌套結(jié)構(gòu)第32頁/共49頁例:打印九九乘法表.

Fori=1To9Forj=1To9se=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*9+1);se;NextjPicture1.PrintNexti6.5嵌套結(jié)構(gòu)第33頁/共49頁6.5嵌套結(jié)構(gòu)例:

編一程序,顯示出所有的水仙花數(shù)。所謂水仙花數(shù),是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)字本身。例如,153是水仙花數(shù),因?yàn)椋旱?4頁/共49頁6.5嵌套結(jié)構(gòu)PrivateSubForm_Click()DimiAsInteger,jAsInteger,kAsIntegerDimnAsIntegerFori=1To9'i表示百位上的數(shù)

Forj=0To9'j表示十位上的數(shù)

Fork=0To9'k表示個(gè)位上的數(shù)

n=i*100+j*10+kIfi^3+j^3+k^3=nThenPrintnNextkNextjNextiEndSub解法一:第35頁/共49頁6.5嵌套結(jié)構(gòu)解法二:PrivateSubForm_Click()DimiAsInteger,jAsInteger,kAsIntegerDimnAsIntegerForn=100To999i=n\100'得到百位上的數(shù)字

j=n\10-i*10'得到十位上的數(shù)字

k=nMod10'得到個(gè)位上的數(shù)字

Ifi^3+j^3+k^3=nThenPrintnNextnEndSub第36頁/共49頁6.5.2循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套

在循環(huán)結(jié)構(gòu)中可以完整嵌套選擇結(jié)構(gòu),即整個(gè)選擇結(jié)構(gòu)都屬于循環(huán)體。在選擇結(jié)構(gòu)中嵌套循環(huán)結(jié)構(gòu)時(shí),則要求整個(gè)循環(huán)結(jié)構(gòu)必須完整地嵌套在一個(gè)分支內(nèi),一個(gè)循環(huán)結(jié)構(gòu)不允許出現(xiàn)在兩個(gè)或兩個(gè)以上的分支內(nèi)。6.5嵌套結(jié)構(gòu)第37頁/共49頁(1)ForI=…………IF…Then……EndIF……NextI(6)IF…Then……ForI=…………EndIF……NextI(5)SelectCase……ForI=…………Case…………Case…………NextI………EndSelect(3)ForI=…………IF…Then……NextI……EndIF(2)IF…Then……ForI=…………NextI……EndIF(4)ForI=…………SelectCase…Case…………Case…………EndSelect……NextI×××6.5嵌套結(jié)構(gòu)第38頁/共49頁6.6強(qiáng)制退出循環(huán)6.6.1用Exitfor語句強(qiáng)制退出For循環(huán)

ExitFor語句可以使程序從For循環(huán)中退出來,轉(zhuǎn)到Next語句后面的程序繼續(xù)執(zhí)行,而不必等到循環(huán)變量到達(dá)終值時(shí)才退出來。注意:在循環(huán)體外面,不可以使用ExitFor語句,而且ExitFor通常與IF語句一起使用。例:用300元買100只雞,母雞9元1只,小雞1元1只,問母雞、小雞各應(yīng)買多少只?分析:設(shè)買母雞x只,則x的變化范圍為1~30只,因?yàn)橘I的母雞只數(shù)不可能超過30只,超過30只就不可能買到100只雞。設(shè)小雞為y只,則y=100-x。下面要做的工作就是求x為何值時(shí),9x+y=300成立。第39頁/共49頁6.6強(qiáng)制退出循環(huán)程序代碼:OptionExplicitPrivateSubForm_Click()DimxasIntegerDimyasIntegerForx=1to30Y=100-xIf9*x+y=300thenExitforNextxPrint“母雞有”;x;”只”,”小雞有”;y;”只”

EndSub第40頁/共49頁6.6強(qiáng)制退出循環(huán)6.6.2用ExitDo語句強(qiáng)制退出Do循環(huán)ExitDo語句可以使程序從Do循環(huán)中退出來,轉(zhuǎn)到Loop語句后面的程序繼續(xù)執(zhí)行,而不必等到循環(huán)達(dá)到結(jié)束條件時(shí)才退出來。注意:在循環(huán)體外面,不可以使用ExitDo語句,而且ExitDo通常與IF語句一起使用。例:用DoWhile循環(huán)改寫上例程序,體會(huì)ExitDo語句的作用第41頁/共49頁6.6強(qiáng)制退出循環(huán)程序代碼:OptionExplicitPrivateSubForm_Click()DimxasIntegerDimyasIntegerX=1Dowhilex<=30Y=100-xIf9*x+y=300thenExitDoLoopPrint“母雞有”;x;”只”,”小雞有”;y;”只”

EndSub第42頁/共49頁6.7

溫馨提示

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

最新文檔

評論

0/150

提交評論