子程序與函數(shù)過程_第1頁(yè)
子程序與函數(shù)過程_第2頁(yè)
子程序與函數(shù)過程_第3頁(yè)
子程序與函數(shù)過程_第4頁(yè)
子程序與函數(shù)過程_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

子程序與函數(shù)過程第1頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月過程概述在VB5.0/6.0中,除了系統(tǒng)提供的內(nèi)部函數(shù)過程和事件過程外,用戶可自定義過程下列四種過程:▲“Sub”保留字開始的為子過程▲“Function”保留字開始的為函數(shù)過程“Property”保留字開始的為屬性過程“Event”保留字開始的事件過程第2頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.1子函數(shù)過程(sub過程)在VB中,的Sub子過程分為:事件過程和通用過程

9.1.1事件過程

(1)窗體事件的語(yǔ)法PrivateSubForm_事件名(參數(shù)列表)

<語(yǔ)句組>EndSub

(2)控件事件的語(yǔ)法PrivateSub控件名_事件名(參數(shù)列表)

<語(yǔ)句組>

EndSub第3頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.1子函數(shù)過程(sub過程)9.1.2通用過程(Sub過程)的定義子過程的定義形式如下:[Public|Private][Static]Sub子過程名([形參表])<局部變量或常數(shù)定義>

<語(yǔ)句組>

[ExitSub]

<語(yǔ)句組>EndSub

說明:(1)子過程名:命名規(guī)則與變量名規(guī)則相同。子過程名不返回值,而是通過形參與實(shí)參的傳遞得到結(jié)果,調(diào)用時(shí)可返回多個(gè)值。第4頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月(2)形式參數(shù)列表:形式參數(shù)通常簡(jiǎn)稱“形參”,僅表示形參的類型、個(gè)數(shù)、位置,定義時(shí)是無值的,只有在過程被調(diào)用時(shí),虛實(shí)參結(jié)合后才獲得相應(yīng)的值。(3)過程可以無形式參數(shù),但括號(hào)不能省。(4)參數(shù)的定義形式:[ByVal|ByRef]變量名[()][As類型][,…],ByVal表示當(dāng)該過程被調(diào)用時(shí),參數(shù)是按值傳遞的;缺省或ByRef表示當(dāng)該過程被調(diào)用時(shí),參數(shù)是按地址傳遞的。9.1子函數(shù)過程(sub過程)第5頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.1子函數(shù)過程(sub過程)例編一個(gè)交換兩個(gè)整型變量值的子過程。PrivateSubSwap(XAsInteger,YAsInteger)

DimtempAsInteger

Temp=X:X=Y:Y=TempEndSubPrivateSubcommand1_click()

Dima%,b%a=val(inputbox(“a=“))b=val(inputbox(“b=“))

print“a=“;a,”b=“,bcallswap(a,b)

print“a=“;a,”b=“,bEndSub第6頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.1子函數(shù)過程(sub過程)9.1.3子過程的建立

通過“工具”菜單中的“添加過程”命令,出現(xiàn)“添加過程”對(duì)話框(見圖6.1),選擇過程類型(子過程、函數(shù)、屬性、事件)及作用范圍(公有的Public、私有的Private),單擊確定后得到一個(gè)過程或函數(shù)定義的結(jié)構(gòu)框架(模板),如:PublicSubSort()

……EndSub第7頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.1子函數(shù)過程(sub過程)9.1.4過程的調(diào)用

1子過程的調(diào)用

子過程名[參數(shù)列表]或 Call子過程名(參數(shù)列表)說明:(1)參數(shù)列表稱為實(shí)參或?qū)嵲?,它必須與形參保持個(gè)數(shù)相同,位置與類型一一對(duì)應(yīng)。(2)調(diào)用時(shí)把實(shí)參值傳遞給對(duì)應(yīng)的形參。其中值傳遞(形參前有ByVal說明)時(shí)實(shí)參的值不隨形參的值變化而改變。而地址傳遞時(shí)實(shí)參的值隨形參值的改變而改變。第8頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月(3)當(dāng)參數(shù)是數(shù)組時(shí),形參與實(shí)參在參數(shù)聲明時(shí)應(yīng)省略其維數(shù),但括號(hào)不能省。(4)調(diào)用子過程的形式有兩種,用Call關(guān)鍵字時(shí),實(shí)參必須加圓括號(hào)括起。例:調(diào)用上面定義的Swap子過程的形式:

Swapa,b(省略關(guān)鍵字call和括號(hào))

CallSwap(a,b)9.1子函數(shù)過程(sub過程)第9頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月過程調(diào)用的執(zhí)行過程:PrivateSubCmdOK()……CallSwap(a,b)……Swapa,bEndSubPrivateSubSwap(x%,y%)

Dimtemp%Temp=XX=YY=TempEndSub第10頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月實(shí)例9.3

窗體中有1個(gè)圖片框和3個(gè)命令按鈕(控件數(shù)組),如圖。程序運(yùn)行時(shí),單擊命令按鈕,在圖片框中畫出指定數(shù)目的同心圓。第11頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.2函數(shù)過程(Function過程)

VisualBasic函數(shù)分為內(nèi)部函數(shù)(sin(),sqr()等)和外部函數(shù),外部函數(shù)是用戶根據(jù)需要用Function關(guān)鍵字定義的函數(shù)過程,與子過程不同的是函數(shù)過程將返回一個(gè)值。

9.2.1函數(shù)過程(Function過程)的定義[Public|Private][Static]Function函數(shù)名([<參數(shù)列表>])[As<類型>]

<局部變量或常數(shù)定義><語(yǔ)句塊>

[函數(shù)名=返回值][ExitFunction]<語(yǔ)句塊>

函數(shù)名=返回值

EndFunction函數(shù)體第12頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.2函數(shù)過程(Function過程)說明:(1)函數(shù)名:命名規(guī)則與變量名規(guī)則相同。(2)在函數(shù)體內(nèi),函數(shù)名可以當(dāng)變量使用,函數(shù)的返回值就是通過對(duì)函數(shù)名的賦值語(yǔ)句來實(shí)現(xiàn)的,在函數(shù)過程中至少要對(duì)函數(shù)名賦值一次。(3)AS類型:是指函數(shù)返回值的類型,若省略,則函數(shù)返回變體類型值(Variant)。

(4)ExitFunction:表示退出函數(shù)過程,常常是與選擇結(jié)構(gòu)(If或SelectCase語(yǔ)句)聯(lián)用,即當(dāng)滿足一定條件時(shí),退出函數(shù)過程。(5)形參數(shù)列表:形參的定義與子過程完全相同。第13頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月實(shí)例9.5

定義一個(gè)函數(shù)過程,用來計(jì)算1~n的和。

PrivateFunctionsum(nAsInteger)AsLongfori=1tons=s+inextisum=sEndFunction第14頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月

調(diào)用函數(shù)過程可以由函數(shù)名帶回一個(gè)值給調(diào)用程序,被調(diào)用的函數(shù)必須作為表達(dá)式或表達(dá)式中的一部分,再與其它的語(yǔ)法成分一起配合使用。因此,與子過程的調(diào)用方式不同,函數(shù)不能作為單獨(dú)的語(yǔ)句加以調(diào)用。 最簡(jiǎn)單的情況就是在賦值語(yǔ)句中調(diào)用函數(shù)過程,其形式為: 變量名=函數(shù)過程名(實(shí)參列表)9.2函數(shù)過程(Function過程)9.2.2函數(shù)的調(diào)用第15頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月實(shí)例9.6

通過函數(shù)過程實(shí)現(xiàn)實(shí)例9.4的功能。第16頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.3參數(shù)傳遞 在調(diào)用過程時(shí),一般主調(diào)過程與被調(diào)過程之間有數(shù)據(jù)傳遞,即將主調(diào)過程的實(shí)參傳遞給被調(diào)過程的形參,完成實(shí)參與形參的結(jié)合,然后執(zhí)行被調(diào)過程體。在VB中,實(shí)參與形參的結(jié)合有兩種方法:傳址和傳值。傳址是默認(rèn)的方法。兩種結(jié)合方法的區(qū)分標(biāo)志是“ByVal”,形參前加“ByVal”關(guān)鍵字時(shí)是傳值,否則為傳址。第17頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.3.1傳值 傳值的參數(shù)傳遞過程是:當(dāng)調(diào)用一個(gè)過程時(shí),系統(tǒng)將實(shí)參的值復(fù)制給形參,之后實(shí)參與形參便斷開了聯(lián)系。被調(diào)過程對(duì)形參的操作是在形參自己的存儲(chǔ)單元中進(jìn)行,當(dāng)過程調(diào)用結(jié)束時(shí),這些形參所占用的存儲(chǔ)單元也同時(shí)被釋放。因此在過程中對(duì)形參的任何操作都不會(huì)影響到實(shí)參。第18頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.3.2傳址傳址的參數(shù)傳遞過程是:當(dāng)調(diào)用一個(gè)過程時(shí),它將實(shí)參的地址傳遞給形參。因此在被調(diào)過程體中對(duì)形參的任何操作都變成了對(duì)相應(yīng)實(shí)參的操作,因此實(shí)參的值就會(huì)隨形參的改變而改變。當(dāng)參數(shù)是字符串或數(shù)組時(shí),使用傳址傳遞直接將實(shí)參的地址傳遞給過程,會(huì)使程序的效率提高。第19頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.3.3數(shù)組參數(shù)的傳遞數(shù)組可以作為過程的參數(shù)。過程定義時(shí),形參列表中的數(shù)組用數(shù)組名后的一對(duì)空的圓括號(hào)表示。在過程調(diào)用時(shí),實(shí)際參數(shù)表中的數(shù)組可以只用數(shù)組名表示,省略圓括號(hào)。當(dāng)用數(shù)組作為過程的參數(shù)時(shí),進(jìn)行的不是“值”的傳遞,而是“址”的傳遞。第20頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域前面我們介紹了VB應(yīng)用程序(通常稱為工程)的組織結(jié)構(gòu),它由窗體模塊、標(biāo)準(zhǔn)模塊和類模塊組成。VB程序代碼就保存在窗體模塊文件(*.Frm)、標(biāo)準(zhǔn)模塊文件(*.Bas)或類模塊文件(*.Cls)中。它們形成了工程的一種模塊層次結(jié)構(gòu),如下圖所示。第21頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域9.4.1窗體模塊(文件擴(kuò)展名為

.FRM)

窗體模塊。窗體模塊可以包含處理事件的過程、通用過程以及變量、常數(shù)、類型和外部過程的窗體級(jí)聲明。如果要在文本編輯器中觀察窗體模塊,則還會(huì)看到窗體及其控件的描述,包括它們的屬性設(shè)置值。寫入窗體模塊的代碼是該窗體所屬的具體應(yīng)用程序?qū)S玫模凰部梢砸迷搼?yīng)用程序內(nèi)的其它窗體或?qū)ο?。?2頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4.2標(biāo)準(zhǔn)模塊

(文件擴(kuò)展名為.BAS)它們可以包含變量、常數(shù)、類型、外部過程和全局過程的全局(在整個(gè)應(yīng)用程序范圍內(nèi)有效的)聲明或模塊級(jí)聲明。寫入標(biāo)準(zhǔn)模塊的代碼不必綁在特定的應(yīng)用程序上,則在許多不同的應(yīng)用程序中可以重用標(biāo)準(zhǔn)模塊。9.4過程與變量的作用域第23頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域9.4.3類模塊(文件擴(kuò)展名為

.CLS)在

VisualBasic中類模塊是面向?qū)ο缶幊痰幕A(chǔ)??稍陬惸K中編寫代碼建立新對(duì)象。這些新對(duì)象可以包含自定義的屬性和方法。實(shí)際上,窗體正是這樣一種類模塊,在其上可安放控件,可顯示窗體窗口。第24頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域概念[Public|Private]Sub子過程名([形式參數(shù)列表])…..EndSub通用子過程和函數(shù)過程既可寫在窗體模塊中也可寫在標(biāo)準(zhǔn)模塊中,在定義時(shí)可選用關(guān)鍵字Private(局部)和Public(全局),來決定它們能被調(diào)用的范圍。第25頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域按過程的作用范圍來劃分,過程可分為:

模塊級(jí)過程

全局級(jí)過程1、窗體/模塊級(jí)過程:

加Private關(guān)鍵字的過程,只能被定義的窗體或模塊中的過程調(diào)用。2、全局級(jí)過程:

加Public關(guān)鍵字(或缺省)的過程,可供該應(yīng)用程序的所有窗體和所有標(biāo)準(zhǔn)模塊中的過程調(diào)用。第26頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域總結(jié)歸納過程的定義及作用域如下表第27頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域概述:在VB中,由于可以在過程中和模塊中聲明變量,根據(jù)定義變量的位置和定義變量的語(yǔ)句不同,變量可以分為:局部變量(過程級(jí)變量)窗體/模塊級(jí)變量(私有的模塊級(jí)變量,能被本模塊的所有過程和函數(shù)使用)全局級(jí)變量(公有的模塊級(jí)變量)。第28頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域9.4.4過程級(jí)變量——局部變量局部變量:在過程內(nèi)用聲明的變量,只能在本過程中使用。在過程內(nèi)部使用Dim或者Static關(guān)鍵字來聲明的變量,只在聲明它們的過程中才能被訪問或改變?cè)撟兞康闹?,別的過程不可訪問。所以可以在不同的過程中聲明相同名字的局部變量而互不影響。第29頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域例:PrivateSubForm_Load()Dimn%n=10EndSubPrivateSubFrom_Click()Dimn%Print“n=“;nEndSub程序運(yùn)行后單擊窗體,其輸出結(jié)果是什么?第30頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域9.4.5窗體/模塊級(jí)變量

窗體/模塊級(jí)變量:在“通用聲明”段中用Dim語(yǔ)句或用Private語(yǔ)句聲明的變量,可被本窗體/模塊的任何過程訪問。但其他模塊卻不能訪問該變量。例如:在“通用聲明”段聲明如下變量:PrivatesAsStringDimaAsInteger例:Dimn%PrivateSubForm_Load()n=10EndSubPrivateSubFrom_Click()Print“n=“;nEndSub第31頁(yè),課件共35頁(yè),創(chuàng)作于2023年2月9.4過程與變量的作用域9.4.6全局變量

全局變量也稱公有的模塊級(jí)變量,在窗體模塊或標(biāo)準(zhǔn)模塊的頂部的“通用”聲明段用Public關(guān)鍵字聲明,它的作用范圍是整個(gè)應(yīng)用程序,即可被本應(yīng)用程序的任何過程或

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論