【正文】
定 過(guò)程中參數(shù)的作用是實(shí)現(xiàn)過(guò)程與調(diào)用者的數(shù)據(jù)通信。 例 編一函數(shù) tim,求任意一維數(shù)組中各元素之積。 ? 被調(diào)過(guò)程可通過(guò) Lbound和 Ubound函數(shù)確定實(shí)參數(shù)組的下、上界。 b End Sub Sub Swap2(x%, y%) t% = x: x = y: y = t End Sub a 的地址 1 0 1 0 1 0aa x x形參實(shí)參B y V al 傳值 傳地址2. 數(shù)組參數(shù)的傳遞 當(dāng)參數(shù)是數(shù)組通過(guò)傳址方式進(jìn)行傳遞。傳地址 Print A2=。 a, B1=。 例 兩個(gè)變量的交換 Sub Swap1(ByVal x%, ByVal y%) t% = x: x = y: y = t End Sub Private Sub Command1_Click() a% = 10: b% = 20: Swap1 a, b 39。 1. 傳址與傳值 傳址: 形參得到的是實(shí)參的 地址 ,當(dāng)形參值的改變同時(shí) 也改變實(shí)參的值 。 f1, f2 = 。 例 分別編一計(jì)算某級(jí)數(shù)部分和的子過(guò)程和函數(shù)過(guò)程,并調(diào)用。 函數(shù)過(guò)程不能作為單獨(dú)的語(yǔ)句加以調(diào)用,必須參與表達(dá)式運(yùn)算。a,, b=。 編寫(xiě)一個(gè)兩個(gè)數(shù)交換的過(guò)程供多次調(diào)用。替換后的字符串賦值給函數(shù)過(guò)程名 End Function 假定 S為 “ abcdefgabcdecd”,Oolds為 “ cd”,News為 3 (“abcdefgabcdecd”,“cd”,“3”) 第 1 次 I=3 結(jié)果 “ ab3efgabcdecd” (“ab3efgabcdecd”,“cd”,“3”) 第 2 次 I=9 結(jié)果 “ ab3efgab3ecd” (“ab3efgab3ecd”,“cd”,“3”) 第 3 次 I=11 結(jié)果 ab3efgab3e3 函數(shù)過(guò)程的調(diào)用同標(biāo)準(zhǔn)函數(shù)調(diào)用,參與表達(dá)式運(yùn)算,形式如下: 函數(shù)過(guò)程名 ([參數(shù)列表 ]) 參數(shù)列表:稱為實(shí)參或?qū)嵲?,它必須與形參個(gè)數(shù)相同,位置與類型一一對(duì)應(yīng) 可以是同類型的常量、變量、表達(dá)式 執(zhí)行流程 : Private Sub Command1_Click() Text1 = MyReplace(Text1, cd, 3) ST= (“Visual Basic 程序設(shè)計(jì)教程 ” Print MyReplace(ST, , ) End Sub Function MyReplace$(s$, OldS$, NewS$) Dim i%, lenOldS% lenOldS = Len(OldS) i = InStr(s, OldS) Do While i 0 s= Left(s, i 1) + NewS + Mid(s, i + lenOldS) i = InStr(s, OldS) Loop MyReplace = s End Function T e xt 1 = My R e p l a c e ( T e xt 1, c d , 3) P u bl i c F un c t i on M y R e p l a c e ( S $, O l d S $, N e w S $) A s S t r i ng二、子過(guò)程 函數(shù)過(guò)程的不足: ( 1)不是為了獲得某個(gè)函數(shù)值,而是為了某種功能的處理,如例 。找到用 NewS 字符子串替換 OldS字符子串 s = Left(s, i 1) + NewS + Mid(s, i + lenOldS) i = InStr(s, OldS) 39。取 OldS字符子串長(zhǎng)度 i = InStr(s, OldS) 39。 計(jì)算 三角形面積的公式如下: abcdefgS1S2S3)(21))()(( zyxczcycxcca r e a ???????x y z 定義函數(shù)過(guò)程 Public Function area(x!, y!, z!) As Single Dim c! c = 1 / 2 * (x + y + z) area = Sqr(c * (c x) * (c y) * (c z)) End Function 調(diào)用函數(shù)過(guò)程 : Sub mand1_click() …… 輸入若干個(gè)三角形邊長(zhǎng) S=area(a,b,c)+area(c,d,e)+area(e,f,g) Print s End Sub 2.函數(shù)過(guò)程的定義 自定義函數(shù)過(guò)程有兩種方法: (1)利用“工具”菜單下的“添加過(guò)程”命令定義 ,生成一個(gè)函數(shù)的框架 (2)利用代碼窗口直接定義 函數(shù)過(guò)程形式 : Function 函數(shù)過(guò)程名 ([參數(shù)列表 ]) [As 類型 ] 局部變量或常數(shù)定義 語(yǔ)句塊 函數(shù)名 = 返回值 函數(shù)過(guò)程體