




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 采用循環(huán)程序可以解決一些按一定規(guī)則重復(fù)執(zhí)行的問(wèn)題。例如,統(tǒng)計(jì)一個(gè)班幾十名學(xué)生,甚至全校幾千名學(xué)生的學(xué)期成績(jī),如求平均分、不及格人數(shù)等。 本章主要內(nèi)容 循環(huán)語(yǔ)句 For.Next / Do.Loop / While.Wend 循環(huán)出口語(yǔ)句(Exit) 多重循環(huán) 程序舉例 4.3 循環(huán)結(jié)構(gòu)設(shè)計(jì) 循環(huán)是指在指定的條件下多次重復(fù)執(zhí)行一組語(yǔ)句。被重復(fù)執(zhí)行的一組語(yǔ)句稱為循環(huán)體。 VB提供的循環(huán)語(yǔ)句有: For.Next Do.Loop While/Until Do While/Until . Loop While.Wend 最常用的是For.Next和Do.Loop語(yǔ)句 按指定次數(shù)執(zhí)
2、行循環(huán)體 4.3.1 For.Next循環(huán)循環(huán)變量超過(guò)終值?FT循環(huán)變量增加步長(zhǎng)循環(huán)體循環(huán)變量獲得初值 格式: For 循環(huán)變量初值 To 終值 Step 步長(zhǎng)值 循環(huán)體 Next 循環(huán)變量功能:當(dāng)循環(huán)變量的值在初值到終值范圍內(nèi)時(shí),執(zhí)行一次循環(huán)體的語(yǔ)句代碼,并使初值增加一個(gè)步長(zhǎng)。當(dāng)循環(huán)變量的值不在初值到終值范圍內(nèi)時(shí),就退出循環(huán),執(zhí)行Next后面的語(yǔ)句。 說(shuō)明:循環(huán)變量是一個(gè)數(shù)值變量,初值、終值和步長(zhǎng)值都是數(shù)值表達(dá)式,步長(zhǎng)值可以是正數(shù)(稱為遞增循環(huán)),也可以是負(fù)數(shù)(稱為遞減循環(huán));若步長(zhǎng)值為1,則Step 1可以省略。說(shuō)明:循環(huán)次數(shù)的一般計(jì)算公式: Int(終值-初值)/步長(zhǎng))+1事先已知循環(huán)次
3、數(shù),則可使用For-Next循環(huán)結(jié)構(gòu)語(yǔ)句計(jì)數(shù)循環(huán) Private Sub Form_Load() ShowDim sum As Integer計(jì)算1至100的和,存放在sum中顯示結(jié)果 Print sum=; sum End Subsum = sum + 1 sum = sum + 2 sum = sum + 100sum = sum + ii = 1 100采用Print直接在窗體上輸出結(jié)果 Private Sub Form_Load() Show Dim sum As Integer Dim i As Integer For i = 1 To 100 sum = sum + i Next
4、i Print sum=; sum End SubYesNosum = sum + ii = 1i = 100i = i + 1執(zhí)行過(guò)程:For i = 1 To 100 sum = sum + i Next i示例2: 求T = 8! = 1238 采用Print直接在窗體上輸出結(jié)果,程序代碼: Private Sub Form_Load() Show t = 1 For c = 1 To 8 t = t * c Next c Print T=; t End Sub 程序運(yùn)行結(jié)果是: T40320 語(yǔ)句t=t*c也稱累乘器。先將t置1(不能置0)。 在循環(huán)程序中,常用累加器和累乘器來(lái)完成各種
5、計(jì)算任務(wù)。如果要求N!呢?思考: x=5 For i=1 To 20 Step 5 x = x + i5 Next i思考: s=5 For i=2.6 To 4.9 Step 0.6 s=s+1 Next i思考: Private Sub Form_Click() x=5 : k=5 For k=1 To 10 Step -2 x=x+k Next k Print k; x End Sub思考: Private Sub Form_Click() Dim sum As Double, x As Double sum=0 n=0 For i=1 To 5 x = n / i n = n + 1
6、sum = sum + x Next i End Sub 下面采用“窮舉法”來(lái)解此題。 其做法是:從所有可能解中,逐個(gè)進(jìn)行試驗(yàn),若滿足條件,就得到一個(gè)解,否則不是。直到條件滿足或判別出無(wú)解為止。 令母雞為x只,小雞為y只,根據(jù)題意可知 y = 100 x 開(kāi)始先讓x初值為1,以后逐次加1,求x為何值時(shí),條件3x+y/3=100成立。如果當(dāng)x達(dá)到33時(shí)還不能使條件成立,則可以斷定此題無(wú)解。 示例3:100 元買100 只雞,母雞3元1只,小雞1元3只,問(wèn)各應(yīng)買多少只? 采用Print直接在窗體上輸出結(jié)果,程序代碼: Private Sub Form_Load() Dim x As Integer
7、, y As Integer Show For x = 1 To 33 y = 100 - x If 3 * x + y / 3 = 100 Then Print 母雞只數(shù)為:; x, Print 小雞只數(shù)為:; y End If Next x End Sub 運(yùn)行結(jié)果: 母雞只數(shù)為:25 小雞只數(shù)為:75 For.Next循環(huán)主要是用在知道循環(huán)次數(shù)的情況下,若事先不知道循環(huán)次數(shù),可以使用Do.Loop 循環(huán)。 Do.Loop兩種格式:前測(cè)型循環(huán)結(jié)構(gòu)和后測(cè)型循環(huán)結(jié)構(gòu)。兩者區(qū)別在于判斷條件的先后次序不同。 4.3.2 Do.Loop循環(huán)語(yǔ)句循環(huán)體F條件T先判斷循環(huán)條件,再執(zhí)行循環(huán)體語(yǔ)句。1. 前
8、測(cè)型Do.Loop循環(huán) 格式: Do While | Until 條件 循環(huán)體 Loop Do While.Loop語(yǔ)句的功能:當(dāng)條件成立(為真)時(shí),執(zhí)行循環(huán)體;當(dāng)條件不成立(為假時(shí)),終止循環(huán)。 Do Until.Loop語(yǔ)句的功能: 當(dāng)條件不成立(為假)時(shí),執(zhí)行循環(huán)體,直到條件成立(為真)時(shí),終止循環(huán)。1. 前測(cè)型Do.Loop循環(huán)Private Sub Form_Load() Dim sum As Integer, i As Integer Show i = 1 Do While i = 30 Print Number ;sEnd SubA) 0 1 B) 30 30 C) 4 30 D
9、) 3 182運(yùn)行下列程序,單擊窗體,則執(zhí)行結(jié)果是()Private Sub Form_Click() b=1 a=2 Do While b 10 b=2*a+b Loop Print bEnd SubA) 13 B) 17 C) 21 D) 33 運(yùn)行下列程序,單擊窗體,則執(zhí)行結(jié)果是() Private Sub Form_Click( ) E = 1 : F = 1 For j = 1 To 3 E=E + F : F = F+ E Next j print E;F End Sub A) 6 6 B) 5 8 C) 13 21 D) 34 55分析:本題可用“累加”的方法來(lái)完成,設(shè)累加的和為
10、變量s,累加項(xiàng)為i2,則累加的語(yǔ)句可寫為:s=s+i2采用Do WhileLoop語(yǔ)句: Private Sub Form_Click() Dim i As Integer, s As Long i = 1 s = 0 Do while i = 10 s = s + i 2 i = i + 1 Loop Print “s=”; s End Sub 示例5:用Doloop語(yǔ)句求s=12+22+102 “輾轉(zhuǎn)相除法”算法:求出m/n余數(shù)p,若p0,n即為最大公約數(shù);若p非0,則把原來(lái)的分母n作為新的分子m,把余數(shù)p作為新的分母n繼續(xù)求解。 設(shè)計(jì)步驟如下: (1) 創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬
11、性示例6:輸入兩個(gè)正整數(shù),求它們的最大公約數(shù) 編寫的“計(jì)算”按鈕Click事件過(guò)程代碼如下: Private Sub Command1_Click() Dim m As Integer, n As Integer, p As Integer m = Val(Text1.Text) : n = Val(Text2.Text) If m = 0 Or n = 0 Then MsgBox 數(shù)據(jù)錯(cuò)誤! End End If Do p = m Mod n m = n n = p Loop While p 0 Text3.Text = m End Sub 若輸入的m和n的值為85和68,則運(yùn)行結(jié)果如上圖
12、用于提前退出循環(huán) 格式: Exit For | Do 功能:直接從For循環(huán)或Do循環(huán)中退出。 當(dāng)程序運(yùn)行時(shí)遇到Exit語(yǔ)句時(shí),就不再執(zhí)行循環(huán)體中的任何語(yǔ)句而直接退出,轉(zhuǎn)到循環(huán)語(yǔ)句(Next、Loop)的下面繼續(xù)執(zhí)行。 4.3.3 循環(huán)出口語(yǔ)句 示例5的循環(huán)語(yǔ)句可改為: Do p = m Mod n If p=0 Then Exit Do End If m = n n = p Loop While p 0 Text3.Text =mn 格式: While 條件 循環(huán)體 Wend功能:當(dāng)條件成立(為真)時(shí),執(zhí)行循環(huán)體;當(dāng)條件不成立(為假)時(shí),終止循環(huán)。 本語(yǔ)句與上述Do While.Loop循環(huán)
13、語(yǔ)句相似4.3.4 While.Wend循環(huán)語(yǔ)句用下面的公式求的近似值(直到最后一項(xiàng)的絕對(duì)值小于10-6為止):分析先計(jì)算等式右邊的和累加求和: pi = pi + t當(dāng)| t |= 0.000001 pi = pi + t n = n+2 s = - s 交替改變加、減號(hào) t = s / n Loop Print =; pi * 4 End Sub 程序運(yùn)行結(jié)果是: 3.141575 示例7:求的近似值思考: Private Sub Form_Click() For I=7 to 90 step 5 print I next I End Sub上述程序共執(zhí)行執(zhí)行循環(huán)體的次數(shù)是() A) 14
14、 B) 15 C) 16 D) 17運(yùn)行下列程序,單擊窗體,則執(zhí)行結(jié)果是() Private Sub Form_Click( ) For j = 1 To 15 a = a + j Mod 3 Next j Print a End Sub A) 1 B) 15 C) 90 D) 120運(yùn)行下列程序,單擊窗體,則執(zhí)行結(jié)果是() Private Sub Form_Click( ) For j = 1 To 3 Print Tab(3 * j);(2 * j - 1) * (2 * j - 1) Next j Print End Sub A) 1 B) 1 6 10 C) 1 9 25 D)1 6
15、9 10 25運(yùn)行下列程序,單擊窗體,則執(zhí)行結(jié)果是Private Sub Form_Click() s = 0 i = 1 Do While i =100 If (i 5) * 5 = i Then s = s + 1 i = i + 1 End If Loop Print sEnd Sub運(yùn)行下列程序,單擊窗體,則執(zhí)行結(jié)果是Private Sub Form_Click() s = 0 i = 1 Do While i =100 If (i 5) * 5 = i Then s = s + 1 i = i + 1 else i = i + 1End if Loop Print sEnd Sub
16、在窗體上放置一個(gè)命令按鈕,然后編寫如下事件過(guò)程: Private Sub Command1_Click() x=5 For i = 1 to 20 Step 2 x = x + i 5 next i Print x End Sub程序運(yùn)行后,單擊命令按鈕,輸出結(jié)果為()A) 21 B)22 C)23 D)24運(yùn)行下列程序,單擊窗體,則執(zhí)行結(jié)果是() Private Sub Form_Click( ) For j = 1 To 10 a = a + j 3 + j Mod 3 Next j Print a End Sub A) 20 B) 25 C) 30 D) 35習(xí)題:依次輸入5、4、3、2
17、、1、-1Private Sub Command_Click()X=0Do Until x=-1 a=InputBox(“請(qǐng)輸入A的值”) a=Val(a) b=InputBox(“請(qǐng)輸入B的值”) b=Val(b) x=InputBox(“請(qǐng)輸入X的值”) x=Val(x) a=a+b+x print aLoopEnd Sub輸出兩個(gè)結(jié)果,分別是12和2習(xí)題:依次輸入5、4、3、2、1、-1Private Sub Command_Click()X=0Do Until x=-1 a=InputBox(“請(qǐng)輸入A的值”) a=Val(a) b=InputBox(“請(qǐng)輸入B的值”) b=Val(b
18、) x=InputBox(“請(qǐng)輸入X的值”) x=Val(x) a=a+b+xLoop print aEnd Sub輸出結(jié)果只有一個(gè),是2給定VB程序的功能是計(jì)算并輸出100以內(nèi)的所有能被3整除且個(gè)位數(shù)是6的所有整數(shù),請(qǐng)將程序補(bǔ)充完整。 Private Sub Form_Click( ) Dim i , j As Integer For i = 0 To _ j = i * 10 + 6 If _ Then Print j End If Next i End Sub9j Mod 3 = 0 設(shè)計(jì)一個(gè)“加法器”程序, 把每次輸入的數(shù)累加,直到輸入非數(shù)值數(shù)據(jù)為止。 Private Sub Form
19、_Click() Dim Sum As Double, x As String, y As Double Sum = 0 Do While True 條件為真,循環(huán)無(wú)終止進(jìn)行下去 x = InputBox(請(qǐng)輸入要加入的數(shù), 輸入數(shù)據(jù)) If IsNumeric(x) = False Then Exit Do End If y = Val(x) Sum = Sum + y Text1.Text = Sum Loop MsgBox 累加運(yùn)算結(jié)束” End Sub 示例8:設(shè)計(jì)一個(gè)“加法器”程序 當(dāng)一個(gè)循環(huán)里面包含有另一個(gè)完整的循環(huán)時(shí),稱為循環(huán)的嵌套。循環(huán)的嵌套對(duì)For循環(huán)和DoLoop循環(huán)均適用
20、。 多重循環(huán)程序示例 程序運(yùn)行結(jié)果 Private Sub Form_Load() 1 5 Show 1 6 For i = 1 To 3 外循環(huán) 1 7 For j = 5 To 7 內(nèi)循環(huán) 2 5 Print i, j 2 6 Next j 2 7 Next i 3 5 End Sub 3 6 3 7 4.3.5 循環(huán)的嵌套-多重循環(huán)結(jié)構(gòu)嵌套循環(huán)應(yīng)注意的問(wèn)題Do ForDo Loop NextLoop二重循環(huán)三重循環(huán)For和Do循環(huán)可以混合嵌套,但是各循環(huán)間不得交叉。下例是非法的循環(huán)嵌套。For IFor JNext INext J就和我們一層層的包裹東西是一樣的!錯(cuò)!這些都對(duì)了!思考:運(yùn)
21、行下列程序,單擊窗體,則運(yùn)行結(jié)果是_。 Private Sub Form_Click( ) For x = 1 To 2 a = 0 For y = 1 To x + 1 a = a + 1 Next y Print a; Next x End Sub結(jié)果是 2 3運(yùn)行下列程序,單擊窗體,則運(yùn)行結(jié)果是_。Private Sub Form_Click( ) N = 0 For I = 1 To 3 For J = 5 To 1 Step -1 N = N + 1 Next J, IPrint N; J; I結(jié)果是 15 0 4 本例可采用兩重循環(huán)來(lái)實(shí)現(xiàn)。外循環(huán)控制輸出7行,內(nèi)循環(huán)控制每行輸出要求
22、的字符數(shù)。 在進(jìn)入內(nèi)循環(huán)之前,使用Tab( )來(lái)對(duì)起始輸出位置定位,退出內(nèi)循環(huán)后,使用Print來(lái)控制換行。示例9:編一程序,輸出下列所示的圖形 采用Print直接在窗體上輸出結(jié)果,程序代碼如下: Private Sub Form_Load() Show For i = 1 To 7 Print Tab(8 - i); For j = 1 To 2 * i - 1 Print CStr(i); Next j Print Next i End Sub 注意:內(nèi)循環(huán)變量和外循環(huán)變量不能同名 ForNext 前測(cè)型 s=0 s=0 : k=1 For k=1 to 10 Do While k=10
23、s=s+k s=s+k Next k k=k+1 Print s Loop Print s s=0 : k=1 do s=s+k k=k+1 Loop While k=3)Private Sub Form_Click() Dim x As Integer, a As Integer, c As Integer Dim count As Integer count = 0 For x = 100 To 999 a = x 100 : b = x 10 Mod 10 : c = x Mod 10 If a b And a c And b c Then count = count + 1 Print x; If count Mod 10 = 0 Then Print End If End If Next xEnd Sub示例11 統(tǒng)計(jì)無(wú)重復(fù)的三位數(shù),如102、103示例12 求最大值或最小值問(wèn)題求班級(jí)學(xué)生某一門課成績(jī)的最高分 這就是一個(gè)求最大值的問(wèn)題。先假設(shè)第一個(gè)成績(jī)就是班級(jí)最高分,然后從第二個(gè)成績(jī)開(kāi)始依次與假設(shè)的最高分比較,若有高于它的,則更新最
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)人員合同范例
- ktv裝修設(shè)計(jì)合同范例
- 事轉(zhuǎn)企合同范例
- 光伏轉(zhuǎn)運(yùn)合同范例
- 價(jià)格合同范例
- 農(nóng)機(jī)居間合同范例
- 債權(quán)居間合同范例
- 倉(cāng)儲(chǔ)外包協(xié)議合同范例
- 償債合同范例
- 公告解除合同范例
- 幼兒園獲獎(jiǎng)公開(kāi)課:大班語(yǔ)言繪本《好消息壞消息》課件
- 宇樹(shù)科技在機(jī)器人領(lǐng)域的技術(shù)突破與應(yīng)用
- 《高危作業(yè)培訓(xùn)》課件
- 中央2025年中國(guó)科協(xié)所屬單位招聘應(yīng)屆生27人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫(kù)含答案解析
- 《義務(wù)教育語(yǔ)文課程標(biāo)準(zhǔn)》2022年修訂版原版
- 消費(fèi)者行為學(xué)課件
- 【小升初】部編版2022-2023學(xué)年四川省綿陽(yáng)市語(yǔ)文升學(xué)分班考真題專項(xiàng)模擬試卷(04 現(xiàn)代文閱讀)含解析
- 第九-現(xiàn)場(chǎng)勘查課件
- 挖掘機(jī)配件名稱大全
- 煙花爆竹危險(xiǎn)固體廢棄物綜合利用建設(shè)項(xiàng)目可行性研究報(bào)告-甲乙丙資信
評(píng)論
0/150
提交評(píng)論