版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第6章過 程本章要點(diǎn): Function過程 Sub過程 參數(shù)的傳遞 代碼模塊 變量的作用域與生存期2過程的引入: 使同類的操作不重復(fù) (操作方法相同、參數(shù)不同)過程: 完成一段獨(dú)立功能,可供其他過程使用(調(diào)用)。 過程又稱為子程序調(diào)用過程: 調(diào)用其他過程的過程調(diào)用過程: 調(diào)用Sprg1調(diào)用Sprg1調(diào)用Sprg2子過程: Sprg1子過程: Sprg23過程分類: Sub過程Function過程*內(nèi)部過程(方法) 事件過程 自定義過程 內(nèi)部函數(shù) 自定義函數(shù)46.1 Function過程6.1.1 Function過程的定義1. Function過程的格式 Public|PrivateSta
2、tic Function () As = Exit Function = End Function52. 說明(1) Public: 缺省值。使用Public時表示所有模塊的所 有其他過程都可以調(diào)用該Function過程。(2) Private: 使用Private時表示只有本模塊中的其他 過程才可以調(diào)用該Function過程。(3) Static: 使用Static時表示將過程中的所有局部變 量說明為靜態(tài)變量。(4) : Function過程的名稱,遵循變量 的命名規(guī)則。(5) : 表示在調(diào)用時要傳遞給Function過程的參數(shù)變量列表。多個變量之間用逗號隔開。6 格式: ByVal|ByR
3、ef( ) As ByVal: 表示該參數(shù)按值傳遞。 ByRef: 缺省值。表示該參數(shù)按地址傳遞。 : 遵循變量命名規(guī)則的任何變量名 或數(shù)組名。 ( ): 當(dāng)參數(shù)為數(shù)組時使用。(6) As : 聲明函數(shù)值的類型。(7) Exit Function語句: 從Function過程中退出。(8) Function過程通過賦值語句: = 將函數(shù)的返回值賦給。(9) Function過程的定義不能嵌套。7Function過程的建立: 直接在代碼窗口中輸入。 在代碼窗口: 工具 添加過程?!纠?-1】編寫一個計算n!的Function過程。 Function Fact(N As Integer) As L
4、ong Dim I As Integer, F As Long F = 1 F用于保存階乘值 For I = 1 To N F = F * I Next I Fact = F 給函數(shù)過程名賦值 End Function8【例6-2】編寫一個Function過程,計算下面表達(dá)式的值。 Function F(X, Y, Z) F = Sqr(Abs(X 3 + Y 3 + Z 3) End Function9.1.2 Function過程的調(diào)用 直接在表達(dá)式中調(diào)用。 格式: () : 常量、變量或表達(dá)式,各參數(shù)之間用逗號分隔。如果是數(shù)組,在數(shù)組名之后必須跟一對空括號。9【例6-3】利用Functi
5、on過程計算階乘,求組合數(shù)。設(shè)計界面如下圖。Text2OLE1控件Text1Text3Command1BackStyle: 0 - TransparentBorderStyle: 0 NoneSizeMode: 2 - AutoSize10 定義求階乘的函數(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 FunctionPrivate Sub Command1_Click() =按鈕的事件過程 Dim
6、 m As Integer, n As Integer, c As Double m = Val(Text1.Text) n = Val(Text2.Text) c = Fact(m) / (Fact(n) * (Fact(m - n) 調(diào)用Fact Text3.Text = Trim(Str(c)End Sub116.2 Sub過程6.2.1 Sub過程的定義1. Sub過程的格式 Private|PublicStatic Sub () Exit Sub End Sub2. 說明(1) Exit Sub用于退出Sub過程。(2) 不具有值的意義,在Sub過程中不能給賦值,也不能給定義類型。1
7、2(3) Sub過程通過中的參數(shù)返回值。(4) Sub過程的建立方法與Function過程的建立方法相同?!纠?-4】編寫計算n!的Sub過程。 分析: 參數(shù)表中應(yīng)有一個參數(shù)n,還應(yīng)有另一個參數(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 Sub136.2.2 Sub過程的調(diào)用 格式一: Call () 格式二: 說明: (1) : 要調(diào)用的Sub過程名;(2) : 可以是常量、變量或表達(dá)式,各參數(shù)之間用逗號分隔。如果是數(shù)組參數(shù),則要在
8、數(shù)組名之后跟一對空括號。(3) 用Call語句調(diào)用一個Sub過程時,如果過程本身沒有參數(shù),則省略和括號。(4) 格式二省略了Call關(guān)鍵字,同時兩邊也不能帶括號。14【例6-5】將求組合數(shù)一題改成用Sub過程實(shí)現(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 Sub Command1_Click() Dim M As Integer, N As Integer Dim f1 As Long, f2 As Long, f3 As Long
9、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 Sub15【例6-6】編寫一個Sub過程,計算K個數(shù)的和,即1+2+K,并通過命令按鈕的單擊事件調(diào)用該過程計算S=1+(1+2)+(1+2+3)+ +(1+2+N)。 分析: 編寫一個Sub過程計算1+2+K, 設(shè)參數(shù)K、S,參數(shù)S用于返回該和值。 Sub A1(K As Integer, S As Integer) S =
10、 0 For J = 1 To K S = S + J Next J End Sub16Private Sub Command1_Click() Dim N As Integer, S1 As Integer, I As Integer N = Val(Text1.Text) For I = 1 To N 調(diào)用過程A1求1+2+I,和值返回到S1中 Call A1(I, S1) Sum = Sum + S1 Next I Text2.Text = SumEnd Sub176.3 過程的嵌套 在一個過程執(zhí)行期間又調(diào)用另一個過程,稱為過程的嵌套調(diào)用。調(diào)用過程 子過程S1 子過程S2調(diào)用S1調(diào)用S2
11、186.4 參數(shù)的傳遞 調(diào)用過程與被調(diào)用過程之間的一種數(shù)據(jù)通訊方法。 數(shù)據(jù)的傳遞可以是單向的,也可以是雙向的。6.4.1 形參和實(shí)參 形參: 出現(xiàn)在Sub或Function語句中。 實(shí)參: 出現(xiàn)在調(diào)用程序中。 例如,定義如下一個過程: Sub SubTest(n As Integer,Sum As Single) End Sub 調(diào)用語句: Call SubTest( a , s)形參實(shí)參19說明: 在傳遞參數(shù)時,形參表與實(shí)參表中對應(yīng)參數(shù)個數(shù)、類型、位置順序必須一一對應(yīng)。 形參表中的參數(shù)可以是: 除固定長度字符串之外的合法變量名、數(shù)組名() 實(shí)參表中的參數(shù)可以是: 常量、變量、表達(dá)式、 數(shù)組名
12、() 形參與實(shí)參的結(jié)合有兩種方式: 按值傳遞和按地址傳遞。206.4.2 按值傳遞和按地址傳遞1. 按值傳遞 實(shí)參把其值傳遞給形參而不傳遞實(shí)參的地址。 數(shù)據(jù)的傳遞是單向的。(1) 當(dāng)實(shí)參為常量或表達(dá)式時,數(shù)據(jù)傳遞總是單向的。 例如: Call SubTest(10, 1+2) Sub SubTest( n As Integer,Sum As Single)21(2) 實(shí)參是變量時,要實(shí)現(xiàn)按值傳遞需要在形參之前通過關(guān)鍵字ByVal來實(shí)現(xiàn)。 例如: Sub SS(ByVal X, ByVal Y, ByVal Z) X = X + 1: Y = Y + 1: Z = Z + 1 End Sub P
13、rivate Sub Command1_Click() A = 1: B = 2: C = 3 Call SS(A, B, C) Print A, B, C End Sub 運(yùn)行時,單擊命令按鈕在窗體上打印: 1 2 3222. 按地址傳遞 指將實(shí)參的地址傳給形參,使形參和實(shí)參具有相同的地址,即形參與實(shí)參共享同一存儲單元。(1) 當(dāng)實(shí)參為變量或數(shù)組時,形參使用關(guān)鍵字ByRef定義(或省略)表示要按地址傳遞。(2) 當(dāng)參數(shù)是數(shù)組時,數(shù)組名之后必須使用一對空的圓括號。 按地址傳遞可以實(shí)現(xiàn)調(diào)用過程與子過程之間數(shù)據(jù)的雙向傳遞。23 例: Sub SS(ByRef X, ByRef Y, ByRef Z
14、) 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實(shí)參: A B C存儲單元運(yùn)行時,單擊命令按鈕在窗體上打印: 2 3 424【例6-7】編寫一個計算乘冪的Function過程,用來計算x的y次冪,其中y0。單擊窗體時調(diào)用該過程打印51、52、53、54、55的值。 Function Power(x As Single, ByVal y As Integer) Dim r
15、esult As Single result = 1 Do While y 0 result = result * x y = y - 1 Loop Power = result End Function25Private Sub Form_Click() Dim i As Integer For i = 1 To 5 Print Power(5, i) Next iEnd Sub思考: 如果取消過程Power中參數(shù)y前的關(guān)鍵字ByVal,則會出現(xiàn)什么情況?266.5 代碼模塊VB應(yīng)用程序由三種模塊組成: 窗體模塊(Form) (文件擴(kuò)展名.frm) 標(biāo)準(zhǔn)模塊(Module) (文件擴(kuò)展名.b
16、as) 類模塊(Class) (文件擴(kuò)展名.cls)應(yīng)用程序工程文件(.vbp)窗體模塊(.frm)文件類模塊(.cls)文件標(biāo)準(zhǔn)模塊(.bas)文件Function過程Sub過程事件過程Function過程Sub過程276.5.1 窗體模塊 包含: 事件過程 通用過程 通用聲明6.5.2 標(biāo)準(zhǔn)模塊 不對應(yīng)于某個窗體、完全是純代碼。 包含: 全局常量、變量、全局過程 標(biāo)準(zhǔn)模塊級常量、變量、通用過程 注: 不能包含事件過程 添加: 工程添加模塊選“新建”標(biāo)簽打開“添加模塊”對話框 6.5.3 類模塊 在類模塊中編寫代碼建立新對象。286.5.4 過程的作用域 過程的建立位置不同,允許被訪問的范圍
17、也不同。 作用域: 模塊級、全局級 1. 模塊級過程: 在過程前如果加Private關(guān)鍵字,則這種過程只能被其所在的模塊中的其他過程所調(diào)用。2. 全局過程: 在過程前如果加Public關(guān)鍵字(或省略),則這種過程可以被其他模塊中的過程所調(diào)用。3. 過程的作用域: 見P15629例:設(shè)窗體Form1中有按鈕: Command1、 Command2 Public Sub aa() aa為全局過程 MsgBox (這是窗體Form1中的過程) End Sub Private Sub Command1_Click() Call aa End Sub Private Sub Command2_Click
18、() Form2.Show End Sub可以省略添加標(biāo)準(zhǔn)模塊Module1 ,編寫以下過程: Public Sub bb() bb為全局過程 MsgBox (這是標(biāo)準(zhǔn)模塊中的過程bb) End Sub可以省略30設(shè)窗體Form2中有按鈕: Command1 、 Command2 Private Sub Command1_Click() Call Form1.aa End Sub Private Sub Command2_Click() Call Module1.bb End Sub不可以省略可以省略316.6 變量的作用域與生存期 變量的作用域: 指變量的有效范圍。 變量的生存期: 指變量的
19、作用時間。6.6.1 變量的作用域 將變量分為: 局部變量 模塊級變量 全局變量模塊級變量全局變量局部變量模塊過程321. 局部變量 聲明 不聲明 Dim A As Integer A每次執(zhí)行過程時被初始化 Static C As Single C在應(yīng)用程序執(zhí)行期間保持不變 作用范圍 僅在聲明的過程中起作用 其他過程中即使有同名變量,也不是指同一變量。33例: 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
20、End Sub單擊C1后運(yùn)行結(jié)果: 1 2 3 2 3 534例: Sub S() Static Z As Integer Z = Z + 2 Print ZEnd SubPrivate Sub Command1_Click() Dim Z As Integer Z = Z + 2 Call S Print ZEnd Sub第一次單擊C1結(jié)果: 2 2第二次單擊C1結(jié)果: 4 2第三次單擊C1結(jié)果:62352. 模塊級變量 聲明 在模塊的通用聲明段中用以下方法聲明的變量。 Private 在模塊運(yùn)行時被初始化 Dim 在模塊運(yùn)行時被初始化 作用范圍 在該模塊的所有過程中都起作用 其他模塊不能訪
21、問這些變量3. 全局變量 聲明 在模塊的通用聲明段中用以下方法聲明的變量 Public 應(yīng)用程序運(yùn)行時被初始化 作用范圍: 應(yīng)用程序的所有過程36例: Dim Z As IntegerSub S() Z = Z + 2 Print ZEnd SubPrivate Sub C1_Click() Z = Z + 2 Call S Print ZEnd Sub第一次單擊C1結(jié)果: 4 4第二次單擊C1結(jié)果: 8 8第三次單擊C1結(jié)果: 121237例: Dim Z As IntegerSub S() Dim Z Z = Z + 2 Print zEnd SubPrivate Sub C1_Click
22、() Z = Z + 2 Call S Print ZEnd Sub第一次單擊C1結(jié)果: 2 2第二次單擊C1結(jié)果: 2 4第三次單擊C1結(jié)果: 2638【例6-14】P160例9-21標(biāo)準(zhǔn)模塊: M1存放N的立方值,M2存放N的階乘值Public M1 As Integer, M2 As Integer定義求階乘函數(shù)F(N)Public Function F(N) As Integer F1 = 1 For I = 1 To N F1 = F1 * I Next I F=F1End FunctionI: 局部變量F1: 局部變量N: 形式參數(shù)F: 公共函數(shù)M1、M2: 全局變量39Form1模塊: Dim N As IntegerPrivate Sub C1_Click() N = Val(Text1.Text) M1 = N * N * N Text2.Text = M1End SubPrivate Sub C2_Click() M2 = F(N) Text3.Text = M2End SubPrivate Sub C3_Click() Form2.ShowEnd SubN: 模塊級變量 實(shí)際參數(shù)F: 公共函數(shù)M1、M2: 全局變量40Private Sub C1_Click() Text1
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品質(zhì)量持續(xù)改進(jìn)培訓(xùn)課件
- 電子產(chǎn)品回收處理標(biāo)準(zhǔn)
- 單病種臨床路徑管理制度
- 智能小區(qū)物聯(lián)網(wǎng)應(yīng)用系統(tǒng)
- 《Excel數(shù)據(jù)獲取與處理實(shí)戰(zhàn)》 課件 陳青 第3、4章 數(shù)據(jù)的輸入、工作表的格式化
- 溶劑泄露應(yīng)急處置
- GMP基礎(chǔ)知識培訓(xùn)
- 病從口入教案反思
- 胸腔閉式引流器的護(hù)理
- 城市娛樂設(shè)施建筑平房施工合同
- 2024秋季新人教七上全冊重點(diǎn)短語句型小紙條【空白版】
- 2024-2025一年級上冊科學(xué)教科版1.5 《植物的變化》課件
- 2024新教科版一年級科學(xué)上冊第一單元《周圍的植物》全部教案
- 2024年新青島版(六三制)六年級上冊科學(xué)全冊知識點(diǎn)(背誦專用)
- 【良品鋪?zhàn)淤Y本結(jié)構(gòu)問題及優(yōu)化對策分析案例10000字】
- 前程無憂的題庫
- 擔(dān)保法全文(2024版)
- 上海教育出版社:六年級英語上冊(三年級起點(diǎn))單詞表(帶音標(biāo))
- 《中小型機(jī)場空管設(shè)施防雷裝置檢測技術(shù)規(guī)范》編制說明
- 《沙龍培訓(xùn)》課件
- 知道網(wǎng)課智慧《文獻(xiàn)檢索與科技論文寫作》測試答案
評論
0/150
提交評論