第七講VB過程.ppt_第1頁
第七講VB過程.ppt_第2頁
第七講VB過程.ppt_第3頁
第七講VB過程.ppt_第4頁
第七講VB過程.ppt_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第七講 過 程,2,復(fù)習(xí):,數(shù)組的含義?,Dim arr(10 to 20) 所定義的數(shù)組元素的個數(shù)是多少?,控件數(shù)組中,第一個控件的Index 的值是多少?,3,本 講 主 要 內(nèi) 容,Function過程 Sub過程 過程的嵌套 參數(shù)的傳遞 變量的作用域與生存期,4,過程的引入: 使同類的操作不重復(fù) (操作方法相同、參數(shù)不同) 過程: 完成一段獨(dú)立功能,可供其他過程使用(調(diào)用)。 過程又稱為子程序 調(diào)用過程: 調(diào)用其他過程的過程,引言,5,Sub過程,Function過程,*內(nèi)部過程(方法 cls,print) 事件過程 自定義過程,內(nèi)部函數(shù):sin、val、str等 自定義函數(shù),過程分類

2、,6,1. Function過程,Function過程的定義 Function過程的格式 Public|PrivateStatic Function () As = Exit Function = End Function,7,Function過程的建立 直接在代碼窗口中輸入。 在代碼窗口: 工具 添加過程。,Function過程,【例】編寫一個計算n!的Function過程。 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

3、I Fact = F 給函數(shù)過程名賦值,作返回值 End Function,8,Function過程,Function過程的調(diào)用 格式: () : 常量、變量或表達(dá)式,各參數(shù)之間用逗號分隔。如果是數(shù)組,在數(shù)組名之后必須跟一對空括號。,【例】從鍵盤上任意輸入一個整數(shù),然后調(diào)用編寫的Fact函數(shù)過程計算其階乘數(shù)。,9,Function過程舉例,【例】編寫Function過程求最大公約數(shù),并通過命令按鈕的單擊事件過程調(diào)用該函數(shù)過程。,10,2. Sub 過程,Sub過程的定義 Sub過程的格式 Private | Public Static Sub () Exit Sub End Sub,11,說明

4、 Exit Sub用于退出Sub過程。 不具有值的意義,在Sub過程中不能給賦值,也不能給定義類型。 Sub過程通過中的參數(shù)返回值。 Sub過程的建立方法與Function過程的建立方法相同。,Sub 過程,12,Sub 過程,【例】編寫計算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 Sub,13,【例】編寫Sub過程,求三個數(shù)中的最大數(shù)和最小數(shù)。,Sub 過程,分

5、析: 首先要設(shè)置三個參數(shù),如x、y、z,用于接收三個 原始數(shù)據(jù),另外引入兩個參數(shù)max和min,用于返 回最大和最小數(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 Sub,14,Sub過程的調(diào)用 格式1: Call () 格式2: 說明: : 要調(diào)用的Sub過程名; : 可以是常量、變量或表達(dá)式,各參數(shù)之間用逗號分隔。如是數(shù)組參數(shù),則要在數(shù)組名之后跟一對空括號。 用Call語句調(diào)用一個Sub過程時,如果過程本身沒有參

6、數(shù),則省略和括號。 格式2省略了Call關(guān)鍵字,同時兩邊也不能帶括號。,Sub 過程,15,【例】編寫一個Sub過程,實現(xiàn)將三個數(shù)由大到小排序。程序運(yùn)行時單擊“排序前”按鈕產(chǎn)生0,99之間的三個隨機(jī)整數(shù),并將文本框Text2的內(nèi)容清空,單擊“排序后”按鈕,調(diào)用該Sub過程完成排序。,Sub過程應(yīng)用,16,3 . 過程的嵌套,在一個過程執(zhí)行期間又調(diào)用另一個過程,稱為過程的嵌套調(diào)用,調(diào)用過程 子過程S1 子過程S2, 調(diào)用S1 , 調(diào)用S2 ,17,【例】用Function過程求1!+2!+3!+20! Private Sub Command1_Click() Dim n As Integer n

7、 = Val(InputBox(n=) Print Sigma(n) 調(diào)用Sigma過程 End Sub Function Sigma(n As Integer) As Double Dim i As Integer, sum As Double sum = 0 For i = 1 To n sum = sum + Fact(i) 調(diào)用Fact過程 Next i Sigma = sum End Function,應(yīng)用舉例,18,Function Fact(n As Integer) As Double Dim i As Integer, f As Double f = 1 For i = 1

8、To n f = f * i Next i Fact = f End Function,應(yīng)用舉例,19,遞歸,問題:有5個人坐在一起,問第5個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問第3個人,又說比第2個人大2歲。問第2個人,說比第1個人大2歲。最后問第1個人,他說是10歲。請問第5個人多大。,分析: 顯然,這是一個遞歸問題。要求第5個人的年齡,就必須先知道第4個人的年齡,而第4個人的年齡也不知道,要求第4個人的年齡必須先知道第3個人的年齡,而第3個人的年齡又取決于第2個人的年齡,第2個人的年齡取決于第1個人的年齡。而且每一個人的年齡都比其前1個人的年齡大2。,

9、20,過程的遞歸調(diào)用,數(shù)學(xué)表達(dá)式: age(5)=age(4)+2 age(4)=age(3)+2 age(3)=age(2)+2 age(2)=age(1)+2 age(1)=10,10(n1) age(n) age(n1)2 (n1),思考:求n的階乘,用遞歸思想編程。,21,4. 參數(shù)的傳遞,調(diào)用過程與被調(diào)用過程之間的一種數(shù)據(jù)通訊方法。 數(shù)據(jù)的傳遞可以是單向的,也可以是雙向的。 形參和實參 形參: 出現(xiàn)在Sub或Function語句中(定義時) 實參: 出現(xiàn)在調(diào)用程序中 例如,定義如下一個過程: Sub SubTest(n As Integer,Sum As Single) End Su

10、b 調(diào)用語句: Call SubTest( a , s ),形參,實參,22,形參和實參,說明: 在傳遞參數(shù)時,形參表與實參表中對應(yīng)參數(shù)個數(shù)、類型、位置順序必須一一對應(yīng) 形參表中的參數(shù)可以是: 除固定長度字符串之外的合法變量名、數(shù)組名() 實參表的參數(shù)可以是: 常量、變量、表達(dá)式、數(shù)組名() 形參與實參的結(jié)合有兩種方式: 按值傳遞和按地址傳遞,23,按值傳遞 實參把其值傳遞給形參而不傳遞實參的地址 數(shù)據(jù)的傳遞是單向的 當(dāng)實參為常量或表達(dá)式時,數(shù)據(jù)傳遞總是單向的 例如: Call SubTest(10, 1+2) Sub SubTest( n As Integer,Sum As Single),

11、按值傳遞,24,實參是變量時,要實現(xiàn)按值傳遞需要在形參之前通過關(guān)鍵字ByVal來實現(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) Print A, B, C End Sub 運(yùn)行時,單擊命令按鈕在窗體上打印: 1 2 3,25,按地址傳遞 指將實參的地址傳給形參,使形參和實參具有相同的地址,即形參與實參共享同一存儲單元 當(dāng)實參為變量或數(shù)組時,

12、形參使用關(guān)鍵字ByRef定義(或省略)表示要按地址傳遞。 當(dāng)參數(shù)是數(shù)組時,數(shù)組名之后必須使用一對空的圓括號。 按地址傳遞可以實現(xiàn)調(diào)用過程與子過程之間數(shù)據(jù)的雙向傳遞,按地址傳遞,26,應(yīng)用舉例,Sub swap1( x As Integer, y As Integer) Dim t As Integer t = x: x = y: y = t End Sub,Sub swap2(byval x As Integer, byval y As Integer) Dim t As Integer t = x: x = y: y = t End Sub,Private Sub Command1_Clic

13、k() Dim x As Integer: Dim y As Integer x = Int(Text1.Text): y = Int(Text2.Text) Text1.Text = x :Text2.Text = y End Sub,Call swap2(x, y),Call swap1(x, y),27,5. 變量的作用域與生存期,變量的作用域: 指變量的有效范圍。 變量的生存期: 指變量的作用時間。 變量的作用域 將變量分為: 局部變量; 模塊級變量; 全局變量,28,局部變量 Dim A As Integer A每次執(zhí)行過程時被初始化 Static C As Single C在應(yīng)用程

14、序執(zhí)行期間保持不變 作用范圍 僅在聲明的過程中起作用 其他過程中即使有同名變量,也不是指同一變量,變量的作用域,29,模塊級變量 聲明: 在模塊的通用聲明段中用以下方法聲明的變量 Private 在模塊運(yùn)行時被初始化 Dim 在模塊運(yùn)行時被初始化 作用范圍 在該模塊的所有過程中都起作用 其他模塊不能訪問這些變量 全局變量 聲明: 在模塊的通用聲明段中用以下方法聲明的變量 Public 應(yīng)用程序運(yùn)行時被初始化 作用范圍: 應(yīng)用程序的所有過程,變量的作用域,30,例: Dim Z As Integer Sub S() Dim Z Z = Z + 2 Print z End Sub Private Sub C1_Cl

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論