【正文】
過程 第七章 第 7章 過程 本章內(nèi)容 通用過程 參數(shù)傳遞 嵌套調(diào)用 過程、變量的作用域 程序舉例 多窗體與 Sub Main過程 Function過程 Sub過程 第 7章 過程 引言 在 VB中的兩種過程: ( 1)由系統(tǒng)提供過程 系統(tǒng)提供的 內(nèi)部函數(shù)過程 (如 sqr函數(shù) )和 事件過程( click事件)。 ( 2)由用戶自定義過程 用戶根據(jù)實(shí)際應(yīng)用的需要而自行設(shè)計(jì)的過程 ,這樣的過程稱為“ 通用過程 ” 第 7章 過程 引言 通用過程分為兩類: ? 函數(shù)過程:以 Function保留字開始的過程。 ? 子程序過程:以 Sub保留字開始的過程; 第 7章 過程 例 求解 s = 1! + 2! + 3! + … + 10!的值 采用兩種不同解法 ( 1)解法一:采用 兩重循環(huán) ,外循環(huán) 10次,每次循環(huán)計(jì)算一次階乘,把每次階乘值累加起來,即得求解結(jié)果。 Dim s As Long, t As Long s = 0 For j = 1 To 10 39。計(jì)算 10個(gè)階乘 t = 1 39。計(jì)算 1個(gè)階乘前,先賦初值 For k = 1 To j 39。計(jì)算 j!,需要循環(huán) j次 t = t * k 39。連乘 j次 Next k s = s + t 39。把每次計(jì)算得到的階乘值 t累加 Next j Print s 第 7章 過程 階乘 n! (n!= 1 2 3 … n) Private Sub Form_Load( ) Show Dim t As Long, s As Long, i As Integer t = 1 For i = 1 To 5 t = t * i Next i s = t 例 計(jì)算 5! + 10! t = 1 For i = 1 To 10 t = t * i Next i s = s + t Print 5! + 10! =。 s End Sub 第 7章 過程 因?yàn)橛?jì)算 5!和 10!都要用到階乘 n! (n!= 1 2 3 … n) 所以把計(jì)算 n!編成 Sub過程。 Private Sub Form_Load( ) Show Dim y As Long, s As Long Call Jc(5, y) s = y Call Jc(10, y) s = s + y Print 5! + 10! =。 s End Sub 程序運(yùn)行結(jié)果: 5! + 10! = 3628920 Private Sub Jc( n As Integer, t As Long ) Dim i As Integer t = 1 For i = 1 To n t = t * i Next i End Sub 注意參數(shù) n及 t的調(diào)用情況 例 計(jì)算 5! + 10! 第 7章 過程 過程有兩個(gè)重要作用:一是把一個(gè)復(fù)雜的任務(wù)分解為若干個(gè)小任務(wù),可以用過程來表達(dá),從而使任務(wù)更易理解,更易實(shí)現(xiàn),將來更易維護(hù);二是代碼重用,使同一段代碼多次復(fù)用。 過程的作用 第 7章 過程 過程調(diào)用示例 把相同的任務(wù)編成相對(duì)獨(dú)立的“子過程” 當(dāng) 事件過程 需要執(zhí)行這個(gè)任務(wù)時(shí),可使用調(diào)用語句 (如 Call)實(shí)行調(diào)用。子過程執(zhí)行完后,會(huì)返回 事件過程 中調(diào)用語句 Call的后續(xù)語句繼續(xù)執(zhí)行 調(diào)用過程 …… Call SubA …… Call SubA …… Call SubB …… 子過程 SubA 子過程 SubB 通用過程 第 7章 過程 例 Sub過程示例 Private Sub Form_Load() Show Call mysub1(30) Call mysub2 Call mysub2 Call mysub2 Call mysub1(30) End Sub 程序運(yùn)行結(jié)果 Private Sub mysub1(n) Print String(n, *) End Sub Private Sub mysub2( ) Print *。 Tab(30)。 * End Sub Sub過程 參數(shù) n 無參數(shù) 第 7章 過程 Sub過程的定義 格式: [Static][Public|Private] Sub 過程名 (參數(shù)表列 ) 語句塊 [Exit Sub] 語句塊 End Sub 功能:定義一個(gè)以 子過程名 為名的 Sub過程。 (1) 在 VB中, Sub過程又稱為子過程。 (2)在子過程中如果沒有形參,調(diào)用時(shí)括號(hào)()必須省略。 Call mysub2 或 mysub2 第 7章 過程 Sub過程的調(diào)用 格式: Call 過程名 (實(shí)參列表 ) 或 過程名 實(shí)參列表 說明: ① 實(shí)參的個(gè)數(shù)、類型、順序應(yīng)與相應(yīng)的形參保持一致,子過程中如果沒有形參,則調(diào)用中也無實(shí)參。 ② 第 2種調(diào)用方式與第 1種相比,結(jié)果一樣,只是去掉 Call和一對(duì)括號(hào) ( )。 例如,調(diào)用名為 mysub1的過程: Call mysub1(30) mysub1 30 第 7章 過程 函數(shù)過程 [Static][Public|Private] Function 函數(shù)過程名 ([參數(shù)列表 ]) [As 類型 ] 語句塊 函數(shù)名 = 返回值 [Exit Function] 語句塊 函數(shù)名 = 返回值 End Function 功能:定義一個(gè)以 函數(shù)名 為名的 Function過程 。 函數(shù)過程體 第 7章 過程 函數(shù)過程說明 1. As 類型: 返回值的類型 = 返回值 函數(shù)過程必須返回函數(shù)值,而函數(shù)名就代表了函數(shù)值,在函數(shù)體內(nèi)至少對(duì)函數(shù)名賦值一次。若不賦值則默認(rèn)返回值為 0或空串或空值。 函數(shù)名本身就是變量。 第 7章 過程 函數(shù)過程的調(diào)用 形式: 變量名 = 函數(shù)過程名(實(shí)參列表) 或 print 函數(shù)過程名 (實(shí)參列表 ) 功能:調(diào)用一個(gè)已定義的 Function過程。 jiechen(5) jiechen(6) jiechen(7) a = jiechen(5) b = jiechen(6) c = jiechen(7) Print jiechen(5) + jiechen(6) + jiechen(7) 第 7章 過程 將 n!的 Sub過程改為 Function過程。 Private Sub Form_Load( ) Show Dim s As Long s = Jc(5) + Jc(10) Print 5! + 10! =。 s End Sub Func