工控隨筆_17_西門子_WinCC的VBS腳本_06_過程和函數

  和其餘語言同樣,vbs提供了過程和函數機制,經過函數和過程能夠優化代碼結構和實現代碼複用,html

減小代碼的編寫量。編程

 

1、代碼編程語言

  具體再也不多說,看實例代碼。函數

' vbs的函數和過程

'一、過程式編程是一大編程思想,就和後來的面向對象同樣,對於代碼的複用
'   和代碼的邏輯結構是具備非凡的意義的。
'二、如今的編程語言不管是腳本、解釋型語言、編譯型語言都具備函數和過程
'   的概念
'三、簡單的來講咱們能夠把函數或者過程當作一個黑盒子,給它原料(輸入參數)
'   他們就會生成產品(輸出)。 
'四、在語法上來看,函數和過程就是一段高度耦合的完成必定功能的代碼片斷,
'   就是一般說的代碼塊, 或者說具名代碼塊,函數名或者過程名就是這段代
'   碼的名稱
'五、函數返回值,過程不返回值, 可是不返回值不表明不產生輸出,這個須要注
'

Option Explicit


'vbs 過程
'一、經過 sub 關鍵字表示定義過程,sub關鍵字表示具名代碼塊的開始,
'   經過 end sub 來表示代碼塊的結束
'二、語法格式
'   Sub  Procedure_Name(argment 1, argment 2,.......)  
'       sub code block
'   end sub 
' 
' 下面爲中文描述  
'   Sun  過程名(參數1, 參數2,參數3,.........)
'       過程代碼塊
'   end sub

'定義簡單的過程
Sub GreetingWorld
    MsgBox "Hello world,This is my the very first subprocedure!"
End Sub 

'調用過程
GreetingWorld


'前面說過過程能夠接受參數,下面定義接受參數的過程
'須要注意的是,由於vbs只有一種數據類型variant,因此定義過程的時候
'無需定義參數的類型
Sub SayHellow(strName)
    MsgBox "Hellow, " & strName & " Nice to meet you!"
End Sub


'調用帶參數的過程
SayHellow("volcanol")

'過程調用,傳遞參數不須要用()
SayHellow "volcanol"



'vbs函數
'一、vbs函數經過關鍵字 function 來指定
'二、對於vbs函數來講,其與過程的最大區別就是函數返回值,其餘規則
'   同樣
'三、在一個區別就是,即便是調用不帶參數的函數,也必須有()表示這個是
'   函數
'四、函數的返回值,經過函數名返回,所以在函數內部須要將返回值賦值給
'   函數名, 這裏就至關於函數名是一個隱式的變量定義

'定義不帶參數的函數
Function fCycle()
    fCycle = 2 * 3.1415926 * 10
End Function 

Dim fRollCycle
fRollCycle = fCycle() 

MsgBox  "半徑爲10的圓周的周長爲: " & fRollCycle


'定義帶參數的函數
Function fSum(arg1,arg2)
    fSum = arg1 + arg2
End Function

'調用帶參數的函數
Dim nJackAge
Dim nMikeAge

nJackAge = 25
nMikeAge = 30

MsgBox "Jack and Mike's age sum is: " & fSum(nJackAge,nMikeAge)

'call語句
'在vbs中還有一個語句,用來調用過程,那就是call 語句
'對於函數和過程call語句的方式不同

'一、不帶參數的過程, call語句調用同樣
Call GreetingWorld
Call GreetingWorld()

'二、帶參數的過程
' 帶參數的過程調用必須傳遞參數

 '下面這一句不能正確執行
'Call SayHellow "Jesus"   

Call SayHellow("Jesus")

'三、不帶參數的函數
'這樣就不能將返回的值再次使用,因此沒有什麼意義
Call fCycle()

'四、帶參數的函數
'一樣沒什麼意義
Call fSum(10,30)

'Tips
'一、對於call語句,通常不要使用,兩個緣由,難打字,並且規則太複雜
'二、對於過程,就不用帶括號()調用,這樣通常一看就知道是過程
'三、對於函數,即使是不帶參數的函數調用,也用括號(),這樣一看就知道是函數調用


'Exit sub和Exit Function 語句
'一、有時候函數或過程執行到一半的時候由於已經獲得了想要的結果,這個時候若是再往下
'執行未完成的部分,就會耗費資源這個時候就能夠提早退出函數或過程
'二、Exit sub 語句退出過程
'三、Exit function 語句退出函數

'退出過程
Sub DisplaySum(lngArg1,lngArg2)
    If Not IsNumeric(lngArg1) Or Not IsNumeric(lngArg2) Then
        MsgBox "錯誤的數據類型,將退出執行過程"
        Exit Sub
    Else 
        MsgBox CLng(lngArg1) + CLng(lngArg2)
    End If
End Sub

DisplaySum "volcanol", "1"
DisplaySum "123","456" 

'退出函數
'退出函數與退出過程有一點不一樣的就是,在退出函數以前必須爲函數設置一個默認返回值
Function fFactorial(nNum)
    Dim nFactorial
    Dim nLoop
    
    '重點要注意這個地方的防護式編程
    If Not IsNumeric(nNum) Or Not VarType(nNum) = vbInteger  Then
        '由於階乘的值大於等於1,因此返回0能夠表示執行出錯,在使用這個
        '函數的時候,必須先檢查返回值是否爲0
        fFactorial = 0
        MsgBox "參數錯誤,將退出執行"
        Exit Function
    Else
        '必須注意,沒有初始化的變量其值 == 0
        nFactorial = 1
        For nLoop = 1 To CLng(nNum)
            nFactorial = nFactorial * nLoop
        Next
    End If
    fFactorial = nFactorial 
End Function

MsgBox fFactorial("volcanol")
MsgBox fFactorial(3.1415926)

MsgBox fFactorial(10)

  

 

2、Tipsoop

一、儘可能不要用CALL語句優化

二、若是在函數中使用了Exit Function函數,那麼必需要給函數一個替代值spa

 

--------------------------------------------------------------分割線---------------------------------------------------------------code

一、文章均爲我的原創,歡迎轉載,轉載請保留出處:https://www.cnblogs.com/volcanol/htm

二、獲取工控PLC、變頻器、HMI、計算機、Windows、Linux、嵌入式資料點擊:獲取資料
對象

三、若是您以爲文章對您有幫助可轉至頁面上半部分打賞,或移步:打賞 

四、或者在頁面右下角點推薦喲!!!

--------------------------------------------------------------分割線---------------------------------------------------------------

相關文章
相關標籤/搜索