4 回答

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
1、標(biāo)識(shí)符不同。函數(shù)的標(biāo)識(shí)符為FUNCTION,過程為:PROCEDURE。
2、函數(shù)中一般不用變量形參,用函數(shù)名直接返回函數(shù)值;而過程如有返回值,則必須用變量形參返回。
3、過程無類型,不能給過程名賦值;函數(shù)有類型,最終要將函數(shù)值傳送給函數(shù)名。
4、函數(shù)在定義時(shí)一定要進(jìn)行函數(shù)的類型說明,過程則不進(jìn)行過程的類型說明。
5、調(diào)用方式不同。函數(shù)的調(diào)用出現(xiàn)在表達(dá)式中,過程調(diào)用,由獨(dú)立的過程調(diào)用語句來完成。
6、過程一般會(huì)被設(shè)計(jì)成求若干個(gè)運(yùn)算結(jié)果,完成一系列的數(shù)據(jù)處理,或與計(jì)算無關(guān)的各種操作;而函數(shù)往往只為了求得一個(gè)函數(shù)值

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
Function:函數(shù),可以帶返回值
語法:
Sub SubName(參數(shù)1, 參數(shù)2,...)
....
End Sub
Function FunctionName(參數(shù)1, 參數(shù)2,...)
...
FunctionName = 返回值
End Function
調(diào)用方法:
Sub直接用 SubName 參數(shù)1, 參數(shù)2,...
Function如果不要返回值用 FunctionName 參數(shù)1, 參數(shù)2,...
如果要返回值 Result = FunctionName(參數(shù)1, 參數(shù)2,...)
語法是這樣,這是對(duì)的
Sub SubName(參數(shù)1, 參數(shù)2,...)
....
End Sub
Function FunctionName(參數(shù)1, 參數(shù)2,...)
...
FunctionName = 返回值
End Function
調(diào)用時(shí):
sub 只能用:
SubName 參數(shù)1, 參數(shù)2,...
函數(shù)則:
變量=FunctionName (參數(shù)1, 參數(shù)2,...)
FunctionName 參數(shù)1, 參數(shù)2,...
上面均未講出根本:
SUB與FUNCTION均可有返回值。所以首先要講清返回方式:有兩種,過程或函數(shù)返回,即分配與過程或函數(shù)同名的返回變量地址。function分配,但sub不分配。VB用此方式加以區(qū)分,VC則用VOID聲明不用分配。即如p=aa()若aa()是sub則什么也得不到,還會(huì)報(bào)錯(cuò)。但函數(shù)則會(huì)得到數(shù)值。其次,參數(shù)返回,VB中缺省用地址傳參,即能返回。但聲明為BYVAL即值傳參,則不可返回,所以,不存在靈活性的差別。比如函數(shù)function bb(a,b), 調(diào)用時(shí)可以bb m, n也可以p=bb(m,n). 實(shí)際,如果確認(rèn)不會(huì)失敗,才能用SUB,否則,必須要用FUNCTION以確認(rèn)是否成功或取得返回值。所以編程,應(yīng)少用SUB,少用 SubName 參數(shù)1, 參數(shù)2,...的調(diào)用方式。
sub是過程不需要返回值,function是函數(shù),需要返回值,如下:
Function NameOfFunction(parameter1, parameter2)
'some code
NameOfFunction = return value
End Function

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
Function: 函數(shù)(有返回值且必須返回)
Procedure: 過程(可以無返回,也可以返回值或返回表)
Package: 包(相當(dāng)于一個(gè)容器,將邏輯上相關(guān)的函數(shù)、過程、變量、常量和游標(biāo)組合成一個(gè)更大的單位)
添加回答
舉報(bào)