vb程序設計教程第三版第5章課件_第1頁
vb程序設計教程第三版第5章課件_第2頁
vb程序設計教程第三版第5章課件_第3頁
vb程序設計教程第三版第5章課件_第4頁
vb程序設計教程第三版第5章課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章過程將程序分割成較小的邏輯部件就可以簡化程序設計任務,稱這些部件為過程。VB中有兩類過程,一類是內部過程,另一類是外部過程,每一類過程又可分為函數(shù)過程和事件過程。內部過程是由系統(tǒng)提供的、不需要用戶編寫、可直接用過程名調用的程序段。外部過程是由用戶根據自己的需要定義和編寫的、可供事件過程多次調用的程序段。過程的使用,一方面將大的程序分成離散的邏輯單元,方便程序的調試;另一方面,方便了其他的程序或過程的調用。.在VB中,的Sub子過程分為:事件過程和通用過程

5.1.1事件過程

(1)窗體事件的語法PrivateSubForm_事件名(參數(shù)列表) <語句組>EndSub(2)控件事件的語法PrivateSub控件名_事件名(參數(shù)列表) <語句組>EndSub5.1Sub過程.子過程的定義形式如下:[Public|Private][Static]Sub子過程名([形參表])<局部變量或常數(shù)定義><語句組>[ExitSub]<語句組>EndSub

5.1.2通用過程(Sub過程)的定義說明:(1)子過程名:命名規(guī)則與變量名規(guī)則相同。子過程名不返回值,而是通過形參與實參的傳遞得到結果,調用時可返回多個值。.例:編一個交換兩個整型變量值的子過程。PrivateSubSwap(XAsInteger,YAsInteger)DimtempAsIntegerTemp=X:X=Y:Y=TempEndSub(2)形式參數(shù)列表:形式參數(shù)通常簡稱“形參”,僅表示形參的類型、個數(shù)、位置,定義時是無值的,只有在過程被調用時,虛實參結合后才獲得相應的值。(3)過程可以無形式參數(shù),但括號不能省。(4)參數(shù)的定義形式:[ByVal|ByRef]變量名[()][As類型][,…],ByVal表示當該過程被調用時,參數(shù)是按值傳遞的;缺省或ByRef表示當該過程被調用時,參數(shù)是按地址傳遞的。.5.1.3子過程的建立通過“工具”菜單中的“添加過程”命令,出現(xiàn)“添加過程”對話框(見圖),選擇過程類型(子過程、函數(shù)、屬性、事件)及作用范圍(公有的Public、私有的Private),單擊確定后得到一個過程或函數(shù)定義的結構框架(模板),如:PublicSubSort()……EndSub.5.1.4過程的調用

1子過程的調用子過程名[參數(shù)列表]或Call子過程名(參數(shù)列表)說明:(1)參數(shù)列表稱為實參或實元,它必須與形參保持個數(shù)相同,位置與類型一一對應。(2)調用時把實參值傳遞給對應的形參。其中值傳遞(形參前有ByVal說明)時實參的值不隨形參的值變化而改變。而地址傳遞時實參的值隨形參值的改變而改變。.

例:調用上面定義的Sawp子過程的形式:Swapa,bCallSwap(a,b)(3)當參數(shù)是數(shù)組時,形參與實參在參數(shù)聲明時應省略其維數(shù),但括號不能省。(4)調用子過程的形式有兩種,用Call關鍵字時,實參必須加圓括號括起,反之則實參之間用“,”分隔。.PrivateSubCmdOK()……CallSwap(a,b)……Swapa,bEndSubPrivateSubSwap(x%,y%)Dimtemp%Temp=XX=YY=TempEndSub過程調用的執(zhí)行過程:.例:我們創(chuàng)建這樣一個應用程序,它包含一個按鈕,當用戶在窗體上單擊時,計算機的喇叭會發(fā)出3聲“嘟”的聲音;如果用戶在按鈕上單擊,喇叭響五下.我們定義一個控制計算機操作的過程,命名為BeepSound,喇叭的次數(shù)作為參數(shù)有調入者傳入,參數(shù)命名為n.過程BeepSound如下:SubBeepSound(nAsInterger)DimiAsInteger,jAsLongFori=1tonBeepForj=0to1000000NextNextEndSub

.我們可以用CallBeepSound(5)或BeepSound5調用BeepSound,所以我們可以在窗體Form1和按鈕Command1的Click事件過程中調用BeepSound過程(如下:)PrivateSubCommand1_click()CallBeepSound(5)EndSubPrivateSubForm_Click()BeepSound3EndSub

.我們可以通過此圖來了解這一操作:事件過程Command1_Click事件過程Form_Click通用過程BeepSound調用返回調用返回由上可知,子過程分為兩種:通用過程和事件過程.5.2Function過程VisualBasic函數(shù)分為內部函數(shù)和外部函數(shù),外部函數(shù)是用戶根據需要用Function關鍵字定義的函數(shù)過程,與子過程不同的是函數(shù)過程將返回一個值。5.2.1函數(shù)過程(Function過程)的定義[Public|Private][Static]Function函數(shù)名([<參數(shù)列表>])[As<類型>]<局部變量或常數(shù)定義><語句塊>[函數(shù)名=返回值][ExitFunction]<語句塊>[函數(shù)名=返回值]EndFunction函數(shù)體.說明:(1)函數(shù)名:命名規(guī)則與變量名規(guī)則相同。但不能與系統(tǒng)的內部函數(shù)或其它通用子過程同名,也不能與已定義的全局變量和本模塊中模塊級變量同名。(2)在函數(shù)體內,函數(shù)名可以當變量使用,函數(shù)的返回值就是通過對函數(shù)名的賦值語句來實現(xiàn)的,在函數(shù)過程中至少要對函數(shù)名賦值一次。(3)AS類型:是指函數(shù)返回值的類型,若省略,則函數(shù)返回變體類型值(Variant)。

(4)ExitFunction:表示退出函數(shù)過程,常常是與選擇結構(If或SelectCase語句)聯(lián)用,即當滿足一定條件時,退出函數(shù)過程。(5)形參數(shù)列表:形參的定義與子過程完全相同。.5.2.2函數(shù)的調用調用形式如下:變量=函數(shù)名(實參列表)說明:在調用時實參和形參的數(shù)據類型、順序、個數(shù)必須匹配。函數(shù)調用只能出現(xiàn)在表達式中,其功能是求得函數(shù)的返回值。.5.3過程之間參數(shù)的傳遞VisualBasic中不同模塊(過程)之間數(shù)據的傳遞有兩種方式:

通過過程調用實參與形參的結合實現(xiàn);使用全局變量來實現(xiàn)各過程中共享數(shù)據。5.3.1形式參數(shù)與實際參數(shù)1、形式參數(shù)是指在定義通用過程時,出現(xiàn)在Sub或Function語句中的變量名后面園括號內的數(shù),是用來接收傳送給子過程的數(shù)據,形參表中的各個變量之間用逗號分隔。.2、實際參數(shù)實際參數(shù)是指在調用Sub或Function過程時,寫入子過程名或函數(shù)名后括號內的參數(shù),其作用是將它們的數(shù)據(數(shù)值或地址)傳送給Sub或Function過程與其對應的形參變量。實參可由常量、表達式、有效的變量名、數(shù)組名(后加左、右括號,如A())組成,實參表中各參數(shù)用逗號分隔。5.3.2參數(shù)傳遞(虛實結合)參數(shù)傳遞指主調過程的實參(調用時已有確定值和內存地址的參數(shù))傳遞給被調過程的形參,參數(shù)的傳遞有兩種方式:按值傳遞、按地址傳遞。形參前加“ByVal”關鍵字的是按值傳遞,缺省或加“ByRef”關鍵字的為按地址傳遞。.傳址與傳值傳址:形參得到的是實參的地址,當形參值的改變同時也改變實參的值。傳值:形參得到的是實參的值,形參值的改變不會影響實參的值。SubSwap2(x%,y%)DimTemp%Temp=x:x=y:y=TempEndSubSubSwap1(ByValx%,ByValy%)DimTemp%Temp=x:x=y:y=TempEndSub例.PrivateSubCmdOK_Click()a%=10:b%=20:Swap1a,b‘傳值Print"A1=";a,"B1=";ba=10:b=20:Swap2a,b'傳地址Print"A2=";a,"B2=";bEndSub程序調用執(zhí)行過程:.值傳遞的執(zhí)行過程如下圖:通過地址傳遞數(shù)據的執(zhí)行過程.數(shù)據傳遞的幾點說明:1.參數(shù)的數(shù)據類型2.按值傳遞參數(shù) 形參是實參的一個副本3.按地址傳遞參數(shù) 形參實參公用內存單元4.子過程執(zhí)行一系列操作,函數(shù)過程返回一個值注意:如果實參是常量(系統(tǒng)常量、符號常量)或者表達式,則無論定義時使用值傳遞還是地址傳遞,都是按值傳遞將常量或者表達式的計算值傳遞給形參。.5.3.4數(shù)組作過程的參數(shù)VisualBasic允許把數(shù)組作為實參傳送到過程中。數(shù)組作參數(shù)是通過傳地址方式傳送。在傳送數(shù)組時,除遵守參數(shù)傳送的一般規(guī)則外,還應注意以下幾點:1.把一個數(shù)組的全部元素傳送給一個過程,應將數(shù)組名分別寫入形參列表中,并略去數(shù)組的上下界,但括號不能省略。 PrivateSubSort(a()Assingle) …… EndSub其中形參“a()”即為數(shù)組。.2.被調過程可通過Lbound和Ubound函數(shù)確定實參數(shù)組的上、下界。3.當用數(shù)組作形參時,對應的實參必須也是數(shù)組,且類型一致。4.實參和形參結合是按地址傳遞,即形參數(shù)組和實參數(shù)組共用一段內存單元。例:定義了實參數(shù)組b(1to8),給它們賦了值,調用Sort()函數(shù)過程的形式如下:Sortb()或CallSort(b())實參數(shù)組后面的括號可以省略,但為便于閱讀,建議一般不要省略為好。.調用時形參數(shù)組a和實參數(shù)組b虛實結合,共用一段內存單元,如下所示。因此在Sort()過程中改變數(shù)組a的各元素值,也就相當于改變了實參數(shù)組b中對應的元素的值,當調用結束時,形參數(shù)組a成為無定義。

b(1)b(2)b(3)b(4)b(5)b(6)b(7)b(8)a(1) a(2)a(3)a(4)a(5)a(6)a(7)a(8)參數(shù)為數(shù)組時虛實結合示意圖.例:編寫判斷一個整數(shù)是不是素數(shù)寫函數(shù)過程。如果給定的整數(shù)是素數(shù),則返回邏輯值True,否則返回False

PrivateFunctionPrime(nAsInteger)AsBooleanDimk%,YesAsBooleanYes=TrueFork=2ton\2IFnmodk=0thenYes=False:ExitForNextkPrime=Yes‘給函數(shù)名賦值,作為函的返回值EndFunction如何調用該函數(shù)呢?使用該函數(shù),編一驗證哥德巴赫猜想。.PrivateSubForm_Click()Dimn%,n1%,n2%n=Val(InputBox(“輸入大于6的偶數(shù)"))Forn1=3ton\2step2'讓n1從3開始分解n2=n-n1'求得n2

‘如果n1和n2都是素數(shù),則打印輸出Ifprime(n1)Andprime(n2)thenPrintn&"="&n1&"+"&n2ExitFor'結束循環(huán)EndifNextn1EndSub.Fori=1Ton-1p=iForj=i+1TonIfa(p)>a(j)Thenp=jNextjtemp=a(i)a(i)=a(p)a(p)=tempNexti選擇法排序(升序)的VB程序:如何寫一個排序的VB過程?例:排序子過程.PrivateSubSort(a()Assingle)Dimi%,j%,p%,n%,temp!n=Ubound(a)Fori=1Ton-1p=iForj=i+1TonIfa(p)>a(j)Thenp=jNextjtemp=a(i)a(i)=a(p)a(p)=tempNextIEndSub.5.4過程的嵌套和遞歸調用5.4.1過程的嵌套

在程序中調用一子過程,而

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論