版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四章 算法基礎(chǔ)及VB的基本語句,2,1、了解結(jié)構(gòu)化程序設(shè)計(jì)的基本概念 2、掌握VB 程序設(shè)計(jì)中的常用語句 3、掌握順序、選擇、和循環(huán)結(jié)構(gòu)及相應(yīng)的語句,教學(xué)要求,3,教學(xué)內(nèi)容,4.1 算法及程序設(shè)計(jì)基礎(chǔ) 4.2 賦值語句及InputBox、MsgBox函數(shù) 4.3 分支結(jié)構(gòu)與分支結(jié)構(gòu)語句 4.4 循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句 4.5 程序示例,4,4.1 算法及程序設(shè)計(jì)基礎(chǔ),一個(gè)程序( 過程)應(yīng)包括: Nikiklaus Wirth認(rèn)為: 有人認(rèn)為:,對數(shù)據(jù)的描述:指定所用數(shù)據(jù)的類型,作用域和數(shù)據(jù)的 組織形式,即數(shù)據(jù)結(jié)構(gòu)(data structure)。 對操作的描述:即操作步驟,也就是算法(alg
2、orithm)。,數(shù)據(jù)結(jié)構(gòu)+算法=程序,程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言工具和環(huán)境,5,1、算法的概念,算法 即解決某個(gè)問題或處理某件事的方法和步驟;“采用什么結(jié)構(gòu),使用什么語句以及如何安排這些語句”。 算法分類: 數(shù)值計(jì)算算法 非數(shù)值計(jì)算算法 算法優(yōu)劣: 正確性,效率,占用系統(tǒng)資源,便于理解,易于調(diào)試等。,6,18,10,M N R,8,10,8,2,8,2,0,2,0,R=8,R=2,R=0,M=2即最大公約數(shù),求最大公約數(shù),題目:求兩個(gè)自然數(shù)的最大公約數(shù) 分析:求最大公約數(shù)的常用方法是輾轉(zhuǎn)相除法(歐幾里德算法)。,2、算法示例,7,算法描述:,S1 輸入兩個(gè)自然數(shù):M,N; S2
3、 求M除以N的余數(shù)R; S3 使M=N,即用N代換M; S4 使N=R,即用R代換N; S5 若R0,則重復(fù)執(zhí)行S2,S3,S4,否則轉(zhuǎn)至S6 S6 輸出M,M即為M,N的最大公約數(shù)。,8,3、算法的特征,確定性 可行性 有窮性 輸入性 輸出性,9,4、算法的描述,程序流程圖,求最大公約數(shù),10,程序編碼實(shí)現(xiàn)算法,算法僅提供解題思路,計(jì)算機(jī)不可直接執(zhí)行。 用某一程序設(shè)計(jì)語言所提供的語言成分,根據(jù)該語言的特點(diǎn),并利用該語言的各種工具和手段,遵照規(guī)定的語法規(guī)則去實(shí)現(xiàn)算法,得到原程序代碼,計(jì)算機(jī)可識別并執(zhí)行。,11,5.基本算法結(jié)構(gòu),1). 順序結(jié)構(gòu),語句1,語句2,語句塊,結(jié)構(gòu)化程序設(shè)計(jì),12,2
4、)選擇結(jié)構(gòu),結(jié)構(gòu)化程序設(shè)計(jì),13,3)循環(huán)結(jié)構(gòu),結(jié)構(gòu)化程序設(shè)計(jì),14,三種基本結(jié)構(gòu)的共同特點(diǎn),只有單一入口和單一出口; 結(jié)構(gòu)中的每一部分都有被執(zhí)行的可能; 結(jié)構(gòu)內(nèi)不應(yīng)出現(xiàn)永不終止的死循環(huán)。,15,4.2 賦值語句及InputBox、MsgBox函數(shù),4.2.1 賦值語句 4.2.2 InputBox函數(shù) 4.2.3 MsgBox函數(shù),16,4.2.1 賦值語句 格式:= 功能:先計(jì)算表達(dá)式的值,再將該值賦予左端的變量。 說明: -賦值號左端不僅可以是變量名,還可以是對象的屬性; -表達(dá)式的類型和變量的類型要一致 -賦值語句是按語句出現(xiàn)的先后順序執(zhí)行的(順序結(jié)構(gòu)) 舉例:,str1 = Nice
5、 to meet you number% = 72 Lable1.Caption = Filename is: Text.FontSize = 12 改變字號,17,使用下面的方法可以獲取一個(gè)對象的屬性值: var = object . Property 例如:Label1.Caption=Text1.Text 式中,var是變量名、object是對象名、property是該對象的某個(gè)屬性名。 特別注意:屬性也存在數(shù)據(jù)類型,所以在獲取對象的屬性值時(shí),最好使用具有相同數(shù)據(jù)類型的變量。,說明,18,注意:賦值號(=)與比較運(yùn)算符(=)不同 賦值是獨(dú)立的一條語句; 由運(yùn)算符(=)連結(jié)兩個(gè)操作數(shù)的關(guān)系
6、表達(dá)式是語句的一部分, 不可單獨(dú)存在 比較運(yùn)算符不會改變操作數(shù)的值; 賦值語句會,改變賦值號左邊的量,所以必須是可以被賦值的變量或?qū)傩?Dim x As Integer, y As Integer, z As Boolean x=3 : y=4 : y=x z = x=y Print x, y, z,19,Private Sub Form_Click() Dim a As Integer,b As Integer a=10 b=3*a Print a,b End Sub,Private Sub Form_Click() Dim a As Integer,b As Integer b=3*a a
7、=10 Print a,b End Sub,例:單擊窗體,下列兩段程序的執(zhí)行結(jié)果分別是()和()。,提示:利用賦值語句給變量賦值后,在未有新的賦值語句再次給它賦值前,變量值保持不變。,20,例:交換兩個(gè)變量的值。,Private Sub Form_Click() Dim a As Integer,b As Integer a=10 : b=2 Print a,b 填入程序代碼 Print a,b End Sub,正確答案 Dim Temp As Integer Temp=a : a=b : b=Temp,題目說明 單擊窗體程序執(zhí)行結(jié)果為: 10 2 2 10, 注意 變量a和b為兩個(gè)不定值的變
8、量,因此不能直接用 a=2 : b=10 語句來解決這個(gè)問題。,一旦利用賦值語句給變量賦新值,會覆蓋原值,所以不能直接用 a=b : b=a 語句來解決這個(gè)問題。,21,例:求一元一次方程x+5=0的解。,Private Sub Form_Click() Dim x As Integer 3*x+5=0 Print “x=”;x End Sub,Private Sub Form_Click() Dim x As Integer x=(0-)/3 - Print “x=”;x End Sub,語句是該例題的算法。,錯(cuò)誤程序,正確程序,總結(jié): 利用程序設(shè)計(jì)語言處理問題,我們首先要知道的是怎么解決問
9、題,其次要知道怎么將解決問題的方法用程序設(shè)計(jì)語言來表達(dá)。,22,4.2.2 InputBox函數(shù) 格式:InputBox$(,) 功能: 彈出對話框,用戶輸入數(shù)據(jù)后回車或單擊“確定”按鈕后,將輸入內(nèi)容賦值給相應(yīng)的變量;按ESC鍵或單擊“取消”按鈕,返回空串。,23,說明 (1)prompt:必選項(xiàng)。對話框中的提示信息。 (2)title:可選。對話框的標(biāo)題。省略則為應(yīng)用程序名。 (3)default:可選。顯示在用戶編輯框中的缺省值,省略為空。 (4)x,y:可選。指定對話框的顯示位置,省略則居中。,例: i = InputBox(“輸入數(shù)組元素”+Chr(10)+“第一個(gè)元素為:”,程序示例
10、, 100),缺省值,標(biāo)題,提示字符串,24,例:用InputBox函數(shù)輸入出生日期,計(jì)算年齡。,Option Explicit Private Sub Form_Click() Dim BirthDay As Date, Age As Integer BirthDay = InputBox(輸入出生日期, 計(jì)算年齡) Age = Year(Date) - Year(BirthDay) Print 你今年:; Age; 歲 End Sub,25,如果賦值號左端的變量為數(shù)值型或日期型等非字符型變量,輸入字符數(shù)據(jù) 單擊“取消”按鈕 不輸入直接按回車鍵,則系統(tǒng)都會提示出錯(cuò):,Dim x As Int
11、eger x = InputBox(輸入數(shù)組元素 + Chr(10) + 第一個(gè)元素為:, 示例, 10, 100, 100),注意,26,4.2.3 MsgBox函數(shù) 格式:MsgBox(Prompt,Button,Title,HelpFile,Context) 功能:向用戶發(fā)布提示信息,并要求用戶作出必要的響應(yīng)。 說明: (1)Prompt:必選項(xiàng)。字符串表達(dá)式,對話框中的提示信息。 (2)Button:指定顯示按鈕的數(shù)目及形式,使用的圖標(biāo)樣式,這是一個(gè)由4個(gè)數(shù)值常量組成的式子,形式為c1+c2+c3+c4,用于決定信息框中按鈕的個(gè)數(shù)和類型以及出現(xiàn)在信息框中的圖標(biāo)類型,各個(gè)參量的可選值及其
12、功能; 詳見P.62表4.2 (3)Title:對話框標(biāo)題欄的顯示信息。,27,MsgBox 需要重新來一次?, 2 + 32 + 256 + 4096, 詢問,MsgBox 數(shù)據(jù)非法,請重輸!,1 + 16 + 0 + 4096, 警告,舉 例,28,方法一: 發(fā)布提示信息,無須用戶響應(yīng),在程序中作為獨(dú)立語句存在,不加括號; 例: MsgBox 非法數(shù)據(jù)!, , 警告,如果省略其中參數(shù),逗號不能省略,MsgBox函數(shù)的用法,方法二: 需要用戶響應(yīng),和普通函數(shù)調(diào)用方法相同。 例: Response=MsgBox(真的刪除該項(xiàng)嗎?,4+48,提示信息) If Response=vbYes The
13、n Else End If,29,4.3 分支結(jié)構(gòu)與分支結(jié)構(gòu)語句,4.3.1 If-Then-Else- End If語句 4.3.2 Select- Case-End Select語句,30,1、 If-Then-Else語句 格式1:If Then Else End If,4.3.1 If-Then-Else- End If語句,邏輯變量、關(guān)系表達(dá)式、邏輯表達(dá)式,邏輯框圖:,功能: 如果條件成立,則執(zhí)行A組語句,否則執(zhí)行B組語句。,說明: If和End If語句成對出現(xiàn),缺一不可; Else和B組語句部分可以省略,當(dāng)條件不成立時(shí),直接執(zhí)行End If的后繼語句;,31,Private Su
14、b cmdCalculate_Click() Dim x as Single x=Val(text1.text) If x= 0 Then Text2.text = Str(Sqr(x) Else Text2.text = 數(shù)據(jù)小于0,錯(cuò)誤! End If End Sub,Private Sub cmdExit_Click() End End Sub,Private Sub cmdClear_Click() Text1.Text = Text2.Text = Text1.SetFocus End Sub,例:從鍵盤輸入一個(gè)數(shù),求它的平方根。,縮格輸入,32,例:計(jì)算分段函數(shù)y的值。,Priva
15、te Sub cmdCalculate_Click() Dim x As Single,y As Single x=Val(Text1.Text) If x = 0 Then y = 2*Sqr(x+7)-6 Else y = 5*x+Exp(x)-2 End If Text2.Text=Str(y) End Sub,cmdCalculate,33,格式2:單行If-Then-Else語句 If Then Else 說明: (1)在A組語句和B組語句都只有一個(gè)語句時(shí),可使用該格式; (2)End If語句省略。 例:上例可改寫為以下程序段。,Private Sub cmdCalculate_C
16、lick() Dim y As Single,x As Single x=Val(Text1.Text) If x = 0 Then y = 2*Sqr(x+7)-6 Else y = 5*x+Exp(x)-2 Text2.Text=Str(y) End Sub,34,格式3: If Then End If 格式4: If Then ,邏輯框圖,35,2.嵌套的If結(jié)構(gòu) 在If語句的“語句塊”中包含另一個(gè)If語句,叫做嵌套的If結(jié)構(gòu)。,If Then 外層 If Then 內(nèi)層 Else If then Else 最內(nèi)層 End If Else If Then End If End If,用于
17、解決有多種情況的問題,36,例:輸入三角形的三邊a、b、c,求三角形的面積,P 64 例4-1,a0 and b0 and c0,a+bc and b+ca and a+cb,37,Private Sub cmdCalculate_Click() Dim a As Single,b As Single,c As Single,p As Single,s As Single a=Val(Text1.Text) b=Val(Text2.Text) c=Val(Text3.Text) If (1) Then If a+bc And b+ca And c+ab Then p=(a+b+c)/2 s=S
18、qr(p*(p-a)*(p-b)*(p-c) Text4.Text=Str(s) Else Text4.Text=“不能構(gòu)成三角形” End If Else Text4.Text=“邊長不能小于0” End If End Sub,計(jì)算公式:,其中:,a0 And b0 And c0,38,例:計(jì)算分段函數(shù)y的值。,Private Sub cmdCalculate_Click() Dim x As Single,y As Single x=Val(Text1.Text) If x0 Then y=1/(x-5) Else If x5 Then y=3*x2+4*x+5 Else y=Log(x)
19、 End If End If Text2.Text=Str(y) End Sub,39,例:輸入分?jǐn)?shù)并判斷等級分。計(jì)算規(guī)則如下: 分?jǐn)?shù) 100-90 89-80 79-70 69-60 60 等級分 A B C D E,Private Sub Text1_KeyPress(KeyAscii As Integer) Dim Score As Integer, Degree As String If KeyAscii = 13 Then Score = Val(Text1.Text) If Score = 90 And Score = 80 Then Degree = B Else If Scor
20、e = 70 Then Degree = C Else If Score = 60 Then Degree = D Else Degree = E End If End If End If End If Text2.Text = Degree End If End Sub,缺點(diǎn): 嵌套層次過多,結(jié)構(gòu)不清晰,容易出錯(cuò)。,從文本框取數(shù)據(jù),向文本框放數(shù)據(jù),40,3、多分支If-Then-ElseIf語句 格式: If Then ElseIf Then ElseIf Then Else End If,功能: -對條件自上而下依次判斷,若條件i成立,則執(zhí)行相應(yīng)的Ai組語句; -若所有條件都不成立,則執(zhí)行
21、An+1組語句。 -無論執(zhí)行了哪個(gè)語句塊,都將執(zhí)行End If的后繼語句。,41,(1)該語句結(jié)構(gòu)可以解決多分支問題,只有一個(gè)End If語句,避免If語句嵌套層數(shù)過多的情況; (2)Else語句可以省略; (3)該結(jié)構(gòu)是一個(gè)單出口的結(jié)構(gòu),即只會執(zhí)行一組語句,若條件中有兩個(gè)成立,則按語句的順序執(zhí)行前面的一組語句。,說 明,42,Private Sub Text1_KeyPress(KeyAscii As Integer) Dim Score As Integer, Degree As String If KeyAscii = 13 Then Score = Val(Text1.Text) If
22、 Score = 90 And Score = 80 Then Degree = B ElseIf Score = 70 Then Degree = C ElseIf Score = 60 Then Degree = D Else Degree = E End If Text2.Text = Degree End If End Sub,特點(diǎn): 結(jié)構(gòu)清晰。,將上例用If-Then-ElseIf語句改寫:,90Score=80 ?,43,格式:Select Case Case Case Case Case Else End Select,功能: 計(jì)算測試表達(dá)式的值,自上而下檢查測試條件; 若表達(dá)式
23、的值符合測試 i,則執(zhí)行相應(yīng)的語句塊 i; 若所有條件都不成立,則執(zhí)行語句塊n+1。無論執(zhí)行了哪個(gè)語句塊,都將執(zhí)行End Select的后繼語句。,4.3.2 多分支Select-Case-End Select語句,44,(1)測試表達(dá)式可以是算術(shù)表達(dá)式或字符表達(dá)式; (2)測試條件有四種形式: 常量,如2、3、“A”等 閉區(qū)間,如3 To 78、“B” To“H”等 開區(qū)間,如Is20、 Is“P”等 以上三種形式的組合,以逗號間隔,條件組合是或的關(guān)系,不能表示與的關(guān)系 (3)Case Else語句部分可以省略; (4)以End Select語句結(jié)束; (5)該結(jié)構(gòu)是一個(gè)單出口的結(jié)構(gòu),即只會
24、執(zhí)行一個(gè)語句塊,若條件中有兩個(gè)成立,則按語句的順序執(zhí)行前面的語句塊。,說 明,45,例:將上例用Select Case語句改寫。,Private Sub Text1_KeyPress(KeyAscii As Integer) Dim Score As Integer, Degree As String If KeyAscii = 13 Then Score = Val(Text1.Text) Select Case Score Case 90 To 100 Degree = A Case 80 To 89 Degree = B Case 70 To 79 Degree = C Case 60
25、To 69 Degree = D Case Is60 Degree = E End Select Text2.Text = Degree End If End Sub,46,練習(xí):鍵盤輸入三個(gè)數(shù),將它們從大到小依次排列輸出。,Private Sub Form_Click() Dim a As Integer, b As Integer, c As Integer, temp As Integer a = InputBox(輸入a, 順序輸出) b = InputBox(輸入b, 順序輸出) c = InputBox(輸入c, 順序輸出) If a c Then Print a, b, c El
26、se Print a, c, b End If End Sub,保證a為a,b兩數(shù)中的大值,47,分支結(jié)構(gòu)的適用情況,驗(yàn)證用戶輸入數(shù)據(jù)的合法性 分段函數(shù)計(jì)算 用于區(qū)分等級 其他須根據(jù)條件不同執(zhí)行不同操作的情況,48,4.4 循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句,4.4.1 Do-loop循環(huán)結(jié)構(gòu)語句(條件循環(huán)) 4.4.2 For-Next 循環(huán)結(jié)構(gòu)語句(計(jì)數(shù)循環(huán)) 4.4.3 循環(huán)嵌套,49,由一定的條件控制,反復(fù)執(zhí)行某個(gè)程序段的程序結(jié)構(gòu)稱為循環(huán)結(jié)構(gòu)。 用于解決一些需要重復(fù)進(jìn)行某些操作的問題。 循環(huán)要素: s End Sub,實(shí)現(xiàn)累加,56,格式二: Do Loop While ,執(zhí)行步驟: 1 執(zhí)行循環(huán)
27、體; 2 判斷條件是否成立。如果條件成立,轉(zhuǎn)向第 1 步 3 條件不成立,則結(jié)束循環(huán),執(zhí)行Loop語句的后繼語句。,當(dāng)型循環(huán),57,格式三 Do Until Loop,執(zhí)行步驟: 1 判斷條件是否成立。如果條件成立,轉(zhuǎn)向第4步 2 執(zhí)行循環(huán)體; 3 轉(zhuǎn)向執(zhí)行第 1 步; 4 執(zhí)行Loop語句的后繼語句。,直到型循環(huán),58,格式四 Do Loop Until ,執(zhí)行步驟: 1 執(zhí)行循環(huán)體; 2 判斷條件是否成立。如果條件不成立,轉(zhuǎn)向第 1 步,若條件成立,則執(zhí)行 第3步 3 執(zhí)行Loop語句的后繼語句。,直到型循環(huán),59,(1)While 短語總是在條件成立時(shí),繼續(xù)進(jìn)行循環(huán);條件不成立時(shí),結(jié)束循
28、環(huán)。因此用于“當(dāng)型”循環(huán); (2)Until 短語總是在條件不成立時(shí),執(zhí)行循環(huán)體;條件成立時(shí),則結(jié)束循環(huán)。因此稱為“直到型”循環(huán); (3)上述兩條短語是可以相互轉(zhuǎn)換的。,總 結(jié),Do While i10 print “hello” i=i+1 Loop,Do Until i=10 print “hello” i=i+1 Loop,60,格式五(特殊形式): Do Loop,執(zhí)行過程:反復(fù)執(zhí)行循環(huán)體。 該結(jié)構(gòu)稱為“死循環(huán)“,在循環(huán)體內(nèi)必須通過 Exit Do 語句強(qiáng)制退出循環(huán)體。 Exit Do語句一般與If-then語句結(jié)合使用,即當(dāng)滿足某一條件時(shí),才強(qiáng)制退出循環(huán)。 If Then Exit
29、Do,Loop后續(xù)語句,Do print “hello” i=i+1 If i=10 then Exit Do Loop,61,(1)Do和Loop為循環(huán)結(jié)構(gòu)關(guān)鍵字,必須成對出現(xiàn),缺一不可; (2)循環(huán)體為可執(zhí)行語句組成,可以嵌套分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu); (3)語句 Exit Do 用于無條件退出循環(huán),可在任意Do-Loop語句結(jié)構(gòu)的循環(huán)體中出現(xiàn)。 (4)使用循環(huán)結(jié)構(gòu),一定要避免死循環(huán)的出現(xiàn)。,Do-Loop語句使用說明,62,算法分析:求最大公約數(shù)的常用方法是 輾轉(zhuǎn)相除法。,例:求兩個(gè)數(shù)的最大公約數(shù)。,P 68 例4-3,18,10,M N R,8,10,8,2,8,2,0,2,0,R=8,R=
30、2,R=0,M=2即最大公約數(shù),63,在該例中,我們使用了三個(gè)變量,分別表示被除數(shù)(m)、除數(shù)(n)及余數(shù)(r)。,Do r=m Mod n m=n n=r Loop Until r=0,最大公約數(shù)是( )?,64,由于輸入的數(shù)據(jù)M和N要求是自然數(shù),在程序中應(yīng)加入對數(shù)據(jù)的合法性進(jìn)行檢驗(yàn)的部分; 考慮到程序的應(yīng)用范圍,數(shù)據(jù)類型可選用長整型。,問題分析及界面設(shè)計(jì),65,Private Sub Command1_Click() Dim m As Long, n As Long, r As Long m = Val(Text1.Text) 取數(shù)據(jù)M n = Val(Text2.Text) 取數(shù)據(jù)N I
31、f m Int(m) Or m Int(n) Or n 1 Then Text3.Text = 數(shù)據(jù)錯(cuò)誤! Else Do 求最大公約數(shù) r = m Mod n m = n n = r Loop Until r = 0 Text3.Text = CStr(m) 輸出最大公約數(shù) End If End Sub,Private Sub Command2_Click() Text1.Text = Text2.Text = Text3.Text = End Sub,Private Sub Command3_Click() End End Sub,檢驗(yàn)數(shù)據(jù)合法性,Mod 前后加空格,66,例:將十進(jìn)制數(shù)轉(zhuǎn)
32、換成二進(jìn)制。,算法分析:十進(jìn)制向二進(jìn)制轉(zhuǎn)換, 采取的是除2取余法。,解決這類問題必須考慮的是如下幾點(diǎn): (1)需要重復(fù)運(yùn)行的操作除2取余 (2)終止循環(huán)的條件商為0,67,注意: 在循環(huán)控制條件中必須出現(xiàn)變量,且該變量在循環(huán)體中一定要改變值,否則會造成“死循環(huán)”,即無休止的循環(huán)。 若在運(yùn)行程序過程若出現(xiàn)“死循環(huán)”,用Ctrl+Break可以強(qiáng)制終止程序的執(zhí)行。,s = Cstr(r) Next i Print i=; i End Sub,執(zhí)行本程序,窗體上將顯示:1 3 5 7 9 i=11。它表明循環(huán)一共執(zhí)行了5次,退出循環(huán)時(shí),i的取值為11。,例:請寫出窗體上打印的內(nèi)容,以及循環(huán)執(zhí)行的次數(shù)
33、。,P 70,75,循環(huán)控制變量主要是用于控制循環(huán)的執(zhí)行次數(shù), 但我們通過 合理的設(shè)置,可以在循環(huán)體中巧妙加以利用,以提高程序的效率.,分析:這個(gè)式子有現(xiàn)成的求和公式,在這里主要借助該例體現(xiàn)一下在循環(huán)體中計(jì)數(shù)變量的應(yīng)用。 設(shè)計(jì)數(shù)變量為i,初值為1,終值為100,步長值為1,可省略。i從1變化到2、3、4、100,正好和式子中的通項(xiàng)變化一致。,S=0 For i=1 To 100 S=S+i Next i,S=0 For i=100 To 1 Step -1 S=S+i Next i,例:求S=1+2+3+100。,S=0:n=0 For i=1 To 100 n=n+1 S=S+n Next
34、i,76,寫出下列程序的運(yùn)行結(jié)果,Private Sub Form_Click() Dim p As Integer, i As Integer, n As Integer p = 2: n = 20 For i = 1 To n Step p p = p + 2 n = n - 3 i = i + 1 If p = 10 Then Exit For Next i Print i, p, n End Sub,77,分析:這類問題沒有什么算法,只有將所有情況列舉然后檢查得分情況,直到發(fā)現(xiàn)答案為止。設(shè)該生共答對i道題,答錯(cuò)(26-i)道題,如果 i*8-(26-i)*5=0 那么i就是答案。i的變
35、化范圍是1-26。一旦找到答案,可以立即結(jié)束循環(huán)。,窮舉法要點(diǎn): -通過循環(huán)語句,遍歷所有可能的情況; -在循環(huán)體內(nèi)通過條件語句,將符合條件的情況找出來。,例:某試卷有26個(gè)問題,答對一題得8分,答錯(cuò)一題扣5分,某學(xué)生 回答了全部26個(gè)問題,總分為0分,問他答對幾道題,答錯(cuò)幾道題。,Private Sub Form_Click() Dim i As Integer For i = 1 To 26 If i * 8 - (26 - i) * 5 = 0 Then Exit For Next i Print 答對; i; 道, 答錯(cuò); 26 - i; 道 End Sub,條件(關(guān)系表達(dá)式),78,
36、例4_5 從字母數(shù)字組成的字符串中找出所有的大寫字母并逆序輸出,79,一、界面設(shè)計(jì)(如上圖) 二、算法設(shè)計(jì) 由題意,所需執(zhí)行的操作應(yīng)該是:依次判斷字符串中的每一個(gè)字符是否是大寫字母,若是,則取出放入結(jié)果字符串中。 考慮通過在一個(gè)循環(huán)結(jié)構(gòu)里面嵌套一個(gè)判斷結(jié)構(gòu)實(shí)現(xiàn),因重復(fù)執(zhí)行判斷的次數(shù),即字符串的長度len(s)已知,則循環(huán)結(jié)構(gòu)用FOR語句實(shí)現(xiàn); 判斷一個(gè)字符是否是大寫字母,可先將單個(gè)字符從字符串中取出Mid(s,i,1),并將該字符直接與“A”、”Z”字符進(jìn)行比較,應(yīng)大于等于“A” ,并同時(shí)小于等于”Z”x=“A” AND x=“Z”; 要實(shí)現(xiàn)逆序,即將最新獲得的大寫字母字符,連接在已獲得的結(jié)果
37、字符串的前面t=x 是素?cái)?shù)! Else Print x; 不是素?cái)?shù)! End If,i = x,錯(cuò)誤程序 For i=2 To x-1 If x Mod i=0 Then Print x;不是素?cái)?shù) Else Print x=;是素?cái)?shù) End If Next i,其實(shí)不用整除到X-1,整除到Sqr(X),即可判斷,82,4.4.3 循環(huán)的嵌套 所謂循環(huán)的嵌套,是指在循環(huán)結(jié)構(gòu)中包含另一個(gè)循環(huán)結(jié)構(gòu)。條件循環(huán)和計(jì)數(shù)循環(huán)可以相互嵌套。,83,例:在窗體上按行依次打印1到10,每個(gè)數(shù)字打印10遍。 分析:這是一個(gè)典型的需要用二重循環(huán)結(jié)構(gòu)的例子,外層用于控制打印數(shù)字的個(gè)數(shù),內(nèi)層控制每個(gè)數(shù)字打印的遍數(shù)。,Pr
38、ivate Sub Form_cliclk() Dim i as integer,j as integer For i=1 to 10 For j=1 to 10 Print i; Next j Print Next I End Sub,問題: 在執(zhí)行整個(gè)程序中 print i 語句共執(zhí)行了多少次?,打印10個(gè)數(shù)字,每個(gè)數(shù)字打印10遍,換行,84,(1)內(nèi)層循環(huán)必須完全包含在外層循環(huán)之中,不能交叉; (2)內(nèi)層循環(huán)中還可以嵌套循環(huán)結(jié)構(gòu),但建議不要使用多層循環(huán),解決一般問題最多需要三重循環(huán); (3)在多重DO-LOOP循環(huán)中,若有EXIT DO語句,則只會強(qiáng)制退出該語句所在的循環(huán),并執(zhí)行LOOP
39、的后續(xù)語句,并不會退出所有的循環(huán)。 (4)在多重FOR-NEXT循環(huán)中,若有EXIT FOR語句,則只會強(qiáng)制退出該語句所在的循環(huán),并執(zhí)行NEXT的后續(xù)語句,并不會退出所有的循環(huán)。,說 明,85,4.5 程序示例,86,例:產(chǎn)生10個(gè)2050隨機(jī)整數(shù),打印在窗體上,并指出最大值和最小值。,分析: 1. 要求得到10個(gè)隨機(jī)數(shù),用記數(shù)循環(huán)FOR語句實(shí)現(xiàn)。 2. 產(chǎn)生隨機(jī)整數(shù)的方法是 x = Int(上界 -下界+1)*Rnd)+下界 必須和Randomize語句配合使用。 3. 要求出最大值和最小值,則每產(chǎn)生一個(gè)隨機(jī)數(shù),即與已知的最大數(shù)、最小數(shù)比較,若它大于已知的最大數(shù),則它是新的最大數(shù);若它小于已
40、知的最小數(shù),則它是新的最小數(shù)。,87,Private Sub Form_Click() Dim i As Integer, x As Integer, Dim max As Integer, min As Integer For i = 1 To 10 x = Int(Rnd * 31) + 20 Print x; Next I Print Print max=; max Print min=; min End Sub,max = 0: min = 51,If max x Then min = x,88,Private Sub Form_Click() Dim S As Long, i As
41、Integer Dim j As Integer, fact As Long For i = 1 To 10 fact = 1 For j = 1 To i fact = fact * j Next j S = S + fact Next i Print s=; S End Sub,Private Sub Form_Click() Dim S As Long, i As Integer Dim fact As Long fact = 1 For i = 1 To 10 fact = fact * i S = S + fact Next i Print s=; S End Sub,問題:這兩段程序的功能分別是什么?,請注意多重循環(huán)中賦初值語句的位置。,89,分析: 設(shè)要解的方程為f(x)=0,并已知一個(gè)不夠精確的初始解X0,則有牛頓迭代公式:Xn+1=Xn-f(Xn)/f(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供電設(shè)備考試題及答案
- 妊娠FAOD的遺傳咨詢與產(chǎn)前診斷新策略
- 女性健康服務(wù)中的營銷策略
- 醫(yī)師考試視頻題目及答案
- 2025年大學(xué)工商管理(市場營銷)試題及答案
- 2025年中職循環(huán)農(nóng)業(yè)生產(chǎn)與管理(有機(jī)肥生產(chǎn)技術(shù))試題及答案
- 多組學(xué)分析指導(dǎo)的腫瘤癥狀精準(zhǔn)支持策略
- 2025年中職(眼視光與配鏡)眼鏡加工技術(shù)綜合測試試題及答案
- 2025年大學(xué)數(shù)字媒體技術(shù)(數(shù)字媒體理論)試題及答案
- 2025年大學(xué)電氣技術(shù)應(yīng)用(電氣系統(tǒng)設(shè)計(jì))試題及答案
- 員工韌性能力培養(yǎng)-洞察及研究
- 繪本制作培訓(xùn)課件
- alc墻板安裝培訓(xùn)課件
- 2025年7月遼寧省普通高中學(xué)業(yè)水平合格性考試生物試題(原卷版)
- 抖音直播違規(guī)考試題及答案
- T/CAEPI 34-2021固定床蜂窩狀活性炭吸附濃縮裝置技術(shù)要求
- 購銷合同解除退款協(xié)議書
- 掛名合同協(xié)議書
- 2024年國家公務(wù)員考試國考中國人民銀行結(jié)構(gòu)化面試真題試題試卷及答案解析
- 商品混凝土實(shí)驗(yàn)室操作手冊
- 裝飾裝修工程監(jiān)理月報(bào)
評論
0/150
提交評論