程序控制結(jié)構(gòu)(修訂).ppt
《程序控制結(jié)構(gòu)(修訂).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《程序控制結(jié)構(gòu)(修訂).ppt(35頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第 5 章 程序控制結(jié)構(gòu),順序結(jié)構(gòu) 分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu),51 控制結(jié)構(gòu)的流程圖表示,511 流程圖 用于描述結(jié)構(gòu)化程序的圖形。,5.1.2 控制結(jié)構(gòu)的流程圖表示,一、順序結(jié)構(gòu),,語(yǔ)句A,,語(yǔ)句B,,,三種結(jié)構(gòu)中最基本的結(jié)構(gòu),由一串按順序排列的語(yǔ)句組成。運(yùn)行時(shí),按語(yǔ)句出現(xiàn)的先后次序執(zhí)行,例如從語(yǔ)句A順序執(zhí)行到語(yǔ)句B。,二、選擇結(jié)構(gòu),選擇結(jié)構(gòu)(又稱分支結(jié)構(gòu)) ,通過(guò)“條件”判斷后進(jìn)行分支,滿足條件時(shí)執(zhí)行語(yǔ)句A,否則(不滿足條件時(shí))執(zhí)行語(yǔ)句B。,三、循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)通過(guò)“條件”判斷,滿足條件時(shí)重復(fù)執(zhí)行循環(huán)體語(yǔ)句(一條語(yǔ)句或多條語(yǔ)句),不滿足條件時(shí)跳出循環(huán)(出口)。,三種基本結(jié)構(gòu)的共同特點(diǎn)是: (1
2、) 只有單一的入口和單一的出口; (2) 結(jié)構(gòu)中的每個(gè)部分都有被執(zhí)行的可能; (3) 結(jié)構(gòu)內(nèi)不應(yīng)出現(xiàn)永不終止的死循環(huán); VB語(yǔ)言完全支持結(jié)構(gòu)化的程序設(shè)計(jì)方法,并提供了相應(yīng)的語(yǔ)言成分。,5.2 算法,在計(jì)算機(jī)學(xué)科中,算法指的是用于完成某個(gè)處理任務(wù)的一組有序而明確的、可以由計(jì)算機(jī)執(zhí)行的操作(或指令),它能在有限時(shí)間內(nèi)執(zhí)行結(jié)束并產(chǎn)生結(jié)果。 算法的特征 (1)確定性 確定性是指算法中的每個(gè)步驟必須確切無(wú)誤,即每一步運(yùn)算應(yīng)該執(zhí)行何種操作必須是清楚明確的,無(wú)二義性。 (2)有窮性 有窮性是指一個(gè)算法經(jīng)有限步運(yùn)算后能夠終止。 (3)可行性 可行性是指算法的每個(gè)步驟都是計(jì)算機(jī)可以執(zhí)行的,并能得到確定的
3、結(jié)果。 (4)輸出性 一個(gè)算法可以沒(méi)有輸入,但至少要有一個(gè)輸出。,5. 2. 3 算法的表示,1文字表示 2流程圖表示 3程序語(yǔ)言表示,5.3 順序結(jié)構(gòu),賦值語(yǔ)句: 其格式如:var = Var表示某個(gè)變量名或?qū)傩悦?,不能是常量,常熟符?hào)或表達(dá)式。 先計(jì)算“=”右邊表達(dá)式的值,然后將值賦給“=”左邊的變量。 “=”在條件表達(dá)式中為等號(hào),否則為賦值號(hào) 經(jīng)常使用的賦值語(yǔ)句: Sum=sum+x 累加 X=x+1 計(jì)數(shù) 不能在一條語(yǔ)句中同時(shí)給多個(gè)變量賦值,賦值語(yǔ)句中數(shù)據(jù)類型不同時(shí)的處理方法: 變量的數(shù)據(jù)類型與表達(dá)式的數(shù)據(jù)類型同為數(shù)值型,但精度不同時(shí),VB會(huì)將表達(dá)式的精度強(qiáng)制轉(zhuǎn)換成變量的精度。
4、 變量的數(shù)據(jù)類型為數(shù)值型,表達(dá)式的數(shù)據(jù)類型為字符型時(shí),自動(dòng)轉(zhuǎn)換成數(shù)值類型再賦值,但當(dāng)字符中有非數(shù)字字符或表達(dá)式為空串時(shí),則出錯(cuò)。 變量的數(shù)據(jù)類型為數(shù)值型,表達(dá)式的數(shù)據(jù)類型為邏輯型時(shí),True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0。反之,非0轉(zhuǎn)換為True,0轉(zhuǎn)換為False。 變量的數(shù)據(jù)類型為字符型,表達(dá)式的數(shù)據(jù)類型為非字符型時(shí),會(huì)自動(dòng)轉(zhuǎn)換成字符型。,【例5.1】運(yùn)行下面程序,單擊窗體,則立即窗口顯示的結(jié)果是什么? Private Sub Form_Click() Dim a As Integer, b As Boolean Dim c As Integer, d As Integer a =
5、10 / 4: b = True: c = b: d = a + c Debug.Print a, d, a = a + c End Sub 分析:10/4的結(jié)果是2.5,賦給整型變量a,根據(jù)奇進(jìn)偶不進(jìn)原則,a的值為2。True賦給整型變量c,轉(zhuǎn)換為-1,從而變量d的結(jié)果為2 1 = 1。由于a的值為2,a + c的值為1,所以a = a + c的結(jié)果為False。立即窗口顯示的結(jié)果是: 2 1 False,5.4 選擇結(jié)構(gòu),選擇結(jié)構(gòu)又叫分支結(jié)構(gòu)。程序在運(yùn)行到分支結(jié)構(gòu)的語(yǔ)句塊時(shí),可以根據(jù)條件的不同,選擇不同的執(zhí)行方向。 If 語(yǔ)句 select case 語(yǔ)句,5.4.1 IF條件語(yǔ)句,單分
6、支: If Then 語(yǔ)句組 End If 雙分支: If Then 語(yǔ)句組A Else 語(yǔ)句組B End If 多分枝: If Then 語(yǔ)句組1 ElseIf Then 語(yǔ)句組2 ElseIf Then 語(yǔ)句組n Else 語(yǔ)句組n+1 End If,3If語(yǔ)句的嵌套 【例5.3】設(shè)有如下函數(shù): 從鍵盤輸入x的值,要求輸出y的值。,,,Private Sub Form_Click() Dim x As Single, y As Single x = InputBox(請(qǐng)輸入x的值:) If x 0 Then y = 1 Else If x =
7、0 Then y = 0 Else y = -1 Print x=; x, y=; y End Sub,5.4.2 條件函數(shù)(IIf函數(shù)),VB提供了一個(gè)IIf函數(shù),可用來(lái)簡(jiǎn)化“If Then Else”分支結(jié)構(gòu)。 一般形式為: Var = IIf(條件表達(dá)式,True部分,F(xiàn)alse部分),注意: IIf函數(shù)中的3個(gè)參數(shù)都不能省略,而且要求“True部分”、“False部分”與結(jié)果變量的類型一致。,iif 函數(shù)與“If Then Else”語(yǔ)句或“Select Case”語(yǔ)句(見(jiàn)下一節(jié))的作用類似。,If x0 Then y = 1 Else y = - 1 End If,y = IIf
8、(x0,1,- 1),,5.4.3 Select Case語(yǔ)句,Select Case語(yǔ)句也能實(shí)現(xiàn)多分支,其基本格式為: Select Case 測(cè)試表達(dá)式 Case 表達(dá)式表列1 語(yǔ)句塊1 Case 表達(dá)式表列2 語(yǔ)句塊2 Case Else 語(yǔ)句塊n End Select,其中: “變量或表達(dá)式”可以是數(shù)值表達(dá)式或字符串表達(dá)式,也可以是一個(gè)常量或一個(gè)變量。 “表達(dá)式表列i”可以是以下三種情況之一或三種情況的混合。 (1) 以逗號(hào)隔開(kāi)的常量 例如:Case 1,4,7 Case a ,b “ (2) 由關(guān)鍵字To連接的兩個(gè)常量,表示一個(gè)閉區(qū)間。不論是數(shù)值型
9、還是字符串?dāng)?shù)據(jù),都要保證To前面的常量比后面的小。 例如:Case 1 To 10 Case a To f ,(3) 由關(guān)鍵字is表示的一個(gè)關(guān)系表達(dá)式。is是一個(gè)代詞,它代表著“變量或表達(dá)式”的值。如:Case is 15。但Case is 15 And is < 30是錯(cuò)誤的。 (4) “表達(dá)式表列i”的數(shù)據(jù)類型要與“變量或表達(dá)式”的類型相同。,5.5 循環(huán)結(jié)構(gòu),在VB中,實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語(yǔ)句有兩種,一種是For循環(huán)控制結(jié)構(gòu),另一種是Do循環(huán)控制結(jié)構(gòu)。 For循環(huán) Do循環(huán),5.5.1 For循環(huán)控制結(jié)構(gòu),For var = a To b Step c 語(yǔ)句組 Exit For
10、 語(yǔ)句組 Next var var稱為循環(huán)變量,其值必須為數(shù)值型 a稱為循環(huán)初值,b稱為循環(huán)終值, c稱為循環(huán)步長(zhǎng)。 Exit For表示當(dāng)遇到該語(yǔ)句時(shí) 退出循環(huán),執(zhí)行Next后的下一條語(yǔ)句。 Next的含義是循環(huán)變量的值增加 一個(gè)步長(zhǎng)(var = var + c),開(kāi)始下一次循環(huán)。,For循環(huán)語(yǔ)句的執(zhí)行過(guò)程是: (1) 計(jì)算初值表達(dá)式a、終值表達(dá)式b、步長(zhǎng)表達(dá)式c的值。 (2) 循環(huán)變量賦初值。 (3) 比較循環(huán)變量與終值的值。 當(dāng)步長(zhǎng)為正時(shí),若循環(huán)變量的值小于或等于終值(步長(zhǎng)為正的循環(huán)流程如圖5.14所示),轉(zhuǎn)去第(4)步,否則執(zhí)行Next后的下一條語(yǔ)句; 當(dāng)步長(zhǎng)為負(fù)時(shí),若循環(huán)變量的當(dāng)
11、前值大于或等于終值(步長(zhǎng)為負(fù)的循環(huán)流程如圖5.15所示),轉(zhuǎn)去第(4)步,否則執(zhí)行Next后的下一條語(yǔ)句。 (4) 執(zhí)行一次循環(huán)體,然后將循環(huán)變量的值增加一個(gè)步長(zhǎng),轉(zhuǎn)到第3步,重復(fù)執(zhí)行。,說(shuō)明: 無(wú)論循環(huán)執(zhí)行與否,循環(huán)變量賦初值語(yǔ)句都會(huì)被執(zhí)行,且僅執(zhí)行一次。 若初值小于終值,則步長(zhǎng)為1時(shí),Step 1可以省略;但若初值大于終值,而步長(zhǎng)為-1時(shí),Step 1不可以省略。 循環(huán)的次數(shù)可用以下公式計(jì)算: 循環(huán)次數(shù)=Int((b a)c)+1 For語(yǔ)句和Next語(yǔ)句必須成對(duì)出現(xiàn),不能單獨(dú)使用,且For語(yǔ)句必須在Next語(yǔ)句之前。 循環(huán)的初值、終值以及步長(zhǎng)的值一經(jīng)確定,則循環(huán)的執(zhí)行次數(shù)就
12、不再改變。在循環(huán)體中,改變初值、終值以及步長(zhǎng)的值,不影響循環(huán)的執(zhí)行次數(shù)。若在循環(huán)體中改變循環(huán)變量的值,則有可能影響循環(huán)的執(zhí)行次數(shù)。 當(dāng)退出循環(huán)后,循環(huán)變量的值保持退出時(shí)的值。,【例5.10】求n!(n為自然數(shù)) 由階乘的定義可知: n! = 1* 2* 3**(n-1)*n = (n-1)!*n,Private Sub Form_Click() Dim N As Integer, i As Integer, k As Single N = InputBox(輸入N:) k = 1 For i = 1 To N k = k * i 此語(yǔ)句稱為累乘器 Next i Print N; !
13、 = ; k End Sub,Private Sub Form_Click() Dim N As Integer, i As Integer, m As Integer, k As Single N = InputBox(輸入N:) k = 1:m = 1 For i = 1 To N k = k * m m = m + 1 此語(yǔ)句稱為計(jì)數(shù)器 Next i Print N; ! = ; k End Sub,操作變量,形式變量,5.5.2 Do循環(huán)控制結(jié)構(gòu),適合于循環(huán)次數(shù)事先難以確定的場(chǎng)合。,Do循環(huán)控制結(jié)構(gòu)有如下幾種格式: 格式1: Do While 循環(huán)條件 語(yǔ)句組
14、 Exit Do 循環(huán)體 語(yǔ)句組 Loop 格式1的循環(huán)流程如 圖5.17所示。,圖5.17 Do While Loop循環(huán)流程圖,格式2: Do 語(yǔ)句組 Exit Do 循環(huán)體 語(yǔ)句組 Loop While 循環(huán)條件 格式2的循環(huán)流程如圖5.18所示。 格式3: Do Until 循環(huán)條件 語(yǔ)句組 Exit Do 循環(huán)體 語(yǔ)句組 Loop 格式3的循環(huán)流程如圖5.19所示。,格式4: Do 語(yǔ)句組 Exit Do 循環(huán)體 語(yǔ)句組 Loop Until 循環(huán)條件 格式4的循環(huán)流程如圖
15、5.20所示。,圖5.20 Do Loop Until循環(huán),Do循環(huán)語(yǔ)句的功能是:當(dāng)指定的“循環(huán)條件”為True,或直到指定的“循環(huán)條件”為True之前,重復(fù)執(zhí)行語(yǔ)句組(即循環(huán)體)。,其中: (1) 格式1與格式3為先判斷后執(zhí)行,有可能一次也不執(zhí)行。格式2與格式4為先執(zhí)行后判斷,至少執(zhí)行一次。 (2) 關(guān)鍵字While用于指明條件為True時(shí),就執(zhí)行循環(huán)體內(nèi)的語(yǔ)句,Until正好相反。 (3) 當(dāng)省略While 循環(huán)條件或Until 循環(huán)條件子句時(shí),循環(huán)結(jié)構(gòu)簡(jiǎn)化為: Do 語(yǔ)句組 Exit Do 循環(huán)體 語(yǔ)句組 Loop 結(jié)構(gòu),表示無(wú)條件循環(huán),這時(shí)在循
16、環(huán)體內(nèi)應(yīng)該有Exit Do語(yǔ)句,否則為死循環(huán)。,,(4) Do循環(huán)控制結(jié)構(gòu)在使用時(shí)要注意循環(huán)條件的設(shè)置,必須保證循環(huán)在執(zhí)行有限次后能正常退出,否則將形成死循環(huán)。 (5) Exit Do語(yǔ)句表示當(dāng)遇到該語(yǔ)句時(shí),退出循環(huán),執(zhí)行Loop下面的語(yǔ)句。該語(yǔ)句一般是與If-Then語(yǔ)句配合使用,常見(jiàn)形式為: If Then Exit Do (6) 一般來(lái)說(shuō),可以使用上述幾種格式解決同一個(gè)問(wèn)題,可以取得相同的結(jié)果,只是要注意循環(huán)條件的寫法或在進(jìn)入循環(huán)之前注意給循環(huán)體中使用到的變量賦以適當(dāng)?shù)某踔怠?5.5.3 For循環(huán)與Do循環(huán)的比較,For循環(huán)結(jié)構(gòu)適用于已知循環(huán)次數(shù)的場(chǎng)合,而Do循環(huán)結(jié)構(gòu)適用于循環(huán)次數(shù)
17、不確定的場(chǎng)合。For循環(huán)結(jié)構(gòu)中,修改循環(huán)變量的值的語(yǔ)句已經(jīng)包含在語(yǔ)句結(jié)構(gòu)中,控制意圖明顯;Do循環(huán)結(jié)構(gòu)本身不修改循環(huán)變量的值,必須使用專門的語(yǔ)句修改循環(huán)變量的值,使循環(huán)能夠進(jìn)行。有的時(shí)候兩種結(jié)構(gòu)可以互相代替。,5.5.4 循環(huán)嵌套,(1) For循環(huán)的嵌套使用。除了內(nèi)外層循環(huán)不能交叉外,還要注意內(nèi)循環(huán)變量與外循環(huán)變量不能同名。例如下面的循環(huán)結(jié)構(gòu)是錯(cuò)誤的: 內(nèi)、外循環(huán)交叉 內(nèi)、外循環(huán)變量同名 For i = 1 To 5 For i = 1 To 5 For j = 1 To 6 For i = 1 To 6 Next i
18、 Next i Next j Next i,(2) 分支結(jié)構(gòu)與For循環(huán)結(jié)構(gòu)的嵌套使用。要注意if結(jié)構(gòu)的語(yǔ)句組要完全包含循環(huán)結(jié)構(gòu);同樣循環(huán)結(jié)構(gòu)的循環(huán)體也要完全包含if結(jié)構(gòu)。例如下面的嵌套使用是錯(cuò)誤的: For i = 1 To 10 if 條件表達(dá)式 Then if 條件表達(dá)式 Then For i = 1 To 10 Next i End if End if Next i,(3) Do循環(huán)的嵌套使用。使用中也同樣要注意,外層循環(huán)必須完全包含內(nèi)層循環(huán),內(nèi)層循環(huán)的結(jié)束語(yǔ)句必須在外層循環(huán)的結(jié)
19、束語(yǔ)句之前出現(xiàn),內(nèi)外層循環(huán)不得互相交叉。,(4) 分支結(jié)構(gòu)與Do循環(huán)結(jié)構(gòu)的嵌套使用。要注意If結(jié)構(gòu)的語(yǔ)句組要完全包含循環(huán)結(jié)構(gòu);同樣循環(huán)結(jié)構(gòu)的循環(huán)體也要完全包含If結(jié)構(gòu)。例如下面的嵌套使用是錯(cuò)誤的: Do While If 條件表達(dá)式 Then If 條件表達(dá)式 Then Do While Loop End If End If Loop,(5) For循環(huán)結(jié)構(gòu)與Do循環(huán)結(jié)構(gòu)的嵌套使用。要注意For循環(huán)結(jié)構(gòu)的循環(huán)體要完全包含Do循環(huán)結(jié)構(gòu);同樣Do循環(huán)結(jié)構(gòu)的循環(huán)體也要完全包含F(xiàn)or循環(huán)結(jié)構(gòu)。 例如下面的嵌套使用是錯(cuò)誤的: For i = 1 To 5 Do While Do While For i = 1 To 5 Next i Loop Loop Next i,本章小結(jié),流程圖、控制結(jié)構(gòu)的流程圖表示。 算法的概念、算法的特征及其描述。 順序結(jié)構(gòu)、不同數(shù)據(jù)類型變量的賦值。 分支結(jié)構(gòu)。 循環(huán)結(jié)構(gòu)。 不同結(jié)構(gòu)的嵌套使用。,
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 110中國(guó)人民警察節(jié)(筑牢忠誠(chéng)警魂感受別樣警彩)
- 2025正字當(dāng)頭廉字入心爭(zhēng)當(dāng)公安隊(duì)伍鐵軍
- XX國(guó)企干部警示教育片觀后感筑牢信仰之基堅(jiān)守廉潔底線
- 2025做擔(dān)當(dāng)時(shí)代大任的中國(guó)青年P(guān)PT青年思想教育微黨課
- 2025新年工作部署會(huì)圍繞六個(gè)干字提要求
- XX地區(qū)中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 支部書記上黨課筑牢清廉信念為高質(zhì)量發(fā)展?fàn)I造風(fēng)清氣正的環(huán)境
- 冬季消防安全知識(shí)培訓(xùn)冬季用電防火安全
- 2025加強(qiáng)政治引領(lǐng)(政治引領(lǐng)是現(xiàn)代政黨的重要功能)
- 主播直播培訓(xùn)直播技巧與方法
- 2025六廉六進(jìn)持續(xù)涵養(yǎng)良好政治生態(tài)
- 員工職業(yè)生涯規(guī)劃方案制定個(gè)人職業(yè)生涯規(guī)劃
- 2024年XX地區(qū)黨建引領(lǐng)鄉(xiāng)村振興工作總結(jié)
- XX中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 幼兒園期末家長(zhǎng)會(huì)長(zhǎng)長(zhǎng)的路慢慢地走