




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、主要介紹:v函數(shù)過(guò)程(Function)v子過(guò)程(SUB過(guò)程)v參數(shù)傳遞規(guī)則 v多模塊程序設(shè)計(jì)(變量作用域)第一章:事件驅(qū)動(dòng)、對(duì)象/控件三要素第二章:數(shù)據(jù)類型、變量、運(yùn)算及內(nèi)部函數(shù)第三章:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組Private sub Form_click() 給數(shù)組a賦隨機(jī)數(shù) 打印數(shù)組a 給數(shù)組b賦隨機(jī)數(shù) 打印數(shù)組b a、b兩數(shù)組相加結(jié)果放數(shù)組c 打印數(shù)組cEnd sub涉及三種操作/功能 給一個(gè)數(shù)組賦隨機(jī)值 打印一個(gè)數(shù)組1.兩個(gè)數(shù)組相加第一章:事件驅(qū)動(dòng)、對(duì)象/控件三要素第二章:數(shù)據(jù)類型、變量、運(yùn)算及內(nèi)部函數(shù)第三章:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組第四章:第四章:自定義自定義函數(shù)、子過(guò)程函數(shù)、子過(guò)程
2、兩個(gè)問(wèn)題:如何編寫編寫函數(shù)過(guò)程/子過(guò)程?如何在主程序里面調(diào)用調(diào)用它們?函數(shù)/子過(guò)程:具有某特定功能的子程序 VB VB系統(tǒng)函數(shù)系統(tǒng)函數(shù)( (標(biāo)準(zhǔn)函數(shù)或內(nèi)部函數(shù)標(biāo)準(zhǔn)函數(shù)或內(nèi)部函數(shù)) ):三角函數(shù)三角函數(shù)( (sin/cos/tansin/cos/tan) )、指數(shù)函數(shù)、指數(shù)函數(shù)( (expexp) )、對(duì)數(shù)函數(shù)、對(duì)數(shù)函數(shù)( (loglog) )平方根函數(shù)平方根函數(shù)( (sqrsqr) )、絕對(duì)值函數(shù)、絕對(duì)值函數(shù)( (ABSABS) )、符號(hào)函數(shù)、符號(hào)函數(shù)( (sgnsgn) )字串函數(shù)字串函數(shù)( (left,mid,right,trim,Ltrim,Rtrim,Len,spaceleft,mid
3、,right,trim,Ltrim,Rtrim,Len,space等等) )日期函數(shù)日期函數(shù)( (date,time,now,minute,second,hour,yeardate,time,now,minute,second,hour,year等等) )隨機(jī)函數(shù)隨機(jī)函數(shù)( (Rnd/RandomizeRnd/Randomize) )、printprint函數(shù)、函數(shù)、tabtab函數(shù)等等函數(shù)等等VB用戶自定義過(guò)程Function過(guò)程(返回函數(shù)值)Sub過(guò)程(不返回函數(shù)值)Function sumTwo(n as integer, m as integer) as long sumTwo = n
4、+mEnd function Function Function ( ( 形參列表形參列表 ) )AsAs 函數(shù)體函數(shù)體 函數(shù)名函數(shù)名= =返回值返回值 End FunctionEnd Function形參列表形參列表: : 形參形參1 as 1 as 數(shù)據(jù)類型,形參數(shù)據(jù)類型,形參2 as 2 as 數(shù)據(jù)類型數(shù)據(jù)類型,返回值類型若省略,則為變體類型(Variant)。Private sub Command1_click() dim a as integer, b as integer, s as long a=3:b=4:s = sumTwo(a,b) Print sEnd sub調(diào)用處調(diào)用處
5、函數(shù)的聲明過(guò)程被調(diào)用時(shí)參數(shù)傳遞實(shí)參實(shí)參 形參形參( (主程序主程序) ) ( (子程序子程序) )ByVal(按值:實(shí)參的值- 形參)ByRef(按地址:實(shí)參的內(nèi)存地址-形參使得兩者其實(shí)為同一內(nèi)存空間)2字節(jié)2字節(jié)2字節(jié)2字節(jié)2字節(jié)2字節(jié)abnmanbm主程序函數(shù)/子過(guò)程主程序函數(shù)/子過(guò)程按地址傳遞(ByRef)按值傳遞(ByVal)Private sub Command1_click() dim n as integer, s as long n = val(inputbox(“n=”) s s = sumup( = sumup(n n) ) Print “從1加到”;n; “的和為 ”;
6、sEnd subFunction sumup(x as integer) as long Dim i as integer For i=1 to x sumup =sumup+i next iEnd function調(diào)用處調(diào)用處函數(shù)的聲明把需要主程序/被調(diào)用處傳過(guò)來(lái)的變量放在形參列表如x, 其他用到的變量在函數(shù)里面定義如i(1)定義為Public或缺省的函數(shù)可以被工程中其它窗體中的過(guò)程調(diào)用窗體名.函數(shù)名(實(shí)參列表);定義為Private的函數(shù)只能被其所在窗體的過(guò)程調(diào)用 函數(shù)名(實(shí)參列表)。(2)在函數(shù)體內(nèi),函數(shù)名可以當(dāng)變量使用,函數(shù)的返回值通過(guò)對(duì)函數(shù)名的賦值語(yǔ)句來(lái)實(shí)現(xiàn)的。 (3) 函數(shù)名:命名
7、規(guī)則與變量名規(guī)則相同。不能與系統(tǒng)的內(nèi)部函數(shù)或其它通用子過(guò)程同名,也不能與已定義的全局變量和本模塊中模塊級(jí)變量同名。(4)形參列表:僅表示形參的類型、個(gè)數(shù)、位置,定義時(shí)無(wú)值,只有在過(guò)程被調(diào)用時(shí)才從實(shí)參獲得相應(yīng)的值。(5)Exit Function:表示退出函數(shù)過(guò)程。 函數(shù)過(guò)程調(diào)用說(shuō)明: 在調(diào)用時(shí)應(yīng)以實(shí)際的參數(shù)(即實(shí)參)替換函數(shù)括號(hào)內(nèi)的形參;實(shí)參和形參的數(shù)據(jù)類型、順序、個(gè)數(shù)必須匹配。函數(shù)調(diào)用只能出現(xiàn)在表達(dá)式中,其功能是求得函數(shù)的返回值。 要注意函數(shù)聲明的時(shí)候,函數(shù)名后的括號(hào)內(nèi)接的是形參聲明列表,且函數(shù)聲明有且只能一次,如同變量的聲明一樣;而調(diào)用函數(shù)時(shí)應(yīng)在函數(shù)名后的括號(hào)內(nèi)代入實(shí)參,可以多次調(diào)用,功能
8、僅是獲得函數(shù)的返回值。(1)過(guò)程可以無(wú)形式參數(shù),但括號(hào)必須有。(2)形參的聲明形式:ByValByRef變量名( )As 類型,,(3)過(guò)程被調(diào)用時(shí)參數(shù)傳遞 實(shí)參實(shí)參 形參形參(主程序調(diào)用)(主程序調(diào)用) (子程序接收)(子程序接收)ByVal表示按值傳遞:實(shí)參的內(nèi)容傳給形參,實(shí)參的值不隨形參的值變化而改變;缺省或ByRef表示按地址傳遞:實(shí)參和形參指向同一內(nèi)存空間,實(shí)參的值隨形參值的改變而改變。編程:編程:輸出序列輸出序列1 1,1 1,1 1,1 1,2 2,1 1,1 1前前5555項(xiàng)項(xiàng)輸出數(shù)列: 1, 1,1, 1,2,1, 1,3,3,1, 1,4,6,4 1, 1,5,10,10,
9、5,1, ., 的前55項(xiàng)。 數(shù)據(jù)數(shù)據(jù)(每行總數(shù)每行總數(shù))每行數(shù)據(jù)特點(diǎn)每行數(shù)據(jù)特點(diǎn)第第0行行1 (1)1=0!/0!/0!第第1行行1,1 (2)1=1!/0!/1! 1=1!/1!/0!第第2行行1,2,1 (3)1=2!/0!/2! 2=2!/1!/1! 1=2!/2!/0!第第3行行1,3,3,1 (4)1=3!/0!/3! 3=3!/1!/2! 3=3!/2!/1! 1=3!/3!/0!第第4行行1,4,6,4,1 (5)1=4!/0!/4! 4=4!/1!/3! 6=4!/2!/2! 4=4!/3!/1! 1=4!/4!/0!第第5行行1,5,10,10,5,1 (6)1=5!/0!
10、/5! 5=5!/1!/4! 10=5!/2!/3! 10=5!/3!/2! 5=5!/4!/1!1=5!/5!/0!第第i行行 (i) for j=0 to i xj=i!/j!/(i-j)!確定:自定義函數(shù)過(guò)程為求階乘Private Function fact(ByVal k As Byte) As Long Dim i as bytefact=1 For i = 2 To k fact = fact * i Next iEnd Function Private Sub Form_click()Dim x As Long, i as integer, j as integerFor i=
11、0 To 9 For j = 0 To i x = fact(i)/fact(j)/fact(i-j) Print Tab(j * 5 + 1); x; Next j PrintNext iEnd SubPrivate Sub Form_click()Dim zh As Long ,i as integer,j as integerFor i = 0 To 9 For j = 0 To i x = fact(i)/fact(j)/fact(i-j) Print Tab(j * 5 + 1); x; Next j PrintNext iEnd SubPrivate Function zh(m A
12、s Byte, n As Byte) As Long zh = fact(m) / fact(n) / fact(m - n)End FunctionX=zh(i,j)編程:編程:編寫一個(gè)函數(shù),求數(shù)組中全體元素的和編寫一個(gè)函數(shù),求數(shù)組中全體元素的和思路:思路:主程序中產(chǎn)生數(shù)組,子函數(shù)要返回?cái)?shù)組中主程序中產(chǎn)生數(shù)組,子函數(shù)要返回?cái)?shù)組中全體元素的和全體元素的和知識(shí)點(diǎn):知識(shí)點(diǎn):1 1、如何將數(shù)組傳遞給子函數(shù)(、如何將數(shù)組傳遞給子函數(shù)(數(shù)組名及數(shù)組長(zhǎng)度數(shù)組名及數(shù)組長(zhǎng)度)2 2、參數(shù)傳遞過(guò)程中的、參數(shù)傳遞過(guò)程中的類型必須一致類型必須一致3 3、函數(shù)、函數(shù)缺省定義缺省定義時(shí)為時(shí)為按地址傳遞參數(shù)按地址傳遞參數(shù)
13、,函數(shù)過(guò)程,函數(shù)過(guò)程中改變參數(shù)值將導(dǎo)致中改變參數(shù)值將導(dǎo)致函數(shù)結(jié)果變化函數(shù)結(jié)果變化。一維數(shù)組把數(shù)組名和數(shù)組長(zhǎng)度分別作為形式參數(shù)Private Function sum(x() As Single, byval m As integer) As Single Dim i As Byte sum = 0 For i = 1 To m sum = sum + x(i) Next iEnd FunctionPrivate Sub Form_click()Dim m As Byte, i As Bytem = val(inputBox(“輸入數(shù)組元素個(gè)數(shù))ReDim a(m) As SingleFor i
14、 = 1 To m a(i) = val(InputBox(a( + Str(i) + )=“)Next iPrint sum(a, m)End Sub編程:編程:編寫函數(shù)求二維數(shù)組全體元素的和編寫函數(shù)求二維數(shù)組全體元素的和思路:思路:二維數(shù)組在主程序中定義及輸入,二維數(shù)組在主程序中定義及輸入, 調(diào)用求和過(guò)程調(diào)用求和過(guò)程知識(shí)點(diǎn):知識(shí)點(diǎn):1 1、掌握二維數(shù)組形參和實(shí)參傳遞的方法、掌握二維數(shù)組形參和實(shí)參傳遞的方法2 2、二維數(shù)組的元素和的計(jì)算需要、二維數(shù)組的元素和的計(jì)算需要二重循環(huán)二重循環(huán)二維數(shù)組把數(shù)組名、行數(shù)、列數(shù)分別作為形參Private Function sum(a() As Single,
15、 byval m As Byte, byval n As Byte) As Single Dim i As Byte, j As Byte For i = 1 To m For j = 1 To n sum = sum + a(i, j) Next j, i End FunctionPrivate Sub Form_click()Dim m As Integer, n As Integer, i As Integer, j As Integerm =val( InputBox(“輸入行數(shù))n = val(InputBox(“輸入列數(shù))ReDim a(m, n) As Integer 定義動(dòng)態(tài)二
16、維數(shù)組For i = 1 To m For j = 1 To n a(i, j) = val(InputBox(“ a(“ & i & “,” & j & “)”) Print a(i, j); Next j Print 一行打印完換行Next iPrint 打印空行Print sum(a(), m, n)sum(a(), m, n)End Sub3、確定形參(自變量)的個(gè)數(shù)、類型和傳遞方式。2、確定函數(shù)的返回值的類型。1、確定函數(shù)類型(public/private)和函數(shù)名。4、編寫函數(shù)體。 Public|PrivateStaticPublic|Private
17、StaticFunction Function ()AsAs 函數(shù)體函數(shù)體 函數(shù)名函數(shù)名= =返回值返回值 End FunctionEnd FunctionPublic|PrivateStaticPublic|PrivateStatic Sub Sub () sub sub 過(guò)程體過(guò)程體End subEnd subFunction 和sub的區(qū)別:Function 返回函數(shù)值,必須在函數(shù)體中給函數(shù)名賦值SUB過(guò)程用于完成某個(gè)操作,過(guò)程名不能被賦值,不能用于返回一個(gè)值。private sub printstar(flag as Boolean) if flag then Print “*”End
18、 subPrivate sub form_click() dim f as boolean: f = true call printstar(f) printstar fend sub 間接調(diào)用 : Call 窗體.子過(guò)程名(實(shí)參列表) 直接調(diào)用: 窗體.子過(guò)程名 實(shí)參列表 注意:不用call時(shí)實(shí)參列表外面沒(méi)有括號(hào)括號(hào)比較函數(shù)的調(diào)用: 窗體.函數(shù)過(guò)程名(實(shí)參列表)編程:編程:顯示小房子圖案顯示小房子圖案知識(shí)點(diǎn)知識(shí)點(diǎn): :1 1、SubSub過(guò)程嵌套調(diào)用(直接調(diào)用或用過(guò)程嵌套調(diào)用(直接調(diào)用或用callcall函數(shù)間接函數(shù)間接調(diào)用)調(diào)用)2 2、學(xué)習(xí)、學(xué)習(xí)stringstring(n n,s s)
19、函數(shù)()函數(shù)(n n個(gè)字符為個(gè)字符為s s的字串)的字串) (P55P55填空題填空題3 3) 1 1、數(shù)值、數(shù)值(實(shí)參) 數(shù)值(形參) 實(shí)參實(shí)參 形參形參 結(jié)果結(jié)果 整型整型 浮點(diǎn)型浮點(diǎn)型 形參實(shí)參形參實(shí)參 浮點(diǎn)型浮點(diǎn)型 整型整型 形參四舍五入的實(shí)參形參四舍五入的實(shí)參2 2 字符串字符串(實(shí)參) 數(shù)值(形參) 以實(shí)參字符的數(shù)字賦值給形參以實(shí)參字符的數(shù)字賦值給形參,即:,即: 實(shí)參實(shí)參 形參形參 結(jié)果結(jié)果 字符字符“28” 28” 數(shù)值數(shù)值 A AA A28 28 字符字符“28abc” 28abc” 數(shù)值數(shù)值 A A 出錯(cuò)出錯(cuò)3 3、數(shù)值(實(shí)參) 字符串字符串(形參) 數(shù)值直接轉(zhuǎn)換成字符串?dāng)?shù)
20、值直接轉(zhuǎn)換成字符串 1.表達(dá)式和常量只能按值傳遞2. 整個(gè)數(shù)組只能按地址傳遞注意編程:編程:數(shù)組元素排序(降序)數(shù)組元素排序(降序)思路:思路:數(shù)組的輸入與降序輸出由主程序完成數(shù)組的輸入與降序輸出由主程序完成 排序過(guò)程由排序過(guò)程由subsub過(guò)程完成過(guò)程完成知識(shí)點(diǎn):知識(shí)點(diǎn):1 1、數(shù)組的參數(shù)傳遞、數(shù)組的參數(shù)傳遞數(shù)組名數(shù)組名和和數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度2 2、數(shù)組只有按地址傳遞,不能按值傳遞數(shù)組只有按地址傳遞,不能按值傳遞3 3、形參中缺省傳遞方式就是按地址傳遞、形參中缺省傳遞方式就是按地址傳遞過(guò)程編寫時(shí)的形參數(shù)組名后面一定要有括號(hào)Sort(a()a() as single, n as integer)
21、調(diào)用處實(shí)參可以只寫數(shù)組名call sort(a(),n) 或 call sort(a, n)編程:編程:比較按值傳遞和按地址傳遞的區(qū)別比較按值傳遞和按地址傳遞的區(qū)別知識(shí)點(diǎn):知識(shí)點(diǎn):1 1、了解、了解byvalbyval與與byrefbyref的區(qū)別的區(qū)別2 2、缺省傳遞形式時(shí)為、缺省傳遞形式時(shí)為byrefbyref(按地址傳遞)(按地址傳遞)只有當(dāng)實(shí)參為只有當(dāng)實(shí)參為變量變量時(shí),按地址傳遞才能實(shí)現(xiàn)時(shí),按地址傳遞才能實(shí)現(xiàn)雙向傳遞雙向傳遞例如:例如: 主程序主程序 子函數(shù)子函數(shù) call swap(10,50) sub swap(x%,y%)call swap(10,50) sub swap(x%,
22、y%)這樣的調(diào)用沒(méi)有意義這樣的調(diào)用沒(méi)有意義 call swap(a,b) sub swap(x%,y%)call swap(a,b) sub swap(x%,y%)當(dāng)當(dāng)x x及及y y在子過(guò)程中改變時(shí),主程序中的在子過(guò)程中改變時(shí),主程序中的a a和和b b跟著變化跟著變化Function Function ()AsAs 函數(shù)體函數(shù)體 函數(shù)名函數(shù)名= =返回值返回值 End FunctionEnd FunctionSub Sub () sub sub 過(guò)程體過(guò)程體End subEnd sub注意函數(shù)和子過(guò)程調(diào)用時(shí)的不同通過(guò)調(diào)用處判斷以下uu, aa,bb,cc分別是函數(shù)過(guò)程還是子過(guò)程?Priva
23、te sub form_clickPrivate sub form_click Dim x as single, y as single, z as single Dim x as single, y as single, z as single,s as doubles as double x=3: y=4:z=5 x=3: y=4:z=5 s= uu(x) s= uu(x) print aa(x) print aa(x) call bb(y) call bb(y) cc z cc zEnd subEnd sub編程:編程:編寫函數(shù)過(guò)程求最大公約數(shù)編寫函數(shù)過(guò)程求最大公約數(shù)思路:思路:設(shè)定兩個(gè)
24、數(shù)設(shè)定兩個(gè)數(shù)mm、n n,并且,并且mnmn,則最大公,則最大公約數(shù)約數(shù)p p一定滿足:一定滿足: 1=p=n1=p=n,且:,且: m mod p=0 and n mod p=0m mod p=0 and n mod p=0方法:方法:將將n n賦值給賦值給p p,驗(yàn)證是否滿足上式,不滿足,驗(yàn)證是否滿足上式,不滿足就將就將p p減減1 1繼續(xù)驗(yàn)證上式,直至滿足為止。繼續(xù)驗(yàn)證上式,直至滿足為止。知識(shí)點(diǎn):知識(shí)點(diǎn):1 1、掌握最大公約數(shù)的求解方法、掌握最大公約數(shù)的求解方法2 2、學(xué)習(xí)兩數(shù)求最大公約數(shù)的另一種方法、學(xué)習(xí)兩數(shù)求最大公約數(shù)的另一種方法3 3、另一種交換兩個(gè)數(shù)的方法(不借用第三個(gè)變量)、另
25、一種交換兩個(gè)數(shù)的方法(不借用第三個(gè)變量)方法二:輾轉(zhuǎn)求余方法二:輾轉(zhuǎn)求余Function gys(m as integer, n as integer) as integerFunction gys(m as integer, n as integer) as integerDim r as integerDim r as integerr= m mod nr= m mod nDo while r 0Do while r 0 m=n: n=r: r= m mod n m=n: n=r: r= m mod nLoopLoop循環(huán)結(jié)束時(shí)循環(huán)結(jié)束時(shí) n n為求得的最大公約數(shù)為求得的最大公約數(shù)gys=
26、ngys=nEnd functionEnd function方法一:在n和1之間找function gys(m as integer, n as integer) as integerFor gys = n to 1 step -1 if m mod gys =0 and n mod gys=0 then exit forNext gysEnd functionu全局變量在窗體通用部分用public聲明u模塊級(jí)變量在窗體通用部分用dim或private聲明u過(guò)程級(jí)變量 在過(guò)程里面(如事件過(guò)程private subend sub) dim 動(dòng)態(tài)變量 static 靜態(tài)變量public a as
27、integerprivate b as single dim c as doublePrivate sub form_click()dim g as boolean End subPrivate sub command1_click()static x as integer End sub三. 變量作用域 在VB中,由于可以在過(guò)程中和模塊中聲明變量,根據(jù)定義變量的位置和定義變量的語(yǔ)句不同,變量可以分為:局部變量(過(guò)程級(jí)變量)窗體/模塊級(jí)變量(私有的模塊級(jí)變量,能被本模塊的所有過(guò)程和函數(shù)使用)全局變量(公有的模塊級(jí)變量,夸模塊作用)。 定義:變量的作用范圍是指變量被某一過(guò)程識(shí)別的范圍或者指該變量
28、能夠使用的程序代碼范圍局部量: 在過(guò)程內(nèi)聲明的變量或符號(hào)常量是局部量,其只能在本過(guò)程中使用。 在過(guò)程內(nèi)部使用 Dim| Static 關(guān)鍵字來(lái)聲明的變量,或者使用Const語(yǔ)句聲明的符號(hào)常量,其只在聲明它們的過(guò)程中才能被訪問(wèn),別的過(guò)程不可訪問(wèn)。所以可以在不同的過(guò)程中聲明相同名字的局部量而互不影響。 例:Private Sub Form_Load()Dim n%n= 10End SubPrivate Sub From_Click()Dim n%Print “n=“;nEnd Sub程序運(yùn)行后單擊窗體,其輸出結(jié)果是什么? 在“通用聲明”段中用Dim|Private語(yǔ)句聲明的變量,或者用Privat
29、e const聲明的符號(hào)常量,其可被本窗體/模塊的任何過(guò)程訪問(wèn)。但其他模塊卻不能訪問(wèn)該量。例如:在“通用聲明”段聲明如下變量Private s As StringDim a As Integer,b As Single Const x%Private s As String, sr As StringPrivate s As String, sr As StringDim a As Integer, b As IntegerDim a As Integer, b As IntegerPrivate Sub Form_click()Private Sub Form_click() Dim s A
30、s String, a As IntegerDim s As String, a As Integer s = abc: sr = aaas = abc: sr = aaa a = 123: b = 456a = 123: b = 456 Print s, srPrint s, sr Print a, bPrint a, bEnd SubEnd SubPrivate Sub command1_click()Private Sub command1_click() Print s, srPrint s, sr Print a, bPrint a, bEnd SubEnd Sub通用聲明模塊級(jí)量這
31、個(gè)過(guò)程中的s、a被定義為局部量,sr、b為模塊級(jí)量這個(gè)過(guò)程中的所有變量均為模塊級(jí)量特點(diǎn):過(guò)程內(nèi)若定義了局部量就不能引用同名的模塊級(jí)量 全局量也稱公有的模塊級(jí)變量,在窗體模塊或標(biāo)準(zhǔn)模塊的頂部的“通用”聲明段用Public關(guān)鍵字聲明的變量或用Public Const語(yǔ)句聲明的符號(hào)常量,它的作用范圍是整個(gè)應(yīng)用程序,即可被本應(yīng)用程序的任何過(guò)程或函數(shù)訪問(wèn)。例如: Public a As Integer,b As single Public Const PI As Double全局量可以在整個(gè)工程中被引用。 1 1、如果在窗體、如果在窗體2 2中聲明中聲明public m as integerpublic
32、 m as integer,那么要,那么要在窗體在窗體1 1中引用時(shí),必須在變量中引用時(shí),必須在變量mm前指出窗體名,即:前指出窗體名,即:a aform2.mform2.m2 2、如果要定義全局量的、如果要定義全局量的數(shù)組或定長(zhǎng)字符串?dāng)?shù)組或定長(zhǎng)字符串,必須在,必須在標(biāo)準(zhǔn)模塊的通用聲明部分標(biāo)準(zhǔn)模塊的通用聲明部分聲明,不可以在其他窗體聲明,不可以在其他窗體模塊中聲明。模塊中聲明。3種變量聲明及使用規(guī)則如下表:3種符號(hào)常量的聲明及使用規(guī)則與其對(duì)應(yīng)的變量一致,只是常量只能讀取而不能更改觀察同名但不同定義的變量的輸出值Public Temp As Integer 定義全局變量Private Sub F
33、orm_Load()Temp = 1 將全局變量Temp 的值設(shè)置成 1End SubPrivate Sub Command1_Click()Dim Temp As Integer 定義局部變量Temp = 2 將局部變量Temp 的值設(shè)置成 2 Print temp=; Temp Print temp=; Form1.TempEnd SubPrivate Sub Command2_Click() Print temp=; Temp End Sub 除作用域之外,變量還有存活期,在這一期間變量能夠保持它們的值。 在應(yīng)用程序的存活期內(nèi)一直保持模塊級(jí)變量和全局變量的值。但是,對(duì)于Dim聲明的局部變
34、量?jī)H當(dāng)過(guò)程執(zhí)行期間存在,當(dāng)一個(gè)過(guò)程執(zhí)行完畢,它的局部變量的值就已經(jīng)不存在,而且變量所占據(jù)的內(nèi)存也被釋放。當(dāng)下一次執(zhí)行該過(guò)程時(shí),它的所有局部變量將重新初始化。概念局部變量按存活期分為動(dòng)態(tài)變量和靜態(tài)變量;局部變量的存活期由其定義的關(guān)鍵詞(Static 或Dim)來(lái)決定。 動(dòng)態(tài)變量是指程序運(yùn)行進(jìn)入變量所在的過(guò)程時(shí),才分配給該變量?jī)?nèi)存空間,退出該過(guò)程時(shí),變量所占的內(nèi)存空間自動(dòng)釋放,其值消失。 使用Dim語(yǔ)句在過(guò)程中聲明的局部變量就屬于動(dòng)態(tài)變量,在過(guò)程執(zhí)行結(jié)束后,變量的值不被保留,在每一次重新執(zhí)行過(guò)程時(shí),變量重新聲明。 程序中使用的絕大部分變量都屬于動(dòng)態(tài)變量。 靜態(tài)變量是指程序運(yùn)行期間雖然退出變量所在的
35、過(guò)程,其值仍被保留的變量,即變量所占的內(nèi)存空間沒(méi)有釋放。當(dāng)以后再次進(jìn)入該過(guò)程時(shí),原來(lái)變量的值可以繼續(xù)使用。 使用Static語(yǔ)句在過(guò)程中聲明的局部變量就屬于靜態(tài)變量。靜態(tài)變量只能在過(guò)程中聲明,而不能在通用對(duì)象聲明部分聲明。 函數(shù)過(guò)程、自定義過(guò)程均可以在過(guò)程頭部加上關(guān)鍵字Static,表示該過(guò)程內(nèi)的局部變量都是靜態(tài)變量。 聲明形式: Static 變量名 AS 類型Static Function 函數(shù)過(guò)程名(參數(shù)列表) As 類型Static Sub 子過(guò)程名(參數(shù)列表)例12:閱讀下列程序,寫出當(dāng)點(diǎn)擊兩次命令按鈕后的運(yùn)行結(jié)果。Function sum(Byval n as integer) a
36、s integer static s as integer for I%=0 to n-1 s=s+I% next I% sum=sEnd functionPrivate Sub Command1_Click() Print sum(2)+sum(3)End SubDim a As IntegerPrivate Sub Command1_Click() Static b As Integer Dim c As Integer a = a + 1 b = b + 1 c = c + 1 Print a=; a, b=; b, c=; cEnd SubPrivate sub command2_cl
37、ick() a= a+2End sub連續(xù)單擊Command1按鈕三次,窗體上的輸出結(jié)果?單擊Command1后再單擊Command2再單擊Command1出現(xiàn)什么結(jié)果?例 有一個(gè)人編了下面一段程序,想用變量n記錄單擊窗體的次數(shù)。Private Sub Form_Click() Dim n As Integer n = n + 1 Print 已單擊次數(shù):; n & 次End Sub分析程序運(yùn)行后多次單擊窗體的輸出結(jié)果: 要記錄單擊窗體次數(shù),如何實(shí)現(xiàn)?并比較使用模塊變量和靜態(tài)變量的差別。Private Sub Form_Click() Dim i% ,isum% For i = 1 T
38、o 5isum = sum(i)Print isum, Next i End Sub Private Function sum(n As Integer) Dim j As Integer j = j + n sum = jEnd Function1 2 3 4 5Static j As Integer 結(jié)果如何? VBVB中的三種類型模塊中的三種類型模塊窗體模塊(窗體模塊(.frm.frm)標(biāo)準(zhǔn)模塊(標(biāo)準(zhǔn)模塊(.bas.bas) 類模塊(類模塊(.cls.cls)問(wèn)題:?jiǎn)栴}:在應(yīng)用程序中出現(xiàn)多個(gè)窗體時(shí),如何實(shí)現(xiàn)在在應(yīng)用程序中出現(xiàn)多個(gè)窗體時(shí),如何實(shí)現(xiàn)在 窗體窗體1 1中調(diào)用窗體中調(diào)用窗體2 2
39、中的某個(gè)過(guò)程中的某個(gè)過(guò)程方法:方法:(1 1)窗體)窗體2 2的被調(diào)用過(guò)程必須用的被調(diào)用過(guò)程必須用publicpublic定義,如:定義,如: publicpublic function tongyong function tongyong()()as longas long end function end function(2 2)窗體)窗體1 1中調(diào)用中調(diào)用tongyongtongyong()這個(gè)函數(shù)時(shí)必須()這個(gè)函數(shù)時(shí)必須 寫明窗體名稱,如:寫明窗體名稱,如: X X form2.tongyong()form2.tongyong()特點(diǎn):特點(diǎn): 標(biāo)準(zhǔn)模塊中用標(biāo)準(zhǔn)模塊中用publicpu
40、blic定義的過(guò)程可以在任何窗體定義的過(guò)程可以在任何窗體中都被調(diào)用而不需要標(biāo)注窗體名的前綴中都被調(diào)用而不需要標(biāo)注窗體名的前綴方法:方法: 在下拉菜單在下拉菜單“工程工程”中選擇中選擇“添加模塊添加模塊”二. 標(biāo)準(zhǔn)模塊能夸模塊調(diào)用的過(guò)程:1. 寫在標(biāo)準(zhǔn)模塊的public 過(guò)程,用過(guò)程名調(diào)用2. 寫在某個(gè)窗體的通用部分的public過(guò)程,在其他窗體調(diào)用為:窗體名.過(guò)程名比較比較標(biāo)準(zhǔn)標(biāo)準(zhǔn)模塊與模塊與窗體窗體模塊的過(guò)程定義及調(diào)用模塊的過(guò)程定義及調(diào)用知識(shí)點(diǎn):知識(shí)點(diǎn): 掌握不同模塊中掌握不同模塊中publicpublic與與privateprivate定義的過(guò)程的調(diào)定義的過(guò)程的調(diào)用方法用方法完成第三章、第
41、四章課后習(xí)題完成第三章、第四章課后習(xí)題禮拜四(11月19號(hào))上機(jī)(題目1)題目1:主程序定義主程序定義動(dòng)態(tài)動(dòng)態(tài)數(shù)組,給數(shù)組各元素通過(guò)數(shù)組,給數(shù)組各元素通過(guò)inputboxinputbox賦值賦值調(diào)用調(diào)用子過(guò)程子過(guò)程按一行按一行mm列來(lái)打印數(shù)組,列來(lái)打印數(shù)組,mm為該子過(guò)程形式參數(shù)為該子過(guò)程形式參數(shù)調(diào)用調(diào)用函數(shù)過(guò)程函數(shù)過(guò)程判斷各個(gè)元素是否為素?cái)?shù),把是素?cái)?shù)的元素按判斷各個(gè)元素是否為素?cái)?shù),把是素?cái)?shù)的元素按3 3個(gè)一行打印在窗體上個(gè)一行打印在窗體上調(diào)用調(diào)用函數(shù)過(guò)程函數(shù)過(guò)程求數(shù)組個(gè)元素的最小公倍數(shù)求數(shù)組個(gè)元素的最小公倍數(shù)Function aaaFunction aaa()as booleanas boolean aaa aaa相當(dāng)于一個(gè)變量,有返回值相當(dāng)于一個(gè)變量,有返回值Sub bbbSub bbb() bbbbbb只是調(diào)用時(shí)被識(shí)別的一個(gè)名稱,沒(méi)有返回值只是調(diào)用時(shí)被識(shí)別的一個(gè)名稱,沒(méi)有返回值形參的傳遞過(guò)程中有兩種方式:形參的傳遞過(guò)程中有兩種方式:(byval a as integerbyval a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《漢語(yǔ)閱讀教程》課件-23漢語(yǔ)閱讀教程2上課件L23
- 2025年建筑行業(yè)企業(yè)農(nóng)民工勞動(dòng)合同協(xié)議書模板
- 原藻病的臨床護(hù)理
- 中樞神經(jīng)系統(tǒng)畸形的臨床護(hù)理
- 2025勞動(dòng)合同范本全文
- 2025公司違約解除合同賠償
- 2025照明工程項(xiàng)目合同范本
- 2025年教師資格之小學(xué)教育教學(xué)知識(shí)與能力考前沖刺模擬試卷B卷含答案
- 2025年健康管理師之健康管理師三級(jí)全真模擬考試試卷B卷含答案
- 《教學(xué)管理解析》課件
- SL631-637-2012-水利水電工程單元工程施工質(zhì)量驗(yàn)收評(píng)定標(biāo)準(zhǔn)
- 胸腔穿刺術(shù)課件
- 門診辦運(yùn)用PDCA提高門診預(yù)約掛號(hào)率品管圈成果匯報(bào)
- 市場(chǎng)開(kāi)拓委托合同書
- 跟骨牽引 跟骨牽引圖片
- 簡(jiǎn)易呼吸器操作流程及考核評(píng)分表
- 人行天橋施工組織設(shè)計(jì)方案
- 工程設(shè)計(jì)管理規(guī)定
- 寶安區(qū)地圖深圳市寶安區(qū)鄉(xiāng)鎮(zhèn)街道地圖高清矢量可填充編輯地圖PPT模板
- 信息通信網(wǎng)絡(luò)線務(wù)員
- 安徽筑格橋梁構(gòu)件有限公司高端工程金屬橡膠產(chǎn)品(公路橋梁伸縮裝置、板式橡膠支座、盆式橡膠支座、QZ球形支座、橡膠止水帶等)項(xiàng)目 環(huán)境影響報(bào)告書
評(píng)論
0/150
提交評(píng)論