




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、關(guān)于過程調(diào)用與參數(shù)傳遞第一張,PPT共五十頁,創(chuàng)作于2022年6月知識要點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月 事件過程由一個發(fā)生在Visual Basic中的事件來自動調(diào)用或者由同一模塊中的其它過程顯式調(diào)用。 請看示例。p1317.3.1 事件過程的調(diào)用第四張,PPT共五十頁,創(chuàng)作于2022
2、年6月 Sub過程和function過程必須在事件過程或其他過程中顯式調(diào)用,否則過程代碼就永遠不會被執(zhí)行。 在調(diào)用程序時,程序執(zhí)行到調(diào)用某通用過程的語句后,系統(tǒng)就會將控制轉(zhuǎn)移到被調(diào)用的過程。在被調(diào)用的過程中,從第一條sub或function語句開始,依次執(zhí)行其中的所有語句,當執(zhí)行到end sub或end function語句后,返回到主調(diào)程序的斷點,并從斷點處繼續(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ù)、類型和順序,應該與被調(diào)用過程的形式參數(shù)相匹配,有多個參數(shù)時,用逗號分隔。如果被調(diào)用的過程是一個無參過程,則括號可以省略.第七張,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等價于:第九張,PPT共五十頁,創(chuàng)作于2022年6月例7-2編寫一個找出任意一個正整數(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)把過程名作為一個語句來用語法:過程名 實參1,實參2它與(1)的不同點是:去掉了關(guān)鍵字call和實參列表的括號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月課堂練習2:編寫一個實現(xiàn)兩數(shù)交換的程序,要求程序中定義一個交換兩數(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ù)方法相同。即在表達式中寫出它的名稱和相應的實在參數(shù): Function 過程名(實在參數(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ù)名當作一個語句使用。)7.3.3 調(diào)用Function過程第十四張,PPT共五十頁,創(chuàng)作于2022年6月例7-3 編寫程序,求兩個正整數(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(實參表) 2調(diào)用標準模塊中的公有過程 Call CommonSub (實在參數(shù)) 或 Call Module2.CommonSub(實參表) 7.3.4 調(diào)用其它模塊中的公有過程(了解)第十六張,PPT共五十頁,創(chuàng)作于2
11、022年6月課堂練習在調(diào)用過程中,下述說明中正確的是( )A)只能使用Call語句調(diào)用Sub過程B)調(diào)用Sub過程時,實在參數(shù)必須用括號括起來C)在表達式中調(diào)用Function過程時, 可以不用括號把實在參數(shù)括起來D)Function過程也可用Call語句調(diào)用第十七張,PPT共五十頁,創(chuàng)作于2022年6月課堂練習在Visual Basic中,以下說法正確的是( )A)過程的定義可以嵌套,但過程的調(diào)用不能嵌套B)過程的定義不可以嵌套,但過程的調(diào)用能嵌套C)過程的定義和過程的調(diào)用均可以嵌套D)過程的定義和過程的調(diào)用均不可以嵌套第十八張,PPT共五十頁,創(chuàng)作于2022年6月課堂練習在語句Public
12、 Sub Sort(I As Integer)中,I是一個按( )傳遞的參數(shù)A)地址B)值C)變量D)常量第十九張,PPT共五十頁,創(chuàng)作于2022年6月7.4 參數(shù)的傳遞(重點、難點)7.4.1 形參與實參7.4.2 按值傳遞參數(shù)7.4.3 按地址傳遞參數(shù)7.4.4 數(shù)組參數(shù)7.4.5 對象參數(shù)第二十張,PPT共五十頁,創(chuàng)作于2022年6月 在調(diào)用一個有參數(shù)的過程時,首先進行的是“形實結(jié)合”,即按傳值傳遞或按地址傳遞方式,實現(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實參形參7.4.1 形參與實參第二十一張,PPT共五十頁,創(chuàng)作于2022年6月1. 形參 出現(xiàn)在Sub過程和Function過程的形參表中的變量名、數(shù)組名稱之為形式參數(shù),過程被調(diào)用之前,并未為其分配內(nèi)存,其作用是用來接收傳送給子過程的數(shù)據(jù) 形參可以是: 1) 除定長字符串變量之外的合法變量名; 2) 后面跟有左、右圓括號(注意:不
14、含下標)的數(shù)組名。 第二十二張,PPT共五十頁,創(chuàng)作于2022年6月2. 實參 實際參數(shù)是指包含在過程調(diào)用的實參表中的變量,數(shù)組等。其作用是將它們的數(shù)據(jù)(數(shù)值或地址)傳送給Sub或Function過程與其對應的形參變量。 實參可以是常量、表達式、有效的變量名、數(shù)組名組成。如call test(x2,true,a,st)算術(shù)表達式第二十三張,PPT共五十頁,創(chuàng)作于2022年6月 參數(shù)傳遞是按對應“位置”結(jié)合而不是按名字結(jié)合,即第一個實參與第一形參結(jié)合,第二個實參與第二個形參結(jié)合,依此類推。3、參數(shù)傳遞(虛實結(jié)合) 參數(shù)傳遞指主調(diào)過程的實參(調(diào)用時已有確定值和內(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實參形參第二十五
16、張,PPT共五十頁,創(chuàng)作于2022年6月 說明:(1)形參表和實參表中的對應變量名可以不必相同。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ù)組元素、對象數(shù)組 數(shù)組(2)形參與實參的個數(shù)必須相同,對應位置的參數(shù)類型必須一致。對應關(guān)系如下表第二十七張,PPT共五十頁,創(chuàng)作于2022年6月
17、按值傳遞時,系統(tǒng)分配臨時的變量單元給形參。系統(tǒng)僅把實參的值復制一份,然后把這個副本再傳給形參。 被調(diào)過程執(zhí)行時,對形參的任何改變,都不會影響實參變量。結(jié)論:按值傳遞,形參變,相應的實參不變。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ù),形參變,相應的實參也跟著變7.4.3 按地址傳遞參數(shù) 按地址傳遞參數(shù)是把實參變量的地址傳給形參,即系統(tǒng)并不分配臨時的變量單元給形參,而是形參與實參共用同一存儲單元,因此,被調(diào)過程執(zhí)行時,形參變量的任一變化,實參也相應改變。 按地址傳遞參數(shù)可節(jié)省內(nèi)存,執(zhí)行效率高,但也
19、可能對程序運行產(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編寫程序計算5!+4!+3!+2!+1!的值調(diào)用函數(shù),循環(huán)變量作為實參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)變量作為實參Why?如何修改?結(jié)果:120正確結(jié)果應為: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ù)語句,實參是傳地址的。實參變量又出現(xiàn)在表達式中結(jié)果是571,而非161。why?(2)實參出現(xiàn)在表達式中第三十五張,PPT共五十頁,創(chuàng)作于2022年6月 因為在print語句中,計算表達式時,優(yōu)先執(zhí)行函數(shù)調(diào)用。調(diào)用結(jié)束時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 因為執(zhí)行賦值語句時,計算右側(cè)表達式的值不是首先調(diào)用函數(shù),而是按從左到右的順序進行的,即計算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這是一個非整型的()也叫實型表達式 結(jié)果又是571了,因為計算實型表達式時優(yōu)先調(diào)用函數(shù)第三十八張,PPT共五十頁,創(chuàng)作于2022年6月 結(jié)論:函數(shù)調(diào)用的優(yōu)先級是不確定的,與諸多因素有關(guān)。編程時盡量不把按地址傳遞的實參變量放在函數(shù)調(diào)用的前面,可能會使算術(shù)表達式的值難以預料。第三十九張,PPT共五十頁,創(chuàng)作于2022年6月 形參數(shù)組只能是按地址傳遞的參數(shù)。 對應實參必須也是數(shù)組且數(shù)據(jù)類型必須和形參數(shù)組的數(shù)據(jù)類型相一致。7.4.4 數(shù)組參數(shù)第四十張,PPT共
26、五十頁,創(chuàng)作于2022年6月對數(shù)組作形參作幾點說明: 1)如果形參數(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ù)組 錯誤:實參是定長數(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ù)組 2)如果形參數(shù)組的類型定長字符串型,則對應的實參數(shù)組的類型也必須是定長字符串型,但長度可以不同。第四十三張,PPT共五十頁,創(chuàng)作于2022年6
28、月3)調(diào)用過程時,只要把傳遞的數(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ù)組進行聲明,否則將產(chǎn)生“重復聲明”的錯誤 ,但是使用動態(tài)數(shù)組時,可以用redim語句改變形參數(shù)組的維界,重新定義數(shù)組的大小。當控制返回調(diào)用程序時,對應參數(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育技術(shù)在行政決策支持系統(tǒng)中的應用
- 心理輔導在教育中的關(guān)鍵作用
- 抖音商戶編導短視頻開頭吸引力制度
- 全球石油市場供需格局調(diào)整與價格走勢對能源市場供需預測技術(shù)的應用研究報告
- 浙江省寧波市鎮(zhèn)海區(qū)仁愛中學2024-2025學年數(shù)學七年級第一學期期末質(zhì)量檢測試題含解析
- 貴州黔南經(jīng)濟學院《可摘局部義齒工藝技術(shù)》2023-2024學年第一學期期末試卷
- 浙江杭州上城區(qū)2025屆化學九年級第一學期期末達標檢測試題含解析
- 2024-2025學年陜西省咸陽市秦嶺中學數(shù)學七年級第一學期期末達標檢測模擬試題含解析
- 公路客運行業(yè)2025年轉(zhuǎn)型升級與智能停車場建設(shè)研究報告
- 公路貨運行業(yè)數(shù)字化轉(zhuǎn)型效率提升的關(guān)鍵瓶頸與突破路徑報告
- 2023貴州畢節(jié)市納雍縣人民醫(yī)院招聘第一批編外專業(yè)技術(shù)人員30人考試備考題庫及答案解析
- 兒童疼痛與舒適度評估量表
- 2020年上海市中考語數(shù)英物化五科試卷及答案
- 新華書店讀者問卷調(diào)查表
- GB/T 20946-2007起重用短環(huán)鏈驗收總則
- GB/T 18391.3-2009信息技術(shù)元數(shù)據(jù)注冊系統(tǒng)(MDR)第3部分:注冊系統(tǒng)元模型與基本屬性
- GB/T 10610-2009產(chǎn)品幾何技術(shù)規(guī)范(GPS)表面結(jié)構(gòu)輪廓法評定表面結(jié)構(gòu)的規(guī)則和方法
- 濟源幼兒園等級及管理辦法
- 房地產(chǎn)開發(fā)全流程培訓講義課件
- DB44-T 2163-2019山地自行車賽場服務 基本要求-(高清現(xiàn)行)
- 云南省特種設(shè)備檢驗檢測收費標準
評論
0/150
提交評論