過程 教學課件PPT
《過程 教學課件PPT》由會員分享,可在線閱讀,更多相關《過程 教學課件PPT(69頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第第7 7章章過過 程程本章要點本章要點: :FunctionFunction過程過程SubSub過程過程參數(shù)的傳遞參數(shù)的傳遞* *過程的嵌套調用過程的嵌套調用過程的遞歸調用過程的遞歸調用* *VBVB的工程結構的工程結構變量的作用域與生存期變量的作用域與生存期* * 過程的引入過程的引入: 使同類的操作不重復使同類的操作不重復 (操作方法相同、參數(shù)不同操作方法相同、參數(shù)不同) 過程過程: 完成一段獨立功能,可供其他過程使用完成一段獨立功能,可供其他過程使用(調調用用)。 過程又稱為過程又稱為子程序子程序 調用過程調用過程: 調用其他過程的過程調用其他過程的過程調用過程調用過程: 調用調用Sp
2、rg1調用調用Sprg1調用調用Sprg2子過程子過程: Sprg1子過程子過程: Sprg2過程分類過程分類: : Sub過程過程Function過程過程內部過程內部過程(方法方法)事件過程事件過程自定義過程自定義過程 內部函數(shù)內部函數(shù) 自定義函數(shù)自定義函數(shù)其中,自定義函數(shù)和自定義過程統(tǒng)稱為其中,自定義函數(shù)和自定義過程統(tǒng)稱為通用過程通用過程7.1 7.1 FunctionFunction過程過程( (函數(shù)過程函數(shù)過程) )7.1.1 Function過程的定義過程的定義1. Function過程的格式過程的格式 Public|PrivateStatic Function ( ) As = E
3、xit Function End Function2. 說明說明(1) Public: 缺省值。使用缺省值。使用Public時表示各模塊的所時表示各模塊的所 有其他過程都可以調用該有其他過程都可以調用該Function過程。過程。(2) Private: 使用使用Private時表示只有本模塊中的其他時表示只有本模塊中的其他過程才可以調用該過程才可以調用該Function過程。過程。(3) Static: 使用使用Static時表示將過程中的所有局部變時表示將過程中的所有局部變 量說明為靜態(tài)變量。量說明為靜態(tài)變量。(4) : Function過程的名稱,遵循變量過程的名稱,遵循變量 的命名規(guī)則
4、。的命名規(guī)則。(5) : 表示表示Function過程的參數(shù)變量列表。過程的參數(shù)變量列表。多個變量之間用逗號隔開。多個變量之間用逗號隔開。 格式格式: ByVal|ByRef|Optional|ParamArray ( ) As ByVal: 表示該參數(shù)按值傳遞。表示該參數(shù)按值傳遞。 ByRef: 缺省值。表示該參數(shù)按地址傳遞。缺省值。表示該參數(shù)按地址傳遞。 Optional:表示該參數(shù)為可選參數(shù)。表示該參數(shù)為可選參數(shù)。 ParamArray:表示該參數(shù)是一個表示該參數(shù)是一個Variant類型的類型的Optional數(shù)組。數(shù)組。 : 任何變量名或數(shù)組名。任何變量名或數(shù)組名。 ( ): 當參數(shù)為
5、數(shù)組時使用。當參數(shù)為數(shù)組時使用。(6) As : : 聲明函數(shù)值的類型。聲明函數(shù)值的類型。(7) Exit Function語句語句: 從從Function過程中退出。過程中退出。(8) Function過程通過賦值語句過程通過賦值語句: = 將函數(shù)的返回值賦給將函數(shù)的返回值賦給 。(9) Function過程的定義不能過程的定義不能嵌套嵌套。3. Function過程的建立過程的建立: 建立位置建立位置窗體模塊窗體模塊標準模塊標準模塊類模塊類模塊*建立方法建立方法直接在代碼窗口中輸入直接在代碼窗口中輸入 應寫在應寫在“通用通用”的位置。的位置。使用菜單命令:工具使用菜單命令:工具添加過程添加
6、過程 先切換到代碼窗口,才可以使用該菜單命令。先切換到代碼窗口,才可以使用該菜單命令?!纠纠?-1】編寫一個計算】編寫一個計算n!的的Function過程。過程。 分析:確定參數(shù)個數(shù)、類型、函數(shù)名、類型分析:確定參數(shù)個數(shù)、類型、函數(shù)名、類型 Function Fact(N As Integer) As Long Dim I As Integer, F As Long F = 1 F用于保存階乘值用于保存階乘值 For I = 1 To N F = F * I Next I Fact = F 給函數(shù)過程名賦值給函數(shù)過程名賦值 End Function【例【例7-2】編寫一個】編寫一個Funct
7、ion過程,計算下面過程,計算下面表達式的值。表達式的值。|zyx|333 問:應設置幾個參數(shù)?問:應設置幾個參數(shù)? Function F(X, Y, Z) F = Sqr(Abs(X 3 + Y 3 + Z 3) End Function 這里的參數(shù)和函數(shù)名都沒有定義類型,默認這里的參數(shù)和函數(shù)名都沒有定義類型,默認為為Variant類型。類型。7.1.2 Function過程的調用過程的調用1. 調用位置:調用位置: 直接在表達式中調用。直接在表達式中調用。2. 調用格式調用格式: ( ) 其中,其中, : n常量、變量或表達式常量、變量或表達式n各參數(shù)之間用逗號分隔各參數(shù)之間用逗號分隔n如
8、果是數(shù)組,在數(shù)組名之后要跟一對空括號。如果是數(shù)組,在數(shù)組名之后要跟一對空括號?!纠纠?-3】從鍵盤任意輸入一個整數(shù),然】從鍵盤任意輸入一個整數(shù),然后調用計算后調用計算 階乘的函數(shù)求該整數(shù)的階乘值階乘的函數(shù)求該整數(shù)的階乘值。 設計界面和運行界面如下:設計界面和運行界面如下:Label3Text1Command1Label2設計界面設計界面運行界面運行界面代碼如下:代碼如下:Option Explicit 自定義求階乘的函數(shù)過程自定義求階乘的函數(shù)過程FactFunction Fact(N As Integer) As Long Dim I As Integer, F As Long F = 1
9、For I = 1 To N F = F * I Next I Fact = F 給函數(shù)過程名賦值給函數(shù)過程名賦值End Function 在按鈕的在按鈕的Click事件過程中調用函數(shù)過程事件過程中調用函數(shù)過程Private Sub Command1_Click() Dim X As Integer X = Val(Text1.Text) Label2.Caption=Trim(Str(X) & 的階乘數(shù)為的階乘數(shù)為: 使用使用Fact(X)調用函數(shù)過程調用函數(shù)過程 Label3.Caption = Trim(Str(Fact(X) End Sub【例【例7-4】利用】利用Function過程
10、計算階乘,求組過程計算階乘,求組合數(shù)。設計界面如下圖。合數(shù)。設計界面如下圖。Text2OLE1控件控件Text1Text3Command1BackStyle: 0 - TransparentBorderStyle: 0 NoneSizeMode: 2 - AutoSize代碼如下:代碼如下: 定義求階乘的函數(shù)定義求階乘的函數(shù)FactFunction Fact(N As Integer) As Double Dim F As Double, I As Integer F = 1 For I = 1 To N F = F * I Next I Fact = FEnd Function “=”按鈕的
11、按鈕的Click事件過程事件過程Private Sub Command1_Click() Dim M As Integer, N As Integer, C As Double N = Val(Text1.Text) M = Val(Text2.Text) 調用調用Fact函數(shù)求各階乘值函數(shù)求各階乘值 C = Fact(M) / (Fact(N) * (Fact(M - N) Text3.Text = Trim(Str(c)End Sub【例【例7-5】編寫】編寫Function過程求最大公約數(shù),并通過程求最大公約數(shù),并通過命令按鈕的單擊事件過程調用該函數(shù)過程。過命令按鈕的單擊事件過程調用該函
12、數(shù)過程。Text1Text2Command1Label3Function hcf(m As Integer, n As Integer) As Integer Dim r As Integer r = m Mod n Do While r 0 m = n n = r r = m Mod n Loop hcf = nEnd FunctionPrivate Sub Command1_Click() Dim m As Integer, n As Integer m = Val(Text1.Text): n = Val(Text2.Text) Label3.Caption = Str(hcf(m, n
13、)End Sub【例【例7-6】編寫一個】編寫一個Function過程,返回指定個數(shù)的過程,返回指定個數(shù)的字符串,字符串以字符串,字符串以A開始,例如,當指定個數(shù)開始,例如,當指定個數(shù)5時,時,函數(shù)返回字符串函數(shù)返回字符串 A B C D E。運行時單擊按鈕調運行時單擊按鈕調用該函數(shù)過程,實現(xiàn)在窗體上按指定的行數(shù)輸出用該函數(shù)過程,實現(xiàn)在窗體上按指定的行數(shù)輸出如下圖所示的圖形。如下圖所示的圖形。 CreateStr函數(shù)返回函數(shù)返回N個字符個字符Private Function CreateStr(N As Integer) Dim TmpStr As String, I As Integer T
14、mpStr = StrAsc用于保存字符的用于保存字符的ASCII碼碼 StrAsc = Asc(A) 1 For I = 1 To N StrAsc = StrAsc + 1 生成下一字符的生成下一字符的ASCII碼碼 TmpStr = TmpStr & Space(1) & Chr(StrAsc) Next I CreateStr = TmpStrEnd Function “輸出圖形輸出圖形”按鈕的按鈕的Click事件過程事件過程Private Sub Command1_Click() Dim N As Integer, I As Integer 指定圖形的行數(shù)指定圖形的行數(shù) N = Va
15、l(InputBox(圖形的行數(shù)圖形的行數(shù), 請輸入請輸入, 5) Cls Print For I = 1 To N Print Tab(2 * I); 輸出左半部分輸出左半部分 Print CreateStr(2 * N - 2 * I + 1); Print Spc(4); 左右兩部分的間隔左右兩部分的間隔 Print CreateStr(2 * I - 1); 輸出右半部分輸出右半部分 Print Next IEnd Sub7.2 7.2 SubSub過程過程 當需要自定義過程返回一個值時,使用當需要自定義過程返回一個值時,使用Function過程很容易實現(xiàn)。過程很容易實現(xiàn)。 但在實際應
16、用中,可能希望過程不需要返但在實際應用中,可能希望過程不需要返回值,例如,使用過程打印一個圖形;或需回值,例如,使用過程打印一個圖形;或需要過程返回多個值,例如,利用過程對一批要過程返回多個值,例如,利用過程對一批數(shù)據(jù)進行排序,在這些情況下就需要使用數(shù)據(jù)進行排序,在這些情況下就需要使用Sub過程過程。7.2.1 Sub過程的定義過程的定義1. Sub過程的格式過程的格式 Private|PublicStatic Sub ( ) Exit Sub End Sub2. 說明說明(1) Exit Sub用于退出用于退出Sub過程。過程。(2) 不具有值的意義,在不具有值的意義,在Sub過程中不能過程
17、中不能給給賦值,也不能給賦值,也不能給定義類型。定義類型。(3) Sub過程通過過程通過 中的參數(shù)返回值。中的參數(shù)返回值。(4) Sub過程的建立方法與過程的建立方法與Function過程的建立方法過程的建立方法相同。相同。【例【例7-7】編寫計算】編寫計算n!的的Sub過程。過程。 分析分析: 參數(shù)表中應有一個參數(shù)參數(shù)表中應有一個參數(shù)n,還應有另一個參還應有另一個參數(shù)數(shù)F用來返回階乘值。用來返回階乘值。 Sub Fact(N As Integer, F As Long) Dim I As Integer F = 1 For I = 1 To N F = F * I Next I End Su
18、b【例例7-8】編寫】編寫Sub過程,打印以下圖形。過程,打印以下圖形。 分析分析: 打印該圖形不需要返回值,因此無打印該圖形不需要返回值,因此無需引入?yún)?shù)。需引入?yún)?shù)。 * * * * *Sub a() For i = 1 To 6 Print Tab(7 - i); For j = 1 To 2 * i - 1 Print *; Next j Print Next iEnd Sub【例例7-9】編寫】編寫Sub過程,求三個數(shù)中的最大數(shù)和過程,求三個數(shù)中的最大數(shù)和最小數(shù)。最小數(shù)。 分析分析: 首先要設置三個參數(shù),如首先要設置三個參數(shù),如x、y、z,用于接用于接收三個原始數(shù)據(jù),另外引入兩個參數(shù)
19、收三個原始數(shù)據(jù),另外引入兩個參數(shù)max和和min,用于返回最大和最小數(shù)。用于返回最大和最小數(shù)。 Sub s(x, y, z, max, min) max = x min = x If y max Then max = y If y max Then max = z If z min Then min = z End Sub7.2.2 Sub過程的調用過程的調用說明說明: (1) : 要調用的要調用的Sub過程名。過程名。(2) : 可以是可以是常量、變量或表達式常量、變量或表達式,各參數(shù),各參數(shù)之間用逗號分隔。如果是之間用逗號分隔。如果是數(shù)組參數(shù)數(shù)組參數(shù),則要在數(shù),則要在數(shù)組名之后跟一對空括號
20、。組名之后跟一對空括號。(3) 用用Call語句調用一個語句調用一個Sub過程時,如果過程本身過程時,如果過程本身沒有參數(shù),則省略沒有參數(shù),則省略 和括號。和括號。(4) 格式二省略了格式二省略了Call關鍵字,同時關鍵字,同時 兩邊兩邊也不能帶括號。也不能帶括號。格式一格式一: Call ( )格式二格式二: 【例【例7-10】將求組合數(shù)一題改成用】將求組合數(shù)一題改成用Sub過程實現(xiàn)過程實現(xiàn)Sub Fact(N As Integer, F As Long) Dim I As Integer F = 1 For I = 1 To N F = F * I Next IEnd SubPrivate
21、 Sub Command1_Click() Dim M As Integer, N As Integer Dim f1 As Long, f2 As Long, f3 As Long M = Val(Text1.Text) : N = Val(Text2.Text) Call Fact(M, f1):Call Fact(N, f2):Call Fact(M - N, f3) Text3.Text = Trim(Str(f1 / (f2 * f3)End Sub【例【例7-11】編寫一個】編寫一個Sub過程,計算過程,計算K個數(shù)的和,即個數(shù)的和,即1+2+K,并通過命令按鈕的單擊事件調用該過程計
22、算并通過命令按鈕的單擊事件調用該過程計算S=1+(1+2)+(1+2+3)+ +(1+2+N)。 分析分析: 編寫一個編寫一個Sub過程計算過程計算1+2+K, 設參數(shù)設參數(shù)K、S,參數(shù)參數(shù)S用于返回該和值。用于返回該和值。 Sub A1(K As Integer, S As Integer) S = 0 For J = 1 To K S = S + J Next J End SubPrivate Sub Command1_Click() Dim N As Integer, S1 As Integer, I As Integer N = Val(Text1.Text) For I = 1 To
23、 N 調用過程調用過程A1求求1+2+I,和值返回到和值返回到S1中中 Call A1(I, S1) Sum = Sum + S1 Next I Text2.Text = SumEnd Sub7.3 7.3 參數(shù)的傳遞參數(shù)的傳遞 參數(shù)傳遞參數(shù)傳遞是指是指調用過程與被調用過程之間的一調用過程與被調用過程之間的一種數(shù)據(jù)通訊方法。種數(shù)據(jù)通訊方法。 數(shù)據(jù)的傳遞方式可以是單向的,也可以是雙向數(shù)據(jù)的傳遞方式可以是單向的,也可以是雙向的。分別稱為的。分別稱為按值傳遞按值傳遞和和按地址傳遞按地址傳遞。 數(shù)據(jù)傳遞是通過數(shù)據(jù)傳遞是通過形參形參和和實參實參進行傳遞的。進行傳遞的。7.3.1 7.3.1 形參和實參形
24、參和實參 形參形參: 出現(xiàn)在出現(xiàn)在Sub或或Function語句中。語句中。 實參實參: 出現(xiàn)在調用程序中。出現(xiàn)在調用程序中。 例如,定義如下一個過程例如,定義如下一個過程: Sub SubTest(n As Integer,Sum As Single) End Sub 調用語句調用語句: Call SubTest( a , s )形參形參實參實參說明說明: 一般情況下,形參表與實參表中對應參數(shù)個數(shù)、一般情況下,形參表與實參表中對應參數(shù)個數(shù)、類型、位置順序必須一一對應類型、位置順序必須一一對應(除非使用關鍵字除非使用關鍵字Optional或或ParamArray對形參進行了約束對形參進行了約束
25、)形參表中的參數(shù)可以是形參表中的參數(shù)可以是: 除固定長度字符串之外的合法除固定長度字符串之外的合法 變量名、數(shù)組名變量名、數(shù)組名()實參表中的參數(shù)可以是實參表中的參數(shù)可以是: 常量、變量、表達式、數(shù)組名常量、變量、表達式、數(shù)組名()形參與實參的結合有兩種方式形參與實參的結合有兩種方式: 按值傳遞和按地址傳遞。按值傳遞和按地址傳遞。1. 按值傳遞按值傳遞 實參把其值傳遞給形參而不傳遞實參的地址。實參把其值傳遞給形參而不傳遞實參的地址。 數(shù)據(jù)的傳遞是單向的。數(shù)據(jù)的傳遞是單向的。(1) 當實參為常量或表達式時,數(shù)據(jù)傳遞總是單向當實參為常量或表達式時,數(shù)據(jù)傳遞總是單向的。的。 例如例如: Call S
26、ubTest(10, 1+2) Sub SubTest( n As Integer,Sum As Single)7.3.2 按值傳遞和按地址傳遞按值傳遞和按地址傳遞(2) 實參是變量時實參是變量時,要實現(xiàn)按值傳遞需要在要實現(xiàn)按值傳遞需要在形參之形參之前前通過關鍵字通過關鍵字ByVal來實現(xiàn)。來實現(xiàn)。 例如例如: Sub SS(ByVal X, ByVal Y, ByVal Z) X = X + 1: Y = Y + 1: Z = Z + 1 End Sub Private Sub Command1_Click() A = 1: B = 2: C = 3 Call SS(A, B, C) Pri
27、nt A, B, C End Sub 運行時,單擊命令按鈕在窗體上打印運行時,單擊命令按鈕在窗體上打印: 1 2 32. 按地址傳遞按地址傳遞 指將實參的地址傳給形參,使形參和實參具有指將實參的地址傳給形參,使形參和實參具有相同的地址,即形參與實參共享同一存儲單元。相同的地址,即形參與實參共享同一存儲單元。(1) 當實參為變量或數(shù)組時,形參使用關鍵字當實參為變量或數(shù)組時,形參使用關鍵字 ByRef定義定義(或省略或省略)表示要按地址傳遞。表示要按地址傳遞。(2) 當參數(shù)是數(shù)組時,數(shù)組名之后必須使用一對空當參數(shù)是數(shù)組時,數(shù)組名之后必須使用一對空的圓括號。的圓括號。 按地址傳遞可以實現(xiàn)調用過程與子
28、過程之間數(shù)按地址傳遞可以實現(xiàn)調用過程與子過程之間數(shù)據(jù)的雙向傳遞。據(jù)的雙向傳遞。 例例: Sub SS(ByRef X, ByRef Y, ByRef Z) X = X + 1: Y = Y + 1: Z = Z + 1 End Sub Private Sub Command1_Click() A = 1: B = 2: C = 3 Call SS(A, B, C) Print A, B, C End Sub形參形參: X Y Z實參實參: A B C存儲單元存儲單元運行時,單擊命令按鈕在窗體上打印運行時,單擊命令按鈕在窗體上打印: 2 3 4【例【例7-14】編寫一個計算乘冪的】編寫一個計算乘
29、冪的Function過程,用過程,用來計算來計算x的的y次冪,其中次冪,其中y0。單擊窗體時調用該過單擊窗體時調用該過程打印程打印51、52、53、54、55的值。的值。 Function Power(x As Single, ByVal y As Integer) Dim result As Single result = 1 Do While y 0 result = result * x y = y - 1 Loop Power = result End FunctionPrivate Sub Form_Click() Dim i As Integer For i = 1 To 5 Pr
30、int Power(5, i) Next iEnd Sub思考思考: 如果取消過程如果取消過程Power中參數(shù)中參數(shù)y前的關鍵字前的關鍵字ByVal,則會出現(xiàn)什么情況?則會出現(xiàn)什么情況?【例例7-15】編寫三個】編寫三個Sub過程過程 LetArray過程過程: 產生產生0,99之間的隨機整數(shù),并之間的隨機整數(shù),并賦值給一維數(shù)組。賦值給一維數(shù)組。SortArray過程過程:實現(xiàn)數(shù)組從大到小排序。實現(xiàn)數(shù)組從大到小排序。PrintArray過程過程:實現(xiàn)數(shù)組的輸出。實現(xiàn)數(shù)組的輸出。 (1) LetArray過程過程 Sub LetArray(Value() As Integer) Dim I As
31、 Integer, N As Integer Randomize N = UBound(Value) For I = 1 To N Value(I) = Int(100 * Rnd) Next I End Sub(2) SortArray過程過程: 實現(xiàn)數(shù)組從大到小排序實現(xiàn)數(shù)組從大到小排序Sub SortArray(Value() As Integer) Dim I As Integer, J As Integer, N As Integer, _ T As Integer N = UBound(Value) For I = 1 To N - 1 For J = I + 1 To N If V
32、alue(I) Value(J) Then T = Value(I) Value(I) = Value(J) Value(J) = T End If Next J Next IEnd Sub(3) SortArray過程過程: 實現(xiàn)數(shù)組的輸出實現(xiàn)數(shù)組的輸出 Sub PrintArray(Value() As Integer) Dim I As Integer, N As Integer N = UBound(Value) For I = 1 To N Print Value(I); If I Mod 4 = 0 Then Print 每行顯示每行顯示4個數(shù)個數(shù) Next i End Sub在時
33、間過程中調用以上在時間過程中調用以上SUB過程:過程:Private Sub Command1_Click() Dim Value(20) As Integer Call LetArray(Value() Print 排序前:排序前: Call PrintArray(Value() Call SortArray(Value() Print 排序后:排序后: Call PrintArray(Value()End Sub7.4 過程的嵌套調用過程的嵌套調用 在一個過程執(zhí)行期間又調用另一個過程,在一個過程執(zhí)行期間又調用另一個過程,稱為過程的嵌套調用。稱為過程的嵌套調用。調用過程調用過程 子過程子過程
34、S1 子過程子過程S2調用調用S1調用調用S2 【例7-16】求 : 201n!n即求即求1!+2!+3!+20!,用!,用Function過程實過程實現(xiàn)?,F(xiàn)。設計以下函數(shù):設計以下函數(shù):(1) 設計一個過程設計一個過程Fact求求n!(2) 設計另一個過程設計另一個過程Sigma求求n個數(shù)的和個數(shù)的和代碼如下:代碼如下:Private Sub Command1_Click() Dim n As Integer n = Val(InputBox(n=) Print Sigma(n) 調用調用Sigma過程過程End SubFunction Sigma(n As Integer) As Doub
35、le Dim i As Integer, sum As Double sum = 0 For i = 1 To n sum = sum + Fact(i) 調用調用Fact過程過程 Next i Sigma = sumEnd FunctionFunction Fact(n As Integer) As Double Dim I As Integer, F As Double F = 1 For I = 1 To N F = F * I Next I Fact = FEnd Function* *7.5 7.5 過程的遞歸調用過程的遞歸調用遞歸調用遞歸調用:在過程中直接或間接調用自身。在過程中直
36、接或間接調用自身。數(shù)學上常用于處理階乘運算、級數(shù)運算、數(shù)學上常用于處理階乘運算、級數(shù)運算、冪指數(shù)運算等問題。冪指數(shù)運算等問題。例:求例:求N!Function F(N) F1 = 1 For I = 1 To N F1 = F1 * I Next I F=F1End FunctionFunction F(N) If N = 1 Then F = 1 Else F = N * F(N - 1) End IfEnd Function【例【例7-17】: 求求N!Private Sub Command1_Click() Dim N As Integer N = Val(Text1.Text) Tex
37、t2.Text = F(N)End SubPublic Function F(N) If N = 1 Then F = 1 Else F = N * F(N - 1) End IfEnd FunctionF(6)6*F(5)6*5*F(4)6*5*4*F(3)6*5*4*3*F(2)6*5*4*3*2*F(1)17.6 VB工程結構VB應用程序由三種模塊組成應用程序由三種模塊組成: 窗體模塊窗體模塊(Form) (文件擴展名文件擴展名.frm) 標準模塊標準模塊(Module) (文件擴展名文件擴展名.bas) 類模塊類模塊(Class) (文件擴展名文件擴展名.cls)應用程序應用程序工程文
38、件工程文件(.vbp)窗體模塊窗體模塊(.frm)文件文件類模塊類模塊(.cls)文件文件標準模塊標準模塊(.bas)文件文件事件過程事件過程Function過程過程Sub過程過程Property過程過程1. 窗體模塊包含:窗體模塊包含:事件過程事件過程通用過程通用過程通用聲明通用聲明(常量、變量、數(shù)組、外部過程)常量、變量、數(shù)組、外部過程)2. 可以用文本編輯器查看窗體模塊可以用文本編輯器查看窗體模塊 查看方法:查看方法: 右擊右擊.frm文件,選擇打開方式為記事本文件,選擇打開方式為記事本 顯示:顯示: 描述信息及程序代碼描述信息及程序代碼7.6.1 窗體模塊窗體模塊 當一個應用程序含有多
39、個窗體時當一個應用程序含有多個窗體時,可能其中的幾可能其中的幾個窗體都需要調用某一段公共代碼個窗體都需要調用某一段公共代碼,如果在每個窗如果在每個窗體內都包含這些代碼體內都包含這些代碼,就會造成大量的代碼冗余就會造成大量的代碼冗余,這這時就可以在標準模塊內建立一個包含此公共代碼時就可以在標準模塊內建立一個包含此公共代碼的通用過程的通用過程,實現(xiàn)代碼的共享。實現(xiàn)代碼的共享。 標準模塊不對應于某個窗體、是純代碼模塊。標準模塊不對應于某個窗體、是純代碼模塊。 標準模塊可以包含標準模塊可以包含:全局常量、變量、全局過程全局常量、變量、全局過程標準模塊級常量、變量、通用過程標準模塊級常量、變量、通用過程
40、 注注: 不能包含事件過程不能包含事件過程 添加添加: 工程工程添加模塊添加模塊選選“新建新建”標簽標簽打打開開“添加模塊添加模塊”對話框。對話框。 默認名字默認名字:ModuleX7.6.2 標準模塊 類是具有相同或相似特征的事物的集合,類封類是具有相同或相似特征的事物的集合,類封裝了對象的屬性裝了對象的屬性(數(shù)據(jù)成員數(shù)據(jù)成員)和方法和方法(處理數(shù)據(jù)的函處理數(shù)據(jù)的函數(shù)或過程數(shù)或過程)。程序員一般不對類進行操作,而只能。程序員一般不對類進行操作,而只能對類的實例對類的實例對象進行操作。對象進行操作。 Visual Baisc所使用的每種控件都對應著一個所使用的每種控件都對應著一個類,如類,如B
41、utton按鈕控件對應著按鈕控件對應著Button類,它們支類,它們支持封裝和多態(tài)性,但它們不支持繼承,即不能從持封裝和多態(tài)性,但它們不支持繼承,即不能從現(xiàn)有的類(控件)來創(chuàng)建新的類(控件)。現(xiàn)有的類(控件)來創(chuàng)建新的類(控件)。 有時用戶需要創(chuàng)建自己的類以實現(xiàn)特定的功能,有時用戶需要創(chuàng)建自己的類以實現(xiàn)特定的功能,則可以通過類模塊創(chuàng)建自己的類。類模塊文件的則可以通過類模塊創(chuàng)建自己的類。類模塊文件的的擴展名為的擴展名為.cls。*7.6.3 類模塊類模塊 缺省情況下,應用程序中的第一個窗體為啟動窗體,缺省情況下,應用程序中的第一個窗體為啟動窗體,如果想在應用程序啟動時首先顯示其它窗體,那么就得在
42、如果想在應用程序啟動時首先顯示其它窗體,那么就得在“工程屬性工程屬性”對話框中改變啟動窗體的名稱。對話框中改變啟動窗體的名稱。 有時,有些應用程序啟動時需要先做一些初始化工作,有時,有些應用程序啟動時需要先做一些初始化工作,如裝入數(shù)據(jù)文件,然后再根據(jù)數(shù)據(jù)文件的內容決定顯示哪如裝入數(shù)據(jù)文件,然后再根據(jù)數(shù)據(jù)文件的內容決定顯示哪個窗體;有時應用程序根本就不需要加載窗體(比如一些個窗體;有時應用程序根本就不需要加載窗體(比如一些監(jiān)控程序)。為此,可以在標準模塊中編寫一個監(jiān)控程序)。為此,可以在標準模塊中編寫一個main過程過程,作為應用程序的入口。作為應用程序的入口。 定義定義sub main過程為啟
43、動程序的步驟:過程為啟動程序的步驟: “工程工程” “工程屬性工程屬性” 選擇選擇“通用通用”選項卡選項卡在在“啟動對象啟動對象”下拉列表框中選擇下拉列表框中選擇“Sub Main”。7.6.4 Sub Main過程 過程的建立位置不同,允許被訪問的范圍也不同。過程的建立位置不同,允許被訪問的范圍也不同。 作用域作用域: 模塊級、全局級模塊級、全局級 1. 模塊級過程模塊級過程: 在過程前如果加在過程前如果加Private關鍵字,則關鍵字,則這種過程只能被其所在的模塊中的其他過程所這種過程只能被其所在的模塊中的其他過程所調用。調用。2. 全局過程全局過程: 在過程前如果加在過程前如果加Publ
44、ic關鍵字關鍵字(或省略或省略),則這種過程可以被其他模塊中的過程所調用。則這種過程可以被其他模塊中的過程所調用。 調用格式調用格式: 模塊名模塊名.過程名過程名(參數(shù)表參數(shù)表) 注意:標準模塊中的全局過程名如果唯一,則調注意:標準模塊中的全局過程名如果唯一,則調用時可以省略模塊名用時可以省略模塊名7.6.5 過程的作用域例例:設窗體設窗體Form1中有按鈕中有按鈕: Command1、 Command2 Public Sub aa() aa為全局過程為全局過程 MsgBox (這是窗體這是窗體Form1中的過程中的過程) End Sub Private Sub Command1_Click(
45、) Call aa End Sub Private Sub Command2_Click() Form2.Show End Sub可以省略可以省略添加標準模塊添加標準模塊Module1 ,編寫以下過程,編寫以下過程: Public Sub bb() bb為全局過程為全局過程 MsgBox (這是標準模塊中的過程這是標準模塊中的過程bb) End Sub可以省略可以省略設窗體設窗體Form2中有按鈕中有按鈕: Command1 、 Command2 Private Sub Command1_Click() Call Form1.aa End Sub Private Sub Command2_Cl
46、ick() Call Module1.bb End Sub不可以省略不可以省略可以省略可以省略7.7 變量的作用域與生存期 變量的作用域變量的作用域: 指變量的指變量的有效范圍有效范圍。 變量的生存期變量的生存期: 指變量的指變量的作用時間作用時間。7.7.1 變量的作用域變量的作用域 將變量分為將變量分為: 局部變量局部變量 模塊級變量模塊級變量 全局變量全局變量模塊級變量模塊級變量全局變量全局變量局局部部變變量量模塊模塊過程過程1. 局部變量局部變量 聲明聲明 不聲明不聲明 Dim A As Integer A每次執(zhí)行過程時被初始化每次執(zhí)行過程時被初始化 Static C As Singl
47、e C在應用程序執(zhí)行期間保持在應用程序執(zhí)行期間保持不變不變 作用范圍作用范圍 僅在聲明的過程中起作用僅在聲明的過程中起作用 其他過程中即使有同名變量,也不是指同一變其他過程中即使有同名變量,也不是指同一變量量。例例: Sub S() X = 1 Y = 2 Z = X + Y Print X, Y, Z End Sub Private Sub C1_Click() X = 2 Y = 3 Z = X + Y Call S Print X, Y, Z End Sub單擊單擊C1后運行結果后運行結果: 1 2 3 2 3 5局部變量局部變量局部變量局部變量2. 模塊級變量模塊級變量 聲明聲明 在模
48、塊的通用聲明段中用以下方法聲明的變量。在模塊的通用聲明段中用以下方法聲明的變量。 Private 在模塊運行時被初始化在模塊運行時被初始化 Dim 在模塊運行時被初始化在模塊運行時被初始化 作用范圍作用范圍 在該模塊的所有過程中都起作用在該模塊的所有過程中都起作用 其他模塊不能訪問這些變量其他模塊不能訪問這些變量3. 全局變量全局變量 聲明聲明 在模塊的通用聲明段中用以下方法聲明的變量在模塊的通用聲明段中用以下方法聲明的變量 Public 應用程序運行時被初始化應用程序運行時被初始化 作用范圍作用范圍: 應用程序的所有過程應用程序的所有過程例例: Dim Z As IntegerSub S()
49、 Z = Z + 2 Print ZEnd SubPrivate Sub C1_Click() Z = Z + 2 Call S Print ZEnd Sub第一次單擊第一次單擊C1結果結果: 4 4第二次單擊第二次單擊C1結果結果: 8 8第三次單擊第三次單擊C1結果結果: 1212模塊級變量模塊級變量模塊級變量模塊級變量例例: Dim Z As IntegerSub S() Dim Z Z = Z + 2 Print ZEnd SubPrivate Sub C1_Click() Z = Z + 2 Call S Print ZEnd Sub第一次單擊第一次單擊C1結果結果: 2 2第二次單
50、擊第二次單擊C1結果結果: 2 4第三次單擊第三次單擊C1結果結果: 26模塊級變量模塊級變量局部變量局部變量7.7.2 變量的生存期變量的生存期 靜態(tài)變量靜態(tài)變量: 在應用程序執(zhí)行期間保留不變在應用程序執(zhí)行期間保留不變 動態(tài)變量動態(tài)變量: 在所在的模塊在所在的模塊(過程過程)運行時被初始化運行時被初始化 單擊按鈕打印結果單擊按鈕打印結果: 55 110 Static Sub SS1() 局部變量局部變量I,S為靜態(tài)變量為靜態(tài)變量 For I = 1 To 10 S = S + I Next I Print S End Sub Private Sub Command1_Click() Call
51、 SS1 Call SS1 End Sub例例: Sub S() Static Z As Integer Z = Z + 2 Print ZEnd SubPrivate Sub C1_Click() Dim Z As Integer Z = Z + 2 Call S Print ZEnd Sub第一次單擊第一次單擊C1結果結果: 2 2第二次單擊第二次單擊C1結果結果: 4 2第三次單擊第三次單擊C1結果結果: 6 2靜態(tài)變量靜態(tài)變量動態(tài)變量動態(tài)變量本章小結本章小結 1. 函數(shù)過程的定義和調用函數(shù)過程的定義和調用 定義定義: Public | Private Static Function (
52、) ) As 函數(shù)名函數(shù)名 =表達式表達式 End Function 形參表形參表:變量、數(shù)組名變量、數(shù)組名() 調調 用用: 函數(shù)名函數(shù)名( ) 出現(xiàn)在表達式可以出現(xiàn)的位置出現(xiàn)在表達式可以出現(xiàn)的位置2. Sub過程的定義和調用過程的定義和調用定義定義: Private | Public Static Sub () End Sub調用調用: (1)Call ()(2) 注意注意: Sub過程調用與函數(shù)過程定義與調用的區(qū)別過程調用與函數(shù)過程定義與調用的區(qū)別3. 過程之間的參數(shù)傳遞過程之間的參數(shù)傳遞 按值傳遞按值傳遞: 實參為常數(shù)、表達式;實參為常數(shù)、表達式; 實參為變量,形參為實參為變量,形參為
53、 ByVal 變量變量 按地址傳遞按地址傳遞: 實參為變量、數(shù)組;形參用實參為變量、數(shù)組;形參用 ByRef 定義的變量、數(shù)組(或省略定義的變量、數(shù)組(或省略ByRef)4. 過程的嵌套調用過程的嵌套調用*5. 過程的遞歸調用過程的遞歸調用6. VB工程結構工程結構 窗體模塊窗體模塊(Form) (文件擴展名文件擴展名.frm) 標準模塊標準模塊(Module) (文件擴展名文件擴展名.bas) Sub Main過程過程 類模塊類模塊(Class) (文件擴展名文件擴展名.cls)7. 過程的作用域過程的作用域 模塊級過程;模塊級過程; 全局級過程全局級過程8. 變量的作用域變量的作用域 局部變量(過程級);局部變量(過程級); 模塊級變量;全局變量模塊級變量;全局變量9. 變量的生存期變量的生存期 動態(tài)變量;動態(tài)變量; 靜態(tài)變量靜態(tài)變量
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 檢驗員實用手冊課件
- 繼電接觸器連續(xù)正轉控制電路課件
- 道德與法治走向世界大舞臺課件(部編版)2
- 數(shù)學人教七年級下冊課件一元一次不等式課時1教學課件模板
- 徽派建筑專題課件
- 微商平臺及品牌建設方案
- 統(tǒng)編版新教材《短歌行》課件3
- 蛋白質的生物合成 醫(yī)學知識
- 染色體變異校優(yōu)質課推選演示文稿課件
- 幸福鄉(xiāng)村平臺建設方案基層建精準扶貧服務平臺方案
- 輸煤區(qū)域火災事故應急演練方案培訓資料
- 某地產滟瀾山銷售團隊體會交流課件
- 統(tǒng)編教材部編人教版六年級道德與法治下冊當災害降臨的時候課件
- 神障礙護理學應激相關障礙患者的護理
- 定點巡檢機器人三維實景智能平臺