




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四章第四章 過程與變量的作用域過程與變量的作用域在Visual Basic.NET中有3種類型的過程:Sub過程、Function過程和Property過程。 Sub過程過程執(zhí)行操作,但不向調(diào)用它的過程返回值。執(zhí)行操作,但不向調(diào)用它的過程返回值。 Function過程過程可以向調(diào)用它的過程返回值。可以向調(diào)用它的過程返回值。 Property過程過程可以返回類、結(jié)構(gòu)或模塊屬性的可以返回類、結(jié)構(gòu)或模塊屬性的值,或向它們賦值。值,或向它們賦值。 過程可以被其他過程調(diào)用,當(dāng)一個過程調(diào)用另一過程可以被其他過程調(diào)用,當(dāng)一個過程調(diào)用另一個過程時,控制權(quán)將會轉(zhuǎn)移到后一個過程,當(dāng)后個過程時,控制權(quán)將會轉(zhuǎn)移到后
2、一個過程,當(dāng)后一個過程的代碼執(zhí)行完畢時,它將控制權(quán)返回給一個過程的代碼執(zhí)行完畢時,它將控制權(quán)返回給調(diào)用它的過程。調(diào)用它的過程。4.1 Sub過程的創(chuàng)建與調(diào)用過程的創(chuàng)建與調(diào)用知識點(diǎn)知識點(diǎn)1 Sub過程的創(chuàng)建過程的創(chuàng)建1. 聲明Sub過程的語法格式如下:訪問修飾符訪問修飾符 Sub 過程名過程名 ( 形參列表形參列表 ) 語句塊語句塊1 Exit Sub 語句塊語句塊2 End Sub說明:見說明:見P81表表4-1知識點(diǎn)知識點(diǎn)2 Sub過程的調(diào)用過程的調(diào)用定義一個過程后,就可以在程序中調(diào)用該過程了。定義一個過程后,就可以在程序中調(diào)用該過程了。調(diào)用調(diào)用Sub過程的語法格式如下所示:過程的語法格式如
3、下所示: Call 過程名過程名 ( 實(shí)參列表實(shí)參列表 ) 說明:說明: 調(diào)用調(diào)用Sub 過程要使用獨(dú)立的調(diào)用語句,不能在表過程要使用獨(dú)立的調(diào)用語句,不能在表達(dá)式中調(diào)用達(dá)式中調(diào)用Sub 過程。過程。 調(diào)用時必須提供所有非可選參數(shù)的值,并且必須調(diào)用時必須提供所有非可選參數(shù)的值,并且必須用括號將參數(shù)列表括起來。如果未提供任何參數(shù),用括號將參數(shù)列表括起來。如果未提供任何參數(shù),可以省略括號??梢允÷岳ㄌ枴?Call 關(guān)鍵字是可選項(xiàng),但是建議使用。關(guān)鍵字是可選項(xiàng),但是建議使用。知識點(diǎn)知識點(diǎn)3 事件過程事件過程Windows應(yīng)用程序采用事件驅(qū)動事件驅(qū)動的編程機(jī)制,在圖形用戶界面上,要實(shí)現(xiàn)用戶和應(yīng)用程序之間
4、的交互就必須對事件進(jìn)行響應(yīng),為此必須編寫對象的事件過程代碼。對象的事件過程也是Sub過程,其過程名稱通常是對對象名象名_事件名稱事件名稱,如frmSub窗體的加載事件frmSub_Load()、單擊事件frmSub_Click()等。在事件過程中可以調(diào)用其他Sub過程。任務(wù)任務(wù)1 Sub過程的應(yīng)用過程的應(yīng)用 要求:編寫一個Sub 過程,通知用戶應(yīng)用程序?qū)⒁獔?zhí)行哪個任務(wù),并且顯示一個時間戳。分別在窗體的Load事件和Click事件過程中調(diào)用該過程。 任務(wù)任務(wù)1 解析解析編寫Sub過程tellOperator,其形參task表示任務(wù)名稱。Sub tellOperator(ByVal task As
5、 String) Dim stamp As Date stamp = TimeOfDay()系統(tǒng)時間系統(tǒng)時間 MsgBox(執(zhí)行執(zhí)行 & task & 任務(wù)任務(wù) at & CStr(stamp)End Sub編寫窗體的Load事件過程,在調(diào)用Sub過程時使用的實(shí)參是窗體加載。Private Sub frmSub_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click Call tellOperator(單擊窗體單擊窗體) End Sub編寫窗體的Click事件過程,在調(diào)用Su
6、b過程時使用的實(shí)參是單擊窗體。 Private Sub frmSub_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Call tellOperator(窗體加載窗體加載) End Sub4.2 Function過程的創(chuàng)建與調(diào)用過程的創(chuàng)建與調(diào)用Function過程又稱為函數(shù)過程,它是過程的另一種形式,當(dāng)過程的執(zhí)行僅需要返回一個值時,用函數(shù)過程就比較簡單。 知識點(diǎn)知識點(diǎn)1 Function過程的創(chuàng)建過程的創(chuàng)建Function過程和Sub過程類似,但Function過程可以向其調(diào)用過程返回值。創(chuàng)建F
7、unction過程的語法格式如下所示:訪問修飾符訪問修飾符 Function 函數(shù)名函數(shù)名 ( 形參列表形參列表 ) As 數(shù)據(jù)類型數(shù)據(jù)類型 語句塊語句塊1 函數(shù)名函數(shù)名= 表達(dá)式表達(dá)式 | Return 表達(dá)式表達(dá)式 Exit Function 函數(shù)名函數(shù)名= 表達(dá)式表達(dá)式 | Return 表達(dá)式表達(dá)式 語句塊語句塊2 End Function例如,下面是一個計(jì)算正整數(shù)n階乘的函數(shù)過程fact (n ) Public Function Fact (n As Integer) As LongDim t As Long, i As Integert = 1For i = 1 To nt = t
8、 * iNext iFact = t 或者或者 Return tEnd Function知識點(diǎn)知識點(diǎn)2 Function過程的調(diào)用過程的調(diào)用 調(diào)用 Function 過程的方法是將其名稱和參數(shù)放在賦值語句的右邊或表達(dá)式中。必須提供所有非可選參數(shù)的值,并且必須用括號將參數(shù)列表括起來。如果未提供任何參數(shù),則也可以選擇省略括號。 調(diào)用 Function 過程的語法格式如下: 函數(shù)名函數(shù)名( 實(shí)參列表實(shí)參列表 )例如,調(diào)用Fact函數(shù)過程計(jì)算5!,并將結(jié)果顯示在文本框TextBox1的語句如下:TextBox1.Text = Cstr(Fact(5)任務(wù)2 使用Function過程求最大公約數(shù)和最小公
9、倍數(shù) 要求:編寫一個求最大公約數(shù)的Function 過程,調(diào)用這個過程求任意兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù)。 任務(wù)任務(wù)2 解析解析思路分析:求兩個數(shù)m和n的最大公約數(shù)可以使用“輾轉(zhuǎn)相除法”,步驟是:n以數(shù)m作為被除數(shù),數(shù)n作為除數(shù),相除后余數(shù)為r。n若r不為零,則 繼續(xù)相除得到新的r。若r仍不為零,則重復(fù)此過程,直到r0。n最后的n就是最大公約數(shù)。 最小公倍數(shù)最大公約數(shù)mn, rn, nm編寫一個Function 過程Gcd,用于求兩個形參m和n的最大公約數(shù)。 Dim num1, num2 As Integer Function Gcd(ByVal m As Integer, ByVal
10、n As Integer) As Integer Dim r As Integer r表示兩數(shù)相除得到的余數(shù)表示兩數(shù)相除得到的余數(shù) r = m Mod n Do While r 0當(dāng)余數(shù)不為當(dāng)余數(shù)不為0時時 m = n n = r r = m Mod n Loop Gcd = n End Function編寫按鈕的編寫按鈕的Click事件過程,通過調(diào)用事件過程,通過調(diào)用Gcd過程計(jì)算得到任意兩個數(shù)的最大公約數(shù)。過程計(jì)算得到任意兩個數(shù)的最大公約數(shù)。 Private Sub btnGcd_Click(ByVal sender As Object, ByVal e As System.EventAr
11、gs) Handles btnGcd.Click num1 = Val(txtFirst.Text) num2 = Val(txtSecond.Text) txtGcd.Text = Gcd(num1, num2) End Sub編寫按鈕的編寫按鈕的Click事件過程,通過調(diào)用事件過程,通過調(diào)用Gcd過程計(jì)算得到任意兩個數(shù)的最小公倍數(shù)。過程計(jì)算得到任意兩個數(shù)的最小公倍數(shù)。 Private Sub btnLcm_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLcm.Click num1 = Val(tx
12、tFirst.Text) num2 = Val(txtSecond.Text)txtLcm.Text = num1 * num2 / Gcd(num1, num2) End Sub4.3 過程中參數(shù)的傳遞過程中參數(shù)的傳遞 調(diào)用過程時可以把數(shù)據(jù)傳遞給被調(diào)用的過程,也可以把過程中的數(shù)據(jù)傳遞回來。在調(diào)用過程中,要考慮調(diào)用過程和被調(diào)用過程之間的數(shù)據(jù)是怎樣傳遞的。知識點(diǎn)知識點(diǎn)1 形參與實(shí)參形參與實(shí)參形參是形式參數(shù)的簡稱,是指在定義Sub過程或Function過程時,出現(xiàn)在Sub或Function過程中的變量名,是接收數(shù)據(jù)的變量。實(shí)參是實(shí)際參數(shù)的簡稱,是指在調(diào)用Sub過程或Function過程時,傳遞給S
13、ub或Function過程的常量、變量或表達(dá)式。和中的對應(yīng)變量名不必相同,但是變量的個數(shù)必須相等,而且各實(shí)參的書寫順序必須與相應(yīng)的形參順序一致,類型相符。知識點(diǎn)知識點(diǎn)2 傳值與傳地址傳值與傳地址在調(diào)用過程時,參數(shù)的傳遞有兩種方式:傳值方式和傳地址方式,其中傳值方式傳值方式是默認(rèn)方式。是默認(rèn)方式。1. 傳值方式 形式:形參前帶有關(guān)鍵字ByVal。 對實(shí)參的影響:形參得到的是實(shí)參的值,形參值的改變不會影響實(shí)參的值。引子:以兩個人在兩臺機(jī)器的文件拷貝做例子,值傳遞好比是你把文件復(fù)制一份,通過網(wǎng)絡(luò)傳給他,然后他可以在他本機(jī)上對文件做任何的修改,修改會保存下來,但是你機(jī)器上的文件不會發(fā)生任何的變化。即形
14、參與實(shí)參是兩個不同的變量,各自占用不同的存儲單元2. 傳地址方式 形式:形參前帶有關(guān)鍵字ByRef。 對實(shí)參的影響:形參得到的是實(shí)參的地址,形形參得到的是實(shí)參的地址,形參和實(shí)參使用相同的內(nèi)存單元,改變形參的值也參和實(shí)參使用相同的內(nèi)存單元,改變形參的值也即改變實(shí)參的值。即改變實(shí)參的值。 要求:實(shí)參必須是變量時才可以實(shí)現(xiàn)傳地址調(diào)用。當(dāng)實(shí)參是常量或表達(dá)式時無法實(shí)現(xiàn)傳地址方式,實(shí)際上是傳值方式。 Visual Basic.NET中允許參數(shù)是數(shù)組,數(shù)組只能通過傳址的方式進(jìn)行傳遞。在傳遞數(shù)組時要在實(shí)參列表和形參列表中放入數(shù)組名,忽略維數(shù)的定義,但圓括號不能省略。任務(wù)任務(wù)3 傳值與傳地址方式傳遞參傳值與傳地
15、址方式傳遞參數(shù)數(shù)編寫交換兩個數(shù)的Sub過程,過程Swap1使用傳值方式,過程Swap2使用傳地址方式。 Dim num1 As Single, num2 As Single Sub Swap1(ByVal a As Single, ByVal b As Single) Dim t As Single t = a a = b b = t End Sub Sub Swap2(ByRef a As Single, ByRef b As Single) Dim t As Single t = a a = b b = t End SubNum1的值的值 aNum2的值的值 b變量變量a的存儲單元的存儲單
16、元ab變量變量b的存儲單元的存儲單元num1num2 Private Sub btnByVal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnByVal.Click num1 = Val(txtNum1.Text) num2 = Val(txtNum2.Text) Call Swap1(num1, num2) Label2.Text = 傳值方式傳值方式 txtResult1.Text = num1 txtResult2.Text = num2 End SubPrivate Sub bt
17、nByRef_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnByRef.Click num1 = Val(txtNum1.Text) num2 = Val(txtNum2.Text) Call Swap2(num1, num2) Label2.Text = 傳地址方式傳地址方式 txtResult1.Text = num1 txtResult2.Text = num2 End Sub4.4 過程的嵌套與遞歸調(diào)用過程的嵌套與遞歸調(diào)用在一個過程(Sub過程或Function過程)中調(diào)用另外一個過程,稱為過
18、程的嵌套調(diào)用;而過程直接或間接地調(diào)用其自身,則稱為過程的遞歸調(diào)用。知識點(diǎn)1 過程的嵌套 在VB.NET中過程的定義不能嵌套,但可以嵌套調(diào)用過程,也就是主程序可以調(diào)用子過程,在子過程中還可以調(diào)用另外的子過程,這種過程的嵌套調(diào)用如圖4-7所示。主程序調(diào)用Sub1End SubSub1調(diào)用Sub2End Sub Sub2End Sub知識點(diǎn)2 過程的遞歸 遞歸調(diào)用是指一個過程直接或間接地調(diào)用自身,即自己調(diào)用自己。 例如,編寫一個用遞歸調(diào)用的方法求n!的Function過程。 根據(jù)求n!的定義,n!=n*(n-1)!可以寫成如下的形式:1n) 1n(fac*n1n1)n(fac計(jì)算n!的Functio
19、n過程如下:Private Function fac(Byval n As Integer) As LongIf n = 1 Then fac = 1Else fac = n * fac(n - 1)End IfEnd Function任務(wù)4 使用過程的嵌套求組合數(shù) 編寫一個求組合數(shù) 的程序。要求將求階乘和求組合數(shù)公式分別定義成兩個Function過程來實(shí)現(xiàn)。 )!( !mnmnCmn任務(wù)任務(wù)4 解析解析思路分析: 編寫一個求階乘的Function過程Fact,一個求組合數(shù)的Function過程Comb。在Comb過程中要調(diào)用Fact過程3次,這就是過程的嵌套調(diào)用。最后在按鈕的Click事件中
20、調(diào)用Comb過程,就可以得到任意兩個正整數(shù)的組合數(shù)。 求階乘的Function過程Fact的代碼如下: Private Function Fact(ByVal num As Integer) As Long Dim i As Integer, t As Long t = 1 For i = 1 To num t = t * i Next i Fact = t End Function 求組合數(shù)的Function過程Comb的代碼如下: Private Function Comb(ByVal n As Integer, ByVal m As Integer) As Long Comb = Fac
21、t(n) / Fact(m) * Fact(n - m) End FunctionPrivate Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click Dim n, m, temp As Integer n = Val(txtN.Text) m = Val(txtM.Text) If n n則交換兩數(shù)則交換兩數(shù) temp = n n = m m = temp txtN.Text = n txtM.Text = m End If txtResult.Text
22、= Comb(n, m) End Sub4.5 變量的作用域變量的作用域 變量可以在語句塊、過程、窗體模塊、標(biāo)準(zhǔn)模塊或類中定義。根據(jù)聲明變量的位置,可以把變量的作用域分為:局部變量、模塊級變量和全局變量。知識點(diǎn)知識點(diǎn)1 局部變量局部變量局部變量具有以下特點(diǎn): 是在過程或語句塊中使用Dim或或Static關(guān)鍵字聲明的變量; 只能在定義它的過程或語句塊中使用; 如果兩個過程或兩個語句塊定義相同名稱的變量,它們是完全獨(dú)立的,作用域范圍互不相同,都只在各自的過程或語句塊中起作用。知識點(diǎn)2 模塊級變量 在窗體模塊、標(biāo)準(zhǔn)模塊或類的所有過程外用關(guān)鍵字Private或Dim定義的變量是模塊級變量,其作用域是定
23、義的模塊,在模塊內(nèi)的所有過程都可以使用它們,但其他模塊不能訪問這些變量。知識點(diǎn)3 全局變量 在窗體模塊、標(biāo)準(zhǔn)模塊或類的所有過程外用關(guān)鍵字Public或或Shared定義的變量是全局變量,其作用域?yàn)檎麄€程序。全局變量定義后,本模塊中的過程和同一項(xiàng)目中的所有其他模塊中的過程均可以使用該變量。由于全局變量具有能被同一項(xiàng)目中的所有模塊中的多個過程共同訪問的特點(diǎn),所以可以使用全局變量在多模塊多過程之間進(jìn)行數(shù)據(jù)傳遞。任務(wù)任務(wù)5 變量作用域的演示變量作用域的演示在“局部變量”的單擊事件過程中定義了3個局部變量:過程級變量a、靜態(tài)變量m、語句塊級變量s,并引用了模塊級變量strName的值作為電影的名稱,注意每單擊一次該按鈕,這些變量值的變化。在“模塊級變量”的單擊事件過程中定義了1個模塊級變量strName,每單擊一次該按鈕,變量strName就被賦值為一個新的電影名稱。在“全局變量”的單擊事件過程中引用了1個全局變量pub,每單擊一次該按鈕,pub的值累加10,并在標(biāo)簽中顯示新值。在項(xiàng)目中添加一個標(biāo)準(zhǔn)模塊,在模塊中定義一個全局變量pub。Public Class frmRangePrivate strName As String = 哈利波特 定義模塊級變量定義
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江汽車職業(yè)技術(shù)學(xué)院《深度報(bào)道研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江林業(yè)職業(yè)技術(shù)學(xué)院《信息系統(tǒng)開發(fā)與應(yīng)用綜合專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 河北醫(yī)科大學(xué)臨床學(xué)院《土地規(guī)劃設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶信息技術(shù)職業(yè)學(xué)院《環(huán)境與健康》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆維吾爾醫(yī)學(xué)??茖W(xué)校《衛(wèi)生監(jiān)督學(xué)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 晉中師范高等??茖W(xué)校《機(jī)械基礎(chǔ)與液壓傳動》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海中僑職業(yè)技術(shù)大學(xué)《中醫(yī)診斷學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南司法警官職業(yè)學(xué)院《機(jī)器視覺系統(tǒng)設(shè)計(jì)與應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年醫(yī)學(xué)研究與試驗(yàn)發(fā)展服務(wù)項(xiàng)目資金申請報(bào)告代可行性研究報(bào)告
- 連續(xù)剛構(gòu)橋畢業(yè)設(shè)計(jì)答辯
- 書法格子(方正)
- 03S702鋼筋混凝土化糞池圖集
- 骨折術(shù)后康復(fù)概述
- 《社會職業(yè)大調(diào)查》 第一課時(教案)-三年級勞動北師大版
- 南京曉莊學(xué)院教師招聘考試歷年真題
- 燃?xì)夤こ淘O(shè)計(jì)及施工驗(yàn)收規(guī)范
- Unit3OnthemoveDevelopingideasRunningintoabetterlife教學(xué)設(shè)計(jì)-高一下學(xué)期外研版英語
- 鄉(xiāng)村振興與規(guī)劃建設(shè)知到章節(jié)答案智慧樹2023年同濟(jì)大學(xué)
- 生物醫(yī)藥產(chǎn)業(yè)鏈研究報(bào)告
- 陳長興《用武要言》(附要點(diǎn)解析)
- 防災(zāi)減災(zāi)日安全隱患排查臺賬
評論
0/150
提交評論