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