VB過(guò)程講解ppt_第1頁(yè)
VB過(guò)程講解ppt_第2頁(yè)
VB過(guò)程講解ppt_第3頁(yè)
VB過(guò)程講解ppt_第4頁(yè)
VB過(guò)程講解ppt_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1教學(xué)目的要求: 掌握過(guò)程的概念和調(diào)用 掌握子過(guò)程和函數(shù)的應(yīng)用 掌握虛實(shí)結(jié)合和變量的作用域教學(xué)重點(diǎn): 子過(guò)程和函數(shù) 第4.5章 過(guò) 程2 VB應(yīng)用程序是由過(guò)程組成的,除了定義一些公共的常量、變量或數(shù)組外,編寫(xiě)代碼都是在過(guò)程中進(jìn)行的。 事件過(guò)程由VB預(yù)先定義,編程人員所要做的工作就是在已經(jīng)存在的過(guò)程中編寫(xiě)代碼。 實(shí)際應(yīng)用中,為了使程序結(jié)構(gòu)清楚,或減少代碼的重復(fù)性,可將重復(fù)性較大的代碼段獨(dú)立出來(lái)形成一個(gè)過(guò)程,在需要使用該過(guò)程的位置可根據(jù)不同的參數(shù)調(diào)用該過(guò)程,實(shí)現(xiàn)該過(guò)程所規(guī)定的功能。這種獨(dú)立定義的過(guò)程叫做“通用過(guò)程”。 通用過(guò)程由編程人員建立,供事件過(guò)程或其他通用過(guò)程使用(調(diào)用),通用過(guò)程也稱為“子

2、過(guò)程”或“子程序”,可以被多次調(diào)用。而調(diào)用該子過(guò)程的過(guò)程稱為“調(diào)用過(guò)程”。VB中,通用過(guò)程分為兩類:Function過(guò)程和Sub過(guò)程3調(diào)用過(guò)程調(diào)用Sprg1調(diào)用Sprg1調(diào)用Sprg2子過(guò)程:Sprg1子過(guò)程:Sprg2過(guò)程調(diào)用4 VB提供了豐富的內(nèi)部函數(shù)供用戶使用,如Sin函數(shù)、Sqr函數(shù),使用這些函數(shù)時(shí)只需寫(xiě)出函數(shù)名稱,并指定相應(yīng)的參數(shù)就能得到函數(shù)值。 當(dāng)在程序中要重復(fù)使用某一公式或處理某一函數(shù)關(guān)系,而又沒(méi)有現(xiàn)成的內(nèi)部函數(shù)可以使用時(shí),可以自己定義函數(shù),并采用與調(diào)用內(nèi)部函數(shù)相同的方法來(lái)調(diào)用自定義函數(shù)。 自定義函數(shù)通過(guò)Function過(guò)程實(shí)現(xiàn)。Function過(guò)程也稱為函數(shù)過(guò)程函數(shù)過(guò)程。 一、

3、 Function過(guò)程5(一) Function過(guò)程的定義 1Function過(guò)程的格式 Public | Private | Static Function () As = Exit FunctionEnd Function62說(shuō)明 Public:可選項(xiàng),缺省值。使用Public時(shí)表示所有模塊的所有其他過(guò)程都可以調(diào)用該Function過(guò)程。 Private:可選項(xiàng)。使用Private時(shí)表示只有本模塊中的其他過(guò)程才可以調(diào)用該Function過(guò)程。 Static:可選項(xiàng)。如果使用該選項(xiàng),則VB只給過(guò)程中的所有局部變量分配一次存儲(chǔ)空間,即在應(yīng)用程序執(zhí)行期間,每次調(diào)用該Function過(guò)程時(shí)將保留該

4、過(guò)程中的局部變量值。若沒(méi)有使用該選項(xiàng),則每次調(diào)用該Function過(guò)程時(shí),其中的局部變量都要被重新初始化。 :Function過(guò)程的名稱,遵循變量的命名規(guī)則。7 :可選項(xiàng)。表示在調(diào)用時(shí)要傳遞給Function過(guò)程的參數(shù)變量列表。多個(gè)變量之間用逗號(hào)隔開(kāi)。的格式為: ByVal | ByRef ( ) As 其中: ByVal為可選項(xiàng),表示該參數(shù)按值傳遞; ByRef為可選項(xiàng),缺省值,表示該參數(shù)按地址傳遞。 遵循變量命名規(guī)則的任何變量名或數(shù)組名。 ( )當(dāng)參數(shù)為數(shù)組時(shí)使用。 As為可選項(xiàng),用于聲明參數(shù)的數(shù)據(jù)類型。8 As :可選項(xiàng)。Function過(guò)程的返回值的數(shù)據(jù)類型,可以是Byte、Boole

5、an、Integer、Long、Currency、Single、Double、Date、String(固定長(zhǎng)度除外)、Object、Variant或用戶自定義類型。 :可選項(xiàng)。語(yǔ)句組中可以有一條或多條Exit Function語(yǔ)句。 Exit Function語(yǔ)句:從Function過(guò)程中退出。 :可選項(xiàng)。Function過(guò)程通過(guò)賦值語(yǔ)句 “ = ”將函數(shù)的返回值賦給。如果省略該語(yǔ)句,則數(shù)值函數(shù)過(guò)程返回0,字符串函數(shù)過(guò)程返回空串。9Function過(guò)程的建立可以在窗體模塊中進(jìn)行,也可以在標(biāo)準(zhǔn)模塊中進(jìn)行。建立的方法有以下兩種: Function過(guò)程的定義不能嵌套,即不能在Function過(guò)程中再

6、定義Function過(guò)程或Sub過(guò)程。例如,F(xiàn)unction Fact(N As Integer),回車后,此時(shí)代碼窗口中即可在Function語(yǔ)句和End Function語(yǔ)句之間輸入程序代碼。1)直接在代碼窗口中輸入在代碼窗口中的所有過(guò)程之外,輸入過(guò)程的第一條語(yǔ)句。102)使用“添加過(guò)程命令。 打開(kāi)代碼窗口,執(zhí)行“工具”菜單中的“添加過(guò)程”命令,彈出添加過(guò)程對(duì)話框,輸入過(guò)程名選擇類型選擇范圍11(二)Function過(guò)程的調(diào)用 定義函數(shù)過(guò)程的目的是為了在其他過(guò)程中調(diào)用,通過(guò)調(diào)用將一些參數(shù)值傳遞給函數(shù)過(guò)程,在函數(shù)過(guò)程中利用參數(shù)值計(jì)算并返回函數(shù)值。 Function過(guò)程的調(diào)用與內(nèi)部函數(shù)的調(diào)用類

7、似,即可以直接在表達(dá)式中調(diào)用。 格式: () 其中,為要調(diào)用的Function過(guò)程的名稱;為要傳送給Function過(guò)程的常量、變量或表達(dá)式,各參數(shù)之間用逗號(hào)分隔,如果是數(shù)組,在數(shù)組名之后必須跟一對(duì)空括號(hào)空括號(hào)。12Function過(guò)程定義及調(diào)用舉例過(guò)程定義Label2Label3Text113例例4-19 輸入輸入n,計(jì)算計(jì)算1!+2!+3!+n!(用函數(shù)過(guò)程實(shí)現(xiàn)用函數(shù)過(guò)程實(shí)現(xiàn))Function fact(x) t = 1 For i = 1 To x t = t * i Next i fact = tEnd FunctionPrivate Sub Command1_Click() n=in

8、putbox(“輸入輸入n值值”) sum = 0 For i = 1 To n sum = sum + fact(i) Next i Text1.Text = sumEnd Sub14 當(dāng)需要定義的過(guò)程返回一個(gè)值時(shí),使用前面介紹的Function過(guò)程很容易實(shí)現(xiàn),但在實(shí)際應(yīng)用中,可能希望過(guò)程不需要返回值,例如,使用過(guò)程打印一個(gè)圖形,或需要返回多個(gè)值; 如,利用過(guò)程對(duì)一批數(shù)據(jù)進(jìn)行排序,或者要進(jìn)行較復(fù)雜的操作,等等。在這些情況下就要利用Sub過(guò)程來(lái)實(shí)現(xiàn)。二、 Sub過(guò)程15(一) Sub過(guò)程的定義 1Sub過(guò)程的格式 Private | PublicStatic Sub () Exit Sub E

9、nd Sub16 2說(shuō)明 格式中各項(xiàng)含義同F(xiàn)unction過(guò)程。Exit Sub用于退出Sub過(guò)程。 Sub過(guò)程的與Function過(guò)程的的含義與作用不同,只在調(diào)用Sub過(guò)程時(shí)使用,不具有值的意義,在Sub過(guò)程中不能給賦值,也不能給定義類型。 過(guò)程可以返回0到多個(gè)值,且由中的參數(shù)返回這些值。因此,使用函數(shù)過(guò)程可以實(shí)現(xiàn)的功能,也可以用Sub過(guò)程實(shí)現(xiàn)。 Sub過(guò)程的建立方法與Function過(guò)程的建立方法相同,可以在代碼窗口中直接輸入,也可通過(guò)執(zhí)行“工具”菜單中的“添加過(guò)程”命令生成過(guò)程模板。17(二) Sub過(guò)程的調(diào)用 定義一個(gè)Sub過(guò)程之后,必須使用Call語(yǔ)句調(diào)用該過(guò)程。 調(diào)用格式一:Cal

10、l () 調(diào)用格式二: :要調(diào)用的Sub過(guò)程名。 :要傳送給Sub過(guò)程的常量、變量或表達(dá)式,各參數(shù)之間用逗號(hào)分隔。如果是數(shù)組參數(shù),則要在數(shù)組名之后跟一對(duì)空括號(hào)。 用Call語(yǔ)句調(diào)用一個(gè)Sub過(guò)程時(shí),如果過(guò)程本身沒(méi)有參數(shù),則省略和括號(hào)。 格式二省略了Call關(guān)鍵字,同時(shí)兩邊也不能帶括號(hào)。18例:在窗體上輸出n行*號(hào)Sub ab(n)for I=1 to nprint “*”next IEnd subPrivate sub command1-click()x=val(text1.text)call ab(x)End sub例4-18(89頁(yè))19(一) 形參和實(shí)參 形參是在Sub過(guò)程、Functi

11、on過(guò)程的定義中出現(xiàn)的變量名,實(shí)參則是在調(diào)用Sub過(guò)程或Function過(guò)程時(shí)傳送給Sub過(guò)程或Function過(guò)程的常量、變量、表達(dá)式或數(shù)組。 在調(diào)用一個(gè)過(guò)程時(shí),必須把實(shí)參傳送給過(guò)程,完成形參與實(shí)參的結(jié)合,然后用實(shí)參執(zhí)行調(diào)用的過(guò)程。這種參數(shù)的傳遞也稱為參數(shù)的結(jié)合。 三、 參數(shù)的傳遞20例如,定義如下一個(gè)過(guò)程:Sub SubTest(n As Integer, Sum As Single) End Sub 如果有以下調(diào)用語(yǔ)句:Call SubTest(a, s) 則其形參與實(shí)參的結(jié)合關(guān)系如下: 過(guò)程調(diào)用: Call SubTest(a, s) 過(guò)程定義: Sub SubTest(n As In

12、teger, Sum As Single) 在傳遞參數(shù)時(shí),形參表與實(shí)參表中對(duì)應(yīng)參數(shù)的名字不必相同,但要求形參表與實(shí)參表中參數(shù)的個(gè)數(shù)、類型、位置順序必須一一對(duì)應(yīng)。 形參表中的參數(shù)可以是:除固定長(zhǎng)度字符串之外的合法變量名,后面帶一對(duì)圓括號(hào)的數(shù)組名。 實(shí)參表中的參數(shù)可以是:常量、變量、表達(dá)式、后面帶一對(duì)圓括號(hào)的數(shù)組名。 VB中, 形參與實(shí)參的結(jié)合有兩種方式:按值傳遞和按地址傳遞。21(二) 按值傳遞和按地址傳遞 1按值傳遞 按值傳遞是指實(shí)參把其值傳遞給形參而不傳遞實(shí)參的地址。在這種情況下,系統(tǒng)把需要傳遞的參數(shù)復(fù)制到一個(gè)臨時(shí)存儲(chǔ)單元中,然后把臨時(shí)存儲(chǔ)單元與形參結(jié)合,在子程序執(zhí)行過(guò)程中,形參值的改變不會(huì)

13、影響主程序中實(shí)參的值,因此,數(shù)據(jù)的傳遞是單向的。例:sub power2(byval y as integer)y=y2print “y=“;y end sub private sub form_click()dim x as integerx=10call power2(x)print “x=“;x end sub222按地址傳遞 按地址傳遞即指將實(shí)參的地址傳給形參,使形參和實(shí)參具有相同的地址,即形參與實(shí)參共享同一存儲(chǔ)單元。當(dāng)實(shí)參為變量或數(shù)組時(shí),形參使用關(guān)鍵字ByRef定義(或省略),表示要按地址傳遞。 當(dāng)參數(shù)是數(shù)組時(shí),數(shù)組名之后必須使用一對(duì)空的圓括號(hào)。 按地址傳遞可以實(shí)現(xiàn)調(diào)用過(guò)程與子過(guò)程之

14、間數(shù)據(jù)的雙向傳遞。 sub power(byref y as integer)233傳遞數(shù)組在VB中可以把數(shù)組或數(shù)組元素作為實(shí)參傳送給形參,若傳遞整個(gè)數(shù)組,需在實(shí)參和形參上都要寫(xiě)上數(shù)組名和一對(duì)括號(hào),若要傳遞數(shù)組的元素,則在實(shí)參上寫(xiě)上該數(shù)組元素。 例4-20 隨機(jī)生成有10個(gè)元素的一維數(shù)組,并求其平方和。24在一個(gè)過(guò)程執(zhí)行期間又調(diào)用另一個(gè)過(guò)程,稱為過(guò)程的嵌套.程序S1 S2四、 過(guò)程的嵌套調(diào)用調(diào)用25 程序的遞歸過(guò)程(過(guò)程調(diào)用自身)26VB的程序模塊由一些過(guò)程組成,在過(guò)程中會(huì)使用到變量,包括在形參表中出現(xiàn)的變量以及不在形參數(shù)表中出現(xiàn)的變量。本節(jié)要討論的是不在形參表中出現(xiàn)的變量。變量的定義位置不同

15、,定義方式不同,允許被訪問(wèn)的范圍和作用時(shí)間也不相同。變量的作用域即指變量的有效范圍。變量的生存期即指變量的作用時(shí)間。4.6 變量的作用域與生存期274.6.1 變量的作用域 變量的作用域決定了應(yīng)用程序中哪些過(guò)程可以訪問(wèn)該變量。按變量的作用域不同,可以將變量分為:局部變量、窗體/模塊級(jí)變量和全局變量。 1局部變量 局部變量指在過(guò)程內(nèi)用Dim語(yǔ)句聲明的變量、未聲明而直接使用的變量、用Static聲明的變量。這種變量只能在本過(guò)程中使用,不能被其他過(guò)程訪問(wèn)。在其他過(guò)程中如果有同名的變量,也與本過(guò)程的變量無(wú)關(guān),即不同的過(guò)程中可以使用同名的變量。除了用Static聲明的變量外,局部變量在其所在的過(guò)程每次運(yùn)

16、行時(shí)都被初始化。282模塊級(jí)變量 模塊級(jí)變量指在窗體模塊或標(biāo)準(zhǔn)模塊的通用聲明段中用Dim語(yǔ)句或Private語(yǔ)句聲明的變量。模塊級(jí)變量的作用范圍為其定義位置所在的模塊,可以被本模塊中的所有過(guò)程訪問(wèn)。模塊級(jí)變量在其所在的模塊運(yùn)行時(shí)被初始化。例如:例如:在在“通用聲明通用聲明”段聲明如下變量段聲明如下變量Private s As StringDim a As Integer,b As Single3全局變量 全局變量指在模塊的通用聲明段中用Public語(yǔ)句聲明的變量,其作用范圍為應(yīng)用程序的所有過(guò)程。全局變量在應(yīng)用程序運(yùn)行時(shí)被初始化。29例如:例如:在標(biāo)準(zhǔn)模塊文件中進(jìn)行不同級(jí)的變量聲明在標(biāo)準(zhǔn)模塊文件

17、中進(jìn)行不同級(jí)的變量聲明Public pa As integer 全局變量全局變量Private Mb as string * 10窗體窗體/模塊級(jí)變量模塊級(jí)變量Sub F1()Dim Fa As integer局部變量局部變量 End SubSub F2()Dim Fb As Single局部變量局部變量End Sub30同時(shí)還要說(shuō),若在不同級(jí)聲明相同變量名,如: Public Temp As integer全局變量Sub Form_Click()Dim Temp As Integer局部變量Temp=10訪問(wèn)局部變量Form1.Temp=20訪問(wèn)全局變量必須加窗體名Print Form1.T

18、emp,Temp顯示20和10End Sub 31作用域 局部變量模塊級(jí)變量 全局變量 窗體模塊 標(biāo)準(zhǔn)模塊聲明方式 Dim、StaticDim、PrivatePublic聲明位置在過(guò)程中窗體模塊、標(biāo)準(zhǔn)模塊的通用聲明段窗體模塊、標(biāo)準(zhǔn)模塊的通用聲明段能否被本模塊中其他過(guò)程調(diào)用 否能能能否被本應(yīng)用程序中其他模塊調(diào)用 否否能,但要在變量名前加窗體名能變量的作用域及聲明、使用規(guī)則324.6.2 變量的生存期 當(dāng)一個(gè)過(guò)程被調(diào)用時(shí),系統(tǒng)將給該過(guò)程中的變量分配存儲(chǔ)單元,當(dāng)該過(guò)程執(zhí)行結(jié)束時(shí),是釋放還是保留變量的存儲(chǔ)單元,這就是變量的生存期問(wèn)題。 根據(jù)變量的生存期,可以將變量分為動(dòng)態(tài)變量和靜態(tài)變量。331動(dòng)態(tài)變量

19、 在應(yīng)用程序中的變量如果不使用Static語(yǔ)句進(jìn)行聲明,則屬于動(dòng)態(tài)變量。 對(duì)于過(guò)程級(jí)的動(dòng)態(tài)變量,在程序運(yùn)行到變量所在的過(guò)程時(shí),系統(tǒng)為變量分配存儲(chǔ)空間,并進(jìn)行變量的初始化工作;當(dāng)該過(guò)程結(jié)束時(shí),釋放變量所占用的存儲(chǔ)空間,其值不再存在。 模塊級(jí)動(dòng)態(tài)變量在運(yùn)行模塊時(shí)被初始化,在退出模塊時(shí)釋放其所占用的存儲(chǔ)空間。 全局級(jí)動(dòng)態(tài)變量在應(yīng)用程序執(zhí)行時(shí)分配存儲(chǔ)空間,在退出應(yīng)用程序時(shí)釋放存儲(chǔ)空間。 342靜態(tài)變量 如果一個(gè)變量用Static語(yǔ)句聲明,則該變量只被初始化一次,在應(yīng)用程序運(yùn)行期間保留其值,即在每次調(diào)用該變量所在的過(guò)程時(shí),該變量不會(huì)被重新初始化,而在退出變量所在的過(guò)程時(shí),不釋放該變量所占的存儲(chǔ)空間。聲明

20、靜態(tài)變量: Static As Static Function () As Static Sub 在Function過(guò)程、Sub過(guò)程的定義語(yǔ)句中使用Static修飾詞,表明該過(guò)程內(nèi)所有的局部變量均為靜態(tài)變量。35例:Static Sub SS1( ) For I = 1 To 10 S = S + I Next I Print SEnd SubPrivate Sub Command1_Click( ) Call SS1End Sub55110165555555取消Static36VB應(yīng)用程序由三種模塊組成,即窗體模塊(Form)、標(biāo)準(zhǔn)模塊(Module)和類模塊(Class)。這些模塊通常保存

21、在具有特定類型名的文件中,窗體模塊保存在以.frm為類型名的文件中;標(biāo)準(zhǔn)模塊保存在以.bas為類型名的文件中;類模塊保存在以.cls為類型名的文件中。5.5 代碼模塊37VB應(yīng)用程序的組成類模塊(.cls)文件標(biāo)準(zhǔn)模塊(.bas)文件事件過(guò)程窗口模塊(.frm)文件應(yīng)用程序工程文件Function過(guò)程Sub過(guò)程Function過(guò)程Sub過(guò)程385.5.1 窗體模塊 窗體模塊是大多數(shù)VB應(yīng)用程序的基礎(chǔ)。 窗體模塊可以包含處理事件的過(guò)程、通用過(guò)程以及變量、常量、類型和外部過(guò)程的窗體級(jí)聲明。若要在文本編輯器中觀察窗體模塊,則還會(huì)看到窗體及其控件的描述,包括它們的屬性設(shè)置值。窗體模塊還可以引用該應(yīng)用程

22、序內(nèi)的其他窗體或?qū)ο蟆?95.5.2 標(biāo)準(zhǔn)模塊 當(dāng)一個(gè)應(yīng)用程序含有多個(gè)窗體,且這些窗體都需要調(diào)用某一個(gè)通用過(guò)程時(shí),就需要建立一個(gè)標(biāo)準(zhǔn)模塊,在該標(biāo)準(zhǔn)模塊中建立通用過(guò)程。標(biāo)準(zhǔn)模塊可以包含變量、常量、外部過(guò)程和全局過(guò)程的全局(在整個(gè)應(yīng)用程序范圍內(nèi)有效的)聲明或模塊級(jí)聲明。缺省情況下,標(biāo)準(zhǔn)模塊中的代碼是公有的,任何窗體或模塊中的事件過(guò)程或通用過(guò)程都可以訪問(wèn)它。標(biāo)準(zhǔn)模塊不與任何窗體相關(guān)聯(lián)。在標(biāo)準(zhǔn)模塊中可以包含通用過(guò)程,但不能包含事件過(guò)程。 添加標(biāo)準(zhǔn)模塊的步驟: 1)從“工程”菜單中執(zhí)行“添加模塊”命令,打開(kāi)“添加模塊”對(duì)話框。 2)在“新建”選項(xiàng)卡中,雙擊“模塊”圖標(biāo)即可建立一個(gè)標(biāo)準(zhǔn)模塊Modulel,

23、打開(kāi)標(biāo)準(zhǔn)模塊代碼窗口。405.5.3 類模塊 在VB中類模塊是面向?qū)ο缶幊痰幕A(chǔ)。 可在類模塊中編寫(xiě)代碼建立新對(duì)象,這些新對(duì)象可以包含自定義的屬性和方法。實(shí)際上,窗體正是這樣一種類模塊,在其上可安放控件,可顯示窗體窗口。例題:例題:建立四個(gè)模塊,包括兩個(gè)窗體模塊(各創(chuàng)建兩個(gè)按鈕)和兩個(gè)標(biāo)準(zhǔn)模塊,在每個(gè)模塊中建立通用過(guò)程Proce。并在不同模塊中互相調(diào)用這個(gè)過(guò)程。415.5.4 過(guò)程的作用域 在窗體模塊中可以建立事件過(guò)程、通用過(guò)程,在標(biāo)準(zhǔn)模塊中只能建立通用過(guò)程。過(guò)程的建立位置不同,允許被訪問(wèn)的范圍也不同。VB中,可以將過(guò)程的作用域分為模塊級(jí)和全局級(jí)。 在Sub過(guò)程或Function過(guò)程前如果加P

24、rivate關(guān)鍵字,則這種過(guò)程只能被其所在的窗體模塊或標(biāo)準(zhǔn)模塊中的其他過(guò)程所調(diào)用,稱為模塊級(jí)過(guò)程。 在Sub過(guò)程或Function過(guò)程前如果加Public關(guān)鍵字,或者省略Public與Private關(guān)鍵字,這種過(guò)程可以被該應(yīng)用程序的所有窗體模塊或所有標(biāo)準(zhǔn)模塊中的過(guò)程所調(diào)用,稱為全局過(guò)程。 全局過(guò)程所處的位置不同,其調(diào)用方式也有所區(qū)別。在窗體模塊內(nèi)定義的全局過(guò)程,其他模塊中的過(guò)程要調(diào)用時(shí),必須在被調(diào)用過(guò)程名前加上其所在的窗體名;在標(biāo)準(zhǔn)模塊內(nèi)定義的全局過(guò)程,其他模塊中的過(guò)程可直接調(diào)用,但被調(diào)用過(guò)程名必須惟一,否則要加上其所在的標(biāo)準(zhǔn)模塊名。 42作用域 模塊級(jí) 全局級(jí) 窗體模塊 標(biāo)準(zhǔn)模塊 窗體模塊

25、標(biāo)準(zhǔn)模塊定義方式 過(guò)程名前加Private,例如: Private Sub Subl () 過(guò)程名前加Public,例如: Public Sub Sub2 (形參表) 能否被本模塊中其他過(guò)程調(diào)用 能能能能能否被本應(yīng)用程序中其他模塊調(diào)用 否否能,但必須在過(guò)程名前加窗體名,例如:Call Forml.Sub2 () 能,但過(guò)程名必須唯一,否則必須在過(guò)程名前加標(biāo)準(zhǔn)模塊名,例如:Call Modulel.Sub2() 過(guò)程的作用域及過(guò)程定義、調(diào)用規(guī)則43【例】編寫(xiě)Function過(guò)程求最大公約數(shù),并通過(guò)命令按鈕的單擊事件過(guò)程調(diào)用該函數(shù)過(guò)程。44Function hcf(m As Integer, n

26、As Integer) As Integer Dim r As Integer r = m Mod n Do While r 0 m = n n = r r = m Mod n Loop hcf = nEnd FunctionPrivate Sub Command1_Click() Dim m As Integer, n As Integer m = Val(Text1.Text): n = Val(Text2.Text) Label3.Caption = “的最大公約數(shù)是:” & Str(hcf(m, n)End Sub45【例】利用Function過(guò)程計(jì)算階乘,求組合數(shù)。設(shè)計(jì)界面如下圖。T

27、ext2OLE1控件控件Text1Text3Command1BackStyle: 0 - TransparentBorderStyle: 0 NoneSizeMode: 2 - AutoSize46 定義求階乘的函數(shù)FactFunction Fact(n As Integer) As Double Dim F As Double, i As Integer F = 1 For i = 1 To n F = F * i Next i Fact = FEnd FunctionPrivate Sub Command1_Click() =按鈕的事件過(guò)程按鈕的事件過(guò)程 Dim m As Integer,

28、 n As Integer, c As Double m = Val(Text1.Text) n = Val(Text2.Text) c = Fact(m) / (Fact(n) * (Fact(m - n) 調(diào)用調(diào)用Fact Text3.Text = Trim(Str(c)End Sub47【例】將求組合數(shù)一題改成用Sub過(guò)程實(shí)現(xiàn)Sub Fact(N As Integer, F As Long) Dim I As Integer F = 1 For I = 1 To N F = F * I Next IEnd Sub48Private Sub Command1_Click() Dim M A

29、s Integer, N As Integer Dim f1 As Long, f2 As Long, f3 As Long M = Val(Text1.Text) : N = Val(Text2.Text) Call Fact(M, f1):Call Fact(N, f2):Call Fact(M - N, f3) Text3.Text = Trim(Str(f1 / (f2 * f3)End Sub49【例】編寫(xiě)一個(gè)Sub過(guò)程,計(jì)算K個(gè)數(shù)的和,即1+2+K,并通過(guò)命令按鈕的單擊事件調(diào)用該過(guò)程計(jì)算S=1+(1+2)+(1+2+3)+ +(1+2+N)。 分析: 編寫(xiě)一個(gè)Sub過(guò)程計(jì)算1+2+

30、K, 設(shè)參數(shù)K、S,參數(shù)S用于返回該和值。 Sub A1(K As Integer, S As Integer) S = 0 For J = 1 To K S = S + J Next J End Sub50Private Sub Command1_Click() Dim N As Integer, S1 As Integer, I As Integer N = Val(Text1.Text) For I = 1 To N 調(diào)用過(guò)程A1求1+2+I,和值返回到S1中 Call A1(I, S1) Sum = Sum + S1 Next I Text2.Text = SumEnd Sub51【例

31、】編寫(xiě)一個(gè)計(jì)算乘冪的Function過(guò)程,用來(lái)計(jì)算x的y次冪,其中y0。單擊窗體時(shí)調(diào)用該過(guò)程打印51、52、53、54、55的值。 Function Power(x As Single, ByVal y As Integer) Dim result As Single result = 1 Do While y 0 result = result * x y = y - 1 Loop 52 Power = result End FunctionPrivate Sub Form_Click() Dim i As Integer For i = 1 To 5 Print Power(5, i) N

32、ext iEnd Sub思考: 如果取消過(guò)程Power中參數(shù)y前的關(guān)鍵字ByVal,則會(huì)出現(xiàn)什么情況?53例例:將輸入的十進(jìn)制整數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)后輸出。數(shù)將輸入的十進(jìn)制整數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)后輸出。數(shù)制的轉(zhuǎn)換通過(guò)子過(guò)程制的轉(zhuǎn)換通過(guò)子過(guò)程DectoBin實(shí)現(xiàn)。實(shí)現(xiàn)。對(duì)象屬性屬性值Form1Caption十進(jìn)制轉(zhuǎn)換為二進(jìn)制Label1Caption十進(jìn)制數(shù):Label2二進(jìn)制數(shù):Text1Text2Text空白Command1Caption轉(zhuǎn)換Command2Caption退出54Sub DectoBin(d As Integer, b As String) Dim r b = Do While d 0 r = d Mod 2 If r = 0 Then b = 0 & b Else b = 1 & b End If d = d 2 LoopEnd SubPri

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論