版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第四章函數(shù)和過(guò)程, “Sub” 保留字開(kāi)始的為子過(guò)程 “Function” 保留字開(kāi)始的為函數(shù)過(guò)程 例如 Private Sub Command1_Click() Form1.FontSize = 20 Form1.Print 這是一個(gè)sub過(guò)程 End Sub,在VB5.0/6.0中,除了系統(tǒng)提供的內(nèi)部函數(shù)過(guò)程和事件過(guò)程外,用戶可自定義過(guò)程下列四種過(guò)程:,在VB中,的Sub子過(guò)程分為:事件過(guò)程和通用過(guò)程 事件過(guò)程 (1)窗體事件的語(yǔ)法 Private Sub Form_事件名(參數(shù)列表) 語(yǔ)句組 End Sub (2)控件事件的語(yǔ)法 Private Sub 控件名_事件名(參數(shù)列表) 語(yǔ)句組
2、 End Sub,Sub過(guò)程,問(wèn)題的引出,For i = 1 To n e = e + x i / fact(i) Next i,Private Function fact(k As Integer) As Long Dim i As Integer fact = 1 For i = 1 To k fact = fact * i Next i End Function,Function過(guò)程,Visual Basic函數(shù)分為內(nèi)部函數(shù)和外部函數(shù),外部函數(shù)是用戶根據(jù)需要用Function關(guān)鍵字定義的函數(shù)過(guò)程,與子過(guò)程不同的是函數(shù)過(guò)程將返回一個(gè)值 。,函數(shù)過(guò)程(Function過(guò)程)的定義,Publi
3、c|PrivateStaticFunction 函數(shù)名()As Exit Function 函數(shù)名=返回值 End Function,說(shuō)明: (1)在函數(shù)體內(nèi),函數(shù)名可以當(dāng)變量使用,函數(shù)的返回值就是通過(guò)對(duì)函數(shù)名的賦值語(yǔ)句來(lái)實(shí)現(xiàn)的,在函數(shù)過(guò)程中至少要對(duì)函數(shù)名賦值一次。 (2)AS類型:是指函數(shù)返回值的類型,若省略,則函數(shù)返回變體類型值(Variant)。 (3)Exit Function:表示退出函數(shù)過(guò)程,常常是與選擇結(jié)構(gòu)(If或Select Case語(yǔ)句)聯(lián)用,即當(dāng)滿足一定條件時(shí),退出函數(shù)過(guò)程。,函數(shù)的調(diào)用,調(diào)用形式如下: 函數(shù)名(實(shí)參列表) 或 函數(shù)名 實(shí)參列表 或 變量=函數(shù)名(實(shí)參列表)
4、或 call 函數(shù)名(實(shí)參列表) 說(shuō)明: 在調(diào)用時(shí)實(shí)參和形參的數(shù)據(jù)類型、順序、個(gè)數(shù)必須匹配。函數(shù)調(diào)用只能出現(xiàn)在表達(dá)式中,其功能是求得函數(shù)的返回值。,例4-2,找出親密數(shù)對(duì)(ab, 但a的因子和 等于b,而b的因子和等于a),For a = 6 To 5000 b = f1(a) c = f1(b) If c = a And a b Then Form1.Print a, b Next a,只有b為a 的因子和,才來(lái)檢驗(yàn)b的因子和是否與a 相等,Private Function f1(n As Integer) As Integer Dim i As Integer f1 = 1 For i =
5、 2 To n / 2 If n Mod i = 0 Then f1 = f1 + i Next i End Function,符合條件,I 為因子,累加,例4-3,顯示1-1000之間的素?cái)?shù),要求編制函數(shù)過(guò)程,用于判斷1個(gè)整數(shù)是否是素?cái)?shù),For i = 1 To 1000 If prime(i)=true Then Print i, k = k + 1 If k Mod 6 = 0 Then Print 每行輸出6個(gè) End If Next i,Private Function prime(n As Integer) As Boolean If n Sqr(n) Then prime = T
6、rue Else prime = False End If End Function,例4-4, 計(jì)算a數(shù)組中最大值與b數(shù)組中最大值之差,m = InputBox(輸入a數(shù)組元素的個(gè)數(shù), 1=m=20) n = InputBox(輸入b數(shù)組元素的個(gè)數(shù), 1=n=20) ReDim a(m) As Single, B(n) As Single For i = 1 To m a(i) = InputBox(a( + Str(i) + ), 輸入數(shù)組a) Next i For i = 1 To n B(i) = InputBox(b( + Str(i) + ), 輸入數(shù)組b) Next i Prin
7、t fmax(a(), m) - fmax(B(), n),Private Function fmax(x() As Single, ByVal n As Byte) As Single Dim i As Integer fmax = x(1) For i = 2 To n If x(i) fmax Then fmax = x(i) Next i End Function,例4-5,編寫一個(gè)函數(shù),其功能是求一個(gè)二維數(shù)組中全體元素的和,Private Sub form_click() Dim x(2, 3) As Single x(1, 1) = 1: x(1, 2) = 2: x(1, 3)
8、= 3 x(2, 1) = 2: x(2, 2) = 3: x(2, 3) = 4 Form1.Print f4(x(), 2, 3) End Sub,Private Function f4(a() As Single, m As Byte, n As Byte) As Single Dim i As Byte, j As Byte For i = 1 To m For j = 1 To n f4 = f4 + a(i, j) Next j Next i End Function,子過(guò)程的定義形式如下: Public|PrivateStatic Sub 子過(guò)程名(形參表) 語(yǔ)句組 語(yǔ)句組 En
9、d Sub,通用過(guò)程(Sub過(guò)程)的定義,說(shuō)明: (1)子過(guò)程名:命名規(guī)則與變量名規(guī)則相同。子過(guò)程名不返回值,而是通過(guò)形參與實(shí)參的傳遞得到結(jié)果,調(diào)用時(shí)可返回多個(gè)值。,(2)形式參數(shù)列表:形式參數(shù)通常簡(jiǎn)稱“形參”,僅表示形參的類型、個(gè)數(shù)、位置,定義時(shí)是無(wú)值的,只有在過(guò)程被調(diào)用時(shí),虛實(shí)參結(jié)合后才獲得相應(yīng)的值。 (4)參數(shù)的定義形式: ByValByRef變量名( )As 類型,, ByVal表示當(dāng)該過(guò)程被調(diào)用時(shí),參數(shù)是按值傳遞的;缺省或ByRef表示當(dāng)該過(guò)程被調(diào)用時(shí),參數(shù)是按地址傳遞的。,編一個(gè)交換兩個(gè)整型變量值的子過(guò)程。 Private Sub Swap( X As Integer, Y As
10、Integer) Dim temp As Integer Temp=X : X=Y : Y=Temp End Sub,過(guò)程的調(diào)用 1 子過(guò)程的調(diào)用 子過(guò)程名 參數(shù)列表 或 Call 子過(guò)程名(參數(shù)列表) 說(shuō)明: (1)參數(shù)列表稱為實(shí)參或?qū)嵲仨毰c形參保持個(gè)數(shù)相同,位置與類型一一對(duì)應(yīng)。 (2)調(diào)用時(shí)把實(shí)參值傳遞給對(duì)應(yīng)的形參。其中值傳遞(形參前有ByVal說(shuō)明)時(shí)實(shí)參的值不隨形參的值變化而改變。而地址傳遞時(shí)實(shí)參的值隨形參值的改變而改變。,(3)當(dāng)參數(shù)是數(shù)組時(shí),形參與實(shí)參在參數(shù)聲明時(shí)應(yīng)省略其維數(shù),但括號(hào)不能省。 (4)調(diào)用子過(guò)程的形式有兩種,用Call關(guān)鍵字時(shí),實(shí)參必須加圓括號(hào)括起,反之則實(shí)參之
11、間用“,”分隔。 例:調(diào)用上面定義的Swap子過(guò)程的形式: Swap a,b Call Swap(a,b),例4-6,Private Sub prn(m As Byte, n As Byte, zf As String) Print Space(m); String(n, zf) End Sub Private Sub form_click() Dim i As Byte For i = 1 To 4 Call prn(6 - i, 2 * i - 1, *) Next i For i = 1 To 3 Call prn(3, 5, #) Next i End Sub,For i = 1 To
12、 6 b(i) = InputBox(b( + Str$(i) + )=, ) Next i Call sort(b(), 6) For i = 1 To 6 Print b(i), Next i,例4-7編程,將數(shù)組中各元素按值從大到小排序, 要求將數(shù)組排序編寫為sub過(guò)程,Private Sub sort(a() As Single, ByVal n As Byte) Dim i As Byte, j As Byte, k As Byte, temp As Single For i = 1 To n - 1 k = i For j = i + 1 To n If a(j) a(k) The
13、n k = j Next j temp! = a(k): a(k) = a(i): a(i) = temp! Next i End Sub,過(guò)程之間參數(shù)的傳遞,Visual Basic中不同模塊(過(guò)程)之間數(shù)據(jù)的傳遞有兩種方式: 通過(guò)過(guò)程調(diào)用實(shí)參與形參的結(jié)合實(shí)現(xiàn); 使用全局變量來(lái)實(shí)現(xiàn)各過(guò)程中共享數(shù)據(jù)。,形式參數(shù)與實(shí)際參數(shù),1、形式參數(shù) 是指在定義通用過(guò)程時(shí),出現(xiàn)在Sub或Function語(yǔ)句中的變量名后面園括號(hào)內(nèi)的數(shù),是用來(lái)接收傳送給子過(guò)程的數(shù)據(jù),形參表中的各個(gè)變量之間用逗號(hào)分隔。,2、實(shí)際參數(shù) 實(shí)際參數(shù)是指在調(diào)用Sub或Function過(guò)程時(shí),寫入子過(guò)程名或函數(shù)名后括號(hào)內(nèi)的參數(shù),其作用是將它
14、們的數(shù)據(jù)(數(shù)值或地址)傳送給Sub或Function過(guò)程與其對(duì)應(yīng)的形參變量。 實(shí)參可由常量、表達(dá)式、有效的變量名、數(shù)組名(后加左、右括號(hào),如A())組成,實(shí)參表中各參數(shù)用逗號(hào)分隔。,參數(shù)傳遞(虛實(shí)結(jié)合),參數(shù)傳遞指主調(diào)過(guò)程的實(shí)參(調(diào)用時(shí)已有確定值和內(nèi)存地址的參數(shù))傳遞給被調(diào)過(guò)程的形參,參數(shù)的傳遞有兩種方式:按值傳遞、按地址傳遞。形參前加“ByVal”關(guān)鍵字的是按值傳遞,缺省或加“ByRef”關(guān)鍵字的為按地址傳遞。,傳址與傳值 傳址: 形參得到的是實(shí)參的地址,當(dāng)形參值的改變同時(shí)也改變實(shí)參的值。 傳值: 形參得到的是實(shí)參的值,形參值的改變不會(huì)影響實(shí)參的值。,Sub Swap2(x as doubl
15、e, y as double) Dim T as double T = x: x = y: y = T End Sub,Sub Swap1(ByVal x as double, ByVal y as double) Dim T as double T = x: x = y: y = T End Sub,Private Sub CmdOK_Click() Dim a%,b% a = 10: b = 20 Swap1 a, b 傳 值 Print A1=; a, B1=; b a = 10: b = 20 Swap2 a, b 傳地址 Print A2=; a, B2=; b End Sub,Su
16、b Swap2(x%, y%) Dim Temp% Temp = x: x = y: y = Temp End Sub,Sub Swap1(ByVal x%, ByVal y%) Dim Temp% Temp = x: x = y: y = Temp End Sub,值傳遞的執(zhí)行過(guò)程如下圖:,通過(guò)地址傳遞數(shù)據(jù)的執(zhí)行過(guò)程,有關(guān)過(guò)程之間數(shù)據(jù)傳遞的幾點(diǎn)說(shuō)明,1參數(shù)的數(shù)據(jù)類型,2 按值傳遞參數(shù),3 按地址傳遞參數(shù),注意:在子過(guò)程和函數(shù)過(guò)程調(diào)用時(shí),如果實(shí)參是常量(包括系統(tǒng)常量、用Const自定義的符號(hào)常量)或表達(dá)式,無(wú)論在定義時(shí)使用值傳遞還是地址傳遞,此時(shí)都是按值傳遞方式將常量或表達(dá)式計(jì)算的值傳遞給形參
17、變量。 如果形參定義是按傳地址方式,但調(diào)用時(shí)想使實(shí)參變量按值方式傳遞,可以把實(shí)參變量加上括號(hào),將其轉(zhuǎn)換成表達(dá)式即可。,參數(shù)的傳遞問(wèn)題:,4使用子過(guò)程還是使用函數(shù)過(guò)程 解決一個(gè)問(wèn)題既可以使用子過(guò)程,也可以使用函數(shù)過(guò)程,是使用子過(guò)程還是使用函數(shù)過(guò)程呢?如果是需要求得一個(gè)值,一般情況使用函數(shù)過(guò)程,如不是為了求一個(gè)值,而是完成一些操作,或需要返回多個(gè)值,則使用子過(guò)程比較方便。,分別編寫計(jì)算下面級(jí)數(shù)的子過(guò)程和函數(shù)過(guò)程,并在窗體的單擊事件中調(diào)用。 級(jí)數(shù)為, 要求精度為:,數(shù)組作過(guò)程的參數(shù),Visual Basic允許把數(shù)組作為實(shí)參傳送到過(guò)程中。數(shù)組作參數(shù)是通過(guò)傳地址方式傳送。在傳送數(shù)組時(shí),除遵守參數(shù)傳送的
18、一般規(guī)則外,還應(yīng)注意以下幾點(diǎn): 1為了把一個(gè)數(shù)組的全部元素傳送給一個(gè)過(guò)程,應(yīng)將數(shù)組名分別寫入形參表中,并略去數(shù)組的上下界,但括號(hào)不能省略。 Private Sub Sort( a() As single) End Sub 其中形參“a( )”即為數(shù)組。,2被調(diào)過(guò)程可通過(guò)Lbound和Ubound函數(shù)確定實(shí)參數(shù)組的上、下界。 3當(dāng)用數(shù)組作形參時(shí),對(duì)應(yīng)的實(shí)參必須也是數(shù)組,且類型一致。 4實(shí)參和形參結(jié)合是按地址傳遞,即形參數(shù)組和實(shí)參數(shù)組共用一段內(nèi)存單元。 例如:定義了實(shí)參數(shù)組b(1 to 8),給它們賦了值,調(diào)用Sort()函數(shù)過(guò)程的形式如下: Sort b() 或 Call Sort(b() ) 實(shí)參數(shù)組后面的括號(hào)可以省略,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年福建華南女子職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)筆試模擬試題帶答案解析
- 醫(yī)護(hù)人員健康管理與福利政策
- 醫(yī)院質(zhì)量管理體系優(yōu)化總結(jié)
- 2026年廣州體育職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試備考試題帶答案解析
- 2026年黑龍江農(nóng)業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試備考題庫(kù)帶答案解析
- 2026年黑龍江職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試參考題庫(kù)帶答案解析
- 2026年衡陽(yáng)幼兒師范高等??茖W(xué)校單招職業(yè)技能考試參考題庫(kù)帶答案解析
- 醫(yī)療單位員工職業(yè)素養(yǎng)提升
- 護(hù)理護(hù)理職業(yè)素養(yǎng)與心理調(diào)適
- 財(cái)務(wù)課件培訓(xùn)費(fèi)
- 內(nèi)蒙古能源集團(tuán)招聘筆試題庫(kù)2026
- 生產(chǎn)線操作員技能培訓(xùn)規(guī)范手冊(cè)
- 林草監(jiān)測(cè)與保護(hù):空天地一體化體系構(gòu)建方案
- 2025浙江紹興越城黃酒小鎮(zhèn)旅游開(kāi)發(fā)有限公司編外人員第二次招聘總筆試歷年典型考點(diǎn)題庫(kù)附帶答案詳解2套試卷
- DB54∕T 0378-2024 牦牛短期育肥技術(shù)規(guī)范
- 2025 年中國(guó)裝配式裝修產(chǎn)業(yè)發(fā)展研究報(bào)告
- 戶外拓展活動(dòng)中中級(jí)攀巖指導(dǎo)員職責(zé)分工計(jì)劃
- 數(shù)據(jù)中心配電知識(shí)培訓(xùn)課件
- 數(shù)據(jù)標(biāo)注員專業(yè)技能考核試卷及答案
- 傳染病信息報(bào)告管理規(guī)范2025版
- 海南自貿(mào)港課件
評(píng)論
0/150
提交評(píng)論