《總結(jié)程序結(jié)構(gòu)》PPT課件.ppt
VB 程序設(shè)計,程序控制結(jié)構(gòu),程序設(shè)計方法: 1、認真閱讀題目,建立窗體 (注:窗體不一樣,編程方式也不一樣) 2、分析處理數(shù)據(jù)及操作先后關(guān)系 3、轉(zhuǎn)化為結(jié)構(gòu)(流程圖或N-S圖) 4、程序設(shè)計 5、上機檢查(調(diào)試) 6、總結(jié)、改進 7、推廣應用,注: 1、掌握題目的分類,采用相應的程序結(jié)構(gòu)和設(shè)計方法。 2、同一個題目,完善程序的邏輯、算法、優(yōu)化結(jié)構(gòu)。,0: 程序設(shè)計,IF Then Else End if,1: IF選擇塊結(jié)構(gòu),(1)基本格式:,(2)執(zhí)行方式:流程圖,示例:If score = 60 Then Print “祝賀你考試通過!” Else Print “考試未通過.” End If Print 繼續(xù)努力!,2: 單行條件語句,(1). 基本格式 If Then 語句組A Else 語句組B,(2). 執(zhí)行方式:流程圖,示例:If score = 60 Then Print “通過!” Else Print “未通過.” Print 繼續(xù)努力!,注:此語句沒有End if,3: 比較,示例:從鍵盤上輸入兩個整數(shù),并按從大到小輸出。,If a < b Then t = a: a = b: b = t,4: 多分支選擇結(jié)構(gòu) Select,格式: Select Case Case Case Case Else End Select,示例: a=InputBox(“請輸入一個字”) Select Case a Case is=“?!?Print “是句號” Case “,” Print “是逗號” Case a To z Print “是小寫字母 Case “A”,”B”,”C” to “Z” Print “是大寫字母 Case is”0” Print “可能是數(shù)字字符 End Select,Case is=“0” and is<=“9” (不能用not 、and 、 or),5: 條件結(jié)構(gòu)示例1,計算任意三角形的面積S,Private Sub Command1_Click() 方法1 a = Val(InputBox(請輸入三角形邊長a) b = Val(InputBox(請輸入三角形邊長b) c = Val(InputBox(請輸入三角形邊長c) If a + b c And a + c b And b + c a Then k = (a + b + c) / 2 s = Sqr(k * (k - a) * (k - b) * (k - c) Print s Else MsgBox (輸入的邊長a、b、c不能組成三角形) End If End Sub,Private Sub Command1_Click() 方法2 a = Val(InputBox(請輸入三角形邊長a) b = Val(InputBox(請輸入三角形邊長b) c = Val(InputBox(請輸入三角形邊長c) 注:輸入的邊長a、b、c必須組成三角形,否則重新輸入,直到成功為至 Do While (a + b < c Or a + c < b Or b + c < a) MsgBox (輸入的邊長a、b、c不能組成三角形,請重新輸入) a = Val(InputBox(請輸入三角形邊長a) b = Val(InputBox(請輸入三角形邊長b) c = Val(InputBox(請輸入三角形邊長c) Loop 注:循環(huán)這種方法不能改為文本框輸入,為什么? k = (a + b + c) / 2 s = Sqr(k * (k - a) * (k - b) * (k - c) Print s End Sub,計算任意三角形的面積S,Private Sub Command1_Click() 方法3 a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If a + b c And a + c b And b + c a Then k = (a + b + c) / 2 s = Sqr(k * (k - a) * (k - b) * (k - c) Text4.Text = s Else MsgBox (輸入的邊長a、b、c不能組成三角形) End If End Sub,計算任意三角形的面積S,假設(shè)廣州市地鐵1號線全長共有12站臺,搭乘站數(shù)與車票價格的對應 關(guān)系如下表:,提示: 乘客輸入當前站號及目的地站號, 計算機報告(加收1元附加費)顯示票價money(元),若輸入的站超越(112),提示“ERROR!”。,6: 條件結(jié)構(gòu)示例2,Private sub Command1_click() Dim a%, b%, c% a = Val(InputBox(輸入當前站號 =) b = Val(InputBox(輸入目的地站號=) If (a = 1 And b = 1 And a <= 12) Then n = Abs(b - a) If (n = 1 Or n = 2) Then c = 1 If (n = 3 Or n = 4) Then c = 2 If (n = 5 Or n = 6) Then c = 3 If (n = 7 Or n = 8) Then c = 4 If (n = 9 Or n = 10) Then c = 5 If (n = 11 Or n = 12) Then c = 6 Print 票價=“;c+1 Else Print 站號超界,ERROR! End If End sub,Select case n case 1,2 :c=1 case 3,4 :c=2 case 5,6 :c=3 case 7,8 :c=4 case 9,10 :c=5 case 11,12 :c=6 End select,c=int(n+1)/2),當前站是陳家祠站 站號6 Private Sub Command10_Click() 票價 a = 6 If Text1.Text = 火車東站 Then b = 1 If Text1.Text = 體育西路 Then b = 2 If Text1.Text = 天河 Then b = 3 If Text1.Text = 中山東路 Then b = 4 n = a - d c = Int(n + 1) / 2) Text2.Text = c + 1 End Sub,Sub Command1_Click() 火車東站 Text1.Text = 火車東站 End Sub Sub Command4_Click() 中山東路 Text1.Text = 中山東路 End Sub ,7: 循環(huán)塊結(jié)構(gòu)格式,1:當型循環(huán)格式 While 循環(huán)條件 語句組 Wend,2: For格式(計數(shù)循環(huán)) For = To Step Exit For Next ,3:Do循環(huán) 格式,格式一: Do While Exit Do Loop,格式二: Do Until Exit Do Loop,格式三: Do Exit Do Loop While ,格式四: Do Exit Do Loop Until,8: 循環(huán)要點,Private Sub Command1_Click() N = Val(Text1.Text) Sum = 0 i=1 While i<=100 Sum=Sum+i i=i+1 Wend Text2.Text = Sum End Sub,9: 循環(huán)出口,*判斷一自然數(shù)其是否為素數(shù)(遍歷法)。 Clear a=Val(inputbox(“請輸入一自然數(shù):”) For i=2 to a-1 iF a mod i=0then Exit For Endif Next iF ia-1 then Print a,”是素數(shù)?!?Endif,10: 循環(huán)結(jié)構(gòu)示例1(項操作),同一類題材,采用相同的程序結(jié)構(gòu),思考題: (1) s=2+4+6+8+10 (2) s=1*2*3*4*5*10 (3) s=1!+2!+3!+4!+5! (4) s=20+21+22+23+263 (5) (6) 前20項之和,示例:S=1+2+3+10 Sub Command1_click( ) S = 0 For n=1 to 10 step 1 K = n S= S + K Next Print s End sub,Sub Command1_click( ) 4 S = 0 For n=0 to 63 step 1 K = 2n S= S + K Next Print s End sub,Sub Command1_click( ) 3 S = 0 For n=1 to 5 step 1 k=1 For i=1 to n K = k * i Next S= S + K Next Print s End sub,10: 循環(huán)結(jié)構(gòu)示例2(行列輸出),打印九九乘法表(兩重循環(huán)). For i = 1 To 9 行 For j = 1 To 9 列 一行的內(nèi)容 Print i Next j Print 一行內(nèi)容完后回車 Next i,思考:打印下三角A或上三角B程序如何改動?,A,B,For i = 1 To 9 行 For j = 1 To 9 列 Print i Next j Print Next i,* * * * * * * * * * 圖1,For i = 1 To 9 行 For j = 1 To 9 列 Print “*” ; Next j Print Next i,* * * * * * * * * * 圖2,For i = 1 To 9 行 For j = 1 To i 列 Print “*” ; Next j Print Next i,* * * * * * * * * * 圖2,* * * * * * * * * * 圖3,* * * * * * * * 圖4,For i = 1 To 9 行 For j = 1 To i 列 Print “*” ; Next j Print Next i,For i = 1 To 9 For j = 1 To 2*i-1 Print “*” ; Next j Print Next i,For i = 1 To 9 For k =1 to 20-i Print space(1); Next k For j = 1 To 2*i-1 Print “*” ; Next j Print Next i,11: 循環(huán)結(jié)構(gòu)示例3(遍歷法),從鍵盤上輸入一個正整數(shù),輸出它所有的約數(shù)。 Private Sub Command4_Click() N = Val(InputBox(請輸入一個正整數(shù)) For i = 1 To N If N Mod i = 0 Then Print i End If Next End Sub,從鍵盤上輸入兩個正整數(shù),輸出它的最大公約數(shù)和最小公倍數(shù)。 Private Sub Command5_Click() 方法1 a = Val(InputBox(請輸入一個正整數(shù)a) b = Val(InputBox(請輸入一個正整數(shù)b) If a < b Then t = a: a = b: b = t End If For i = 1 To b If a Mod i = 0 And b Mod i = 0 Then Max = i End If Next Print 最大公約數(shù):, Max Print 最小公倍數(shù):, a * b / Max End Sub,1:求100200之間的不能被3整除的數(shù)的和 2:從鍵盤上輸入一個正整數(shù),輸出它所有的約數(shù)。 3:從鍵盤上輸入兩個正整數(shù),輸出它的最大公約數(shù)和最小公倍數(shù)。 4:從鍵盤上輸入一個正整數(shù),判斷它是否為素數(shù)。 5:判斷并輸出1100中的素數(shù)。 6:判斷并輸出1001000中的水仙花數(shù)。,13: 循環(huán)結(jié)構(gòu)示例4(最大最小值),隨機產(chǎn)生10個100200之間的數(shù),求最大值、最小值。 Private Sub Command1_Click() Max = 100 : Min=200 有固定范圍 For i = 1 To 10 x = Int(Rnd * 101 + 100) Print x; If x Max Then Max = x If x < Min Then Min = x Next i Print Print “最大值=”; Max, “最小值=; Min End Sub,從鍵盤上輸入10個數(shù),求它們中的最大、最小值、和。 Private Sub Command3_Click() N = Val(InputBox(請輸入一個數(shù)) Max = N 沒有固定范圍 Min = N Sum = N For i = 1 To 9 N = Val(InputBox(請輸入一個數(shù)) Sum = Sum + N If N Max Then Max = N If N < Min Then Min = N Next Print Max, Min, Sum End Sub,14: 循環(huán)結(jié)構(gòu)示例5(其它),例1 猴子吃桃子。小猴在某天摘桃若干個,當天吃掉一半多一個;第二天吃了剩下的桃子的一半多一個;以后每天都吃尚存桃子的一半多一個,到第7天要吃時只剩下一個,問小猴共摘下了多少個桃子?,例2用輾轉(zhuǎn)相除法求兩自然數(shù) m,n 的最大公約數(shù)和最小公倍數(shù)。,例3打印輸出斐波那契(Fibonacci)數(shù)列的前20項,