《程序的循環(huán)結(jié)構(gòu)》PPT課件.ppt
2.4 程序的循環(huán)結(jié)構(gòu),掌握For循環(huán)語句的基本格式 理解For循環(huán)語句的執(zhí)行過程 掌握循環(huán)變量在執(zhí)行過程中的變化情況 能用For循環(huán)結(jié)構(gòu)編寫簡單的程序,實例1、編程求1+2+3+10的和,按照順序結(jié)構(gòu)編寫程序如下: Private Sub Command1_Click() dim s as integer s=0 s=s+1 s=s+2 s=s+10 print s end sub,用這種方法能不能編程求出1+2+3+100的和,1+2+3+1000的和?,實際這10條賦值語句在重復著同一個操作,都是將s加一個數(shù)和賦給s,如果用變量x表示每一個加數(shù),那么這10條語句就可以用一條表示:s=s+x,然后讓x的取值分別為1到10這10個自然數(shù),重復執(zhí)行這條語句,就可以實現(xiàn)該程序的編寫。這就要用到循環(huán)結(jié)構(gòu)。,2.4.1 用ForNext語句建立循環(huán)結(jié)構(gòu),用循環(huán)語句編寫: Private Sub Command1_Click() Dim s as integer, x as integer S=0 For X=1 to 10 step 1 S=S+X next X print S End sub,循環(huán)變量,初值,終值,步長,循環(huán)體,1、 For next循環(huán)語句的格式: 用于建立已知循環(huán)次數(shù)的循環(huán)結(jié)構(gòu)For 循環(huán)變量=初值 To 終值 Step 步長 循環(huán)體 Next 循環(huán)變量 2、For循環(huán)語句的功能: 執(zhí)行For語句:先將初值賦給循環(huán)變量,并記住終值和步長(兩數(shù)間隔)。然后進行判斷,是否超出終值?如“超出”終值時,執(zhí)行 Next 下一語句,否則執(zhí)行循環(huán)體。 執(zhí)行循環(huán)體 執(zhí)行Next語句:循環(huán)變量加步長,返回重新判斷,2.4.2 For循環(huán)語句的執(zhí)行過程,練一練,針對for循環(huán)語句的語句格式,設(shè)置如下練習,指出下面程序中的錯誤: 1、求1+2+3+4+5的和 s=0 for i=1 to 5 step 1 s=s+i next j print s,2、在VB窗體界面上輸出110這10個自然數(shù) for I=1 to 10 print i,j-i 循環(huán)變量的名稱要相同。,For語句與Next語句必須成對出現(xiàn),而且僅只步長為1時,才可以省略 step 1,3、求5+4+3+2+1的和 s=0 for I=5 to 1 s=s+I next I print s,4、求7+5+3+1的和: S=0 For I= 7 to 1 Step 2 S=S+I Next I Print S,當初值小于終值時,步長為正數(shù);當初值大于終值時,步長為負數(shù);,補充: 1、循環(huán)變量必須為數(shù)值型,初值、終值:都是數(shù)值型,可以是數(shù)值表達式。 2、循環(huán)體:在For語句和Next語句之間的語句序列。可以是一條語句,也可以是多條語句。,Step 1,2,問題2 求 S=1+2+100和值,分析 a、用循環(huán)產(chǎn)生 1100 的自然數(shù) b、每產(chǎn)生一個自然數(shù)將其累加到求和變量中 即:S = S + N c、重復執(zhí)行 S = S + N 即:循環(huán)體 d、打印和的值的語句應在程序的末尾 即:Print S = 1 + 2 + + 1000 = ; S,程序: Private Sub Command1_Click() Dim N as integer, S as integer S = 0 For N = 1 To 100 S = S + N Next NPrint S = 1 + 2 + + 100 = ; S End Sub,問題3:一小球從 200 米高度自由下落,每次落地后反彈為原來高度的一半,然后再落下,求該小球第十次落地時共經(jīng)過了多少米的路程?,分析: 設(shè) S 表示小球經(jīng)過的路程變量 S = S + 2H H 表示小球反跳的高度變量 H = H / 2 I 表示小球落地的次數(shù)變量 I = 2 To 10,Private Sub Command1_Click() Dim H as integer, S as integer, I as integer S = 200 H = S / 2 For I = 2 To 10 S = S + 2*H H = H / 2 Next I Print 到第十次落地共經(jīng)過的路程是: ; S ; 米 end sub,問題3:一小球從 200 米高度自由下落,每次落地后反彈為原來高度的一半,然后再落下,求該小球第十次落地時共經(jīng)過了多少米的路程?,分析: 設(shè) S 表示小球經(jīng)過的路程變量 S = S + H H 表示小球反跳的高度變量 H = H / 2 I 表示小球落地的次數(shù)變量 I = 2 To 10,Private Sub Command1_Click() Dim H as integer, S as integer, I as integer S = 200 H = S / 2 For I = 2 To 10 S = S + 2*H H = H / 2 Next I Print 到第十次落地共經(jīng)過的路程是: ; S ; 米 end sub,Private Sub Command1_Click() Dim S as integer, I as integer S = 200 For I = 2 To 10 S = S + 200*2*(0.5(I-1) Next I Print 到第十次落地共經(jīng)過的路程是: ;S; 米 end sub,問題4:一小球從 200 米高度自由下落,每次落地后反彈為原來高度的一半,然后再落下,求該小球多少次落地時經(jīng)過的路程大于600米呢?,Private Sub Command1_Click() Dim S as integer, I as integer S = 200 I=2 do while S<600 S = S + 200*2*(0.5(I-1) I=I+1 Loop Print “到“;I; ”次時落地經(jīng)過的路程是超過600米 end sub,Private Sub Command1_Click() Dim S as integer, I as integer S = 200 I=2 do S = S + 200*2*(0.5(I-1) I=I+1 Loop until S600 Print “到“;I; ”次時落地經(jīng)過的路程是超過600米 end sub,2.4.4 用 Do 語句建立循環(huán)結(jié)構(gòu),1、Do 語句的功能:用于建立循環(huán)次數(shù)未知的循環(huán)結(jié)構(gòu) 2、Do 語句的格式: 格式一(當循環(huán)) Do While 循環(huán)體 Loop 功能:執(zhí)行 Do 語句先判斷條件,當條件滿足,則執(zhí)行循環(huán)體,然后執(zhí)行 Loop 語句就回到 Do While 再判斷,直到條件不滿足,跳出循環(huán),執(zhí)行 Loop 下一語句。,S0 N0 Do While N <= 10 S = S + 1 N = N + 1 Loop,Do 語句的第二種格式(直到循環(huán)),1、 直到形循環(huán)格式Do 循環(huán)體 Loop while 2、 格式二功能:執(zhí)行 Do 語句,就進入循環(huán),直接執(zhí)行循環(huán)體,在判斷條件,當條件滿足,回到上面執(zhí)行循環(huán)體,直到條件不滿足,跳出循環(huán),執(zhí)行 Loop 下一語句。,S = 0 N = 0 Do N = N + 1 S = S + N Loop while N <100,三種循環(huán)求解 S=1+2+100和值,Private Sub Command1_Click() Dim N As integer, S As integer S = 0 For N = 1 To 100 S = S + N Next N Print “S ; S End Sub,Private Sub Command1_Click() Dim s As Integer, n As Integer s = 0 n = 0 Do While n <= 100 s = s + n n = n + 1 Loop Print s End Sub,Private Sub Command1_Click() Dim s as integer, n as integer S=0 N=0 Do S = S+N N = N + 1 Loop until (n100) print S End sub,P12 實踐(1)“猴子摘桃”,Private Sub Command1_Click() Dim day As Integer, S As Integer S = 1 For day = 9 To 1 Step -1 S = (S + 1) * 2 Next day Print s=; S End Sub,猴子吃桃:每次吃掉一半多一個,直到第10天只剩一個,第一天共摘了多少個桃子?,問題8 要將100元的鈔票換成等值的10元、5元、2元、1元的小鈔票。要求每次換成40張小鈔票,每種至少一張,有多少種換法?,分析:10元一張最多能換9張, 5元一張最多能換17張, 2元一張最多能換37張,一元只要用40減去10、5、2元的數(shù)目就可以了!,Dim i As Integer, j As Integer, k As Integer, m As Integer, sum As Integer sum = 0 For i = 1 To 9 For j = 1 To 17 For k = 1 To 37 m = 40 - i - j - k If (m = 1) And (i * 10 + j * 5 + k * 2 + m = 100) Then sum = sum + 1 Print i=; i, j=; j, k=; k, m=; m End If Next k Next j Next i Print sum=; sum End Sub,2.4.5 循環(huán)語句嵌套的定義,雙重循環(huán)語句:在循環(huán)體內(nèi)含有另一個循環(huán)語句的結(jié)構(gòu)如: For 循環(huán)變量1 = 初值 To 終值 Step 步長 For 循環(huán)變量2 = 初值 To 終值 Step 步長 循環(huán)體 Next 循環(huán)變量2 Next 循環(huán)變量1 多重循環(huán):如循環(huán)體內(nèi)再包含循環(huán)結(jié)構(gòu),我們將這種循環(huán)結(jié)構(gòu)稱作多重循環(huán)。,多重循環(huán)的原則是:外層循環(huán)與內(nèi)層循環(huán)必須層層相套,循環(huán)體之間不能交叉。每個循環(huán)必須有一個唯一的循環(huán)控制變量。,問題5 求解 1 2 + 3 4 + + 99100,Private Sub Command1_Click() Dim i As integer, S As integer S = 0 For i = 1 To 100 s = s + ( -1 )(i + 1) * i Next i Print “S ; S End Sub,Private Sub Command1_Click() Dim i As integer, S As integer S = 0 For i = 1 To 100 If i Mod 2 = 0 Then s = s i Else s = s + i End If Next i Print “S ; S End Sub,問題6 1 - 1/2 + 1/3 1/4 + + 1/99 1/100,Private Sub Command1_Click() Dim i As integer, S As integer S = 0 For i = 1 To 100 s = s + ( -1 )(i + 1) * (1/i ) Next i Print “S ; S End Sub,問題7 求 11000之間的素數(shù) 素數(shù)是指只能被1和他本身整除的數(shù),要判斷一個數(shù)i是否為素數(shù),只要看i是否能被2到i1范圍內(nèi)的數(shù)整除,若能被整除,則不是素數(shù)。,Private Sub Command1_Click() Dim i As Integer, j As Integer Dim prime As Boolean For i = 2 To 1000 prime = True j = 2 Do While (j < i) And prime If (i Mod j = 0) Then prime = False j = j + 1 Loop If prime Then Print i ; i Next i End Sub,