VB程序設(shè)計-第7章ppt課件_第1頁
VB程序設(shè)計-第7章ppt課件_第2頁
VB程序設(shè)計-第7章ppt課件_第3頁
VB程序設(shè)計-第7章ppt課件_第4頁
VB程序設(shè)計-第7章ppt課件_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、VB程序設(shè)計程序設(shè)計第七章第七章 過程過程本章知識點:本章知識點: 內(nèi)容主要包括內(nèi)容主要包括VB過程的定義及其應(yīng)用,包過程的定義及其應(yīng)用,包括:括:Sub過程、過程、Function過程的定義、過過程的定義、過程參數(shù)傳遞、過程的嵌套和遞歸調(diào)用以及變程參數(shù)傳遞、過程的嵌套和遞歸調(diào)用以及變量的作用范圍和生存期等。量的作用范圍和生存期等。 7.1 Sub7.1 Sub過程過程 7.2 Function7.2 Function過程過程7.3 7.3 過程的調(diào)用過程的調(diào)用7.4 7.4 過程中的參數(shù)傳遞過程中的參數(shù)傳遞7.5 7.5 過程的嵌套和遞歸調(diào)用過程的嵌套和遞歸調(diào)用7.6 7.6 變量的作用范圍

2、和生存期變量的作用范圍和生存期7.1 Visual Basic7.1 Visual Basic語言簡介語言簡介VBVB有兩種有兩種SubSub過程:事件過程和通用過程:事件過程和通用subsub過程。過程。1 1事件過程事件過程事件是指能被事件是指能被VBVB對象窗體和控件識別的動作,對象窗體和控件識別的動作,例如單擊例如單擊(Click)(Click)按鈕按鈕, ,雙擊雙擊(DbClick)(DbClick)窗體等,窗體等,為事件所編寫的程序代碼稱為事件過程。為事件所編寫的程序代碼稱為事件過程。事件過程分為控件事件過程和窗體事件過程。事件過程分為控件事件過程和窗體事件過程。(1 1控件事件過

3、程控件事件過程控件事件過程是將控件的實際名稱控件事件過程是將控件的實際名稱( (在控件的在控件的namename屬性中屬性中指定指定) )、下劃線、事件名以及相關(guān)的程序代碼組合起來。、下劃線、事件名以及相關(guān)的程序代碼組合起來。例如在例如在FormForm窗體中有一個名為窗體中有一個名為CmdCmd的命令按鈕,希望單擊的命令按鈕,希望單擊該按鈕后,在窗體中打印該按鈕后,在窗體中打印CmdCmd按鈕的名字,需要使用按鈕按鈕的名字,需要使用按鈕的的cmd_Click()cmd_Click()事件過程,相關(guān)程序代碼如下:事件過程,相關(guān)程序代碼如下:Private Sub cmd_Click()Priv

4、ate Sub cmd_Click() Print cmd.Name Print cmd.NameEnd SubEnd Sub(2 2窗體事件過程窗體事件過程窗體事件過程是將窗體事件過程是將“Form”Form”、下劃線、事件名以及相關(guān)、下劃線、事件名以及相關(guān)的程序代碼組合起來。例如希望單擊窗體后彈出對話框的程序代碼組合起來。例如希望單擊窗體后彈出對話框顯示窗體的標(biāo)題,需要使用窗體的顯示窗體的標(biāo)題,需要使用窗體的Form_DblClick()Form_DblClick()事件事件過程,相關(guān)程序代碼如下:過程,相關(guān)程序代碼如下:Private Sub Form_DblClick()Private

5、 Sub Form_DblClick() MsgBox form1.Caption MsgBox form1.CaptionEnd SubEnd Sub2 2) 通用通用subsub過程過程通用過程的定義語句如下:通用過程的定義語句如下:PrivatePublicStaticSub PrivatePublicStaticSub 過程名過程名 ( 形形式參數(shù)表及其說明式參數(shù)表及其說明 )過程的操作對象數(shù)據(jù)定義和說明部分過程的操作對象數(shù)據(jù)定義和說明部分語句塊語句塊1 1Exit SubExit Sub語句塊語句塊2 2End SubEnd Sub其中:其中:(1 1PrivatePrivate表示

6、過程是局部的、私有的,只能在本模表示過程是局部的、私有的,只能在本模塊中使用;塊中使用;PublicPublic表示過程是全局的、公有的,可以被表示過程是全局的、公有的,可以被程序中任何模塊使用,系統(tǒng)缺省為程序中任何模塊使用,系統(tǒng)缺省為PublicPublic。(2 2StaticStatic表示該過程內(nèi)部定義的變量為局部靜態(tài)變量。表示該過程內(nèi)部定義的變量為局部靜態(tài)變量。(3 3過程名的命名規(guī)則和變量的命名規(guī)則相同。過程名的命名規(guī)則和變量的命名規(guī)則相同。(4 4Exit SubExit Sub語句使過程立即從該語句處退出。語句使過程立即從該語句處退出。(5 5End SubEnd Sub用來結(jié)

7、束本用來結(jié)束本SubSub過程。過程。(6 6形式參數(shù)表及其說明,形式參數(shù)表及其說明,SubSub過程的形式參數(shù)表用圓過程的形式參數(shù)表用圓括號括起來的、由零個到多個形式參數(shù)的定義組成,兩括號括起來的、由零個到多個形式參數(shù)的定義組成,兩個形式參數(shù)定義之間用逗號分隔。若一個個形式參數(shù)定義之間用逗號分隔。若一個SubSub過程沒有形過程沒有形式參數(shù),作為式參數(shù),作為SubSub過程運算符使用的圓括號也不能省略。過程運算符使用的圓括號也不能省略。形式參數(shù)表的語法形式如下:形式參數(shù)表的語法形式如下:ByValByRefByValByRef變量名變量名 AS AS 數(shù)據(jù)類型數(shù)據(jù)類型 其中:其中:ByVal

8、ByVal表示參數(shù)按值傳遞,表示參數(shù)按值傳遞,ByRefByRef表示參數(shù)按地址表示參數(shù)按地址傳遞,數(shù)據(jù)類型用來表示傳遞給該過程的參數(shù)的數(shù)據(jù)類傳遞,數(shù)據(jù)類型用來表示傳遞給該過程的參數(shù)的數(shù)據(jù)類型,缺省為型,缺省為VariantVariant類型。類型。7.2 Function7.2 Function過程過程FunctionFunction過程的定義語句如下:過程的定義語句如下:PrivatePublicStatic Function PrivatePublicStatic Function 函數(shù)名函數(shù)名(形式參數(shù)表及其說明形式參數(shù)表及其說明) As ) As 數(shù)據(jù)類型數(shù)據(jù)類型 語句塊語句塊函數(shù)名

9、表達(dá)式函數(shù)名表達(dá)式Exit FunctionExit FunctionEnd FunctionEnd Function其中:其中:(1 1PrivatePrivate表示過程是局部的、私有的,只能在本模表示過程是局部的、私有的,只能在本模塊中使用;塊中使用;PublicPublic表示過程是全局的、公有的,可以被表示過程是全局的、公有的,可以被程序中任何模塊使用,系統(tǒng)缺省為程序中任何模塊使用,系統(tǒng)缺省為PublicPublic。(2 2StaticStatic表示局部靜態(tài)變量,是指在調(diào)用該過程結(jié)束表示局部靜態(tài)變量,是指在調(diào)用該過程結(jié)束后仍保留后仍保留FunctionFunction過程的變量值

10、。過程的變量值。(3 3FunctionFunction過程名的命名規(guī)則和變量的命名規(guī)則相同。過程名的命名規(guī)則和變量的命名規(guī)則相同。(4 4Exit FunctionExit Function語句使過程立即從該語句處退出。語句使過程立即從該語句處退出。(5 5End FunctionEnd Function用來結(jié)束本用來結(jié)束本FunctionFunction過程。過程。(6 6形式參數(shù)表及其說明同通用過程。形式參數(shù)表及其說明同通用過程。(7 7函數(shù)名是有值的,所以在函數(shù)體內(nèi)至少要通過函數(shù)函數(shù)名是有值的,所以在函數(shù)體內(nèi)至少要通過函數(shù)名表達(dá)式對函數(shù)名進(jìn)行賦值一次。名表達(dá)式對函數(shù)名進(jìn)行賦值一次。下面

11、以定義實現(xiàn)求階乘功能函數(shù)過程為例了解一個函數(shù)下面以定義實現(xiàn)求階乘功能函數(shù)過程為例了解一個函數(shù)過程的具體定義過程。根據(jù)前面所學(xué)知識知道,通過過程的具體定義過程。根據(jù)前面所學(xué)知識知道,通過InputboxInputbox函數(shù)輸入一個正整數(shù)函數(shù)輸入一個正整數(shù)n n后求后求n n的階乘的的階乘的VBVB程序代程序代碼如下所示:碼如下所示:Private Sub Command1_Click()Private Sub Command1_Click() Dim fac!, i%, n% Dim fac!, i%, n% fac = 1 fac = 1 n = Val(InputBox( n = Val(I

12、nputBox(請輸入一個正整數(shù)請輸入一個正整數(shù), , 輸入輸入) For i = 1 To n For i = 1 To n fac = fac fac = fac * * i i Next i Next i Print n & Print n & 的階乘是:的階乘是: & fac & facEnd SubEnd Sub用函數(shù)實現(xiàn)階乘功能的具體過程如下:用函數(shù)實現(xiàn)階乘功能的具體過程如下:( 1 1函數(shù)過程的命名函數(shù)過程的命名函數(shù)過程的名字在程序設(shè)計中有三個作用:一是使用該函數(shù)過程的名字在程序設(shè)計中有三個作用:一是使用該名字調(diào)用這個函數(shù)過程;二是應(yīng)該反映出該函數(shù)

13、過程所名字調(diào)用這個函數(shù)過程;二是應(yīng)該反映出該函數(shù)過程所要實現(xiàn)的功能;三是通過函數(shù)過程名字返回函數(shù)過程的要實現(xiàn)的功能;三是通過函數(shù)過程名字返回函數(shù)過程的結(jié)果。對于實現(xiàn)本功能的函數(shù)過程,可以用結(jié)果。對于實現(xiàn)本功能的函數(shù)過程,可以用factorialfactorial予予以命名。以命名。(2 2函數(shù)過程的形式參數(shù)設(shè)計函數(shù)過程的形式參數(shù)設(shè)計函數(shù)過程用到的正整數(shù)函數(shù)過程用到的正整數(shù)n n是從鍵盤輸入獲取的,如果需要是從鍵盤輸入獲取的,如果需要從對函數(shù)過程的調(diào)用者使用者處獲取所需要的數(shù)據(jù),從對函數(shù)過程的調(diào)用者使用者處獲取所需要的數(shù)據(jù),就必須對函數(shù)過程的形式參數(shù)表進(jìn)行設(shè)計。此時需要將就必須對函數(shù)過程的形式參

14、數(shù)表進(jìn)行設(shè)計。此時需要將函數(shù)過程內(nèi)部用于從鍵盤上接收數(shù)據(jù)的數(shù)據(jù)對象定義移函數(shù)過程內(nèi)部用于從鍵盤上接收數(shù)據(jù)的數(shù)據(jù)對象定義移到函數(shù)過程的形式參數(shù)表中到函數(shù)過程的形式參數(shù)表中 實現(xiàn)階乘功能的函數(shù)過程實現(xiàn)階乘功能的函數(shù)過程factorialfactorial。Function factorial!(ByVal n%)Function factorial!(ByVal n%)Dim fac!, i%Dim fac!, i% fac = 1 fac = 1 For i = 1 To n For i = 1 To n fac = fac fac = fac * * i i Next i Next i fac

15、torial=fac factorial=facEnd FunctionEnd Function如果需要在單擊如果需要在單擊Command1Command1按鈕時調(diào)用按鈕時調(diào)用factorialfactorial函數(shù)過程函數(shù)過程計算某個數(shù)的階乘,在計算某個數(shù)的階乘,在Command1_Click()Command1_Click()事件過程中可事件過程中可以編寫如下代碼:以編寫如下代碼:Private Sub Command1_Click()Private Sub Command1_Click() Dim fac!, i%, n% Dim fac!, i%, n% fac = 1 fac = 1

16、 n = Val(InputBox( n = Val(InputBox(請輸入一個正整數(shù)請輸入一個正整數(shù), , 輸入輸入) fac= factorial(n) fac= factorial(n)調(diào)用調(diào)用factorialfactorial函數(shù)過程求函數(shù)過程求n n的的階乘階乘 Print n & Print n & 的階乘是:的階乘是: & fac & facEnd SubEnd Sub7.37.3過程的調(diào)用過程的調(diào)用7.3.1 Sub7.3.1 Sub事件過程的調(diào)用事件過程的調(diào)用SubSub事件過程的調(diào)用有三種方式,它們是:事件過程的調(diào)用有三種方式,它們是:

17、觸發(fā)該事件時自動調(diào)用觸發(fā)該事件時自動調(diào)用subsub事件過程事件過程 過程名過程名 實參數(shù)列表實參數(shù)列表 Call Call過程名實參列表)過程名實參列表) 使用使用CallCall語句調(diào)用事件過程時,實參數(shù)必須語句調(diào)用事件過程時,實參數(shù)必須包含在括號內(nèi),如果被調(diào)用的過程沒有參數(shù),()包含在括號內(nèi),如果被調(diào)用的過程沒有參數(shù),()也可以省略。用過程名調(diào)用時,沒有參數(shù)時()也可以省略。用過程名調(diào)用時,沒有參數(shù)時()必須省略。必須省略。例例7.17.1檢查輸入的數(shù)據(jù)是否大于檢查輸入的數(shù)據(jù)是否大于0 0。7.3.2 Sub7.3.2 Sub通用過程調(diào)用通用過程調(diào)用 調(diào)用調(diào)用subsub通用過程的語法和

18、通用過程的語法和SubSub事件過程的調(diào)用語法事件過程的調(diào)用語法相同。相同。例例7.2 7.2 通過調(diào)用通用通過調(diào)用通用(Sub)(Sub)過程檢查輸入的數(shù)據(jù)是否大于過程檢查輸入的數(shù)據(jù)是否大于0 0。7.3.3 Function7.3.3 Function過程的調(diào)用過程的調(diào)用調(diào)用函數(shù)調(diào)用函數(shù)FunctionFunction過程的方法與調(diào)用過程的方法與調(diào)用VBVB內(nèi)部函數(shù)的方法內(nèi)部函數(shù)的方法一樣,即直接使用函數(shù)的名字調(diào)用函數(shù),其語法形式如一樣,即直接使用函數(shù)的名字調(diào)用函數(shù),其語法形式如下:下: 函數(shù)過程名實參列表或者函數(shù)過程名實參列表或者 CallCall函數(shù)過程名實參列表)函數(shù)過程名實參列表)

19、例例7.37.3分別編寫統(tǒng)計字符串中字母字符個數(shù)的通用過程和分別編寫統(tǒng)計字符串中字母字符個數(shù)的通用過程和函數(shù)過程,并分別調(diào)用。函數(shù)過程,并分別調(diào)用。7.4 7.4 過程中的參數(shù)傳遞過程中的參數(shù)傳遞.1形參和實參形參和實參形參是指定義定義在函數(shù)過程或者通用過程后圓形參是指定義定義在函數(shù)過程或者通用過程后圓括號內(nèi)的變量名,用來接收傳送給過程的數(shù)據(jù),括號內(nèi)的變量名,用來接收傳送給過程的數(shù)據(jù),形參表中的多個變量之間用逗號分割。形參表中的多個變量之間用逗號分割。實參是在調(diào)用函數(shù)過程或者通用過程時,過程圓實參是在調(diào)用函數(shù)過程或者通用過程時,過程圓括號內(nèi)的參數(shù),它的作用是將它們的數(shù)值或者地括

20、號內(nèi)的參數(shù),它的作用是將它們的數(shù)值或者地址傳給函數(shù)過程或者通用過程中與其對應(yīng)的形參址傳給函數(shù)過程或者通用過程中與其對應(yīng)的形參變量。在進(jìn)行參數(shù)傳遞時,實參的個數(shù)、順序、變量。在進(jìn)行參數(shù)傳遞時,實參的個數(shù)、順序、類型與形參的個數(shù)、順序、類型應(yīng)該一一對應(yīng)。類型與形參的個數(shù)、順序、類型應(yīng)該一一對應(yīng)。.2參數(shù)傳遞方式參數(shù)傳遞方式當(dāng)被調(diào)過程是有參過程時,過程的調(diào)用必然伴隨著參數(shù)當(dāng)被調(diào)過程是有參過程時,過程的調(diào)用必然伴隨著參數(shù)傳遞。在傳遞。在VBVB程序過程調(diào)用的數(shù)據(jù)傳遞中,有傳值程序過程調(diào)用的數(shù)據(jù)傳遞中,有傳值ByValByVal和傳地址援用)(和傳地址援用)(ByRefByRef兩種參數(shù)

21、傳遞方式。兩種參數(shù)傳遞方式。1 1傳值方式傳值方式ByValByVal)VBVB中傳值方式是一種數(shù)據(jù)復(fù)制的方式,在這種方式下,中傳值方式是一種數(shù)據(jù)復(fù)制的方式,在這種方式下,實際參數(shù)值通過復(fù)制的方式傳遞給形式參數(shù),傳遞方實際參數(shù)值通過復(fù)制的方式傳遞給形式參數(shù),傳遞方主調(diào)過程中的原始數(shù)據(jù)和接受方被調(diào)過程中的主調(diào)過程中的原始數(shù)據(jù)和接受方被調(diào)過程中的數(shù)據(jù)復(fù)制品各自占用內(nèi)存中不同的存儲單元,當(dāng)數(shù)據(jù)傳數(shù)據(jù)復(fù)制品各自占用內(nèi)存中不同的存儲單元,當(dāng)數(shù)據(jù)傳遞過程結(jié)束后,它們是互不相干的,因此被傳遞的數(shù)據(jù)遞過程結(jié)束后,它們是互不相干的,因此被傳遞的數(shù)據(jù)在被調(diào)過程中無論怎樣變化,都不會影響該數(shù)據(jù)在主調(diào)在被調(diào)過程中無論

22、怎樣變化,都不會影響該數(shù)據(jù)在主調(diào)過程中的值。過程中的值。例例7.47.4使用函數(shù)過程求兩個數(shù)的最小者。使用函數(shù)過程求兩個數(shù)的最小者。函數(shù)過程函數(shù)過程minmin傳數(shù)據(jù)值調(diào)用的過程如下圖所示:傳數(shù)據(jù)值調(diào)用的過程如下圖所示:35757abxyzd) z=a執(zhí)行后35557abxyze) a=b執(zhí)行后35577abxyzf) b=z執(zhí)行后圖7.3 min函數(shù)過程值傳遞調(diào)用時參數(shù)的變化情況7575abxyzc) 參數(shù)傳遞過程中75abxyzb) 過程調(diào)用的參數(shù)傳遞前75xya) min過程調(diào)用前2 2傳址方式傳址方式ByRefByRef)在形參前加關(guān)鍵字在形參前加關(guān)鍵字ByRefByRef或缺省關(guān)鍵字

23、時,指定參數(shù)按照或缺省關(guān)鍵字時,指定參數(shù)按照地址的方式傳遞參數(shù)。按地址方式傳遞參數(shù)是把形參的地址的方式傳遞參數(shù)。按地址方式傳遞參數(shù)是把形參的內(nèi)存地址傳遞給實參,也就是說通過這種方式傳遞后,內(nèi)存地址傳遞給實參,也就是說通過這種方式傳遞后,實參和形參具有相同的地址,它們共享同一段內(nèi)存單元,實參和形參具有相同的地址,它們共享同一段內(nèi)存單元,這種在過程調(diào)用過程中傳遞主調(diào)過程實際參數(shù)的地址的這種在過程調(diào)用過程中傳遞主調(diào)過程實際參數(shù)的地址的方式提供了在被調(diào)過程中操作主調(diào)過程中實際參數(shù)的可方式提供了在被調(diào)過程中操作主調(diào)過程中實際參數(shù)的可能性。能性。例例7.57.5使用函數(shù)過程求兩個數(shù)的最小者使用傳地址方使用

24、函數(shù)過程求兩個數(shù)的最小者使用傳地址方式)。式)。.3數(shù)組參數(shù)數(shù)組參數(shù)在在VBVB程序設(shè)計中,既可以用數(shù)組的元素作為過程的參數(shù),程序設(shè)計中,既可以用數(shù)組的元素作為過程的參數(shù),也可以將數(shù)組看成一個整體作為過程的參數(shù)。將數(shù)組看也可以將數(shù)組看成一個整體作為過程的參數(shù)。將數(shù)組看成一個整體作為過程的參數(shù)時,是以傳地址方式實現(xiàn)參成一個整體作為過程的參數(shù)時,是以傳地址方式實現(xiàn)參數(shù)傳遞的。使用數(shù)組元素作為參數(shù)傳遞,其用法都與普數(shù)傳遞的。使用數(shù)組元素作為參數(shù)傳遞,其用法都與普通變量用法一樣,實現(xiàn)的是過程間的傳值調(diào)用。通變量用法一樣,實現(xiàn)的是過程間的傳值調(diào)用。數(shù)組存儲區(qū)域全部共享時形參數(shù)組與實參數(shù)組

25、的關(guān)系參數(shù)組存儲區(qū)域全部共享時形參數(shù)組與實參數(shù)組的關(guān)系參見圖見圖7.77.7。例例7.67.6以下以下averageaverage過程求數(shù)組的元素的平均值并對數(shù)組過程求數(shù)組的元素的平均值并對數(shù)組元素的值進(jìn)行增元素的值進(jìn)行增1 1操作。操作。實參數(shù)組a形參數(shù)組b圖7.7形參數(shù)組與實參數(shù)組共享存儲單元7.57.5過程的嵌套和遞歸調(diào)用過程的嵌套和遞歸調(diào)用.1過程的嵌套調(diào)用過程的嵌套調(diào)用在在VBVB程序中過程不能嵌套定義。但程序中過程不能嵌套定義。但VBVB允許過程嵌允許過程嵌套調(diào)用,所謂過程的嵌套調(diào)用就是一個過程在自套調(diào)用,所謂過程的嵌套調(diào)用就是一個過程在自己被調(diào)用的過程中又調(diào)用了另

26、外的過程。己被調(diào)用的過程中又調(diào)用了另外的過程。兩層嵌套函數(shù)調(diào)用過程示意圖兩層嵌套函數(shù)調(diào)用過程示意圖 主函數(shù)主函數(shù)過程過程sub1sub1函數(shù)函數(shù)sub2sub2程序運行結(jié)束程序運行結(jié)束調(diào)用過程調(diào)用過程sub1sub1調(diào)用過程調(diào)用過程sub2sub2sub1sub1調(diào)用結(jié)束調(diào)用結(jié)束sub2sub2調(diào)用結(jié)束調(diào)用結(jié)束.2過程的遞歸調(diào)用過程的遞歸調(diào)用VBVB允許一個自定義的過程直接地或間接地自己調(diào)用自己,允許一個自定義的過程直接地或間接地自己調(diào)用自己,稱為過程的遞歸調(diào)用。過程的遞歸調(diào)用可以看成是一種稱為過程的遞歸調(diào)用。過程的遞歸調(diào)用可以看成是一種特殊的過程嵌套調(diào)用,它與一般的嵌套調(diào)用相

27、比較有幾特殊的過程嵌套調(diào)用,它與一般的嵌套調(diào)用相比較有幾個不同的特點:一是遞歸調(diào)用中每次嵌套調(diào)用的過程都個不同的特點:一是遞歸調(diào)用中每次嵌套調(diào)用的過程都是該過程本身;二是遞歸調(diào)用不會無限制進(jìn)行下去,即是該過程本身;二是遞歸調(diào)用不會無限制進(jìn)行下去,即這種特殊的嵌套調(diào)用會在某種條件下結(jié)束。這種特殊的嵌套調(diào)用會在某種條件下結(jié)束。例例7.87.8用遞歸的方法用遞歸的方法x x的的n n次冪。次冪。根據(jù)使用遞歸技術(shù)特點,求根據(jù)使用遞歸技術(shù)特點,求xnxn的問題的遞歸方程即問的問題的遞歸方程即問題的形式為題的形式為xnxnx x* *x(n-1),x(n-1),遞歸結(jié)束條件即最簡單的遞歸結(jié)束條件即最簡單的

28、解為當(dāng)解為當(dāng)n n1 1時,其結(jié)果為時,其結(jié)果為x x,其遞歸關(guān)系可以寫成以下,其遞歸關(guān)系可以寫成以下形式:形式:例例7.97.9漢諾塔漢諾塔(Tower of Hanoi)(Tower of Hanoi)問題。問題。有有A A、B B、C C三根桿,最左邊桿上自下而上、由大到小順序三根桿,最左邊桿上自下而上、由大到小順序串有串有6464個金盤呈一塔形。現(xiàn)要把左邊個金盤呈一塔形?,F(xiàn)要把左邊A A桿上的金盤全部移桿上的金盤全部移到右邊到右邊C C桿上,條件是一次只能移動一個盤,且不允許大桿上,條件是一次只能移動一個盤,且不允許大盤壓在小盤的上面。盤壓在小盤的上面??梢詫h諾塔問題分解為下面三步遞

29、歸求解:可以將漢諾塔問題分解為下面三步遞歸求解:第一步:把第一步:把a a桿上的桿上的n-1n-1個盤子設(shè)法借助個盤子設(shè)法借助b b桿放到桿放到c c桿,記桿,記做做hanoi(n-1,a,c,b)hanoi(n-1,a,c,b);第二步:把第第二步:把第n n個盤子從個盤子從a a桿移動到桿移動到b b桿;桿;第三步:把第三步:把c c桿上的桿上的n-1n-1個盤子借助個盤子借助a a桿移動到桿移動到b b桿,記做桿,記做hanoi(n-1,c,b,a);hanoi(n-1,c,b,a);7.6 7.6 變量的作用范圍和生存期變量的作用范圍和生存期VBVB應(yīng)用程序工程的結(jié)構(gòu)應(yīng)用程序工程的結(jié)構(gòu)

30、 VB應(yīng)用程序一個或者多個窗體模塊文件0個或者多個標(biāo)準(zhǔn)模塊文件0個或者多個類模塊文件圖7.10 VB應(yīng)用程序的一般結(jié)構(gòu)一個一個VBVB程序可以由多個模塊文件構(gòu)成,對于在不程序可以由多個模塊文件構(gòu)成,對于在不同的模塊中聲明或定義的變量或者過程必須要考同的模塊中聲明或定義的變量或者過程必須要考慮要考慮以下幾個方面的問題:慮要考慮以下幾個方面的問題:(1 1變量或者過程的作用范圍如何確定;變量或者過程的作用范圍如何確定;(2 2變量的生存期如何確定;變量的生存期如何確定;7.6.1 7.6.1 變量的作用范圍變量的作用范圍變量按作用域的分類變量按作用域的分類 局部變量局部變量模塊級變量模塊級變量全局

31、變量。全局變量。1 1局部變量局部變量局部變量是指定義在過程內(nèi)部的變量,只能在定義該變局部變量是指定義在過程內(nèi)部的變量,只能在定義該變量的過程中使用,其他過程不能訪問。量的過程中使用,其他過程不能訪問。特點:特點:(1 1過程中同一組局部變量的值在該過程的任意兩次調(diào)過程中同一組局部變量的值在該過程的任意兩次調(diào)用之間不會保留,即過程的每次調(diào)用都是使用的不同局用之間不會保留,即過程的每次調(diào)用都是使用的不同局部變量組。部變量組。(2 2定義在不同過程中的局部變量之間是毫無關(guān)系的,定義在不同過程中的局部變量之間是毫無關(guān)系的,即使它們的名字相同亦是如此。即使它們的名字相同亦是如此。2 2模塊級變量模塊級

32、變量在窗體模塊的通用聲明段或者標(biāo)準(zhǔn)模塊中使用在窗體模塊的通用聲明段或者標(biāo)準(zhǔn)模塊中使用DimDim或者或者PrivatePrivate關(guān)鍵字聲明的變量,稱為模塊級變量。模塊級變關(guān)鍵字聲明的變量,稱為模塊級變量。模塊級變量可被所聲明的模塊中的任何過程訪問,它的作用范圍量可被所聲明的模塊中的任何過程訪問,它的作用范圍是它所在的模塊,其他模塊不能訪問該變量。是它所在的模塊,其他模塊不能訪問該變量。3 3全局變量全局變量全局變量也稱為公用的模塊級變量,是在通用聲明段使全局變量也稱為公用的模塊級變量,是在通用聲明段使用用PublicPublic關(guān)鍵字聲明的變量。它的作用范圍是整個應(yīng)用關(guān)鍵字聲明的變量。它的

33、作用范圍是整個應(yīng)用程序,即可被本應(yīng)用程序的任何過程訪問。程序,即可被本應(yīng)用程序的任何過程訪問。不同作用范圍的不同作用范圍的3 3種變量聲明及使用規(guī)則如表所示。種變量聲明及使用規(guī)則如表所示。例例7.107.10設(shè)計一個如圖設(shè)計一個如圖7.127.12所示的程序界面,用戶在窗體所示的程序界面,用戶在窗體的文本框中輸入數(shù)組元素的個數(shù),按回車鍵后,在窗體的文本框中輸入數(shù)組元素的個數(shù),按回車鍵后,在窗體的的Picture1Picture1圖片框中輸出隨機產(chǎn)生的數(shù)組元素,單擊計圖片框中輸出隨機產(chǎn)生的數(shù)組元素,單擊計算算“計算平均值計算平均值按鈕,在按鈕,在Picture2Picture2中輸出數(shù)組元素的中

34、輸出數(shù)組元素的平均值。平均值。圖7.12 例7.10運行結(jié)果4 4變量同名問題變量同名問題(1 1全局變量和局部變量同名全局變量和局部變量同名圖7.13全局變量與局部變量作用范圍Public x As IntegerPrivate Sub Form_Click() Dim x As Integer x = 100 Form1.x = 20 MsgBox Me.x & xEnd Sub全局變量x的作用范圍過程內(nèi)部定義的局部變量x的作用范圍使用窗體名訪問全局變量使用Me關(guān)鍵字訪問全局變量(2 2不同模塊中全局變量同名的情況不同模塊中全局變量同名的情況如果在不同的模塊中全局變量使用相同的名字

35、,則通過如果在不同的模塊中全局變量使用相同的名字,則通過引用引用“模塊名模塊名. .變量名變量名就可以區(qū)分它們,例如在就可以區(qū)分它們,例如在Module1.basModule1.bas和和Form1Form1中都定義了全局變量中都定義了全局變量x x,則在使用時,則在使用時候使用候使用Module1.xModule1.x和和Form1.xForm1.x就可以區(qū)分它們。就可以區(qū)分它們。7.6.2 7.6.2 變量的生存期變量的生存期在在VBVB語言中,變量的生存期與其在程序中聲明的位置以語言中,變量的生存期與其在程序中聲明的位置以及聲明的關(guān)鍵字相關(guān)。模塊級變量和全局變量的生存期及聲明的關(guān)鍵字相關(guān)。模塊級變量和全局變量的生存期是整個應(yīng)用程序的運行期間。而對于在過程中用是整個應(yīng)用程序的運行期間。而對于在過

溫馨提示

  • 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

提交評論