vb子程序和函數(shù).ppt_第1頁
vb子程序和函數(shù).ppt_第2頁
vb子程序和函數(shù).ppt_第3頁
vb子程序和函數(shù).ppt_第4頁
vb子程序和函數(shù).ppt_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、在a、1、8章子程序和函數(shù)、8.1子程序的概要VB5.0/6.0中,除了系統(tǒng)提供的內(nèi)部函數(shù)進(jìn)程和事件進(jìn)程之外,用戶還可以使用, 可以自定義以下四個(gè)進(jìn)程: “Sub”保留字開始的子進(jìn)程“Function”保留字開始的函數(shù)進(jìn)程“Property”保留字開始的屬性進(jìn)程“Event”保留字開始的事件進(jìn)程,a、2、 事件過程和通用過程8.2.1事件過程(1)表單事件的語法Private Sub Form_事件名稱(參數(shù)列表) End Sub (2)控件事件的語法Private Sub End Sub,8.2 Sub過程3,子過程的定義形式為Public|PrivateStatic Sub子過程名稱(形式

2、參照表 ) Exit Sub End Sub,8.2.2 可以從表格參與獲得傳遞的結(jié)果,而不是返回值,并且在調(diào)用時(shí)返回多個(gè)值。a、4、(2)形式參數(shù)列表:形式參數(shù)通常簡(jiǎn)稱為“形式參數(shù)”,僅表示形式參數(shù)的類型、個(gè)數(shù)、位置,定義時(shí)沒有值,僅在調(diào)用過程的情況下,在結(jié)合虛實(shí)參數(shù)后得到相應(yīng)的值。 (3)流程沒有形式參數(shù),但括號(hào)不能省略。 (4)參數(shù)的定義格式: ByVal|ByRef變量名稱 () ,ByVal表示調(diào)用此過程時(shí)參數(shù)以值傳遞的默認(rèn)值或ByRef表示調(diào)用過程時(shí)參數(shù)為參數(shù)示例8 .創(chuàng)建一個(gè)交換一個(gè)整數(shù)變量值的子過程。 私有子交換(x as integer,yassainteger ) dimt

3、empasintegertemp=x : x=y : y=temp終端子,a,5, 8.2.3子過程的建立是在“工具”菜單的“添加過程”命令中顯示“添加進(jìn)程”對(duì)話框(參見圖6.1 ),其中顯示了進(jìn)程類型(子進(jìn)程、函數(shù)、屬性、事件)和范圍(公共、私有例如:公共子系統(tǒng)()結(jié)束子系統(tǒng),a, 6 8.2.4過程的調(diào)用1子過程的調(diào)用子過程名稱參數(shù)列表或Call子過程名稱(參數(shù)列表) 2功能過程的調(diào)用變量名稱=功能過程名稱(參數(shù)列表 ) (2)調(diào)用時(shí)將實(shí)際參數(shù)值傳遞給對(duì)應(yīng)的波形參數(shù)。 其中,當(dāng)值被傳遞時(shí)(波形參數(shù)前面有ByVal的說明),實(shí)際參數(shù)的值不會(huì)根據(jù)波形參數(shù)的值而變化。 地址傳遞時(shí)的實(shí)際參數(shù)值會(huì)根

4、據(jù)形狀參數(shù)值的變化而變化。a、7、(3)參數(shù)為數(shù)組時(shí),參數(shù)聲明時(shí)形式參加實(shí)體必須省略維,但括號(hào)不可省略。 (4)調(diào)用子過程的形式有兩種,使用Call關(guān)鍵字時(shí),用括號(hào)括住實(shí)際的參加,否則,用“、”分隔實(shí)際的參加。 示例:在上面定義的調(diào)用Sawp子過程的格式是Swap a,b調(diào)用Swap a,b )、a,8,專用子cmdok ()調(diào)用Swap a,b) Swap a,b結(jié)束子, private sub swap (x % ) y % ) dim temp=x x=y y=temp end sub,進(jìn)程調(diào)用的執(zhí)行進(jìn)程:a,9,8.3 Function進(jìn)程, Visual Basic函數(shù)分為內(nèi)部函數(shù)和

5、外部函數(shù),外部函數(shù)是用戶根據(jù)需要用Function關(guān)鍵字定義的函數(shù)過程,與子過程不同的是函數(shù)過程返回值。8.3.1函數(shù)過程(函數(shù)過程)的定義,public|privatestatic函數(shù)名稱()As函數(shù)體函數(shù)名稱=返回值 Exit Function 函數(shù)名稱=返回值結(jié)束函數(shù),a,a 但是,名稱不能與系統(tǒng)內(nèi)部函數(shù)或其他通用子過程相同,也不能與預(yù)定義的全局變量或本模塊的模塊級(jí)變量相同。 (2)函數(shù)中,函數(shù)名稱可以用作變量,函數(shù)的返回值是通過對(duì)函數(shù)名稱的代入語句來實(shí)現(xiàn)的,在函數(shù)的過程中至少代入一次函數(shù)名稱。(3)AS類型:指定函數(shù)的返回值的類型,省略后返回變型的值(Variant )。 (4)Exi

6、t Function :表示結(jié)束函數(shù)過程,并總是與選擇結(jié)構(gòu)(If或Select Case語句)結(jié)合,在滿足一定條件的情況下結(jié)束函數(shù)過程。 (5)波形參數(shù)列表:波形參數(shù)的定義和子程序完全相同。 例6.2,a,11,8.3.2函數(shù)的調(diào)用,調(diào)用形式為函數(shù)名(實(shí)際參數(shù)列表)說明:調(diào)用時(shí)實(shí)際參數(shù)和形狀參數(shù)的數(shù)據(jù)類型、順序、個(gè)數(shù)必須一致。 函數(shù)調(diào)用僅顯示在表達(dá)式中,具有計(jì)算函數(shù)返回值的功能。a,12,8.4進(jìn)程的范圍,Public|Private Sub子進(jìn)程名(形式參數(shù)列表) . End Sub,概念,通用子進(jìn)程和函數(shù)進(jìn)程可以寫入表格模塊,也可以寫入標(biāo)準(zhǔn)模塊,定義時(shí)按鍵、a、13、1、表單/模塊級(jí)進(jìn)程:

7、添加私有關(guān)鍵字的進(jìn)程僅由定義的表單或模塊中的進(jìn)程調(diào)用。 2 .全局級(jí)進(jìn)程:添加應(yīng)用程序的所有表單和所有標(biāo)準(zhǔn)模塊進(jìn)程調(diào)用的公共關(guān)鍵字(或默認(rèn))的進(jìn)程。 流程由、和流程的角色范圍劃分,模塊級(jí)流程的全局級(jí)流程在用例7.1中說明了流程的角色區(qū)域,并總結(jié)了a、14、摘要流程的定義和角色區(qū)域(教材Pg.163 )、a、15、 為了在Visual Basic中的不同模塊(進(jìn)程)之間傳輸數(shù)據(jù),每個(gè)進(jìn)程都使用全局變量來共享數(shù)據(jù),全局變量有兩種方式:通過進(jìn)程調(diào)用實(shí)現(xiàn)實(shí)際參與的合并。8.5.1形式參數(shù)和實(shí)際參數(shù)、1、形式參數(shù)是在定義公共過程時(shí)出現(xiàn)在Sub或Function語句中變量名稱后面的括號(hào)內(nèi)的數(shù)字,用來接收傳

8、遞給子過程的數(shù)據(jù),波形參數(shù)表中的每個(gè)變量都是坎、a,16,2,實(shí)際參數(shù)實(shí)際參數(shù)是在調(diào)用Sub或Function過程時(shí),起到向Sub或Function過程及其對(duì)應(yīng)的波形參數(shù)變量傳遞數(shù)據(jù)(數(shù)值或地址)的子實(shí)體引用可以由常數(shù)、表達(dá)式、有效變量名稱和數(shù)組名稱(a () )組成,實(shí)體引用表中的每個(gè)參數(shù)用逗號(hào)分隔。8.5.2參數(shù)的傳遞(虛實(shí)耦合)、參數(shù)的傳遞由主調(diào)過程的實(shí)參(調(diào)用時(shí)已經(jīng)確定了值和內(nèi)存地址的參數(shù))傳遞給被調(diào)過程的形參,參數(shù)的傳遞有兩種方式:值傳遞、地址傳遞。 形參前加“ByVal”關(guān)鍵字是通過值傳遞的,缺省或加“ByRef”關(guān)鍵字是通過地址傳遞的。a、17,地址和值的地址:波形參數(shù)得到實(shí)際參

9、數(shù)的地址,在波形參數(shù)的值變化的同時(shí),實(shí)際參數(shù)的值也變化。 傳遞值:波形參數(shù)得到實(shí)際參數(shù)的值,波形參數(shù)的值的變更不影響實(shí)際參數(shù)的值。 子掃描2 (x %,y % ) dim temp=x : x=y : y=temp結(jié)束子,子掃描1 (byval x % byvaly % ) dim temp=x : x=y : y=temp e privatesubcmdok _ click () a %=10: b %=2033 swap 1a,b 值printa1=; a, B1=; ba=10: b=2033 360交換2 a,b地址打印 a2=; a, B2= b end sub,程序調(diào)用的執(zhí)行過程:

10、a,19,值傳遞的執(zhí)行過程:地址傳遞數(shù)據(jù)的執(zhí)行過程,a,20, 數(shù)據(jù)傳輸?shù)娜舾烧f明:1.參數(shù)的數(shù)據(jù)類型2 .值傳輸參數(shù)形式參數(shù)是實(shí)際參數(shù)的副本3 .地址傳輸參數(shù)形式參數(shù)形式參數(shù)公用存儲(chǔ)器單元4 .在子程序中執(zhí)行一系列操作的函數(shù)過程,實(shí)數(shù)參數(shù)是對(duì)于或表達(dá)式,返回一個(gè)值,注意,即使在定義時(shí)使用值傳遞或地址傳遞,常數(shù)或表達(dá)式的計(jì)算值也會(huì)通過值傳遞傳遞給形狀參數(shù)。a、21、8.6高級(jí)用法(以數(shù)組為參數(shù)),Visual Basic可將數(shù)組作為實(shí)際參考傳遞給過程。 數(shù)組作為參數(shù)以地址傳輸方式傳輸。傳輸數(shù)組時(shí),除了遵守參數(shù)傳輸?shù)囊话阋?guī)則之外,1 .將數(shù)組的所有元素傳輸?shù)揭粋€(gè)進(jìn)程時(shí),請(qǐng)將數(shù)組名稱分別寫入到形式

11、參照列表中,省略數(shù)組的上下邊界,但不能省略括號(hào)。 privatesubsort (a () as single )在end sub中,表單參數(shù)“a ()”是數(shù)組。a,22,2 .被調(diào)用的進(jìn)程通過Lbound函數(shù)和Ubound函數(shù)可以決定實(shí)際參數(shù)數(shù)組的上下界。 3 .使用數(shù)組作為形狀參數(shù)時(shí),對(duì)應(yīng)的實(shí)際參數(shù)也必須是數(shù)組,并且類型必須匹配。 4 .實(shí)際參考與形式參考的結(jié)合按地址傳遞,形式參數(shù)組和實(shí)際參考陣列共享存儲(chǔ)器單元。 例如,如果定義了實(shí)際參數(shù)數(shù)組b(1 to 8 )并指派了值,則可以省略Sort b ()或Call Sort(b () )實(shí)際參數(shù)數(shù)組后面的括號(hào),但為了便于閱讀,可以省略調(diào)用So

12、rt ()函數(shù)過程的格式、a、23、調(diào)用時(shí)形參數(shù)群a和實(shí)際參數(shù)群b虛實(shí)地結(jié)合,共享存儲(chǔ)單元。 因此,在Sort ()的過程中改變數(shù)組a的各元素的值相當(dāng)于改變實(shí)際參數(shù)數(shù)組b的對(duì)應(yīng)元素的值,在調(diào)用結(jié)束后,波形參數(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 (5) a (6) a (7) a (8)參數(shù)在排列的情況下為虛實(shí)耦合圖像,例6.7前章例5.3的排序處理器、a,24,補(bǔ)充例題:寫出判斷整數(shù)是否為素?cái)?shù)的函數(shù)的過程。 如果給定的整數(shù)是素?cái)?shù),則返回邏輯值True,否則返回False,pri

13、vatefunctionprime (ncaseinteger ) asbooleandimk %,是as boolean yes=true for k=2to n 2如何將ifmo dk=0then yes=false : exitfornextkpprime=yes代入函數(shù)名稱,并作為函數(shù)的返回值End Function調(diào)用函數(shù)? 使用此函數(shù)驗(yàn)證哥德爾巴赫的預(yù)期。a,25,私有子form _ click () dim n %,n1%,n2% n=val (輸入大于 6的正整數(shù) ) forn1=3ton 第2步n2n1將n2=n-n1從3中分解,如果n2n1和n2都是素?cái)?shù),則打印輸出ifpr

14、ime(n1)和prime(n2)then打印n=n 1 n2exit for是循環(huán)End if Next n1 End Sub,a, 如果結(jié)束26,則fori=1ton-1p=ifj=i1 Toni fa (p ) a (j ) thenp=jnextjintemp=a (I ) a (I )=a (p ) a (p )=temp nexti,排序(升序)的VB程序的選擇: 補(bǔ)充例題2 :排序子進(jìn)程,a,27,私有subsort (a () as single ) dimi %,j%,p%,n%, temp n=ubound (a ) fori=1ton-1p=iforj=i1 Toni f

15、a (p ) a (j ) thenp=jnextjintemp=a (I ) a (I )=a (p ) a (p )=tempnextisendsub,a, 28.7過程的嵌套和遞歸調(diào)用、8.7.1過程的嵌套、過程中調(diào)用子過程、子過程中調(diào)用另一個(gè)子過程的程序結(jié)構(gòu)稱為過程的嵌套。 過程的嵌套調(diào)用執(zhí)行過程如下圖所示:a,29,8.7.2過程的遞歸調(diào)用用自己的結(jié)構(gòu)描述自己,稱為遞歸。 例如,階乘定義:在Visual Basic中,可以在Sub和Function過程定義中調(diào)用遞歸Sub和遞歸Function函數(shù)。 例8.8層乘fac(n)=n! 的遞歸函數(shù),a,30,專用函數(shù)(nasinteger ) ascintegerifn=1then fac=1else fac=n * fac (n-1 ) endifendfunctionprivatesubform _ fac(4) End Sub,程序遞歸過程:a,31,說明:遞歸處理一般是在堆棧中實(shí)現(xiàn)的,有遞歸推理和回歸兩個(gè)過程。 遞歸過程:每次調(diào)用自己時(shí),將當(dāng)前參數(shù)(形參、局部變量、返回地址等)推入堆棧,直到遞歸結(jié)束條件成立為止

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論