第5章VisualBasic控制結(jié)構(gòu)_第1頁
第5章VisualBasic控制結(jié)構(gòu)_第2頁
第5章VisualBasic控制結(jié)構(gòu)_第3頁
第5章VisualBasic控制結(jié)構(gòu)_第4頁
第5章VisualBasic控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第5章 Visual Basic控制結(jié)構(gòu) 5.1 算法及其描述5.2 選擇結(jié)構(gòu)5.3 循環(huán)結(jié)構(gòu)5.4 常用算法與數(shù)據(jù)結(jié)構(gòu)(一)5.1 5.1 算法及其描述算法及其描述5.1.1 5.1.1 算法的概念算法的概念所謂算法是解決問題的有序步驟。1.算法的特征算法的特征(1) 有窮性。(2) 確定性。(3) 有效性。(4) 零個或多個輸入。(5) 至少有一個輸出。2.算法的描述算法的描述(1)自然語言 文字冗長、表達不確切、二義性。(2)流程圖 圖形方法,直觀、形象、易于理解,應(yīng)用廣泛。(3)N-S圖 是流程圖的發(fā)展,去掉了流程線,算法都表示在一個矩形框內(nèi)。1.順序結(jié)構(gòu)順序結(jié)構(gòu) 在順序結(jié)構(gòu)中,算法的

2、每一步操作都是按從上到下的線性次序執(zhí)行的。2.選擇結(jié)構(gòu)選擇結(jié)構(gòu) 又稱分支結(jié)構(gòu),根據(jù)給出的條件,選擇執(zhí)行一個分支。因此,在選擇結(jié)構(gòu)中,必然包含了條件判斷。3.循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 又稱重復(fù)執(zhí)行結(jié)構(gòu)。根據(jù)給出的條件,判斷是否重復(fù)執(zhí)行某一組操作。5.1.2 35.1.2 3種基本控制結(jié)構(gòu)種基本控制結(jié)構(gòu)基本的循環(huán)結(jié)構(gòu)有兩種:當(dāng)循環(huán)和直到循環(huán)。(1)當(dāng)循環(huán):首先判斷條件是否成立,若成立,執(zhí)行循環(huán)體再判斷條件,決定是否繼續(xù)進行循環(huán);若不成立,跳過這組操作,執(zhí)行此循環(huán)結(jié)構(gòu)后面的操作。(2)直到循環(huán):首先執(zhí)行循環(huán)體,然后判斷條件是否成立,若成立,則繼續(xù)進行循環(huán)操作;若不成立,執(zhí)行此循環(huán)結(jié)構(gòu)后面的操作。 在程序設(shè)計

3、中,算法是由一系列的控制結(jié)構(gòu)構(gòu)成,每一個控制結(jié)構(gòu)又由若干個語句組成。語句是程序中有確切含義的基本單位,也是構(gòu)成程序的基本成分,程序功能是由一條條語句的執(zhí)行來實現(xiàn)的,可把語句視為命令。5.2 5.2 選擇結(jié)構(gòu)選擇結(jié)構(gòu)5.2.1 5.2.1 單行結(jié)構(gòu)條件語句單行結(jié)構(gòu)條件語句格式:If條件條件Then語句語句1Else語句語句2 如果“條件”成立(其值為True或為非0值),則執(zhí)行“語句1”;否則,執(zhí)行“語句2” 當(dāng)“Else語句2”省略時,If語句簡化為: If條件條件Then語句語句5.2.2 5.2.2 塊結(jié)構(gòu)條件語句塊結(jié)構(gòu)條件語句格式:If條件條件1 Then語句塊語句塊1ElseIf 條件

4、條件2 Then語句塊語句塊2ElseIf 條件條件3 Then語句塊語句塊3Else語句塊語句塊nEnd If 條件語句中的“條件”不但可以是邏輯表達式和關(guān)系表達式,還可以是數(shù)值表達式 “語句塊”中的語句不能與Then在同一行上,否則Visual Basic認(rèn)為這是一個單行結(jié)構(gòu)的條件語句 塊結(jié)構(gòu)條件語句必須以End If結(jié)束,而單行結(jié)構(gòu)的條件語句不需要End If 當(dāng)省略ElseIf子句和Else子句時,塊結(jié)構(gòu)條件語句簡化為: If條件條件 Then 語句塊語句塊 End If 5.2.3 5.2.3 多分支結(jié)構(gòu)多分支結(jié)構(gòu)格式:Select Case測試表達式測試表達式 Case表達式列表表

5、達式列表1 語句塊語句塊1 Case表達式列表表達式列表2 語句塊語句塊2 Case Else 語句塊語句塊nEnd Select 情況語句以Select Case開頭,以End Select結(jié)束 功能是根據(jù)“測試表達式”的值,從多個語句塊中選擇符合條件的一個語句塊執(zhí)行例例5.65.6 商店售貨,按購買貨物的多少分別給予不同優(yōu)惠折扣如下:編程計算購物款數(shù)。購物不足250元,無折扣,購物滿250元、不足500元,減價5%,計算機根據(jù)學(xué)生的答案判斷正確與否,當(dāng)結(jié)束時給出成績。購物滿500元、不足1000元,減價7.5%,購物滿1000元、不足2000元,減價10%,購物滿2000元,減價15%。分

6、析:設(shè)購物款為m,折扣為d,以上規(guī)定可表示如下:d=0 (m250)5% (250m500)7.5% (500m1000)10% (1000m2000)15% (2000m)代碼如下:Private Sub Command1_Click() Dim m As Single, d As Single m = InputBox(請輸入應(yīng)付款:) Select Case m Case Is 250 d = 0 Case Is 500 d = 0.05 Case Is 1000 d = 0.075 Case Is y,x,y)2. Choose( )函數(shù)Choose(變量(變量,值為值為1的返回值的返

7、回值,值為值為2的返回值的返回值,值為值為n的返回值的返回值) 例如,Nop是1-4的值,轉(zhuǎn)換成 + 、-、運算符的語句如下: Op= Choose(Nop,+,-,) 當(dāng)值為1,返回字符串“+”,然后放入Op變量中,值為2,返回字符串“-”,依次類推;當(dāng)Nop是1-4的非整數(shù),系統(tǒng)自動取Nop的整數(shù)再判斷;若Nop不在14之間,函數(shù)返回Null值。5.2.4 IIf( )5.2.4 IIf( )函數(shù)和函數(shù)和Choose( )Choose( )函數(shù)函數(shù) 在塊結(jié)構(gòu)條件語句中,若在塊結(jié)構(gòu)條件語句中,若“語句塊語句塊”本身又包含本身又包含條件語句結(jié)構(gòu),則稱為條件語句嵌套。條件語句結(jié)構(gòu),則稱為條件語句

8、嵌套。 5.2.5 5.2.5 嵌套的選擇結(jié)構(gòu)嵌套的選擇結(jié)構(gòu)例例5-7給出給出a、b、c的值,判斷它們能否構(gòu)成三角形。若能的值,判斷它們能否構(gòu)成三角形。若能構(gòu)成三角形,計算此三角形的面積。構(gòu)成三角形,計算此三角形的面積。 例題解析:若例題解析:若a、b、c能構(gòu)成三角形,則必定有下列條件同能構(gòu)成三角形,則必定有下列條件同時成立:時成立: a0 And b0 And c0,即,即a、b、c均為正數(shù)。均為正數(shù)。 abc And acb And bca,即三角形任意兩,即三角形任意兩條邊之和大于第條邊之和大于第3邊。邊。 程序代碼如下:程序代碼如下:Private Command1_ClickDim

9、a As Single,b As Single,c As SingleDim p As Single,s As SingleaVal(InputBox(請輸入第請輸入第1個數(shù)個數(shù))bVal(InputBox(請輸入第請輸入第2個數(shù)個數(shù))cVal(InputBox(請輸入第請輸入第3個數(shù)個數(shù))Flag0If a0 And b0 And c0 ThenIf abc And bca And acb ThenFlag1p(abc)/2sSqr(p*(pa)*(pb)*(pc)Print 三角形的三邊長和面積依次為三角形的三邊長和面積依次為;a,b,c,sEnd If End If If Flag0 T

10、hen Print 這這3個數(shù)不能構(gòu)成三角形個數(shù)不能構(gòu)成三角形End Sub 5.3 5.3 循循 環(huán)環(huán) 結(jié)結(jié) 構(gòu)構(gòu)5.3.1 For5.3.1 ForNextNext循環(huán)循環(huán) For 循環(huán)變量循環(huán)變量初值初值 To 終值終值 Step步長步長循環(huán)體循環(huán)體Exit ForNext循環(huán)變量循環(huán)變量 0 初值終值 =1 時,可省略終值=0 死循環(huán)循環(huán)次數(shù)(1)Int終值 初值步長要注意:要注意:v 出了循環(huán),循環(huán)控制變量值的問題。 例程序段: For i=2 To 13 Step 3 循環(huán)執(zhí)行次數(shù) Print i , 輸出 i的值分別為: Next i 2 5 8 11 Print : Print

11、 “I=“, i 出了循環(huán)輸出為: I=14v 在循環(huán)體內(nèi)對循環(huán)控制變量可多次引用;但最好不要對其賦值,否則影響原來的循環(huán)控制規(guī)律。13 23(1)4Int步長 例5.9 輸入一個班的學(xué)習(xí)成績,統(tǒng)計其中及格的學(xué)生人數(shù),并計算出全班的平均分?jǐn)?shù)。學(xué)生人數(shù)不定,輸入負(fù)數(shù)時截止。設(shè)全班人數(shù)不超過50人。 Private Sub Command1_Click() Dim Score As Single, PassN As Integer, n As Integer Dim i As Integer, Sum As Single Text1 = : Text2 = : Text3 = Sum = 0: P

12、assN = 0: n = 0 For i = 1 To 50 統(tǒng)計人數(shù)大于50時停止循環(huán) Score = Val(InputBox(請輸入學(xué)生成績:) If Score = 60 Then PassN = PassN + 1 統(tǒng)計及格人數(shù) n = n + 1 統(tǒng)計總?cè)藬?shù) Sum = Sum + Score 統(tǒng)計總分 End If Next i Text1.Text = Str$(n) Text2.Text = Str$(PassN) Text3.Text = Str$(Sum / n) End Sub5.3.2 While5.3.2 WhileWendWend循環(huán)循環(huán)形式如下: While

13、條件 循環(huán)體 Wend功能:當(dāng)給定的“條件”為True時,執(zhí)行循環(huán)體;否則,跳出循環(huán)體,執(zhí)行Wend后面的語句。 注意:(1)該循環(huán)結(jié)構(gòu)先測試條件,然后決定是否執(zhí)行循環(huán)體。(2)如果“條件”總成立,則構(gòu)成死循環(huán),所以,在循環(huán)體中應(yīng)該包含有修改“條件”的操作,使循環(huán)能正常結(jié)束。(3)當(dāng)循環(huán)可以嵌套,不允許交叉。每個Wend和最近的While相匹配。 例5.11(補) 小紅今年12歲,她父親比她大30歲,編程計算她的父親在幾年后比她年齡大一倍,那時父女的年齡各為多少?代碼如下:Private Sub Form_Click() Dim age As Integer age = 12 While ag

14、e * 2 age + 30 age = age + 1 Wend Print 經(jīng)過; age - 12; 年 Print 小紅父女的年齡分別是:; age + 30; 和; ageEnd Sub5.3.3 Do5.3.3 DoLoopLoop循環(huán)循環(huán)形式1: DoWhile|Until條件條件 循環(huán)體循環(huán)體 Exit DoLoop 形式2:Do 循環(huán)體循環(huán)體 Exit DoLoopWhile|Until條件條件u功能功能:當(dāng)循環(huán)“條件”為真(While條件)或直到指定的循環(huán)結(jié)束“條件”(Until條件)為真之前重復(fù)執(zhí)行“循環(huán)體”。 例5-13輸入兩個正整數(shù),求它們的最大公約數(shù)。程序代碼如下:

15、Private Sub Form_Click() Dim m%,n%,r%,t% mInputBox(請輸入第1個整數(shù)) nInputBox(請輸入第2個整數(shù)) If mn Then tm:mn:nt Do rm Mod n mn nr Loop Until r0 Print 最大公約數(shù)是:;mEnd Sub 5.3.4 5.3.4 多重循環(huán)多重循環(huán) 當(dāng)一個循環(huán)結(jié)構(gòu)的循環(huán)體內(nèi)含有另一個循環(huán)結(jié)構(gòu)時,稱當(dāng)一個循環(huán)結(jié)構(gòu)的循環(huán)體內(nèi)含有另一個循環(huán)結(jié)構(gòu)時,稱為為循環(huán)嵌套循環(huán)嵌套,又稱,又稱多重循環(huán)多重循環(huán)。處于內(nèi)層的循環(huán)叫。處于內(nèi)層的循環(huán)叫內(nèi)循環(huán)內(nèi)循環(huán),處,處于外層的循環(huán)叫于外層的循環(huán)叫外循環(huán)外循環(huán)。 對

16、于循環(huán)的嵌套,要注意以下事項:對于循環(huán)的嵌套,要注意以下事項:內(nèi)循環(huán)變量與外循環(huán)變量不能同名;內(nèi)循環(huán)變量與外循環(huán)變量不能同名;外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),反之則可以。不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),反之則可以。例例5-15編寫程序,輸出編寫程序,輸出100200之間的所有素數(shù)。之間的所有素數(shù)。程序代碼如下:程序代碼如下:Private Sub Form_Click() Dim Number As Integer,x As Integer,i As Integer,k As Integer Number0 For x101 To

17、 199 Step 2 i2:kInt(x/2) Do While ik If x Mod i0 Then Exit Do ii1 Loop If ik Then NumberNumber1 If Number Mod 50 Then Print End If Next xEnd Sub 5.4 5.4 常用算法與數(shù)據(jù)結(jié)構(gòu)常用算法與數(shù)據(jù)結(jié)構(gòu)算法是對某個問題求解過程的描述。5.4.1 5.4.1 累加、連乘累加、連乘 100以內(nèi)的自然數(shù)之和以內(nèi)的自然數(shù)之和Private Sub Command1_Click() Sum 0 For i 1 To 100 Sum Sum i Next i Prin

18、t SumEnd Sub10以內(nèi)的偶數(shù)的乘積以內(nèi)的偶數(shù)的乘積 Private Sub Form_Click() p 1 For i 2 To 10 Step 2 p p * i Next i Print pEnd Sub5.4.2 5.4.2 輸出定位輸出定位Private Sub Form_Click() FontSize20 Print Tab(14);乘積表乘積表 FontColor&HFF& FontSize12 Print:Print *, For x3 To 12 Step 3 Print x, Next x Print:Print For y15 To 20 Fo

19、ntColor&HFF& Print y, FontColor&H80000012& For x3 To 12 Step 3 Print x*y, Next x Print Next yEnd Sub利用利用Tab等定位函數(shù)修飾輸出。等定位函數(shù)修飾輸出。 例例5-16編寫程序,打印如圖編寫程序,打印如圖5-26所示的乘積表。所示的乘積表。5.4.3 5.4.3 窮舉法窮舉法 “窮舉法”也稱為“枚舉法”或“試湊法”,即將可能出現(xiàn)的各種情況一一測試,判斷是否滿足條件,一般采用循環(huán)來實現(xiàn)。 例5-18 將1張1元鈔票換成1分、2分和5分硬幣,每種至少8枚,問有多少種方案?Private Sub Form_Click() Dim i As Integer, j As Integer, k As Integer Dim count As Integer For i 8 To 44 For j 8 To 26 For k 8 To 15 If (i j * 2 k * 5 100) Then count count 1 N

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論