模塊3--Visual-Basic的過程_第1頁
模塊3--Visual-Basic的過程_第2頁
模塊3--Visual-Basic的過程_第3頁
模塊3--Visual-Basic的過程_第4頁
模塊3--Visual-Basic的過程_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、模塊3 Visual Basic的過程任務1 過程的定義與調用 任務2 參數傳送返回任務1 過程的定義與調用 3. 1. 1 過程的定義 1.利用“添加過程”對話框定義 打開窗體或模塊的代碼窗口,選擇“工具”菜單中的“添加過程”命令,即可打開“添加過程”對話框,然后按對話框中的提示輸入相應內容即可。在“名稱”文本框內輸入待定義過程的名稱,在“類型”選項組中選中“子程序”單選按鈕。要定義一個標準模塊級或窗體級的局部過程,則選中“范圍”選項組中的“私有的”單選按鈕,然后單擊“確定”按鈕,則可建立一個子過程的模板,再編寫所需的代碼。可以根據需要選中“所有本地變量為靜態變量”復選框。下一頁返回任務1

2、過程的定義與調用 2.直接在代碼窗口定義 進入代碼窗口后,在左側顯示對象名的下拉列表框中選擇“(通用)”,另外,在右側顯示過程的下拉列表框中選擇“(聲明)”,然后輸入Sub及子程序名即可。系統會自動加上End Sub與子程序后的一對括號(),此時,即可輸入子程序語句了。 格式: Private | Public Static Sub() Exit Sub End Sub 上一頁下一頁返回任務1 過程的定義與調用 其中: Public | Private:表示過程是“公用”或“私用”。Public過程可在整個程序范圍內被調用,但必須指明該子過程所在的對象(如在Form 1中定義了Sub1,在Fo

3、rm2中想調用時,應該用Call Form1. Sub1,而Private過程只能在本窗體或模塊中被調用。 Static :表示過程中的局部變量是靜態變量,在過程被調用后,其值仍然被保留。 ():格式為ByVal | Bef As ByVal:表示參數為值傳遞方式,實參的值不隨形參值的變化而變化。 Bef:表示參數為地址傳遞方式,實參的值隨形參值的改變而改變。該項為默認項。參數:可以是變量名或數組名,當為數組名時,形參和實參在參數聲明時應省略其維數,但括號 不能省略。多項時,中間用逗號隔開。 Exit Sub :退出過程。上一頁下一頁返回任務1 過程的定義與調用例如:Private Sub c

4、p (a As Integer , b As Integer)Ifa=0 ThenExit SubEnd If c1=a+b c2=a-b Print c1= ;c1; c2= ;c2End Sub上一頁下一頁返回任務1 過程的定義與調用 3. 1. 2過程的調用 1.使用can語句調用 格式:Call過程名(實參列表) 其中:實參的個數,數據類型都應與被調用過程的形參一一對應。如無參數,可以省略()。例如: Private Sub Command1 Click( ) str1$=“輸入對活框” va=InputBox( va= ,str1$) vb=InputBox(vb= ,str1$)

5、Call cp( va,vb) End Sub 此時,將輸入的值(va,vb)傳遞給形參a,b,然后在過程中計算。如果a =0,則退出該過程不作任何處理。上一頁下一頁返回任務1 過程的定義與調用 2.直接使用過程名調用 格式:過程名實參,實參 即:cp va , vb 過程中的代碼通常需要某些有關程序執行狀態的信息才能完成其工作。信息包括在調用過程時傳遞到過程內的變量。當將變量傳遞到過程時,稱變量為參數。上一頁返回任務2 參數傳送 3. 2. 1形式參數和實際參數 過程的參數分為形參和實參兩種。形參出現在過程定義中,在整個過程內都可以使用,離開該過程則不能使用。實參出現在主調過程中,進入被調過

6、程后,實參變量也不能使用。形參和實參的功能是進行數據傳送。在函數調用時,主調過程把實參的值傳送給被調過程的形參,從而實現主調過程向被調過程的數據傳送。下一頁返回任務2 參數傳送 過程的形參和實參具有以下特點。 (1)形參只在過程內部有效,過程調用結束返回主調過程后則不能再使用該形參變量。一般情況下,實參在過程內部無效,而在主調過程中有效。 (2)實參可以是常量、變量和表達式等,在進行過程調用時,它們應該具有確定的值,以便把這些值傳送給形參。 (3)實參和形參在數量上、類型上和順序上要保持一致,防止對應錯誤。上一頁下一頁返回任務2 參數傳送下面舉例說明參數的傳遞過程,假如定義過程的代碼為:Sub

7、add (a As Long,b As Long) Dim c As Long c=a*a + b*b Print cEnd Sub調用函數的代碼為:Dim x As Long,y As Longx=5v=10Call add(5,6)程序中調用add過程時,將需要準備兩個變量x和J作為實參,目的是通過調用add,使變量x和Y的數值傳遞到過程add中去進行計算,各個變量的相互關系可用圖3一1來描述。上一頁下一頁返回任務2 參數傳送 3. 2. 2按值傳遞參數 按值傳遞參數時,傳遞的只是變量的副本。如果在過程中改變了這個形參的值,則所進行的變動只影響副本而不會影響實參變量本身。可使用ByVal關

8、鍵字指出參數是按值來傳遞的,例如: PrivateSub Form Click() Dim x As Long,y As Long,z As Long x=5:y,=10:z=15 add1 x,v,z Print z 因為是按值傳遞,z的值并沒有發生改變,保持15 End Sub 形參c是按值傳遞 Subadd1(a As Long,b As Long,ByVal c As Long) c=a*a + b*b End Sub add1過程的功能與add過程相似,只不過add1中形參c是按值傳遞的。上一頁下一頁返回任務2 參數傳送 3. 2. 3按地址傳遞參數 按地址傳遞參數使過程用變量的內存

9、地址去訪問實參變量的內容。結果將實參變量傳遞給過程時,通過調用過程改變實參變量的值。使用ByRef關鍵字指出參數是按地址來傳遞的,在VB中參數傳遞默認是按地址傳遞的,例如: PrivateSub Form Click() Dim x As Long,y As Long,z As Long x=5:y,=10:z=15 add1 x,v,z Print z 因為是地址傳遞的,z的值變為125 End Sub 形參c是地址傳遞 Subadd1(a As Long,h As Long,ByRef c As Long) c=a*a +b*b End Sub上一頁下一頁返回任務2 參數傳送 add2的過

10、程跟add 1的區別就在于把形參c前面的ByVal修改成了ByRel,結果在Form_ Click事件過程中Print語句顯示的結果就完全不同了。 VB中默認的是按地址傳遞參數,如果某形參是按地址傳遞參數,可以省略ByRef關鍵字。通常情況下,一個過程都有一個按地址傳遞參數,用以返回執行后的結果。即使形參指定是按地址傳遞參數,但當實參是一個表達式時,此時參數傳遞變成按值傳遞參數。例如,一個窗體上只有一個命令按鈕Command 1 ,該窗體上設計如下事件過程:上一頁下一頁返回任務2 參數傳送Private Sub Command1 Click()Dim x As Integerx=10Call

11、proc (x)Print xEnd SubPrivate Sub proc( ByRef a As Integer) Sub過程a=a+1Print aEnd Sub上一頁下一頁返回任務2 參數傳送 在運行窗體時,單擊該命令按鈕,在窗體上輸出的值分別為11和10。因為盡管pros的形參a是按地址傳遞參數,但調用它的實參為“(x)”,是一個表達式,所以在調用pros后不會改變實參x的值。 所以,當一個過程的參數是按地址傳遞的,而某次調用不會進行地址傳遞,可以將實參變量用括號括起來,變為一個表達式,這樣調用過程時改為按值傳遞參數。上一頁下一頁返回任務2 參數傳送 3. 2. 4傳遞一個數組 在vB中允許參數是數組,數組只能通過傳地址方式進行傳遞。在傳遞數組時還要注意以下事項。 (1)在實參列表和形參列表中放入數組名,忽略維數的定義,但圓括號不能省。 (2)如果被調過程不知道實參數組的上下界,可用LBound和UBound函數確定實參數組的下界和上界。上一頁下一頁返回任務2 參數傳送例如,以下過程用于求形參一維數組a的所有元素之和。Private Sub comparray(a()As Integer,ByRef s A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論