




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第6章章 過(guò)程與函數(shù)過(guò)程與函數(shù)6.1過(guò)程概述過(guò)程概述在程序設(shè)計(jì)時(shí),經(jīng)常要把一個(gè)大的任務(wù)劃分成若干個(gè)小的子任務(wù),每個(gè)子任務(wù)完成一個(gè)相對(duì)獨(dú)立的功能。在Visual Basic中把這些子任務(wù)稱為過(guò)程。使用過(guò)程編程有如下優(yōu)點(diǎn):()采用“分而治之”的思想。()引入“工程”的設(shè)計(jì)方法。 ()可以把設(shè)計(jì)好的模塊作為產(chǎn)品在Visual Basic中,模塊的具體體現(xiàn)為函數(shù)與過(guò)程。 6.1過(guò)程概述過(guò)程概述在Visual Basic中過(guò)程主要分為三種:子子過(guò)程過(guò)程、函數(shù)過(guò)程函數(shù)過(guò)程和屬性過(guò)程屬性過(guò)程,其中:子過(guò)程(Sub Procedure):子過(guò)程是沒有返回值的函數(shù)。子過(guò)程一般用于接收或處理輸入數(shù)據(jù)、顯示輸出或
2、者設(shè)置屬性。 函數(shù)過(guò)程(Function Procedure):函數(shù)過(guò)程用來(lái)完成特定的功能并返回相應(yīng)的結(jié)果。函數(shù)過(guò)程能夠接收參數(shù),并且總是以該函數(shù)名返回一個(gè)值。6.1過(guò)程概述過(guò)程概述屬性過(guò)程(Property Procedure):屬性過(guò)程用來(lái)創(chuàng)建和操作程序中用戶定義的屬性。它使能夠定制現(xiàn)有的Visual Basic控件,并通過(guò)創(chuàng)建新的對(duì)象、屬性和方法來(lái)擴(kuò)展Visual Basic語(yǔ)言。 本章重點(diǎn)介紹Sub子過(guò)程和Function函數(shù)過(guò)程。6.2 Sub過(guò)程過(guò)程Sub過(guò)程可以放在標(biāo)準(zhǔn)模塊和窗體模塊中,Visual Basic的Sub過(guò)程分為事件過(guò)程和通用過(guò)程兩大類。()事件過(guò)程是當(dāng)發(fā)生某個(gè)事件
3、時(shí),對(duì)該事件做出響應(yīng)的程序段,它是Visual Basic應(yīng)用程序的主體。6.2 Sub過(guò)程過(guò)程()通用過(guò)程有時(shí)多個(gè)不同的事件過(guò)程可能需要使用同一段程序代碼,為此,可將這段代碼獨(dú)立出來(lái),編寫成一個(gè)共用的過(guò)程它獨(dú)立于事件過(guò)程之外,可供其他事件過(guò)程調(diào)用。6.2.1 事件過(guò)程事件過(guò)程通過(guò)前面的學(xué)習(xí),我們知道Visual Basic采用事件驅(qū)動(dòng)的編程機(jī)制事件驅(qū)動(dòng)的編程機(jī)制()事件事件是能被對(duì)象(窗體和控件)識(shí)別的動(dòng)作。如對(duì)象的單擊(Click)事件、雙擊(DblClick)事件、內(nèi)容改變(Change)事件等等。()事件過(guò)程事件過(guò)程是為一個(gè)事件所編寫的程序代碼。當(dāng)Visual Basic中的對(duì)象發(fā)生某
4、個(gè)事件時(shí),便自動(dòng)調(diào)用相應(yīng)的事件過(guò)程。6.2.1 事件過(guò)程事件過(guò)程根據(jù)對(duì)象的不同,事件過(guò)程又分為窗體事件過(guò)程和控件事件過(guò)程。1窗體事件過(guò)程窗體事件過(guò)程定義為“Form_事件名”,其格式為:Private Sub Form_ (參數(shù)表參數(shù)表)語(yǔ)句塊語(yǔ)句塊End Sub6.2.1 事件過(guò)程事件過(guò)程思考:下面代碼的功能?Private Sub Form_Click( )Me.BackColorVbRedEnd Sub6.2.1 事件過(guò)程事件過(guò)程2控件事件過(guò)程控件事件過(guò)程的定義是“控件名_事件名”,其格式為:Private Sub _ (參數(shù)表參數(shù)表)語(yǔ)句塊語(yǔ)句塊End Sub6.2.1 事件過(guò)程事件過(guò)
5、程思考:下面代碼的功能?Private Sub Command1_Click( )Text1.Text = Visual Basic程序設(shè)計(jì)End Sub6.2.1 事件過(guò)程事件過(guò)程3建立事件過(guò)程方法一:在設(shè)計(jì)窗體上雙擊窗體或控件,就打開了代碼編輯器窗口,并會(huì)出現(xiàn)該窗體或控件的默認(rèn)過(guò)程代碼。例如:Private Sub Text1_Change()End Sub6.2.1 事件過(guò)程事件過(guò)程方法二:?jiǎn)螕艄こ藤Y源管理器窗口的“查看代碼”按鈕,再?gòu)膶?duì)象列表框中選擇一個(gè)對(duì)象,從過(guò)程列表框中選擇一個(gè)過(guò)程。6.2.2 通用過(guò)程通用過(guò)程事件過(guò)程只能針對(duì)某個(gè)具體的窗體或控件。而當(dāng)有多個(gè)窗體或控件的事件過(guò)程中需
6、要執(zhí)行某些相同的操作時(shí),為了避免重復(fù)編寫代碼,可以把這些相同操作所對(duì)應(yīng)的代碼段拿出來(lái)定義一個(gè)通用過(guò)程。 通用過(guò)程通常完成指定的任務(wù),通用過(guò)程不與任何特定的事件相聯(lián)系,只能由別的過(guò)程來(lái)調(diào)用,它可以存儲(chǔ)在窗體或標(biāo)準(zhǔn)模塊中。6.2.2 通用過(guò)程通用過(guò)程1通用過(guò)程的定義通用過(guò)程定義的語(yǔ)法格式為:Private|Public Static Sub (參數(shù)表參數(shù)表)語(yǔ)句塊語(yǔ)句塊1Exit Sub語(yǔ)句塊語(yǔ)句塊2End Sub6.2.2 通用過(guò)程通用過(guò)程說(shuō)明:(3) 子過(guò)程名:命名規(guī)則與變量名規(guī)則相同。子過(guò)程名不返回值,而是通過(guò)形參與實(shí)參的傳遞得到結(jié)果,調(diào)用時(shí)可返回多個(gè)值。 (4) 參數(shù)的定義形式:參數(shù)的定義
7、形式:ByValByRef變量名變量名( )As 類型類型,,ByVal表示當(dāng)該過(guò)程被調(diào)用時(shí),參數(shù)是按值傳遞的;缺省ByRef表示當(dāng)該過(guò)程被調(diào)用時(shí),參數(shù)是按地址傳遞的。 6.2.2 通用過(guò)程通用過(guò)程例如,編寫全局Sub過(guò)程計(jì)算n!。Public Sub Fact(n As Integer, F As Double) Fact為過(guò)程名,參數(shù)F用于返回階乘值 Dim i As Integer F = 1 For i = 1 To n F = F * i Next iEnd Sub6.2.2 通用過(guò)程通用過(guò)程2通用Sub過(guò)程的建立建立通用過(guò)程有兩種方法:直接在代碼編輯窗口中輸入過(guò)程代碼或使用添加過(guò)程
8、對(duì)話框。方法一:通過(guò)添加過(guò)程對(duì)話框建立。 方法二:在代碼窗口的“對(duì)象”下拉列表中選擇“通用”,輸入過(guò)程名。 6.2.3 過(guò)程的調(diào)用過(guò)程的調(diào)用1通用事件過(guò)程的調(diào)用通用過(guò)程的調(diào)用有兩種方式:Call (參數(shù)表參數(shù)表)和 參數(shù)表參數(shù)表例如,調(diào)用上面定義的Fact子過(guò)程的形式:Call Fact(a,b) 和 Fact a,b參數(shù)表:在調(diào)用語(yǔ)句中的參數(shù)稱為實(shí)際參數(shù)(簡(jiǎn)稱實(shí)參),實(shí)參可以是變量、常數(shù)、數(shù)組和表達(dá)式。參數(shù)與參數(shù)之間要用逗號(hào)隔開。6.2.3 過(guò)程的調(diào)用過(guò)程的調(diào)用2事件過(guò)程的調(diào)用事件過(guò)程的調(diào)用一般是由事件觸發(fā)而引起,如單擊按鈕、窗體加載等,也可以通過(guò)像通用過(guò)程那樣通過(guò)Call或過(guò)程名直接調(diào)用。
9、6.2.3 過(guò)程的調(diào)用過(guò)程的調(diào)用例如,可以在窗體的雙擊事件過(guò)程內(nèi)部調(diào)用Text1的Change事件過(guò)程。Private Sub Form_Click() Call Text1_ChangeEnd Sub程序運(yùn)行后,單擊窗體等同于執(zhí)行Text1的Change事件。子過(guò)程舉例,不帶參數(shù)子過(guò)程舉例,不帶參數(shù)例:例:?jiǎn)螕舭粹o1,2,3,分別在窗體上打印3個(gè)*,5個(gè)#。方法方法1:使用我們已學(xué)過(guò)的方法:使用我們已學(xué)過(guò)的方法Private Sub Command1_Click() Print String(3, *) Print String(5, #)End SubPrivate Sub Command
10、2_Click()同上End Sub Private Sub Command3_Click()同上End Sub缺點(diǎn)缺點(diǎn):多次輸入相同代多次輸入相同代碼,冗余大,效碼,冗余大,效率低率低改進(jìn)改進(jìn):相同代碼只寫一相同代碼只寫一次,運(yùn)行時(shí)多次次,運(yùn)行時(shí)多次調(diào)用調(diào)用方法2:使用子過(guò)程實(shí)現(xiàn)Private Sub Command1_Click() Call prtEnd SubPrivate Sub Command2_Click()Call prtEnd SubPrivate Sub Command3_Click()Call prtEnd SubSub prt() Print String(3, *)
11、Print String(5, #)End Sub 添加子過(guò)程的方法:添加子過(guò)程的方法: 1.插入點(diǎn)在所有過(guò)程之外插入點(diǎn)在所有過(guò)程之外 2.工具工具-添加過(guò)程添加過(guò)程n例:?jiǎn)螕舭粹o1,2,3,分別在窗體上打印 3個(gè)*,5個(gè)#;4個(gè)*,6個(gè)#;5個(gè)*,7個(gè)#.n方法: 使用帶參數(shù)子過(guò)程子過(guò)程舉例,帶參數(shù)子過(guò)程舉例,帶參數(shù)Private Sub Command1_Click() Call prt(3, 5)End SubPrivate Sub Command2_Click() Call prt(4, 6)End SubPrivate Sub Command3_Click() Call prt(5,
12、 7)End SubSub prt(x%, y%) Print String(x, *) Print String(y, #)End Sub實(shí)參形參子過(guò)程舉例,帶參數(shù)帶返回值子過(guò)程舉例,帶參數(shù)帶返回值n 利用子過(guò)程計(jì)算任意2個(gè)數(shù)的和,要求在主調(diào)過(guò)程中輸入2個(gè)數(shù),在子過(guò)程中計(jì)算和并返回給主調(diào)函數(shù)。n代碼:Private Sub Command1_Click()Dim a!, b!, s!a = Val(InputBox(請(qǐng)輸入數(shù)a:)b = Val(InputBox(請(qǐng)輸入數(shù)b:)Call sum(a, b, s)Print a+b=; sEnd SubSub sum(x!, y!, z!) z
13、 = x + yEnd Sub6.2.3 過(guò)程的調(diào)用過(guò)程的調(diào)用【例6-1】求S=7!+8!+5!的值。圖6-2 計(jì)算階乘法結(jié)果6.2.3 過(guò)程的調(diào)用過(guò)程的調(diào)用【例6-2】編寫一個(gè)Sub過(guò)程,計(jì)算N個(gè)數(shù)的和,即1+2+N,并通過(guò)命令按鈕的單擊事件調(diào)用該過(guò)程計(jì)算S=1+(1+2)+(1+2+3)+(1+2+3+K)。圖6-3 例8-2程序運(yùn)行界面6.3 Function過(guò)程過(guò)程與Sub過(guò)程不同的是,F(xiàn)unction過(guò)程可返回一個(gè)值到調(diào)用的過(guò)程。Function過(guò)程的格式為:Private | Public Static Function (參數(shù)表參數(shù)表) As 語(yǔ)句塊語(yǔ)句塊 函數(shù)名函數(shù)名=表達(dá)式表
14、達(dá)式 Exit Function 語(yǔ)句塊語(yǔ)句塊 函數(shù)名函數(shù)名=表達(dá)式表達(dá)式End Function6.3 Function過(guò)程過(guò)程(3) 函數(shù)過(guò)程通過(guò)函數(shù)過(guò)程名函數(shù)過(guò)程名返回其值,因此函數(shù)過(guò)程名是有類型的,其類型在Function語(yǔ)句中用As加以定義,可以定義為Integer、Long、Single、Double、 Boolean或String。若缺省了As語(yǔ)句,則函數(shù)過(guò)程名的類型為Variant。6.3 Function過(guò)程過(guò)程(4) 在函數(shù)過(guò)程結(jié)束前,函數(shù)過(guò)程名必須被賦予一個(gè)值作為函數(shù)的返回值,通過(guò)賦值語(yǔ)句=來(lái)實(shí)現(xiàn),如果在函數(shù)體中沒有該賦值語(yǔ)句,函數(shù)過(guò)程將返回一個(gè)默認(rèn)值:數(shù)值函數(shù)過(guò)程返回0
15、,字符串函數(shù)過(guò)程返回一個(gè)空串。6.3 Function過(guò)程過(guò)程例如:求N的階乘的算法用Function過(guò)程表示如下:Function Fact (N As Integer) As Long Dim i As Integer, T As Long T=1 For i=1 To N T=T*i Next i Fact=T 由函數(shù)過(guò)程名Fact返回階乘值End Function6.3.2 Function過(guò)程的調(diào)用過(guò)程的調(diào)用 調(diào)用函數(shù)Function過(guò)程的方法和調(diào)用Visual Basic內(nèi)部函數(shù)方法一樣,在語(yǔ)句中直接使用函數(shù)名,F(xiàn)unction過(guò)程可返回一個(gè)值到調(diào)用的過(guò)程。其語(yǔ)法格式為: 函數(shù)名函
16、數(shù)名(實(shí)參列表實(shí)參列表) 例如,下面的代碼調(diào)用了計(jì)算階乘的例如,下面的代碼調(diào)用了計(jì)算階乘的Function過(guò)程:過(guò)程:Text1.Text = Fact(7) 計(jì)算計(jì)算7的階乘的階乘例例6-36.4 過(guò)程中參數(shù)的傳遞6.4.1 形式參數(shù)和實(shí)際參數(shù)形式參數(shù)和實(shí)際參數(shù)1形式參數(shù)(形參) 在被調(diào)用過(guò)程中的參數(shù)稱為形式參數(shù),簡(jiǎn)稱為形參,出現(xiàn)在Sub過(guò)程和Function過(guò)程中。 例如:Private Sub Swap( x As Integer, y As Integer) 其中x,y即為形參。6.4.1 形式參數(shù)和實(shí)際參數(shù)形式參數(shù)和實(shí)際參數(shù)2實(shí)際參數(shù)(實(shí)參) 在主調(diào)過(guò)程中的參數(shù)稱為實(shí)際參數(shù),簡(jiǎn)稱為實(shí)
17、參,在過(guò)程調(diào)用時(shí)實(shí)參將數(shù)據(jù)傳遞給形參。 實(shí)參表可由常量、表達(dá)式、有效的變量名、數(shù)組名組成,實(shí)參表中各參數(shù)用逗號(hào)分隔。在調(diào)用過(guò)程時(shí),實(shí)參和形參的數(shù)據(jù)類型、位置、個(gè)數(shù)必須一一對(duì)應(yīng)。 例如:Call Swap(a,b)6.4.1 形式參數(shù)和實(shí)際參數(shù)形式參數(shù)和實(shí)際參數(shù)定義過(guò)程:sub Swap( x As Integer, y As Integer)調(diào)用過(guò)程:Call Swap( a, b) 圖6-5 實(shí)參和形參的對(duì)應(yīng)關(guān)系6.4.2 參數(shù)的傳遞方式參數(shù)的傳遞方式 參數(shù)傳遞是指主調(diào)過(guò)程的實(shí)參(調(diào)用時(shí)已有確定值和內(nèi)存地址的參數(shù))傳遞給被調(diào)過(guò)程的形參。 參數(shù)的傳遞有兩種方式:按值傳遞和按地址傳遞。形參前加“
18、ByVal”關(guān)鍵字的是按值傳遞;缺省或加“ByRef”關(guān)鍵字的為按地址傳遞。 6.4.2 參數(shù)的傳遞方式參數(shù)的傳遞方式 按值傳遞參數(shù)時(shí),Visual Basic給傳遞的形參分配一個(gè)臨時(shí)的內(nèi)存單元,將實(shí)參的值傳遞到這個(gè)臨時(shí)單元去。實(shí)參向形參傳遞是單向的,如果在被調(diào)用的過(guò)程中改變了形參值,則只是臨時(shí)單元的值變動(dòng),不會(huì)影響實(shí)參變量本身。 6.4.2 參數(shù)的傳遞方式參數(shù)的傳遞方式【例6-4】通過(guò)Swap1過(guò)程交換形參,要求交換的結(jié)果不能影響實(shí)參。圖6-6 按值傳遞運(yùn)行界面6.4.2 參數(shù)的傳遞方式參數(shù)的傳遞方式2按地址傳遞參數(shù) 按地址傳遞參數(shù),是指把形參變量的內(nèi)存地址傳遞給被調(diào)用過(guò)程,形參和實(shí)參具有相
19、同的地址,即形參、實(shí)參共享一段存儲(chǔ)單元。因此,在被調(diào)過(guò)程中改變形參的值,則相應(yīng)實(shí)參的值也被改變。 6.4.2 參數(shù)的傳遞方式參數(shù)的傳遞方式【例6-5】通過(guò)Swap2過(guò)程交換形參,要求實(shí)參與形參同步變化。圖6-8 按地址傳遞運(yùn)行界面?zhèn)髦放c傳值傳址與傳值n傳值 與 傳址10ax10 x的改變與a無(wú)關(guān)10axx與a共享存儲(chǔ)單元,x變a也變實(shí)參與形參舉例:交換兩數(shù) 6.5.vbpn傳值法:Sub sw1(ByVal x%, ByVal y%) Dim t% t = x: x = y: y = tEnd Subn傳址法:Sub sw2(ByRef x%, ByRef y%) Dim t% t = x:
20、x = y: y = tEnd Sub主調(diào)過(guò)程:Sub Command1_Click() Dim a%, b% a = 10 b = 20 Print 原始值:a=; a;b=; b Call sw1(a, b) Print 1交換后:a=; a; b=; b Call sw2(a, b) Print 2交換后:a=; a; b=; bEnd Sub10a20bxy1020 xyab1020ByVal 傳值傳值ByRef 傳地址傳地址形參獲得實(shí)參的值形參獲得實(shí)參的值形參獲得實(shí)參的地址形參獲得實(shí)參的地址實(shí)參與形參舉例:交換兩數(shù)實(shí)參為ab,形參為xy6.4.3 數(shù)組參數(shù)的傳遞方式數(shù)組參數(shù)的傳遞方式
21、 Visual Basic允許在定義過(guò)程時(shí),數(shù)組可以作為形參出現(xiàn)在過(guò)程的形參列表中。數(shù)組作參數(shù)是通過(guò)傳地址方式傳送。在傳送數(shù)組時(shí),除遵守參數(shù)傳送的一般規(guī)則外,還應(yīng)注意以下幾點(diǎn):6.4.3 數(shù)組參數(shù)的傳遞方式數(shù)組參數(shù)的傳遞方式(1) 為了把一個(gè)數(shù)組的全部元素傳送給一個(gè)過(guò)程,應(yīng)將數(shù)組名分別寫入形參表中,并略去數(shù)組的上下界,但括號(hào)不能省略。如:Private Sub Sort( a() As single) End Sub6.4.3 數(shù)組參數(shù)的傳遞方式數(shù)組參數(shù)的傳遞方式(3) 當(dāng)用數(shù)組作形參時(shí),對(duì)應(yīng)的實(shí)參必須也是數(shù)組,且類型一致。(4) 實(shí)參和形參結(jié)合是按地址傳遞,即形參數(shù)組和實(shí)參數(shù)組共用一段內(nèi)存單
22、元。例如,定義了實(shí)參數(shù)組b(1 to 8),給它們賦了值,調(diào)用Sort()函數(shù)過(guò)程的形式如下:Sort b() 或 Call Sort(b() ) 6.4.3 數(shù)組參數(shù)的傳遞方式數(shù)組參數(shù)的傳遞方式(5) 在被調(diào)用過(guò)程中不能用Dim語(yǔ)句對(duì)形參數(shù)組聲明,否則會(huì)產(chǎn)生“重復(fù)聲明”的編譯錯(cuò)誤。但是在使用動(dòng)態(tài)數(shù)組時(shí),可以用Redim語(yǔ)句改變形參數(shù)組的維數(shù),重新定義數(shù)組的大小。當(dāng)返回調(diào)用過(guò)程時(shí),對(duì)應(yīng)的實(shí)參數(shù)組的維數(shù)也隨之發(fā)生變化。6.4.3 數(shù)組參數(shù)的傳遞方式數(shù)組參數(shù)的傳遞方式【例6-6】請(qǐng)定義一個(gè)通用過(guò)程,實(shí)現(xiàn)對(duì)數(shù)據(jù)的升序排序,采用冒泡法排序。求求數(shù)數(shù)組組的的最最大大值值6.5 過(guò)程的嵌套與遞歸過(guò)程的嵌套
23、與遞歸 在一個(gè)過(guò)程(Sub過(guò)程或Function過(guò)程)中調(diào)用另外一個(gè)過(guò)程,稱為過(guò)程的嵌套調(diào)嵌套調(diào)用用,而過(guò)程直接或間接地調(diào)用自身,則稱為過(guò)程的遞歸調(diào)用遞歸調(diào)用。6.5.1 過(guò)程的嵌套過(guò)程的嵌套 VB在定義過(guò)程時(shí),不能嵌套定義過(guò)程,但可以嵌套地調(diào)用過(guò)程,即被主程序調(diào)用的過(guò)程還可以調(diào)用另外的過(guò)程,這種程序結(jié)構(gòu)稱為過(guò)程的嵌套。6.5.1 過(guò)程的嵌套過(guò)程的嵌套 圖6-14 程序運(yùn)行界面)!( !mnmnCmn【例6-10】利用函數(shù)嵌套求C(m,n)的值。6.5.1 過(guò)程的嵌套過(guò)程的嵌套【例6-10】利用函數(shù)嵌套求C(m,n)的值。主程序 Command1 .調(diào)用 Comb .End Sub被 調(diào) 程
24、序 Comb.調(diào)用 Fact.End Sub被 調(diào) 程 序 Fact.End Sub6.5.2 過(guò)程的遞歸過(guò)程的遞歸 在Visual Basic中,一個(gè)過(guò)程可以直接或間接地調(diào)用自身,前者稱為直接遞歸調(diào)用,后者稱為間接遞歸調(diào)用。 遞歸必須有相應(yīng)的結(jié)束遞歸的條件,否則遞歸將不能結(jié)束,我們稱這種遞歸為有窮遞歸。6.5.2 過(guò)程的遞歸過(guò)程的遞歸1直接遞歸 直接遞歸就是在過(guò)程體內(nèi)出現(xiàn)直接調(diào)用自身的過(guò)程。如下面定義的Direct過(guò)程。 Function A(n As Integer) S = A(m) End Function6.5.2 過(guò)程的遞歸過(guò)程的遞歸Function S1(n As Integer
25、)x = S2(m)End FunctionFunction S2(m As Integer)y = S1(n)End Function2間接遞歸 間接遞歸就是在過(guò)程體內(nèi)出現(xiàn)間接調(diào)用自身的過(guò)程。如下面定義的S1和S2過(guò)程。6.5.2 過(guò)程的遞歸過(guò)程的遞歸【例6-11】利用遞歸調(diào)用計(jì)算N!。圖6-15 求n!運(yùn)行界面6.6 .1 變量的作用范圍變量的作用范圍 變量的作用范圍是指程序所定義的變量能有效發(fā)揮其作用的范圍。根據(jù)定義變量的位置和定義變量的語(yǔ)句的不同,在Visual Basic中變量可以分為過(guò)程級(jí)變量、模塊級(jí)過(guò)程級(jí)變量、模塊級(jí)變量和全局變量。變量和全局變量。6.6 .1 變量的作用范圍變量
26、的作用范圍1過(guò)程級(jí)變量 在一個(gè)過(guò)程內(nèi)部使用Dim或Static關(guān)鍵字聲明變量時(shí),只有該過(guò)程內(nèi)部的代碼才能只有該過(guò)程內(nèi)部的代碼才能訪問或改變?cè)撟兞康闹?,因此被稱為過(guò)程訪問或改變?cè)撟兞康闹?,因此被稱為過(guò)程級(jí)變量。級(jí)變量。過(guò)程級(jí)變量的作用范圍限制在該過(guò)程內(nèi)部,也稱為局部變量。例如: Dim a As Integer, x As Single Static sum As Single6.6 .1 變量的作用范圍變量的作用范圍 過(guò)程級(jí)變量根據(jù)其生存期的不同又分為動(dòng)態(tài)變量和靜態(tài)變量。(1)動(dòng)態(tài)變量的生存期為過(guò)程的一次調(diào)用期間。用Dim聲明的變量屬于動(dòng)態(tài)變量。在過(guò)程內(nèi)未經(jīng)顯式聲明而直接使用的變量也是動(dòng)態(tài)變量
27、。 6.6 .1 變量的作用范圍變量的作用范圍(2)靜態(tài)變量的生存期為整個(gè)應(yīng)用程序的執(zhí)行期間。用 Static 聲明的變量屬于靜態(tài)變量。靜態(tài)變量在應(yīng)用程序執(zhí)行期間占據(jù)固定的內(nèi)存單元,當(dāng)靜態(tài)變量所在的過(guò)程執(zhí)行結(jié)束后,該變量不釋放內(nèi)存空間,變量的值保持不變。若該過(guò)程又被調(diào)用時(shí),接著使用上次的值。6.6 .1 變量的作用范圍變量的作用范圍【例6-13】測(cè)試在過(guò)程內(nèi)部使用Dim和Satic定義變量的不同。Private Sub Form_Click() Dim A1 As IntegerStatic A2 As Integer A1=A1+1 A2=A2+1 End Sub 6.6 .1 變量的作用范
28、圍變量的作用范圍2模塊級(jí)變量 模塊級(jí)變量是指在一個(gè)模塊內(nèi)所有的過(guò)程一個(gè)模塊內(nèi)所有的過(guò)程都可使用它都可使用它,但在其他的模塊內(nèi)則無(wú)法訪問或改變其值的變量??稍诖绑w模塊和標(biāo)準(zhǔn)模塊頂部用Dim或Private關(guān)鍵字聲明模塊級(jí)變量,如圖6-18所示。6.6 .1 變量的作用范圍變量的作用范圍3全局變量 全局變量的作用范圍可以是應(yīng)用程序的所應(yīng)用程序的所有過(guò)程,也稱為公用變量有過(guò)程,也稱為公用變量。聲明的方法是在窗體或標(biāo)準(zhǔn)模塊的通用部分中使用Public關(guān)鍵字聲明變量。例如: Public a As Integer, b As Single6.6.2 過(guò)程的作用范圍過(guò)程的作用范圍 在Visual Basi
29、c中,過(guò)程的作用范圍分為模塊級(jí)(或稱文件級(jí))和全局級(jí)(或稱工程級(jí))。(1)模塊級(jí)過(guò)程模塊級(jí)過(guò)程 是在某個(gè)模塊內(nèi)定義的過(guò)程。如果在Sub或Function過(guò)程前加Private,則該過(guò)程只能被本模塊中定義的過(guò)程調(diào)用,即其作用范圍為本模塊。6.6.2 過(guò)程的作用范圍過(guò)程的作用范圍(2) 全局級(jí)過(guò)程全局級(jí)過(guò)程 是定義過(guò)程時(shí),在Sub或Function前加關(guān)鍵字Public(系統(tǒng)默認(rèn)為Public)。全局級(jí)過(guò)程可被整個(gè)應(yīng)用程序的所有模塊中定義的過(guò)程調(diào)用,即其作用范圍是整個(gè)應(yīng)用程序(工程)。 6.6.2 過(guò)程的作用范圍過(guò)程的作用范圍1. 調(diào)用窗體中的過(guò)程 所有窗體模塊的外部調(diào)用必須指向包含此過(guò)程的窗體模塊,其格式為: Call 窗體名窗體名.全局過(guò)程名全局過(guò)程名(實(shí)參表實(shí)參表)例如,在窗體Form2中定義一個(gè)全局過(guò)程Sub1,在窗體Form1中調(diào)用Form2中的Sub1過(guò)程的語(yǔ)句為: Call Form2.Sub1(實(shí)參表實(shí)參表)6.6.2 過(guò)程的作用范圍過(guò)程的作用范圍2調(diào)用標(biāo)準(zhǔn)模塊中的過(guò)程 如果過(guò)程名是唯一的,則不必在調(diào)用時(shí)加模塊名。如果有兩個(gè)以上的模塊包含同名的過(guò)程,則調(diào)用本模塊內(nèi)過(guò)程時(shí)不必加模塊名,
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 8 How do you make a banana milk shake Section A 1a - 1c 教學(xué)設(shè)計(jì) 2024-2025學(xué)年人教版八年級(jí)英語(yǔ)上冊(cè)
- 2023一年級(jí)數(shù)學(xué)下冊(cè) 4 100以內(nèi)數(shù)的認(rèn)識(shí)練習(xí)課(1-2)配套教學(xué)設(shè)計(jì) 新人教版
- 10 雨點(diǎn)兒 教學(xué)設(shè)計(jì)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文一年級(jí)上冊(cè)
- 七年級(jí)道德與法治下冊(cè) 第四單元 走進(jìn)法治天地 第十課 法律伴我們成長(zhǎng) 第一框《法律為我們護(hù)航》教學(xué)設(shè)計(jì) 新人教版
- 15 搭船的鳥 第二課時(shí) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年語(yǔ)文三年級(jí)上冊(cè)統(tǒng)編版
- 2024-2025學(xué)年七年級(jí)道德與法治上冊(cè) 第一單元 成長(zhǎng)的節(jié)拍 第二課 學(xué)習(xí)新天地 第1框 學(xué)習(xí)伴成長(zhǎng)教學(xué)設(shè)計(jì) 新人教版
- 22文言文二則《書戴嵩畫?!罚ń虒W(xué)設(shè)計(jì))2024-2025學(xué)年統(tǒng)編版語(yǔ)文六年級(jí)上冊(cè)
- 三年級(jí)道德與法治上冊(cè) 第四單元 家是最溫暖的地方 12 家庭的記憶教學(xué)設(shè)計(jì)2 新人教版
- 2023六年級(jí)數(shù)學(xué)下冊(cè) 二 圓柱與圓錐(圓柱的體積)教學(xué)設(shè)計(jì) 西師大版
- 2024二年級(jí)語(yǔ)文下冊(cè) 第6單元 16.雷雨教學(xué)設(shè)計(jì) 新人教版
- 麻醉護(hù)理的現(xiàn)狀與展望
- 2024年高考一輪復(fù)習(xí)精細(xì)講義第25講 實(shí)驗(yàn):驗(yàn)證動(dòng)量守恒定律(原卷版+解析)
- 畢業(yè)設(shè)計(jì)論文《10t單梁橋式起重機(jī)的設(shè)計(jì)》
- 化工及相關(guān)行業(yè)廢鹽資源化用于氯堿行業(yè)技術(shù)規(guī)范
- 《標(biāo)準(zhǔn)工時(shí)培訓(xùn)》課件
- 區(qū)域軌道交通協(xié)同運(yùn)輸與服務(wù)應(yīng)用體系及實(shí)踐
- 貪心算法 思政案例
- 危巖穩(wěn)定性計(jì)算表格-滑移式-傾倒式-墜落式-完整版
- 2023年廣州市小升初數(shù)學(xué)真題
- 領(lǐng)導(dǎo)力的文化建設(shè)
- 【劇本】欽差大臣〔俄國(guó)〕果戈理
評(píng)論
0/150
提交評(píng)論