![過程調(diào)用和參數(shù)傳遞_第1頁](http://file4.renrendoc.com/view/dd20e4e05baaf3f0ec6e563d7cfa9b6f/dd20e4e05baaf3f0ec6e563d7cfa9b6f1.gif)
![過程調(diào)用和參數(shù)傳遞_第2頁](http://file4.renrendoc.com/view/dd20e4e05baaf3f0ec6e563d7cfa9b6f/dd20e4e05baaf3f0ec6e563d7cfa9b6f2.gif)
![過程調(diào)用和參數(shù)傳遞_第3頁](http://file4.renrendoc.com/view/dd20e4e05baaf3f0ec6e563d7cfa9b6f/dd20e4e05baaf3f0ec6e563d7cfa9b6f3.gif)
![過程調(diào)用和參數(shù)傳遞_第4頁](http://file4.renrendoc.com/view/dd20e4e05baaf3f0ec6e563d7cfa9b6f/dd20e4e05baaf3f0ec6e563d7cfa9b6f4.gif)
![過程調(diào)用和參數(shù)傳遞_第5頁](http://file4.renrendoc.com/view/dd20e4e05baaf3f0ec6e563d7cfa9b6f/dd20e4e05baaf3f0ec6e563d7cfa9b6f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、關(guān)于過程調(diào)用與參數(shù)傳遞第一張,PPT共五十頁,創(chuàng)作于2022年6月知識要點(diǎn)1、過程的基本概念2、sub過程定義格式定義方法窗體事件的執(zhí)行順序3、Function過程(定義格式、定義方法)第二張,PPT共五十頁,創(chuàng)作于2022年6月7.3 過程調(diào)用7.3.1 事件過程的調(diào)用7.3.2 調(diào)用Sub過程7.3.3 調(diào)用Function過程7.3.4 調(diào)用其它模塊中的公有過程 第三張,PPT共五十頁,創(chuàng)作于2022年6月 事件過程由一個(gè)發(fā)生在Visual Basic中的事件來自動(dòng)調(diào)用或者由同一模塊中的其它過程顯式調(diào)用。 請看示例。p1317.3.1 事件過程的調(diào)用第四張,PPT共五十頁,創(chuàng)作于2022
2、年6月 Sub過程和function過程必須在事件過程或其他過程中顯式調(diào)用,否則過程代碼就永遠(yuǎn)不會(huì)被執(zhí)行。 在調(diào)用程序時(shí),程序執(zhí)行到調(diào)用某通用過程的語句后,系統(tǒng)就會(huì)將控制轉(zhuǎn)移到被調(diào)用的過程。在被調(diào)用的過程中,從第一條sub或function語句開始,依次執(zhí)行其中的所有語句,當(dāng)執(zhí)行到end sub或end function語句后,返回到主調(diào)程序的斷點(diǎn),并從斷點(diǎn)處繼續(xù)程序的執(zhí)行。7.3.2 調(diào)用Sub過程第五張,PPT共五十頁,創(chuàng)作于2022年6月主調(diào)程序 調(diào)用過程AEnd Sub過程AEnd Sub調(diào)用Sub通用過程流程第六張,PPT共五十頁,創(chuàng)作于2022年6月Sub子過程的調(diào)用(1) 用Ca
3、ll語句調(diào)用Sub過程 語法:Call 過程名(實(shí)在參數(shù)表) 實(shí)在參數(shù)的個(gè)數(shù)、類型和順序,應(yīng)該與被調(diào)用過程的形式參數(shù)相匹配,有多個(gè)參數(shù)時(shí),用逗號分隔。如果被調(diào)用的過程是一個(gè)無參過程,則括號可以省略.第七張,PPT共五十頁,創(chuàng)作于2022年6月Private Sub Command1_Click() Dim a As Integer, b As Integer a = Val(Text1.Text): b = Val(Text2.Text) Call add(a, b)End Sub例:Private Sub add(x As Integer, y As Integer) s = x + y T
4、ext3.Text = sEnd Sub調(diào)用add子過程第八張,PPT共五十頁,創(chuàng)作于2022年6月Private Sub Command1_Click() Dim a As Integer, b As Integer a = Val(Text1.Text): b = Val(Text2.Text) s = a + b Text3.Text = sEnd Sub等價(jià)于:第九張,PPT共五十頁,創(chuàng)作于2022年6月例7-2編寫一個(gè)找出任意一個(gè)正整數(shù)的因子的程序Private Sub Command1_Click() Dim Inta As Integer, St As String Inta =
5、 Text1.Text Call Factor(Inta, St) Text2.Text = StEnd SubPrivate Sub Factor(ByVal N As Integer, S As String) Dim I As Integer For I = 1 To N - 1 If N Mod I = 0 Then S = S & Str(I) Next IEnd Sub第十張,PPT共五十頁,創(chuàng)作于2022年6月(2)把過程名作為一個(gè)語句來用語法:過程名 實(shí)參1,實(shí)參2它與(1)的不同點(diǎn)是:去掉了關(guān)鍵字call和實(shí)參列表的括號Private Sub Command1_Click()
6、 Dim a As Integer, b As Integer a = Val(Text1.Text): b = Val(Text2.Text) add a, bEnd SubPrivate Sub add(x As Integer, y As Integer) s = x + y Text3.Text = sEnd Sub第十一張,PPT共五十頁,創(chuàng)作于2022年6月練一練:使用第2種調(diào)用方式修改例7.2。 Private Sub Command1_Click() Dim Inta As Integer, St As String Inta = Text1.Text Factor Inta,
7、 St Text2.Text = StEnd SubPrivate Sub Factor(ByVal N As Integer, S As String) Dim I As Integer For I = 1 To N - 1 If N Mod I = 0 Then S = S & Str(I) Next IEnd Sub第十二張,PPT共五十頁,創(chuàng)作于2022年6月課堂練習(xí)2:編寫一個(gè)實(shí)現(xiàn)兩數(shù)交換的程序,要求程序中定義一個(gè)交換兩數(shù)的通用過程。 Private Sub command1_click()Dim a%,b% a=text1.text b=text2.text call swap(a
8、,b) text1.text=a text2.text=bEnd SubPrivate Sub Swap( X As Integer, Y As Integer)Dim temp As Integer Temp=X : X=Y : Y=TempEnd Sub第十三張,PPT共五十頁,創(chuàng)作于2022年6月 調(diào)用Function過程的方法與調(diào)用Visual Basic內(nèi)部函數(shù)方法相同。即在表達(dá)式中寫出它的名稱和相應(yīng)的實(shí)在參數(shù): Function 過程名(實(shí)在參數(shù)表) 1)調(diào)用Function過程與調(diào)用Sub過程不同,必須給參數(shù)加上括號,即使調(diào)用無參函數(shù),括號也不能缺?。?2) Visual Bas
9、ic也允許像調(diào)用Sub過程那樣調(diào)用Function過程。(即使用call語句和把函數(shù)名當(dāng)作一個(gè)語句使用。)7.3.3 調(diào)用Function過程第十四張,PPT共五十頁,創(chuàng)作于2022年6月例7-3 編寫程序,求兩個(gè)正整數(shù)的最大公約數(shù)。Private Sub Form_Click() Dim N As Integer, M As Integer, G As Integer N = InputBox(輸入N) M = InputBox(輸入M) G = Gcd(N, M) Print N; 和; M; 的最大公約數(shù)是:; GEnd SubPrivate Function Gcd(ByVal A A
10、s Integer, ByVal B As Integer) As Integer Dim R As Integer R = A Mod B Do While R 0 A = B:B = R:R = A Mod B Loop Gcd = BEnd Function第十五張,PPT共五十頁,創(chuàng)作于2022年6月1. 調(diào)用窗體模塊中的公有過程 Call Form1.ExamSub(實(shí)參表) 2調(diào)用標(biāo)準(zhǔn)模塊中的公有過程 Call CommonSub (實(shí)在參數(shù)) 或 Call Module2.CommonSub(實(shí)參表) 7.3.4 調(diào)用其它模塊中的公有過程(了解)第十六張,PPT共五十頁,創(chuàng)作于2
11、022年6月課堂練習(xí)在調(diào)用過程中,下述說明中正確的是( )A)只能使用Call語句調(diào)用Sub過程B)調(diào)用Sub過程時(shí),實(shí)在參數(shù)必須用括號括起來C)在表達(dá)式中調(diào)用Function過程時(shí), 可以不用括號把實(shí)在參數(shù)括起來D)Function過程也可用Call語句調(diào)用第十七張,PPT共五十頁,創(chuàng)作于2022年6月課堂練習(xí)在Visual Basic中,以下說法正確的是( )A)過程的定義可以嵌套,但過程的調(diào)用不能嵌套B)過程的定義不可以嵌套,但過程的調(diào)用能嵌套C)過程的定義和過程的調(diào)用均可以嵌套D)過程的定義和過程的調(diào)用均不可以嵌套第十八張,PPT共五十頁,創(chuàng)作于2022年6月課堂練習(xí)在語句Public
12、 Sub Sort(I As Integer)中,I是一個(gè)按( )傳遞的參數(shù)A)地址B)值C)變量D)常量第十九張,PPT共五十頁,創(chuàng)作于2022年6月7.4 參數(shù)的傳遞(重點(diǎn)、難點(diǎn))7.4.1 形參與實(shí)參7.4.2 按值傳遞參數(shù)7.4.3 按地址傳遞參數(shù)7.4.4 數(shù)組參數(shù)7.4.5 對象參數(shù)第二十張,PPT共五十頁,創(chuàng)作于2022年6月 在調(diào)用一個(gè)有參數(shù)的過程時(shí),首先進(jìn)行的是“形實(shí)結(jié)合”,即按傳值傳遞或按地址傳遞方式,實(shí)現(xiàn)調(diào)用程序和被調(diào)用的過程之間的數(shù)據(jù)傳遞。Private Sub command1_click()Dim a%,b% a=text1.text b=text2.text ca
13、ll swap(a,b) text1.text=a text2.text=bEnd SubPrivate Sub Swap( X As Integer, Y As Integer)Dim temp As Integer Temp=X X=Y Y=TempEnd Sub實(shí)參形參7.4.1 形參與實(shí)參第二十一張,PPT共五十頁,創(chuàng)作于2022年6月1. 形參 出現(xiàn)在Sub過程和Function過程的形參表中的變量名、數(shù)組名稱之為形式參數(shù),過程被調(diào)用之前,并未為其分配內(nèi)存,其作用是用來接收傳送給子過程的數(shù)據(jù) 形參可以是: 1) 除定長字符串變量之外的合法變量名; 2) 后面跟有左、右圓括號(注意:不
14、含下標(biāo))的數(shù)組名。 第二十二張,PPT共五十頁,創(chuàng)作于2022年6月2. 實(shí)參 實(shí)際參數(shù)是指包含在過程調(diào)用的實(shí)參表中的變量,數(shù)組等。其作用是將它們的數(shù)據(jù)(數(shù)值或地址)傳送給Sub或Function過程與其對應(yīng)的形參變量。 實(shí)參可以是常量、表達(dá)式、有效的變量名、數(shù)組名組成。如call test(x2,true,a,st)算術(shù)表達(dá)式第二十三張,PPT共五十頁,創(chuàng)作于2022年6月 參數(shù)傳遞是按對應(yīng)“位置”結(jié)合而不是按名字結(jié)合,即第一個(gè)實(shí)參與第一形參結(jié)合,第二個(gè)實(shí)參與第二個(gè)形參結(jié)合,依此類推。3、參數(shù)傳遞(虛實(shí)結(jié)合) 參數(shù)傳遞指主調(diào)過程的實(shí)參(調(diào)用時(shí)已有確定值和內(nèi)存地址的參數(shù))傳遞給被調(diào)過程的形參,
15、參數(shù)的傳遞有兩種方式:按值傳遞、按地址傳遞。形參前加“ByVal”關(guān)鍵字的是按值傳遞,缺省或加“ByRef”關(guān)鍵字的為按地址傳遞。 第二十四張,PPT共五十頁,創(chuàng)作于2022年6月例:Private Sub command1_click()Dim a%,b% a=text1.text b=text2.text call swap(a,b) text1.text=a text2.text=bEnd SubPrivate Sub Swap( X As Integer, Y As Integer)Dim temp As Integer Temp=X X=Y Y=TempEnd Sub實(shí)參形參第二十五
16、張,PPT共五十頁,創(chuàng)作于2022年6月 說明:(1)形參表和實(shí)參表中的對應(yīng)變量名可以不必相同。Private sub examsub(x as integer,y as single) .End subPrivate sub form_click() dim x as integer,y as single . Call examsub(y,x)End sub第二十六張,PPT共五十頁,創(chuàng)作于2022年6月形 參 實(shí) 參變量 變量、常數(shù)、表達(dá)式、數(shù)組元素、對象數(shù)組 數(shù)組(2)形參與實(shí)參的個(gè)數(shù)必須相同,對應(yīng)位置的參數(shù)類型必須一致。對應(yīng)關(guān)系如下表第二十七張,PPT共五十頁,創(chuàng)作于2022年6月
17、按值傳遞時(shí),系統(tǒng)分配臨時(shí)的變量單元給形參。系統(tǒng)僅把實(shí)參的值復(fù)制一份,然后把這個(gè)副本再傳給形參。 被調(diào)過程執(zhí)行時(shí),對形參的任何改變,都不會(huì)影響實(shí)參變量。結(jié)論:按值傳遞,形參變,相應(yīng)的實(shí)參不變。7.4.2 按值傳遞參數(shù)第二十八張,PPT共五十頁,創(chuàng)作于2022年6月分析下列程序的值 Private Sub Command1_Click() Dim M As Integer, N As Integer M = 15: N = 20 Call Value_Change(M,N) Print M, NEnd SubPrivate Sub Value_Change(ByVal X As Integer,
18、ByVal Y As Integer) X=X+20 Y=X+Y Print “X=“;X,”Y=“;Y End Sub1520返回地址1520MNXY100010021004100510031520返回地址3555MNXY10001002100410051003第二十九張,PPT共五十頁,創(chuàng)作于2022年6月結(jié)論:按地址傳遞參數(shù),形參變,相應(yīng)的實(shí)參也跟著變7.4.3 按地址傳遞參數(shù) 按地址傳遞參數(shù)是把實(shí)參變量的地址傳給形參,即系統(tǒng)并不分配臨時(shí)的變量單元給形參,而是形參與實(shí)參共用同一存儲(chǔ)單元,因此,被調(diào)過程執(zhí)行時(shí),形參變量的任一變化,實(shí)參也相應(yīng)改變。 按地址傳遞參數(shù)可節(jié)省內(nèi)存,執(zhí)行效率高,但也
19、可能對程序運(yùn)行產(chǎn)生某些干擾。第三十張,PPT共五十頁,創(chuàng)作于2022年6月分析下列程序的值 Private Sub Command1_Click() Dim M As Integer, N As Integer M = 15: N = 20 Call Value_Change(M,N) Print M, N End Sub Private Sub Value_Change(X As Integer, by value Y As Integer) X=X+20 Y=X+Y Print “X=“;X,”Y=“;Y End SubX=35 y=55M=35 N=20第三十一張,PPT共五十頁,創(chuàng)作于
20、2022年6月1520返回地址1000(地址)20MNXY100010021004100510033520返回地址1000(地址)55MNXY10001002100410051003第三十二張,PPT共五十頁,創(chuàng)作于2022年6月Private Sub Form_Click() Dim sum As Integer, i As Integer For i = 5 To 1 Step -1 sum = sum + fact(i) Next i Print sum=; sumEnd Sub編寫程序計(jì)算5!+4!+3!+2!+1!的值調(diào)用函數(shù),循環(huán)變量作為實(shí)參Public Function fact
21、(n As Integer) As Integer fact = 1 Do While n 0 fact = fact * n n = n - 1 LoopEnd Function按地址傳遞參數(shù)產(chǎn)生不良干擾的示例:(1)循環(huán)變量作為實(shí)參Why?如何修改?結(jié)果:120正確結(jié)果應(yīng)為:153第三十三張,PPT共五十頁,創(chuàng)作于2022年6月參數(shù)數(shù)據(jù)類型轉(zhuǎn)換的例子Private Sub Form_Click() Dim S as Single S=125.5 Call Convert(S),”12”+”.5”)End Sub如果為Call Convert(S),”125a”)呢?Private Sub
22、Convert(Inx As Integer,Sing As Single) Inx = Inx * 2 Sing = Sing + 23 Print “Inx+”;Inx,”sing=”;SingEnd Sub第三十四張,PPT共五十頁,創(chuàng)作于2022年6月Private Sub Form_Click() Dim v1 As Integer, v2 As Integer, v3 As Integer v1 = 2: v2 = 3: v3 = 4 Print v1 + v2 + v3 * f(v1, v2, v3)End SubPublic Function f(a As Integer, b
23、 As Integer, c As Integer) a = a + 10 b = b + 10 c = c + 10 f = a + b + cEnd Function調(diào)用函數(shù)語句,實(shí)參是傳地址的。實(shí)參變量又出現(xiàn)在表達(dá)式中結(jié)果是571,而非161。why?(2)實(shí)參出現(xiàn)在表達(dá)式中第三十五張,PPT共五十頁,創(chuàng)作于2022年6月 因?yàn)樵趐rint語句中,計(jì)算表達(dá)式時(shí),優(yōu)先執(zhí)行函數(shù)調(diào)用。調(diào)用結(jié)束時(shí)f=39,而v1,v2,v3的值也變了,不是2,3,4 而是 12,13,14所以結(jié)果是:12+13+14*39=571第三十六張,PPT共五十頁,創(chuàng)作于2022年6月Private Sub Form_
24、Click() Dim v1 As Integer, v2 As Integer, v3 As Integer v1 = 2: v2 = 3: v3 = 4 V4=v1 + v2 + v3 * f(v1, v2, v3) Print v4End Sub修改成賦值語句結(jié)果為161 因?yàn)閳?zhí)行賦值語句時(shí),計(jì)算右側(cè)表達(dá)式的值不是首先調(diào)用函數(shù),而是按從左到右的順序進(jìn)行的,即計(jì)算2+3+4*39第三十七張,PPT共五十頁,創(chuàng)作于2022年6月如果修改成: Private Sub Form_Click() Dim v1 As Integer, v2 As Integer, v3 As Integer v1
25、= 2: v2 = 3: v3 = 4 V4=v1 + v2 + v3 * f(v1, v2, v3)*1.0) Print v4End Sub這是一個(gè)非整型的()也叫實(shí)型表達(dá)式 結(jié)果又是571了,因?yàn)橛?jì)算實(shí)型表達(dá)式時(shí)優(yōu)先調(diào)用函數(shù)第三十八張,PPT共五十頁,創(chuàng)作于2022年6月 結(jié)論:函數(shù)調(diào)用的優(yōu)先級是不確定的,與諸多因素有關(guān)。編程時(shí)盡量不把按地址傳遞的實(shí)參變量放在函數(shù)調(diào)用的前面,可能會(huì)使算術(shù)表達(dá)式的值難以預(yù)料。第三十九張,PPT共五十頁,創(chuàng)作于2022年6月 形參數(shù)組只能是按地址傳遞的參數(shù)。 對應(yīng)實(shí)參必須也是數(shù)組且數(shù)據(jù)類型必須和形參數(shù)組的數(shù)據(jù)類型相一致。7.4.4 數(shù)組參數(shù)第四十張,PPT共
26、五十頁,創(chuàng)作于2022年6月對數(shù)組作形參作幾點(diǎn)說明: 1)如果形參數(shù)組的類型是變長字符串型,則對應(yīng)的實(shí)參數(shù)組的類型也必須是變長字符串型。第四十一張,PPT共五十頁,創(chuàng)作于2022年6月Private sub form_click() Dim array(5) as string * 8 Call changedim(array)End subPrivate sub changedim(a() as string) Dim i as integer Redim preserve a(7) For i =1 to 7 a(i)=i Next IEnd sub形參是變長數(shù)組 錯(cuò)誤:實(shí)參是定長數(shù)組第四
27、十二張,PPT共五十頁,創(chuàng)作于2022年6月Private sub form_click() Dim array(5) as string * 10 Call changedim(array)End subPrivate sub changedim(a() as string*8) Dim i as integer Redim preserve a(7) For i =1 to 7 a(i)=i Next IEnd sub形參是定長數(shù)組實(shí)參也是定長數(shù)組 2)如果形參數(shù)組的類型定長字符串型,則對應(yīng)的實(shí)參數(shù)組的類型也必須是定長字符串型,但長度可以不同。第四十三張,PPT共五十頁,創(chuàng)作于2022年6
28、月3)調(diào)用過程時(shí),只要把傳遞的數(shù)組名放在實(shí)參表中即可,數(shù)組名后面不跟圓括號。Private sub form_click() Dim array(5) as string * 8 Call changedim(array)End sub第四十四張,PPT共五十頁,創(chuàng)作于2022年6月4)在過程中不可以用dim語句對形參數(shù)組進(jìn)行聲明,否則將產(chǎn)生“重復(fù)聲明”的錯(cuò)誤 ,但是使用動(dòng)態(tài)數(shù)組時(shí),可以用redim語句改變形參數(shù)組的維界,重新定義數(shù)組的大小。當(dāng)控制返回調(diào)用程序時(shí),對應(yīng)參數(shù)的維界也跟著發(fā)生變化。第四十五張,PPT共五十頁,創(chuàng)作于2022年6月Private sub form_click() Dim array() as integer,i as integer Redim array(5) Print “調(diào)用前數(shù)組上界:”;ubound(array) Call changedim(array) P
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 滅火器的緊急逃生用法
- 概率統(tǒng)計(jì)算法復(fù)習(xí)題
- 屋面工程施工合同細(xì)節(jié)
- 違反工作紀(jì)律整改報(bào)告
- 2025年浙教新版九年級物理下冊階段測試試卷含答案
- 機(jī)器抵押合同(2篇)
- 更換廚房用品合同(2篇)
- 服務(wù)記錄協(xié)議書(2篇)
- 2025年蘇教新版八年級歷史下冊月考試卷
- 2025年粵教滬科版選修歷史上冊階段測試試卷
- 羅沙司他治療腎性貧血的療效與安全性評價(jià)演示稿件
- 農(nóng)村高中思想政治課時(shí)政教育研究的中期報(bào)告
- 環(huán)衛(wèi)清掃保潔、垃圾清運(yùn)及綠化服務(wù)投標(biāo)方案(技術(shù)標(biāo) )
- 醫(yī)院定崗定編方案文檔
- 4-熔化焊與熱切割作業(yè)基礎(chǔ)知識(一)
- 2023年200MW儲(chǔ)能電站儲(chǔ)能系統(tǒng)設(shè)計(jì)方案
- 個(gè)人安全與社會(huì)責(zé)任的基本知識概述
- 建筑裝飾工程計(jì)量與計(jì)價(jià)試題一及答案
- 簡易勞務(wù)合同電子版
- 明代文學(xué)緒論
- 體育賽事的策劃、組織與實(shí)施 體育賽事利益相關(guān)者
評論
0/150
提交評論