《《循環(huán)結(jié)構(gòu)》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《循環(huán)結(jié)構(gòu)》PPT課件.ppt(63頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,在Visual Basic程序的三種結(jié)構(gòu)中,循環(huán)結(jié)構(gòu)是一種重要結(jié)構(gòu)。,循環(huán)的本質(zhì):不斷地重復(fù)某種動作。,對計算機程序而言,循環(huán)必須具備兩個重要因素:,1. 在一定的條件下,重復(fù)執(zhí)行一組語句,2. 必然出現(xiàn)不滿足條件的情況,使循環(huán)終止,一、循環(huán)程序設(shè)計結(jié)構(gòu),VB中提供了兩種類型的循環(huán)語句:一種是計數(shù)循環(huán)語句;另一種是條件循環(huán)語句。Visual Basic 支持的循環(huán)結(jié)構(gòu)有: DoLoop For...Next WhileWend GoTo 語句 重點掌握: DoLoop、 For.Next、 WhileWend等前三種循環(huán),、For循環(huán)語句,語法格式: For 循環(huán)變量 = 初值 T
2、o 終值 Step 步長 Next 循環(huán)變量,例題: 編程計算:S=1*2*3**10,Dim S K Print “A= ; A,寫出程序的輸出結(jié)果:,K=4 A=11,程序分析舉例,題目2: n = 3 j = 1 Do Until n 1 n = n + 1 j = j + n * (n + 1) Loop Print n ; j,寫出程序的輸出結(jié)果:,3 1,程序分析舉例,題目3: k = 1: m = 2: n = 4 Do While k <= n m = m * 2 k = k + 1 Loop Print m ; k,寫出程序的輸出結(jié)果:,32 5,程序分析舉例,
3、題目4: C=4 D=Val(InputBox(請輸入一個數(shù))) Do While D0 If DC Then C= C+1 D= Val(InputBox(請輸入一個數(shù))) Loop Print C+D,運行時輸入9,8,7,0寫出程序的輸出結(jié)果:,7,程序分析舉例,題目5: S=0:i=1 Do while i0 then s=s+i end if i=i+1 Loop Print s= ; s,寫出程序的輸出結(jié)果:,S=4500,程序分析舉例,題目6: x = 1 y = 1 For i = 1 To 3 f = x + y y = x x = f Print f; Ne
4、xt i,寫出程序的輸出結(jié)果:,2 3 5,程序分析舉例,題目7: x = 1 For y = 1 To 30 If x = 10 Then Exit For End If If x Mod 2 = 1 Then x = x + 7 Else x = x - 5 End If Next y Print x,寫出程序的輸出結(jié)果:,10,程序分析舉例,題目8: For i = 1 To 10 k = 2 * i - 1 Print k; If I Mod 3 = 0 Then Print Next i,寫出程序的輸出結(jié)果:,1 3 5 7 9 11 13 15 17 19,循環(huán)結(jié)構(gòu)程序的要
5、素:,二、程序設(shè)計舉例,依據(jù)四要素畫出流程圖,再寫程序,處理的數(shù)據(jù)量大或處理的步驟多 對每個數(shù)據(jù)的處理或每個步驟的處理有規(guī)律,首行考慮什么情況下要用循環(huán)技術(shù)來設(shè)計程序?,循環(huán)體是什么? 循環(huán)控制變量及循環(huán)控制表達式是什么? 循環(huán)應(yīng)如何初始化? 對于每次循環(huán),其控制變量如何改變?,題目1: 輸入若干個職工工資,輸入0時結(jié)束,求平均工資。,X=輸入一個工資 S=0:N=0,工資X0?,S=S+x,X=輸入一個工資,,S=0:N=0 X=Val(inputbox()) Do while x0 S=S+x X=Val(inputbox()) loop,題目2:目前我國人口為13億,如果以每年1.1%的
6、速度增長,多少年以后我國人口將達到15億。,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)體語句,改變循環(huán)控制變量的語句,,,,,,,,,,,,,循環(huán)控制條件,人口x<=15?,X=13 N=0,N=N+1,X=x*1.011,,Do while x<=15 N=N+1 X=x*1.011 loop,題目3: 對SUM=1+3+5++N,求SUM不大于1000的最大整數(shù)之和以及所對應(yīng)的N值。,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,循環(huán)體語句,改變循環(huán)控制變量的語句,,,,,,,,,,,,,Sum<=1000?,Sum=1 K=1,K=K+2,Sum=Sum+K,,Do whi
7、le sum<=1000 K=K+2 sum=sum+k loop,題目4:輸出所的水仙花數(shù),所謂水仙花數(shù)是指一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身,例如,153是一個水仙花數(shù),因為153=13+53+33。,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,循環(huán)體語句,改變循環(huán)控制變量的語句,,,,,,,,,,,,,數(shù)值K<=999?,K=100,a=個位數(shù):b=十位數(shù):c=百位數(shù) 判斷是否是水仙花數(shù),如是,則輸出它,K=K+1,,Do while k<=999 a=k mod 10: if k=a3+b3 k=k+1 loop,題目5: 統(tǒng)計一文本框中數(shù)字字符的個數(shù)。,循環(huán)控制
8、變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,循環(huán)體語句,改變循環(huán)控制變量的語句,,,,,,,,,,,,,位置號k<=總長L?,K=1 L=len(text1.text),C=第k個字符 C是數(shù)字字符?如是,個數(shù)N累加1,K=k+1,:N=0,,Do while k=“0” and c k=k+1 loop,Do while k
9、量的語句,,,,,,,,,,,,分母k
10、a=1:b=1 For k=3 to 20 c=a+b print c a=b:b=c Next k,循環(huán)嵌套舉例,一、程序分析舉例,題目1: n = 1 For i = 1 To 3 For j = 5 To I Step -1 n = n + 2 Next j Print n ; j ; i Next i Print n ; j ; i,寫出程序的輸出結(jié)果:,11 0 1 19 1 2 25 2 3 25 2 4,程序分析舉例,題目2: k = 0 For j = 1 To 2 Print I For i = 1 To 3 k = i + 1 Next I Print I Fo
11、r i = 1 To 2 k = k + 1 Next I Print I Next j Print k ; I,寫出程序的輸出結(jié)果:,4 3 3 4 3 6 3,程序分析舉例,題目3: For m = 1 To 2 For j = 1 To m For k = j To 2 Print m= ; m , j=; j , k= ; k Next k , j , m,寫出程序的輸出結(jié)果:,注意其寫法:順序,原則,等價形式,程序分析舉例,題目4: For i = 5 To 4 Step -1 s = 0# For j = i To 3 Step -1 s = s + i * j
12、 Next j Next i Print s,寫出程序的輸出結(jié)果:,28,把s = 0#放在For i的前一行呢?,程序設(shè)計舉例,題目1: 輸出一行(20個)星號。 輸出一列(20個)星號。 輸出5行星號,每行20個。 輸出5行三角形形式星號。,* * * * * * * * * * * * * * *,* * * * * * * * * * * * * * *,Print ********************,Print * Print * Print * Print * . . . Print * Print * Print * Print * Print *,Pr
13、int ******************** Print ******************** Print ********************“ Print ******************** Print ********************,Print * Print ** Print *** Print **** Print *****,請分析這些語句與 Print * ; 的聯(lián)系與區(qū)別,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,循環(huán)體語句,改變循環(huán)控制變量的語句,,,,,,,,,,,,,列號X<=20?,X=1,輸出一個星號,輸出后不換行,X=X+
14、1,,For X=1 to 20 Print * ; Next X,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,循環(huán)體語句,改變循環(huán)控制變量的語句,,,,,,,,,,,,,行號K<=5?,K=1,輸出第K行星號,中間不換行 輸出完后換行,K=K+1,For K=1 to 5 輸出第K行星號 Print Next K,****************** ****************** ****************** ****************** ******************,,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,改變循環(huán)控制變
15、量的語句,,,,,,,,,,行號K<=5?,K=1,換行,K=K+1,,,,For K=1 to 5 For X=1 to 20 Print * ; Next X Print Next K,* * * * * * * * * * * * * * *,* * * * * * * * * * * * * * *,* * * * * * * * * * * * * * * * * * * * * * * * *,* * * * * * * * * * * * * * *,For K=1 to 5 在第K行前輸出?個空格 For X=1 to ? Print * ; Nex
16、t X Print Next K,For K=1 to 5 在第K行前輸出?個空格 For X=1 to ? Print * ; Next X Print Next K,Print tab(5-K);,例題:打印九九乘法表. For i = 1 To 9 For j = 1 To 9 se = i Next j Print Next i,題目2: 求100至200內(nèi)所有素數(shù)(之和)。,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,循環(huán)體語句,改變循環(huán)控制變量的語句,,,,,,,,,,,,,數(shù)值X<201?,X=101,X是否是素數(shù)?如是,累加到S,X=X+2
17、,,思考:什么情況下說明是素數(shù)?,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,循環(huán)體語句,改變循環(huán)控制變量的語句,,,,,,,,,,,,分母K
18、果是素數(shù),則累加:X=x+2,,,,S=0 For x=101 to 201 step 2 for k=2 to x-1 if x mod k=0 then exit for next k if x=k then s=s+x(print x) Next x,題目3: 求S=1!+2!+3!++7!,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,循環(huán)體語句,改變循環(huán)控制變量的語句,,,,,,,,,,,,,數(shù)值X<8?,X=1:Sum=0,S = X!,累加:Sum=Sum+S X=X+1,,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,循環(huán)體語句,改變循環(huán)控制變量的語句,,
19、,,,,,,,,,,k<=X?,K=1 X=val(text1.text),S=S*K,K=k+1,例:求一個數(shù)X的階乘,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,改變循環(huán)控制變量的語句,,,,,,,,,,數(shù)值X<8?,X=1:Sum=0,Sum=Sum+S:X=X+1,,,,Sum=0 For X=1 to 8 S=1 For k=1 to x S=S*K Next K Sum=Sum+S Next X,解法一: 每一項階乘值獨立求解,循環(huán)控制變量賦初值 及其他相關(guān)初始化語句,循環(huán)控制條件,改變循環(huán)控制變量的語句,,,,,,,,,,,,,數(shù)值N<8?,N=1:S=1:Sum=
20、0,S=S*N,累加:Sum=Sum+S N=N+1,解法二: 第N項階乘值等于第N-1項階乘值再乘以N,優(yōu)點:省去內(nèi)層 循環(huán),效率高,,Sum=0:S=1 For N=1 to 8 S=S*N Sum=Sum+S Next N,練習(xí):教材習(xí)題P116,二,5,程序設(shè)計舉例,題目4:窮舉法 for a=1 to 9 for b=0 to 9 for c=0 to 9 next c , b , a,(1)請用上面的循環(huán)方式找出所有水仙花數(shù) (2)教材P105,例4-22 (3)教材習(xí)題:P116,二,4,以下代碼用于計算,的近似值,當(dāng)級數(shù)第i項的絕對值小于
21、10-5時計算結(jié)束,同時調(diào)用內(nèi)部函數(shù)進行驗證。這里,x為弧度。 x=3.14159/6 i=1:t=x:sinx=t Do While (1) i=i+2 t= (2) sinx=sinx+t Loop Print sinx, (3),下面的程序用于對9位的準(zhǔn)考證號進行校驗。參數(shù)mno存放準(zhǔn)考證號,mjy存放產(chǎn)生的校驗位,tag判斷校驗正確否,若校驗正確在L1中顯示“yes”,否則在L1中顯示“no” 。產(chǎn)生校驗位的算法為:取準(zhǔn)考證號右邊的8位數(shù)之和關(guān)于9的模作為校驗值,準(zhǔn)考證號最左邊的一位為校驗位。 Mno$=text1.text msum = 0 (1) m = Mid(mno, j, 1) msum = msum + Val(m) Next j mjy = (2) If (3) Then L1.Caption=“Yes” Else L1.Caption=“No” End If,三、程序填空題,題目1:以下程序用于計算數(shù)學(xué)表達式 12-22+32-+972-982的值 S=0 : I=1 : C=1 Do S=S+C*I*I c=________ I=________ Loop while________ Print s= ; s,本章到此結(jié)束,