VB學習中 之五 過程與函式

2021-03-31 08:56:59 字數 2876 閱讀 1470

子過程(sub)的定義

事件過程

窗體事件過程

private  sub form_事件名([引數列表])

[區域性變數和常數宣告]

語句塊end sub

說明:(1)窗體事件過程名由form_事件名組成,多文件窗體用mdiform_事件名。

(2)每個窗體事件過程名前都有乙個private的字首,表示該事件過程不能在它自己的窗體模組之外被呼叫。

(3)事件過程有無引數,完全由vb提供的具體事件本身決定,使用者不可以隨意新增。

控制項事件過程

private  sub 控制項名_事件名([引數列表])

[區域性變數和常數宣告]

語句塊end sub

說明:其中的控制項名必須與窗體中某控制項相匹配,否則vb將認為它是乙個通用過程。

通用過程

[ private | public ] [ static] sub 過程名([引數列表])

[區域性變數和常數宣告]  『用dim 或static宣告

語句塊[exit sub]

語句塊end sub

說明:(1)預設[ private | public ]時,系統預設為 public。

(2)static 表示過程中的區域性變數為「靜態」變數。

(3)過程名的命名規則與變數命名規則相同,在同乙個模組中,同一符號名不得既用作sub過程名,又用作function過程名。

(4)引數列表中的引數稱為形式引數,它可以是變數名或陣列名,只能是簡單變數,不能是常量、陣列元素、表示式;若有多個引數時,各引數之間用逗號分隔,形參沒有具體的值。vb的過程可以沒有引數,但一對圓括號不可以省略。不含引數的過程稱為無參過程。

形參格式為:[ byval ] 變數名[()] [as 資料型別]

說明:(1)變數名[()]:變數名為合法的vb變數名或陣列名,無括號表示變數,有括號表示陣列。

(2)byval :表明其後的形參是按值傳遞引數(傳值引數 passed by value),若預設或用byref,則表明引數是按位址傳遞的(傳址引數)或稱「引用」(passed by reference)。

(3)as  資料型別:預設表明該形參是變體型變數,若形參變數的型別宣告為string,則只能是不定長的。而在呼叫該過程時,對應的實在引數可以是定長的字串或字串陣列,若形參是陣列則無限制。

子過程(sub)的呼叫

(1)用call語句呼叫sub過程:call 過程名(實在參數列)。

(2)把過程名作為乙個語句來用:過程名 [實參1[,實參2……]]。

函式(function)過程的定義

[ private | public ] [ static] function 函式名([引數列表])[as 資料型別]

[區域性變數和常數宣告]  『用dim 或static宣告

[ 語句塊 ]

[ 函式名=表示式 ]

[ exit function]

語句塊[ 函式名=表示式 ]

end function

說明:(1)函式名的命名規則與變數命名規則相同;函式過程必須由函式名返回乙個值。

(2)如果函式體內沒有給函式名賦值,則返回對應型別的預設值,數值型返回0,字元型返回空字串。

(3)函式過程內部不得再定義sub過程或function過程。

函式(function)過程的呼叫

(1)呼叫窗體中的過程:從窗體模組的外部呼叫窗體中的公有過程,必須用窗體的名字作為呼叫字首。如:call  form1.examsub([實參表])

(2)呼叫標準模組中的過程:如果在應用程式中,過程名是唯一的,則呼叫時不必加模組名。如果有同名的,則在同一模組內呼叫時可以不加模組名,而在其他模組中呼叫時必須加模組名。

(3)類模組中的過程:呼叫類模組的公有過程時,要求用指向該類某一例項的變數修飾過程,即首先要宣告類的例項為物件變數,並以此變數作為過程名字首修飾詞,不可直接用類名作為字首修飾詞。如:在類模組class1中含有過程clssub,變數democlass是類class1的乙個例項,則呼叫clssub的方法是:

dim democlass as new class1

call democlass.clasub

引數的傳遞

(1)按值傳遞引數(定義時加byval):按值傳遞引數(passed by value)時,是將實參變數的值複製乙個到臨時儲存單元中,如果在呼叫過程中改變了形參的值,不會影響實參變數本身,即實參變數保持呼叫前的值不變。

(2)按位址傳遞引數(定義時沒有修飾詞或帶關鍵字byref):按位址傳遞引數時,把實參變數的位址傳送給被呼叫過程,形參和實參共用記憶體的同一位址。在被呼叫過程中,形參的值一旦改變,相應實參的值也跟著改變。如果實參是乙個常數或表示式,vb會按「傳值」方式來處理。

(3)陣列引數:vb允許把陣列作為形參出現在形參表中: 形參陣列名() [as 資料型別]

形引數組只能按位址傳遞引數,對應的實參也必須是陣列,且資料型別相同。呼叫過程時,把要傳遞的陣列名放在實參表中,陣列名後面不跟圓括號。在過程中不可以用dim語句對形引數組進行宣告,否則會產生「重複宣告」的錯誤。但在使用動態陣列時,可以用redim語句改變形引數組的維界,重新定義陣列的大小。

(4)物件引數:vb中可以向過程傳遞物件,在形參表中,把形參變數的型別宣告為「control」,可以向過程傳遞控制項;若宣告為「form」,則可向過程傳遞窗體。物件的傳遞只能按位址傳遞。

VB學習中 之四 陣列與結構

靜態一維陣列 dim 陣列名 下標 as 型別 說明 1 下標必須為常數,不可以為表示式或變數。2 下標下界最小為 32768,最大上界為32767。3 省略下界,其預設值為為0,一維陣列的大小為 上界 下界 1。靜態多維陣列 dim 陣列名 下標1 下標2 as 型別 說明 1 下標個數決定陣列的...

python學習之函式(三) 函式與過程

1.函式與過程的區別 有返回值的是函式,沒有返回值的是過程 函式 function 有返回值 過程 procedure 簡單特殊,沒有返回值 嚴格來說,python只有函式,沒有過程。沒有返回值的函式,預設有乙個返回值none 2.返回值 返回值可以是多種型別,也可以返回多個資料,可以用陣列打包返回...

NOIP學習之函式與過程抽象 84 簡訊計費

測試鏈結 總時間限制 1000ms 記憶體限制 65536kb 描述 用手機發簡訊,一條簡訊資費為0.1元,但限定一條簡訊的內容在70個字以內 包括70個字 如果你一次所傳送的簡訊超過了70個字,則會按照每70個字一條簡訊的限制把它分割成多條簡訊傳送。假設已經知道你當月所傳送的簡訊的字數,試統計一下...