過程 教學(xué)課件PPT

上傳人:仙*** 文檔編號:32052193 上傳時間:2021-10-13 格式:PPT 頁數(shù):69 大?。?52.02KB
收藏 版權(quán)申訴 舉報 下載
過程 教學(xué)課件PPT_第1頁
第1頁 / 共69頁
過程 教學(xué)課件PPT_第2頁
第2頁 / 共69頁
過程 教學(xué)課件PPT_第3頁
第3頁 / 共69頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《過程 教學(xué)課件PPT》由會員分享,可在線閱讀,更多相關(guān)《過程 教學(xué)課件PPT(69頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、第第7 7章章過過 程程本章要點本章要點: :FunctionFunction過程過程SubSub過程過程參數(shù)的傳遞參數(shù)的傳遞* *過程的嵌套調(diào)用過程的嵌套調(diào)用過程的遞歸調(diào)用過程的遞歸調(diào)用* *VBVB的工程結(jié)構(gòu)的工程結(jié)構(gòu)變量的作用域與生存期變量的作用域與生存期* * 過程的引入過程的引入: 使同類的操作不重復(fù)使同類的操作不重復(fù) (操作方法相同、參數(shù)不同操作方法相同、參數(shù)不同) 過程過程: 完成一段獨立功能,可供其他過程使用完成一段獨立功能,可供其他過程使用(調(diào)調(diào)用用)。 過程又稱為過程又稱為子程序子程序 調(diào)用過程調(diào)用過程: 調(diào)用其他過程的過程調(diào)用其他過程的過程調(diào)用過程調(diào)用過程: 調(diào)用調(diào)用Sp

2、rg1調(diào)用調(diào)用Sprg1調(diào)用調(diào)用Sprg2子過程子過程: Sprg1子過程子過程: Sprg2過程分類過程分類: : Sub過程過程Function過程過程內(nèi)部過程內(nèi)部過程(方法方法)事件過程事件過程自定義過程自定義過程 內(nèi)部函數(shù)內(nèi)部函數(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時表示各模塊的所時表示各模塊的所 有其他過程都可以調(diào)用該有其他過程都可以調(diào)用該Function過程。過程。(2) Private: 使用使用Private時表示只有本模塊中的其他時表示只有本模塊中的其他過程才可以調(diào)用該過程才可以調(diào)用該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ù)組名。 ( ): 當(dāng)參數(shù)為

5、數(shù)組時使用。當(dāng)參數(shù)為數(shù)組時使用。(6) As : : 聲明函數(shù)值的類型。聲明函數(shù)值的類型。(7) Exit Function語句語句: 從從Function過程中退出。過程中退出。(8) Function過程通過賦值語句過程通過賦值語句: = 將函數(shù)的返回值賦給將函數(shù)的返回值賦給 。(9) Function過程的定義不能過程的定義不能嵌套嵌套。3. Function過程的建立過程的建立: 建立位置建立位置窗體模塊窗體模塊標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊類模塊類模塊*建立方法建立方法直接在代碼窗口中輸入直接在代碼窗口中輸入 應(yīng)寫在應(yīng)寫在“通用通用”的位置。的位置。使用菜單命令:工具使用菜單命令:工具添加過程添加

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過程,計算下面過程,計算下面表達(dá)式的值。表達(dá)式的值。|zyx|333 問:應(yīng)設(shè)置幾個參數(shù)?問:應(yīng)設(shè)置幾個參數(shù)? Function F(X, Y, Z) F = Sqr(Abs(X 3 + Y 3 + Z 3) End Function 這里的參數(shù)和函數(shù)名都沒有定義類型,默認(rèn)這里的參數(shù)和函數(shù)名都沒有定義類型,默認(rèn)為為Variant類型。類型。7.1.2 Function過程的調(diào)用過程的調(diào)用1. 調(diào)用位置:調(diào)用位置: 直接在表達(dá)式中調(diào)用。直接在表達(dá)式中調(diào)用。2. 調(diào)用格式調(diào)用格式: ( ) 其中,其中, : n常量、變量或表達(dá)式常量、變量或表達(dá)式n各參數(shù)之間用逗號分隔各參數(shù)之間用逗號分隔n如

8、果是數(shù)組,在數(shù)組名之后要跟一對空括號。如果是數(shù)組,在數(shù)組名之后要跟一對空括號?!纠纠?-3】從鍵盤任意輸入一個整數(shù),然】從鍵盤任意輸入一個整數(shù),然后調(diào)用計算后調(diào)用計算 階乘的函數(shù)求該整數(shù)的階乘值階乘的函數(shù)求該整數(shù)的階乘值。 設(shè)計界面和運行界面如下:設(shè)計界面和運行界面如下:Label3Text1Command1Label2設(shè)計界面設(shè)計界面運行界面運行界面代碼如下:代碼如下: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事件過程中調(diào)用函數(shù)過程事件過程中調(diào)用函數(shù)過程Private Sub Command1_Click() Dim X As Integer X = Val(Text1.Text) Label2.Caption=Trim(Str(X) & 的階乘數(shù)為的階乘數(shù)為: 使用使用Fact(X)調(diào)用函數(shù)過程調(diào)用函數(shù)過程 Label3.Caption = Trim(Str(Fact(X) End Sub【例【例7-4】利用】利用Function過程

10、計算階乘,求組過程計算階乘,求組合數(shù)。設(shè)計界面如下圖。合數(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) 調(diào)用調(diào)用Fact函數(shù)求各階乘值函數(shù)求各階乘值 C = Fact(M) / (Fact(N) * (Fact(M - N) Text3.Text = Trim(Str(c)End Sub【例【例7-5】編寫】編寫Function過程求最大公約數(shù),并通過程求最大公約數(shù),并通過命令按鈕的單擊事件過程調(diào)用該函數(shù)過程。過命令按鈕的單擊事件過程調(diào)用該函

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開始,例如,當(dāng)指定個數(shù)開始,例如,當(dāng)指定個數(shù)5時,時,函數(shù)返回字符串函數(shù)返回字符串 A B C D E。運行時單擊按鈕調(diào)運行時單擊按鈕調(diào)用該函數(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過程過程 當(dāng)需要自定義過程返回一個值時,使用當(dāng)需要自定義過程返回一個值時,使用Function過程很容易實現(xiàn)。過程很容易實現(xiàn)。 但在實際應(yīng)

16、用中,可能希望過程不需要返但在實際應(yīng)用中,可能希望過程不需要返回值,例如,使用過程打印一個圖形;或需回值,例如,使用過程打印一個圖形;或需要過程返回多個值,例如,利用過程對一批要過程返回多個值,例如,利用過程對一批數(shù)據(jù)進(jìn)行排序,在這些情況下就需要使用數(shù)據(jù)進(jìn)行排序,在這些情況下就需要使用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】編寫計算】編寫計算n!的的Sub過程。過程。 分析分析: 參數(shù)表中應(yīng)有一個參數(shù)參數(shù)表中應(yīng)有一個參數(shù)n,還應(yīng)有另一個參還應(yīng)有另一個參數(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ù),如首先要設(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過程的調(diào)用過程的調(diào)用說明說明: (1) : 要調(diào)用的要調(diào)用的Sub過程名。過程名。(2) : 可以是可以是常量、變量或表達(dá)式常量、變量或表達(dá)式,各參數(shù),各參數(shù)之間用逗號分隔。如果是之間用逗號分隔。如果是數(shù)組參數(shù)數(shù)組參數(shù),則要在數(shù),則要在數(shù)組名之后跟一對空括號

20、。組名之后跟一對空括號。(3) 用用Call語句調(diào)用一個語句調(diào)用一個Sub過程時,如果過程本身過程時,如果過程本身沒有參數(shù),則省略沒有參數(shù),則省略 和括號。和括號。(4) 格式二省略了格式二省略了Call關(guān)鍵字,同時關(guān)鍵字,同時 兩邊兩邊也不能帶括號。也不能帶括號。格式一格式一: 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,并通過命令按鈕的單擊事件調(diào)用該過程計

22、算并通過命令按鈕的單擊事件調(diào)用該過程計算S=1+(1+2)+(1+2+3)+ +(1+2+N)。 分析分析: 編寫一個編寫一個Sub過程計算過程計算1+2+K, 設(shè)參數(shù)設(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 調(diào)用過程調(diào)用過程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ù)傳遞是指是指調(diào)用過程與被調(diào)用過程之間的一調(diào)用過程與被調(diào)用過程之間的一種數(shù)據(jù)通訊方法。種數(shù)據(jù)通訊方法。 數(shù)據(jù)的傳遞方式可以是單向的,也可以是雙向數(shù)據(jù)的傳遞方式可以是單向的,也可以是雙向的。分別稱為的。分別稱為按值傳遞按值傳遞和和按地址傳遞按地址傳遞。 數(shù)據(jù)傳遞是通過數(shù)據(jù)傳遞是通過形參形參和和實參實參進(jìn)行傳遞的。進(jìn)行傳遞的。7.3.1 7.3.1 形參和實參形

24、參和實參 形參形參: 出現(xiàn)在出現(xiàn)在Sub或或Function語句中。語句中。 實參實參: 出現(xiàn)在調(diào)用程序中。出現(xiàn)在調(diào)用程序中。 例如,定義如下一個過程例如,定義如下一個過程: Sub SubTest(n As Integer,Sum As Single) End Sub 調(diào)用語句調(diào)用語句: Call SubTest( a , s )形參形參實參實參說明說明: 一般情況下,形參表與實參表中對應(yīng)參數(shù)個數(shù)、一般情況下,形參表與實參表中對應(yīng)參數(shù)個數(shù)、類型、位置順序必須一一對應(yīng)類型、位置順序必須一一對應(yīng)(除非使用關(guān)鍵字除非使用關(guān)鍵字Optional或或ParamArray對形參進(jìn)行了約束對形參進(jìn)行了約束

25、)形參表中的參數(shù)可以是形參表中的參數(shù)可以是: 除固定長度字符串之外的合法除固定長度字符串之外的合法 變量名、數(shù)組名變量名、數(shù)組名()實參表中的參數(shù)可以是實參表中的參數(shù)可以是: 常量、變量、表達(dá)式、數(shù)組名常量、變量、表達(dá)式、數(shù)組名()形參與實參的結(jié)合有兩種方式形參與實參的結(jié)合有兩種方式: 按值傳遞和按地址傳遞。按值傳遞和按地址傳遞。1. 按值傳遞按值傳遞 實參把其值傳遞給形參而不傳遞實參的地址。實參把其值傳遞給形參而不傳遞實參的地址。 數(shù)據(jù)的傳遞是單向的。數(shù)據(jù)的傳遞是單向的。(1) 當(dāng)實參為常量或表達(dá)式時,數(shù)據(jù)傳遞總是單向當(dāng)實參為常量或表達(dá)式時,數(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)按值傳遞需要在形參之形參之前前通過關(guān)鍵字通過關(guā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) 當(dāng)實參為變量或數(shù)組時,形參使用關(guān)鍵字當(dāng)實參為變量或數(shù)組時,形參使用關(guān)鍵字 ByRef定義定義(或省略或省略)表示要按地址傳遞。表示要按地址傳遞。(2) 當(dāng)參數(shù)是數(shù)組時,數(shù)組名之后必須使用一對空當(dāng)參數(shù)是數(shù)組時,數(shù)組名之后必須使用一對空的圓括號。的圓括號。 按地址傳遞可以實現(xiàn)調(diào)用過程與子

28、過程之間數(shù)按地址傳遞可以實現(xiàn)調(diào)用過程與子過程之間數(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。單擊窗體時調(diào)用該過單擊窗體時調(diào)用該過程打印程打印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前的關(guān)鍵字前的關(guān)鍵字ByVal,則會出現(xiàn)什么情況?則會出現(xiàn)什么情況?【例例7-15】編寫三個】編寫三個Sub過程過程 LetArray過程過程: 產(chǎn)生產(chǎn)生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ù)組從大到小排序?qū)崿F(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、間過程中調(diào)用以上在時間過程中調(diào)用以上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 過程的嵌套調(diào)用過程的嵌套調(diào)用 在一個過程執(zhí)行期間又調(diào)用另一個過程,在一個過程執(zhí)行期間又調(diào)用另一個過程,稱為過程的嵌套調(diào)用。稱為過程的嵌套調(diào)用。調(diào)用過程調(diào)用過程 子過程子過程

34、S1 子過程子過程S2調(diào)用調(diào)用S1調(diào)用調(diào)用S2 【例7-16】求 : 201n!n即求即求1!+2!+3!+20!,用!,用Function過程實過程實現(xiàn)。現(xiàn)。設(shè)計以下函數(shù):設(shè)計以下函數(shù):(1) 設(shè)計一個過程設(shè)計一個過程Fact求求n!(2) 設(shè)計另一個過程設(shè)計另一個過程Sigma求求n個數(shù)的和個數(shù)的和代碼如下:代碼如下:Private Sub Command1_Click() Dim n As Integer n = Val(InputBox(n=) Print Sigma(n) 調(diào)用調(diào)用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) 調(diào)用調(diào)用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 過程的遞歸調(diào)用過程的遞歸調(diào)用遞歸調(diào)用遞歸調(diào)用:在過程中直接或間接調(diào)用自身。在過程中直

36、接或間接調(diào)用自身。數(shù)學(xué)上常用于處理階乘運算、級數(shù)運算、數(shù)學(xué)上常用于處理階乘運算、級數(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工程結(jié)構(gòu)VB應(yīng)用程序由三種模塊組成應(yīng)用程序由三種模塊組成: 窗體模塊窗體模塊(Form) (文件擴展名文件擴展名.frm) 標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊(Module) (文件擴展名文件擴展名.bas) 類模塊類模塊(Class) (文件擴展名文件擴展名.cls)應(yīng)用程序應(yīng)用程序工程文

38、件工程文件(.vbp)窗體模塊窗體模塊(.frm)文件文件類模塊類模塊(.cls)文件文件標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊(.bas)文件文件事件過程事件過程Function過程過程Sub過程過程Property過程過程1. 窗體模塊包含:窗體模塊包含:事件過程事件過程通用過程通用過程通用聲明通用聲明(常量、變量、數(shù)組、外部過程)常量、變量、數(shù)組、外部過程)2. 可以用文本編輯器查看窗體模塊可以用文本編輯器查看窗體模塊 查看方法:查看方法: 右擊右擊.frm文件,選擇打開方式為記事本文件,選擇打開方式為記事本 顯示:顯示: 描述信息及程序代碼描述信息及程序代碼7.6.1 窗體模塊窗體模塊 當(dāng)一個應(yīng)用程序含有多

39、個窗體時當(dāng)一個應(yīng)用程序含有多個窗體時,可能其中的幾可能其中的幾個窗體都需要調(diào)用某一段公共代碼個窗體都需要調(diào)用某一段公共代碼,如果在每個窗如果在每個窗體內(nèi)都包含這些代碼體內(nèi)都包含這些代碼,就會造成大量的代碼冗余就會造成大量的代碼冗余,這這時就可以在標(biāo)準(zhǔn)模塊內(nèi)建立一個包含此公共代碼時就可以在標(biāo)準(zhǔn)模塊內(nèi)建立一個包含此公共代碼的通用過程的通用過程,實現(xiàn)代碼的共享。實現(xiàn)代碼的共享。 標(biāo)準(zhǔn)模塊不對應(yīng)于某個窗體、是純代碼模塊。標(biāo)準(zhǔn)模塊不對應(yīng)于某個窗體、是純代碼模塊。 標(biāo)準(zhǔn)模塊可以包含標(biāo)準(zhǔn)模塊可以包含:全局常量、變量、全局過程全局常量、變量、全局過程標(biāo)準(zhǔn)模塊級常量、變量、通用過程標(biāo)準(zhǔn)模塊級常量、變量、通用過程

40、 注注: 不能包含事件過程不能包含事件過程 添加添加: 工程工程添加模塊添加模塊選選“新建新建”標(biāo)簽標(biāo)簽打打開開“添加模塊添加模塊”對話框。對話框。 默認(rèn)名字默認(rèn)名字:ModuleX7.6.2 標(biāo)準(zhǔn)模塊 類是具有相同或相似特征的事物的集合,類封類是具有相同或相似特征的事物的集合,類封裝了對象的屬性裝了對象的屬性(數(shù)據(jù)成員數(shù)據(jù)成員)和方法和方法(處理數(shù)據(jù)的函處理數(shù)據(jù)的函數(shù)或過程數(shù)或過程)。程序員一般不對類進(jìn)行操作,而只能。程序員一般不對類進(jìn)行操作,而只能對類的實例對類的實例對象進(jìn)行操作。對象進(jìn)行操作。 Visual Baisc所使用的每種控件都對應(yīng)著一個所使用的每種控件都對應(yīng)著一個類,如類,如B

41、utton按鈕控件對應(yīng)著按鈕控件對應(yīng)著Button類,它們支類,它們支持封裝和多態(tài)性,但它們不支持繼承,即不能從持封裝和多態(tài)性,但它們不支持繼承,即不能從現(xiàn)有的類(控件)來創(chuàng)建新的類(控件)?,F(xiàn)有的類(控件)來創(chuàng)建新的類(控件)。 有時用戶需要創(chuàng)建自己的類以實現(xiàn)特定的功能,有時用戶需要創(chuàng)建自己的類以實現(xiàn)特定的功能,則可以通過類模塊創(chuàng)建自己的類。類模塊文件的則可以通過類模塊創(chuàng)建自己的類。類模塊文件的的擴展名為的擴展名為.cls。*7.6.3 類模塊類模塊 缺省情況下,應(yīng)用程序中的第一個窗體為啟動窗體,缺省情況下,應(yīng)用程序中的第一個窗體為啟動窗體,如果想在應(yīng)用程序啟動時首先顯示其它窗體,那么就得在

42、如果想在應(yīng)用程序啟動時首先顯示其它窗體,那么就得在“工程屬性工程屬性”對話框中改變啟動窗體的名稱。對話框中改變啟動窗體的名稱。 有時,有些應(yīng)用程序啟動時需要先做一些初始化工作,有時,有些應(yīng)用程序啟動時需要先做一些初始化工作,如裝入數(shù)據(jù)文件,然后再根據(jù)數(shù)據(jù)文件的內(nèi)容決定顯示哪如裝入數(shù)據(jù)文件,然后再根據(jù)數(shù)據(jù)文件的內(nèi)容決定顯示哪個窗體;有時應(yīng)用程序根本就不需要加載窗體(比如一些個窗體;有時應(yīng)用程序根本就不需要加載窗體(比如一些監(jiān)控程序)。為此,可以在標(biāo)準(zhǔn)模塊中編寫一個監(jiān)控程序)。為此,可以在標(biāo)準(zhǔn)模塊中編寫一個main過程過程,作為應(yīng)用程序的入口。作為應(yīng)用程序的入口。 定義定義sub main過程為啟

43、動程序的步驟:過程為啟動程序的步驟: “工程工程” “工程屬性工程屬性” 選擇選擇“通用通用”選項卡選項卡在在“啟動對象啟動對象”下拉列表框中選擇下拉列表框中選擇“Sub Main”。7.6.4 Sub Main過程 過程的建立位置不同,允許被訪問的范圍也不同。過程的建立位置不同,允許被訪問的范圍也不同。 作用域作用域: 模塊級、全局級模塊級、全局級 1. 模塊級過程模塊級過程: 在過程前如果加在過程前如果加Private關(guān)鍵字,則關(guān)鍵字,則這種過程只能被其所在的模塊中的其他過程所這種過程只能被其所在的模塊中的其他過程所調(diào)用。調(diào)用。2. 全局過程全局過程: 在過程前如果加在過程前如果加Publ

44、ic關(guān)鍵字關(guān)鍵字(或省略或省略),則這種過程可以被其他模塊中的過程所調(diào)用。則這種過程可以被其他模塊中的過程所調(diào)用。 調(diào)用格式調(diào)用格式: 模塊名模塊名.過程名過程名(參數(shù)表參數(shù)表) 注意:標(biāo)準(zhǔn)模塊中的全局過程名如果唯一,則調(diào)注意:標(biāo)準(zhǔn)模塊中的全局過程名如果唯一,則調(diào)用時可以省略模塊名用時可以省略模塊名7.6.5 過程的作用域例例:設(shè)窗體設(shè)窗體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可以省略可以省略添加標(biāo)準(zhǔn)模塊添加標(biāo)準(zhǔn)模塊Module1 ,編寫以下過程,編寫以下過程: Public Sub bb() bb為全局過程為全局過程 MsgBox (這是標(biāo)準(zhǔn)模塊中的過程這是標(biāo)準(zhǔn)模塊中的過程bb) End Sub可以省略可以省略設(shè)窗體設(shè)窗體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在應(yīng)用程序執(zhí)行期間保持在應(yīng)用程序執(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后運行結(jié)果后運行結(jié)果: 1 2 3 2 3 5局部變量局部變量局部變量局部變量2. 模塊級變量模塊級變量 聲明聲明 在模

48、塊的通用聲明段中用以下方法聲明的變量。在模塊的通用聲明段中用以下方法聲明的變量。 Private 在模塊運行時被初始化在模塊運行時被初始化 Dim 在模塊運行時被初始化在模塊運行時被初始化 作用范圍作用范圍 在該模塊的所有過程中都起作用在該模塊的所有過程中都起作用 其他模塊不能訪問這些變量其他模塊不能訪問這些變量3. 全局變量全局變量 聲明聲明 在模塊的通用聲明段中用以下方法聲明的變量在模塊的通用聲明段中用以下方法聲明的變量 Public 應(yīng)用程序運行時被初始化應(yīng)用程序運行時被初始化 作用范圍作用范圍: 應(yīng)用程序的所有過程應(yīng)用程序的所有過程例例: Dim Z As IntegerSub S()

49、 Z = Z + 2 Print ZEnd SubPrivate Sub C1_Click() Z = Z + 2 Call S Print ZEnd Sub第一次單擊第一次單擊C1結(jié)果結(jié)果: 4 4第二次單擊第二次單擊C1結(jié)果結(jié)果: 8 8第三次單擊第三次單擊C1結(jié)果結(jié)果: 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結(jié)果結(jié)果: 2 2第二次單

50、擊第二次單擊C1結(jié)果結(jié)果: 2 4第三次單擊第三次單擊C1結(jié)果結(jié)果: 26模塊級變量模塊級變量局部變量局部變量7.7.2 變量的生存期變量的生存期 靜態(tài)變量靜態(tài)變量: 在應(yīng)用程序執(zhí)行期間保留不變在應(yīng)用程序執(zhí)行期間保留不變 動態(tài)變量動態(tài)變量: 在所在的模塊在所在的模塊(過程過程)運行時被初始化運行時被初始化 單擊按鈕打印結(jié)果單擊按鈕打印結(jié)果: 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結(jié)果結(jié)果: 2 2第二次單擊第二次單擊C1結(jié)果結(jié)果: 4 2第三次單擊第三次單擊C1結(jié)果結(jié)果: 6 2靜態(tài)變量靜態(tài)變量動態(tài)變量動態(tài)變量本章小結(jié)本章小結(jié) 1. 函數(shù)過程的定義和調(diào)用函數(shù)過程的定義和調(diào)用 定義定義: Public | Private Static Function (

52、) ) As 函數(shù)名函數(shù)名 =表達(dá)式表達(dá)式 End Function 形參表形參表:變量、數(shù)組名變量、數(shù)組名() 調(diào)調(diào) 用用: 函數(shù)名函數(shù)名( ) 出現(xiàn)在表達(dá)式可以出現(xiàn)的位置出現(xiàn)在表達(dá)式可以出現(xiàn)的位置2. Sub過程的定義和調(diào)用過程的定義和調(diào)用定義定義: Private | Public Static Sub () End Sub調(diào)用調(diào)用: (1)Call ()(2) 注意注意: Sub過程調(diào)用與函數(shù)過程定義與調(diào)用的區(qū)別過程調(diào)用與函數(shù)過程定義與調(diào)用的區(qū)別3. 過程之間的參數(shù)傳遞過程之間的參數(shù)傳遞 按值傳遞按值傳遞: 實參為常數(shù)、表達(dá)式;實參為常數(shù)、表達(dá)式; 實參為變量,形參為實參為變量,形參為

53、 ByVal 變量變量 按地址傳遞按地址傳遞: 實參為變量、數(shù)組;形參用實參為變量、數(shù)組;形參用 ByRef 定義的變量、數(shù)組(或省略定義的變量、數(shù)組(或省略ByRef)4. 過程的嵌套調(diào)用過程的嵌套調(diào)用*5. 過程的遞歸調(diào)用過程的遞歸調(diào)用6. VB工程結(jié)構(gòu)工程結(jié)構(gòu) 窗體模塊窗體模塊(Form) (文件擴展名文件擴展名.frm) 標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊(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)系上傳者。文件的所有權(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!