版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課題:循環(huán)結(jié)構(gòu)教學時間 :授課班級 :教學目標 :學會用 for next 語句和 doloop 編寫簡單的程序,并會調(diào)試它教學重點、難點 :1. For next 語句的用法2. Do-loop 語句的用法3. 循環(huán)語句的嵌套教學過程在用計算機處理問題時,除了分支問題外,還有不少是需要重復執(zhí)行某一組操作的問題。這就要采用 循環(huán)結(jié)構(gòu), VB 中提供了兩種語句實現(xiàn)循環(huán)結(jié)構(gòu), For-Next 語句和 Do-Loop 語句?!纠?6-6-1】求 s=1+2+3+ +100利用賦值語句可寫出如下形式的代碼:sum=0sum= sum+1sum= sum+2sum=sum+3sum=sum+100很顯
2、然,使用這種形式也能得到結(jié)果,但程序很冗長。觀察上面的代碼可以發(fā)現(xiàn),這段代碼實際上重 復了同一個操作:sum=sum+I, 只不過是每次相加的自然數(shù)不同而已。 使用 VB 提供的循環(huán)語句可以很容易 實現(xiàn)這種重復操作功能。具體算法如下:設(shè) sum=0;設(shè) i=1; 若 i<=100則轉(zhuǎn), 否則算法停止, 最后 sum 中的數(shù)值即是自然數(shù)列前 100項之和;將 sum 與 i 相加,其結(jié)果送給變量 sum ,即 sum+i sum ;使 i 值增加 1,即 i+1 i ;轉(zhuǎn)。流程圖如圖 6- 23,程序及運行結(jié)果如下:' 求 1、 2、 3、 100之間自然數(shù)的和Private Su
3、b Form_Click(Dim i As IntegerDim sum As Integersum = 0For i = 1 To 100sum = sum + i ' 循環(huán)體圖 6-23Next i Print "sum=" sum End Sub 運行結(jié)果為: sum= 5050 一、 For.Next 循環(huán)這個程序中使用的是 For.Next 循環(huán),它的一般形式是:For 循環(huán)變量 =初值 To 終值 Step 循環(huán)變量增量 循環(huán)體Next 循環(huán)變量循環(huán)變量的初值、終值、循環(huán)變量增量都是數(shù)值型。其中要重復執(zhí)行的操作稱為循環(huán)體,增量可正可 負,如果沒有設(shè)置 S
4、tep ,則增量的缺省值為 1。For-Next 循環(huán)的執(zhí)行過程是: 循環(huán)變量取初值;循環(huán)變量與終值比較,沒有超過終值轉(zhuǎn),否則循環(huán)結(jié)束,接著執(zhí)行循環(huán)語句的后繼語句; 執(zhí)行一次循環(huán)體; 循環(huán)變量增加一個增量; 重復步驟。從上看出, For-Next 循環(huán)變量是一種當型循環(huán), 圖 6-24是它的執(zhí)行過程。說明: For語句與 Next 語句必須成對出現(xiàn), 而且它們當中 的“循環(huán)變 量”必須是同一個變量,如本例中均為 i ; 當循環(huán)變量增量為正時, 循環(huán)變量超過終值, 是指 循環(huán)變量的 值大于終值,若為負,則是指循環(huán)變量的值小于終值。 圖 6-24 從例 6-6-1程序的流程圖和 For-Next
5、循環(huán)的 招 待 過 程 可 以看出,執(zhí)行 For-Next 循環(huán)時,先判斷循環(huán)變 量 是 否 超 過 終值, 如果沒有超過終值, 就執(zhí)行循環(huán)體, 這種 循 環(huán) 稱 為 當 型循環(huán),它的一般結(jié)構(gòu)如圖 6-25所示。循環(huán)體 A 執(zhí)行有限次 后,條件 P 不再成立,從而退出循環(huán)。圖 6-25討論與思考: 本例中循環(huán)結(jié)束時,循環(huán)變量 i 的值是多少? 若有如下一段代碼:For j=15 to 3 Step 2PrintjNext j則循環(huán)結(jié)束時,循環(huán)變量 j 的值是多少?循環(huán)變量的增量能否為 0,如果為 0,運行結(jié)果怎樣?【例 6-6-2】設(shè)計一個界面如圖 6-26所示的程序,要求執(zhí)行程序后,窗體上的
6、星星在閃爍,單擊“結(jié) 束”按鈕結(jié)束程序。 圖 6-26為了實現(xiàn)星星閃爍的效果,本例設(shè)置了一個定時器控件,窗體啟動后,每隔 500ms 觸發(fā)一次 Timer 事 件, 在該事件中使用循環(huán)語句隨機產(chǎn)生 50個坐標值, 然后用窗體的 Pset 方法在這些坐標處畫點, 窗體上出 現(xiàn)星星的效果, 在 Timer 事件的開頭, 使用 Cls 方法清屏, 以產(chǎn)生閃爍效果。 完成本程序需要在設(shè)計階段設(shè) 計的屬性如表 6-11。表 6-11缺省的對象名 設(shè)置的對象名 屬 性 設(shè)置值Caption 星星閃爍BackColor 黑色ForeColor 黃色Caption 結(jié)束程序代碼如下:星星閃爍Dim xpos
7、As Integer, ypos As IntegerDim i As IntegerPrivate Sub Form_Load(tmrAnimation.Enabled = TrueRandomizeEnd SubPrivate Sub tmrAnimation_Timer(清屏,產(chǎn)生閃爍效果ClsFor i = 1 To 50xpos = Int(frmCircle.Width * Rndypos = Int(frmCircle.Height * RndPSet (xpos, yposNext iEnd SubPrivate Sub cmdEnd_Click(EndEnd Sub二、 Do
8、.Loop 循環(huán)For-Next 循環(huán)的次數(shù)是確定的,有的問題只知道循環(huán)結(jié)束的條件,重復執(zhí)行的次數(shù)事先并不知道,這 時需用 Do-Loop 循環(huán)。格式一:Do While 條件循環(huán)體Loop當 VB 執(zhí)行 Do While -Loop循環(huán)時,先判斷指定的條件是否為真,若條件為真,執(zhí)行循環(huán)體,條件為 假時退出循環(huán)。這也是一種當型循環(huán)?!纠?6-6-3】設(shè)計一個界面如圖 6-27所示的程序,從鍵盤輸入任意兩個正整數(shù) a 、 b ,輸出它們的最大 公約數(shù)。 圖 6-27本程序運行時,通過單擊“計算”按鈕在“最大公約數(shù)”框中顯示 a 與 b 的最大公約數(shù),因此,求最 大公約數(shù)的代碼就編寫在“計算”按鈕
9、的 Click 事件中。完成本程序界面需要設(shè)置的屬性如表 6-12。 表 6-12缺省的對象名 設(shè)置的對象名 屬 性 設(shè)置值Form1 frmDivisor Caption 最大公約數(shù)Caption 輸入 ACaption 輸入 BCaption 最大公約數(shù) Text (空白 Text (空白 Text (空白 Caption 計算 Caption結(jié)束求兩個正整數(shù) a 、 b(a>b的最大公約數(shù)的算法見例 6-1-3,流程圖見圖 6-3,程序代碼如下: 求最大公約數(shù)Private Sub cmdCalcu_Click( Dim a As Integer Dim b As Integer
10、Dim r As Integer a = Val(txta.Text b = Val(txtb.Text r = a Mod b Do While r <> 0 a = b b = rr = a Mod b LooptxtDivisor.Text = Str(b End SubPrivate Sub cmdEnd_Click( End End Sub 格式二:Do循環(huán)體Loop Until 條件這種循環(huán)的執(zhí)行過程如圖 6-28所示,進入循環(huán)后,先執(zhí)行一次循環(huán)體 A ,然后再檢查條件是否成立, 如果不成立,就執(zhí)行循環(huán)體 A ,直到條件 D 成立,退出循環(huán)。這種循環(huán)結(jié)構(gòu)稱為直到型。 【
11、例 6-6-4】 如果我國人口以每年平均 1.5%的速度增長,問多少年后我國人口達到或超過 15億,設(shè)現(xiàn)在人口為 12.3億。解決這個問題的思路是:設(shè)現(xiàn)在人口為 p 0=12.3億, 人口增長率 r=1.5%=0.015, 則一年后人口為 p 1=p0+p0×r=p0×(1+r,看它是否達到或超過 15億;如果未達到,再算二年后的人口 p 2=p1+p1×r=p1×(1+r;如果 未達到,再計算三年后的人口,直到 n 年后的人口數(shù)達到或超過 15億。流程圖見圖 6-29,程序代碼如下:直到型循環(huán)Private Sub Form_Click(Dim pAs
12、 SingleDim rAs SingleDim nAs Integer圖 6-29p = 1230000000#n = 0Dop= p * (1 + rn = n + 1Loop Until p >= 1500000000#Print n; " 年后 ", "人口 =" pEnd Sub運行結(jié)果如下;14年后 人口 =1.51506E+09三、循環(huán)的嵌套在一個循環(huán)中又完整地包含另一個循環(huán), 稱為循環(huán)的嵌套。 前面介紹的幾種類型的循環(huán)可以互相嵌套, 例如可以在一個 For-Next 循環(huán)中包含另一個 For-Next 循環(huán), 也可以在一個 Do-L
13、oop 循環(huán)中包含一個 For-Next 循環(huán)?!纠?6-6-5 *為解決這個問題,可以采用如下的算法:使用雙重For-Next 循環(huán),外循環(huán)確定行數(shù)和各行起始打印位置,內(nèi)循環(huán)用來確定各行打印的個數(shù)。設(shè)外循環(huán)的循環(huán)變量為 i , 內(nèi)循環(huán)的循環(huán)變量為 j 。 由于圖案上下對稱, 上下兩半對應行的起始位置和字符個數(shù)完全一致,所以 i 的取值也應對稱:i=-3 To 3。 設(shè) i=0行的起始打印位置為 5圖 6-30用心 愛心 6則第 i 行的起始打印位置為 Tab(Abs(i+5,第 i 行的字符的個數(shù)為 2*(4-Abs(i-1。流程圖如圖 6-30所示, 程序代碼如下:打印菱形圖案Privat
14、e Sub Form_Click(Dim i As Integer, j As IntegerFor i = -3 To 3Print Tab(Abs(i + 5; 確定每行的起始位置For j = 1 To 2 * (4 - Abs(i - 1Print "*"Next jPrint 換行Next iEnd Sub【例 6-6-6】求 3到 100之間的全部質(zhì)數(shù)。質(zhì)數(shù)是除了 1和它本身之外,不能被其它任何整數(shù)整除的大于 1的自然數(shù)。要驗證一個自然數(shù) n 是否為質(zhì)數(shù),方法很多。我們采用的算法是:一個數(shù) n 是否是質(zhì)數(shù),只需將 n 被 2都除不盡, n 就是質(zhì)數(shù)。圖 6-31
15、先計算出 k= ,然后將 n 被 i=2Flag 是個 “標志變量” , 初始時 Flag=0,表示 n 未被任何一個整數(shù)整除, 如果在某一次 n 被一個整數(shù) i 整除,則 Flag 改變?yōu)?1,表明該數(shù)不是質(zhì)數(shù)。如果 n 不被任何一個 i 整除, 則 Flag 始終保持為 0。 因此,在結(jié)束循環(huán)后根據(jù) Flag 的值為 0或 1, 來判斷一個數(shù)是否為質(zhì)數(shù)。 nnNn<=100Y求 3到 10之間的全部質(zhì)數(shù)NPrivate Sub Form_Click(Dim n As Integer, i As Integer YNDim flag As IntegerYDim kAs Integer
16、For n = 3 To 100 Step 2k = Int(Sqr(ni = 2flag = 0NDo While i <= kIf n Mod i = 0 Then Yflag = 1 n 能被某一個數(shù)整除End Ifi = i + 1LoopIf flag = 0 Then Print nNext n 圖 6-31End Sub用心 愛心 專心 7運行結(jié)果為:3 5 7 11 1317 19 23 29 3137 41 43 47 5359 61 67 71 7379 83 89 97說明:由于偶數(shù)決不會是質(zhì)數(shù),不必對偶數(shù)進行測試,因此外循環(huán)的增量為 2;內(nèi)循環(huán)中 n Mod i=
17、0中的 Mod 為取余運算,若 n 能被 i 整除,則余數(shù)為 0;實踐與探索請考察程序的內(nèi)循環(huán)部分,如果 n 是一個質(zhì)數(shù),如 n=11,則內(nèi)循環(huán)結(jié)束時,標志變量 flag 的值仍為 0; 如果 n 不是一個質(zhì)數(shù),如 n=63,則進行第二次循環(huán)時, n 能被 3整除,此時 flag 的值為 1,已經(jīng)可以判斷 出 n 不是質(zhì)數(shù),但程序中的內(nèi)循環(huán)仍然要執(zhí)行 6次,程序的效率不高。請問該如何修改程序,當 flag 的值 為 1時直接結(jié)束循環(huán)。練 習 比較三種循環(huán)結(jié)構(gòu): For-Next、 Do While-Loop、 Do-Loop Until,指出各在什么情況下使用? Do While-Loop與
18、Do-Loop Until 之間又有什么區(qū)別? 寫出下列程序的執(zhí)行結(jié)果。 Private Sub Form_Click(Dim x As IntegerDim n As Integern = 0For x = 3 To 11 Step 2n = n + 1Print "x =" xNext xPrint "n=" nPrint "x=" xEndSub Private Sub Form _Click(Dim a As IntegerDim b As IntegerDim c As Integera = 1: b = 1: c = 1D
19、o While a + b + c <= 10a = a + 1b = b * 2c = b / 2用心 愛心 專心 8LoopEnd Sub Private Sub Form _Click(Dim x As IntegerDim y As Integerx = 3y = 77DoPrint xLet x = x + 2Loop Until x > Sqr(yEndSub Private Sub Form _Click(Dim k As IntegerDim t As IntegerDim s As Integers = 0: t = 1For k = 2 To 4s = s +
20、kt = t * kNext kPrint "s=" s, "t=" tEndSub Private Sub Form _Click(Dim a As IntegerDim b As IntegerDim c As IntegerDim s As IntegerDim i As Integera = 2: b = 1: s = 0For i = 10 To 6 Step -1s = s + ac = a + ba = bb = cNext iPrint "s=" sEndSub Private Sub Form _Click(Dim iAs IntegerDim jAs IntegerDim yAs IntegerDim sAs Integers = 1: y = 1For i = 2 To 4用心 愛心 專心 9y = y * jNext js = s + yNext
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會計類畢業(yè)實習報告范文錦集六篇
- 下學期工作學習計劃合集八篇
- DB12T 472-2012 貴金屬與珠寶玉石飾品 標識
- 業(yè)務員工作心得體會
- 三國演義讀書筆記及啟發(fā)范文
- 個人籃球訓練計劃書(12篇)
- 課件高血壓教學課件
- 探究實驗設(shè)計之二氧化碳性質(zhì)的探究
- 慢性持續(xù)期哮喘患者的治療和管理
- 高等數(shù)學教程 試卷3-答案
- 《現(xiàn)代農(nóng)業(yè)技術(shù)推廣》課件-第七組 農(nóng)民問題專題調(diào)研
- 第30課 家居收納技巧 課件 2023-2024學年蘇教版初中勞動技術(shù)七年級上冊
- 2024中國一汽校園招聘1000+崗位高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- GB/T 19533-2024汽車用壓縮天然氣鋼瓶定期檢驗與評定
- 婦產(chǎn)科護士晉升述職報告
- 骨髓腔內(nèi)輸液(IOI)技術(shù)
- 建筑幕墻工程(鋁板、玻璃、石材)監(jiān)理實施細則(全面版)
- 小學數(shù)學與思政融合課教學設(shè)計
- 江西省南昌市民德學校2023-2024學年八年級上學期期中數(shù)學試題
- 國際金融(英文版)智慧樹知到期末考試答案2024年
- 2024年《藥物臨床試驗質(zhì)量管理規(guī)范》(GCP)網(wǎng)絡培訓題庫
評論
0/150
提交評論