【正文】
本章小結(jié) 。 過(guò)程和變量都有作用域限制 , 同名過(guò)程或變量在調(diào)用時(shí)有優(yōu)先級(jí)的差異 , 變量還有生存期的問(wèn)題 。 過(guò)程調(diào)用時(shí)的參數(shù)有兩種傳遞方式:值傳遞和引用傳遞 。 過(guò)程有兩種基本的形式:子過(guò)程與函數(shù) , 這兩種形式?jīng)]有本質(zhì)的區(qū)別 。將密文與密碼進(jìn)行異或運(yùn)算,實(shí)現(xiàn)對(duì)密文的解密 Print 解密后的明文 :, a End Sub 【 例 618】 將任意進(jìn)制正整數(shù)形式的字符串轉(zhuǎn)換為數(shù)值 (十進(jìn)制 ),實(shí)現(xiàn)函數(shù)如下: Function str2n(ByVal a As String, Optional ByVal b As Long) As Long Dim i As Long Dim num As Long Dim c As String * 1 For i = 1 To Len(a) c = mid(a, i, 1) c = UCase(c) If c = 0 And c = 9 Then num = num * b + Val(c) 39。 a a = code(a, b) 39。 常用算法舉例 【 例 617】 異或操作可以實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)加密和解密,加密解密使用相同的密碼和程序。 ( 3)如果 c= 0,則令 gcd= b并終止;否則令 a= b, b= c并轉(zhuǎn)向步驟( 2)。步驟如下: ( 1)如果 a b,則交換 a和 b。下面給出一些常用算法的應(yīng)用實(shí)例 。 Eat(Num) End Sub Private Function Eat(N As Integer) 39。 Public Function FN(n As Integer) As Integer if n=1 Then FN=1 Else FN=n*FN(n1) End if End Function 可見(jiàn)遞歸是一個(gè)不斷自己調(diào)用自己的過(guò)程 遞歸 【 例 613】 一只猴子一天從山上摘來(lái)一袋桃子 , 從這天開(kāi)始 , 它每天都要把袋中的桃子平分為二堆 , 吃掉其中的一堆 , 然后再?gòu)氖O碌奶抑心贸鲆粋€(gè)解讒 , 等到第 10天 , 它發(fā)現(xiàn)袋中只有一只桃可吃 , 問(wèn)猴子總共摘了多少桃 。 過(guò)程如果直接或間接地調(diào)用了自身,這就是遞歸過(guò)程。調(diào)用其他窗體模塊或其他標(biāo)準(zhǔn)模塊定義的過(guò)程,使用 “ 模塊名 .過(guò)程名 ” 的格式。 如果沒(méi)有加關(guān)鍵字 Private或加了關(guān)鍵字 Public,則該過(guò)程為公共過(guò)程, 在整個(gè)工程內(nèi)有效,其他模塊內(nèi)的過(guò)程可以調(diào)用該過(guò)程。 Option Explicit Function f(a, ParamArray b()) f = a + b(0) + b(1) End Function Sub Form_Click() Print f(1, 2, 3) End Sub 注意:在用可變個(gè)數(shù)參數(shù)時(shí) , 實(shí)參個(gè)數(shù)不能少于使用的形參個(gè)數(shù) 。ParamArray 關(guān)鍵字不能與 ByVal或 ByRef一起使用 , 也不能在參數(shù)列表中出現(xiàn) Optional。 子過(guò)程與函數(shù)的參數(shù)傳遞 【 例 67】 下列程序運(yùn)行后 , 單擊窗體時(shí)顯示 “ 9”、 “ 8”、 “ 7”。 作為形式參數(shù)的數(shù)組應(yīng)為可變數(shù)組 , 用數(shù)組名跟空的圓括號(hào)表示 。 數(shù)組可以作為實(shí)際參數(shù)傳遞到過(guò)程中 。命名參數(shù)出現(xiàn)的位置可以與定義時(shí)的順序無(wú)關(guān) ??蛇x參數(shù)可以指定默認(rèn)的缺省值 。 在形式參數(shù)前加上關(guān)鍵字 Optional可以指定該形式參數(shù)為可選參數(shù) 。 a s (b) Print b=。 子過(guò)程與函數(shù)的參數(shù)傳遞 【 例 64】 下列程序運(yùn)行后 , 每次單擊窗體就會(huì)顯示 “ a=3”, “ b=8”。 子過(guò)程與函數(shù)的參數(shù)傳遞 按地址傳遞參數(shù) : 在形式參數(shù)前加上關(guān)鍵字 ByRef表示指定按地址傳遞參數(shù)。 按值傳遞參數(shù) :在形式參數(shù)前加上關(guān)鍵字 ByVal表示指定按值傳遞參數(shù)。 b amp。 z ? End sub ? Private sub Form_Click() ? dim a as integer, b as integer, c as integer ? a=3: b=2: c=1 ? add a, b, c ‘或者寫(xiě)成 Call add(a,b,c) ? print “外部過(guò)程中 ” amp。 x amp。返回函數(shù)值 end if end function 參數(shù)傳遞 形參與實(shí)參 ? 形參:置于過(guò)程定義時(shí),參數(shù)列表中的變量或數(shù)組;在過(guò)程被調(diào)用前,系統(tǒng)不對(duì)其分配空間; ? 實(shí)參:當(dāng)程序中想調(diào)用某過(guò)程時(shí),所提供的實(shí)際值; ? 當(dāng)實(shí)參和形參結(jié)合的時(shí)候,形參才被分配空間,接收由實(shí)參傳遞過(guò)來(lái)的值; ? 形參、