程序控制結構(修訂).ppt_第1頁
程序控制結構(修訂).ppt_第2頁
程序控制結構(修訂).ppt_第3頁
程序控制結構(修訂).ppt_第4頁
程序控制結構(修訂).ppt_第5頁
已閱讀5頁,還剩30頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第 5 章 程序控制結構,順序結構 分支結構 循環結構,51 控制結構的流程圖表示,511 流程圖 用于描述結構化程序的圖形。,5.1.2 控制結構的流程圖表示,一、順序結構,語句A,語句B,三種結構中最基本的結構,由一串按順序排列的語句組成。運行時,按語句出現的先后次序執行,例如從語句A順序執行到語句B。,二、選擇結構,選擇結構(又稱分支結構) ,通過“條件”判斷后進行分支,滿足條件時執行語句A,否則(不滿足條件時)執行語句B。,三、循環結構,循環結構通過“條件”判斷,滿足條件時重復執行循環體語句(一條語句或多條語句),不滿足條件時跳出循環(出口)。,三種基本結構的共同特點是: (1) 只有

2、單一的入口和單一的出口; (2) 結構中的每個部分都有被執行的可能; (3) 結構內不應出現永不終止的死循環; VB語言完全支持結構化的程序設計方法,并提供了相應的語言成分。,5.2 算法,在計算機學科中,算法指的是用于完成某個處理任務的一組有序而明確的、可以由計算機執行的操作(或指令),它能在有限時間內執行結束并產生結果。 算法的特征 (1)確定性 確定性是指算法中的每個步驟必須確切無誤,即每一步運算應該執行何種操作必須是清楚明確的,無二義性。 (2)有窮性 有窮性是指一個算法經有限步運算后能夠終止。 (3)可行性 可行性是指算法的每個步驟都是計算機可以執行的,并能得到確定的結果。 (4)輸

3、出性 一個算法可以沒有輸入,但至少要有一個輸出。,5. 2. 3 算法的表示,1文字表示 2流程圖表示 3程序語言表示,5.3 順序結構,賦值語句: 其格式如:var = Var表示某個變量名或屬性名,不能是常量,常熟符號或表達式。 先計算“=”右邊表達式的值,然后將值賦給“=”左邊的變量。 “=”在條件表達式中為等號,否則為賦值號 經常使用的賦值語句: Sum=sum+x 累加 X=x+1 計數 不能在一條語句中同時給多個變量賦值,賦值語句中數據類型不同時的處理方法: 變量的數據類型與表達式的數據類型同為數值型,但精度不同時,VB會將表達式的精度強制轉換成變量的精度。 變量的數據類型為數值型

4、,表達式的數據類型為字符型時,自動轉換成數值類型再賦值,但當字符中有非數字字符或表達式為空串時,則出錯。 變量的數據類型為數值型,表達式的數據類型為邏輯型時,True轉換為-1,False轉換為0。反之,非0轉換為True,0轉換為False。 變量的數據類型為字符型,表達式的數據類型為非字符型時,會自動轉換成字符型。,【例5.1】運行下面程序,單擊窗體,則立即窗口顯示的結果是什么? Private Sub Form_Click() Dim a As Integer, b As Boolean Dim c As Integer, d As Integer a = 10 / 4: b = Tru

5、e: c = b: d = a + c Debug.Print a, d, a = a + c End Sub 分析:10/4的結果是2.5,賦給整型變量a,根據奇進偶不進原則,a的值為2。True賦給整型變量c,轉換為-1,從而變量d的結果為2 1 = 1。由于a的值為2,a + c的值為1,所以a = a + c的結果為False。立即窗口顯示的結果是: 2 1 False,5.4 選擇結構,選擇結構又叫分支結構。程序在運行到分支結構的語句塊時,可以根據條件的不同,選擇不同的執行方向。 If 語句 select case 語句,5.4.1 IF條件語句,單分支: If Then 語句組 E

6、nd If 雙分支: If Then 語句組A Else 語句組B End If 多分枝: If Then 語句組1 ElseIf Then 語句組2 ElseIf Then 語句組n Else 語句組n+1 End If,3If語句的嵌套 【例5.3】設有如下函數: 從鍵盤輸入x的值,要求輸出y的值。,Private Sub Form_Click() Dim x As Single, y As Single x = InputBox(請輸入x的值:) If x 0 Then y = 1 Else If x = 0 Then y = 0 Else y = -1 Print x=; x, y=;

7、 y End Sub,5.4.2 條件函數(IIf函數),VB提供了一個IIf函數,可用來簡化“If Then Else”分支結構。 一般形式為: Var = IIf(條件表達式,True部分,False部分),注意: IIf函數中的3個參數都不能省略,而且要求“True部分”、“False部分”與結果變量的類型一致。,iif 函數與“If Then Else”語句或“Select Case”語句(見下一節)的作用類似。,If x0 Then y = 1 Else y = - 1 End If,y = IIf(x0,1,- 1),5.4.3 Select Case語句,Select Case語

8、句也能實現多分支,其基本格式為: Select Case 測試表達式 Case 表達式表列1 語句塊1 Case 表達式表列2 語句塊2 Case Else 語句塊n End Select,其中: “變量或表達式”可以是數值表達式或字符串表達式,也可以是一個常量或一個變量。 “表達式表列i”可以是以下三種情況之一或三種情況的混合。 (1) 以逗號隔開的常量 例如:Case 1,4,7 Case a ,b “ (2) 由關鍵字To連接的兩個常量,表示一個閉區間。不論是數值型還是字符串數據,都要保證To前面的常量比后面的小。 例如:Case 1 To 10 Case a To f ,(3) 由關鍵

9、字is表示的一個關系表達式。is是一個代詞,它代表著“變量或表達式”的值。如:Case is 15。但Case is 15 And is 30是錯誤的。 (4) “表達式表列i”的數據類型要與“變量或表達式”的類型相同。,5.5 循環結構,在VB中,實現循環結構的語句有兩種,一種是For循環控制結構,另一種是Do循環控制結構。 For循環 Do循環,5.5.1 For循環控制結構,For var = a To b Step c 語句組 Exit For 語句組 Next var var稱為循環變量,其值必須為數值型 a稱為循環初值,b稱為循環終值, c稱為循環步長。 Exit For表示當遇到

10、該語句時 退出循環,執行Next后的下一條語句。 Next的含義是循環變量的值增加 一個步長(var = var + c),開始下一次循環。,For循環語句的執行過程是: (1) 計算初值表達式a、終值表達式b、步長表達式c的值。 (2) 循環變量賦初值。 (3) 比較循環變量與終值的值。 當步長為正時,若循環變量的值小于或等于終值(步長為正的循環流程如圖5.14所示),轉去第(4)步,否則執行Next后的下一條語句; 當步長為負時,若循環變量的當前值大于或等于終值(步長為負的循環流程如圖5.15所示),轉去第(4)步,否則執行Next后的下一條語句。 (4) 執行一次循環體,然后將循環變量的

11、值增加一個步長,轉到第3步,重復執行。,說明: 無論循環執行與否,循環變量賦初值語句都會被執行,且僅執行一次。 若初值小于終值,則步長為1時,Step 1可以省略;但若初值大于終值,而步長為-1時,Step 1不可以省略。 循環的次數可用以下公式計算: 循環次數=Int(b a)c)+1 For語句和Next語句必須成對出現,不能單獨使用,且For語句必須在Next語句之前。 循環的初值、終值以及步長的值一經確定,則循環的執行次數就不再改變。在循環體中,改變初值、終值以及步長的值,不影響循環的執行次數。若在循環體中改變循環變量的值,則有可能影響循環的執行次數。 當退出循環后,循環變量的值保持退

12、出時的值。,【例5.10】求n!(n為自然數) 由階乘的定義可知: 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 此語句稱為累乘器 Next i Print N; ! = ; k End Sub,Private Sub Form_Click() Dim N As Integer, i As Integer, m As Integer, k A

13、s Single N = InputBox(輸入N:) k = 1:m = 1 For i = 1 To N k = k * m m = m + 1 此語句稱為計數器 Next i Print N; ! = ; k End Sub,操作變量,形式變量,5.5.2 Do循環控制結構,適合于循環次數事先難以確定的場合。,Do循環控制結構有如下幾種格式: 格式1: Do While 循環條件 語句組 Exit Do 循環體 語句組 Loop 格式1的循環流程如 圖5.17所示。,圖5.17 Do While Loop循環流程圖,格式2: Do 語句組 Exit Do 循環體 語句組 Loop Whi

14、le 循環條件 格式2的循環流程如圖5.18所示。 格式3: Do Until 循環條件 語句組 Exit Do 循環體 語句組 Loop 格式3的循環流程如圖5.19所示。,格式4: Do 語句組 Exit Do 循環體 語句組 Loop Until 循環條件 格式4的循環流程如圖5.20所示。,圖5.20 Do Loop Until循環,Do循環語句的功能是:當指定的“循環條件”為True,或直到指定的“循環條件”為True之前,重復執行語句組(即循環體)。,其中: (1) 格式1與格式3為先判斷后執行,有可能一次也不執行。格式2與格式4為先執行后判斷,至少執行一次。 (2) 關鍵字Whi

15、le用于指明條件為True時,就執行循環體內的語句,Until正好相反。 (3) 當省略While 循環條件或Until 循環條件子句時,循環結構簡化為: Do 語句組 Exit Do 循環體 語句組 Loop 結構,表示無條件循環,這時在循環體內應該有Exit Do語句,否則為死循環。,(4) Do循環控制結構在使用時要注意循環條件的設置,必須保證循環在執行有限次后能正常退出,否則將形成死循環。 (5) Exit Do語句表示當遇到該語句時,退出循環,執行Loop下面的語句。該語句一般是與If-Then語句配合使用,常見形式為: If Then Exit Do (6) 一般來說,可以使用上述

16、幾種格式解決同一個問題,可以取得相同的結果,只是要注意循環條件的寫法或在進入循環之前注意給循環體中使用到的變量賦以適當的初值。,5.5.3 For循環與Do循環的比較,For循環結構適用于已知循環次數的場合,而Do循環結構適用于循環次數不確定的場合。For循環結構中,修改循環變量的值的語句已經包含在語句結構中,控制意圖明顯;Do循環結構本身不修改循環變量的值,必須使用專門的語句修改循環變量的值,使循環能夠進行。有的時候兩種結構可以互相代替。,5.5.4 循環嵌套,(1) For循環的嵌套使用。除了內外層循環不能交叉外,還要注意內循環變量與外循環變量不能同名。例如下面的循環結構是錯誤的: 內、外

17、循環交叉 內、外循環變量同名 For i = 1 To 5 For i = 1 To 5 For j = 1 To 6 For i = 1 To 6 Next i Next i Next j Next i,(2) 分支結構與For循環結構的嵌套使用。要注意if結構的語句組要完全包含循環結構;同樣循環結構的循環體也要完全包含if結構。例如下面的嵌套使用是錯誤的: For i = 1 To 10 if 條件表達式 Then if 條件表達式 Then For i = 1 To 10 Next i End if End if Next i,(3) Do循環的嵌套使用。使用中也同樣要注意,外層循環必須完全包含內層循環,內層循環的結束語句必須在外層循環的結束語句之前出現,內外層循環不得互相交叉。,(4) 分支結構與Do循環結構的嵌套使用。要注意If結構的語句組要完全包含循環結構;同樣循環結構的循環體也要完全包含If結構。例如下面的嵌套使用是錯誤的: Do While If 條件表達式 Then If 條件表達式 Then

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論