美思 [VBScript] 程式設計教學:使用運算子 (Operator)

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

在程式設計中,運算子 (operator) 視為程式的基本指令,可用來執行基本的功能。運算子不能再拆分出更小的單位。VBScript 中有三種運算子:

  • 代數運算子 (arithmetic operator)
  • 關係連算子 (relational operator)
  • 邏輯運算子 (logic operator)

代數運算子 (Arithmetic Operator)

代數運算子 (arithmetic operator) 用來進行基本的四則運算。包括以下運算子:

  • 相加 +
  • 相減 -
  • 相乘 *
  • 相除 / (得小數)
  • 相除 \ (得整數)
  • 取餘數 Mod
  • 取指數 ^

以下是實例:

' Arithmetic operators
Assert 3 + 4 = 7, "It should be " & (3 + 4)
Assert 3 - 4 = -1, "It should be " & (3 - 4)
Assert 3 * 4 = 12, "It should be " & (3 * 4)
Assert 3 / 4 = 0.75, "It should be " & (3 / 4)
Assert 3 \ 4 = 0, "It should be " & (3 \ 4)
Assert 10 Mod 3 = 1, "It should be " & (10 Mod 3)
Assert 3 ^ 4 = 81, "It should be " & (3 ^ 4)

' Home-made assert for VBScript
Sub Assert( boolExpr, strOnFail )
    If Not boolExpr Then
        Err.Raise vbObjectError + 99999, , strOnFail
    End If
End Sub

讀者可以注意到我們在範例程式中自製斷言 (assertion)。這是因為 VBScript 沒有內建的斷言語句,使用者要自行製作。

傳統的程式設計教材會用印出終端機的方式來展示程式,但筆者較不推薦這種方式。印出終端機後仍要人工比對程式是否正確;相對來說,使用斷言可以直接從程式碼中讀出我們的意圖,而且可由電腦程式自動檢查。

關係運算子 (Relational Operator)

關係運算子 (relational operator) 用來檢查兩個值之間的大小關係。包括以下運算子:

  • 相等 =
  • 不相等 <>
  • 大於 >
  • 大於或等於 >=
  • 小於 <
  • 小於或等於 <=

我們用一個簡例來說明如何使用這些運算子:

' Relational operators.
Assert 3 + 4 > 5, "It should be larger"
Assert 3 + 4 >= 5, "It should be larger"
Assert 3 + 4 < 10, "It should be smaller"
Assert 3 + 4 <= 10, "It should be smaller"
Assert 3 + 4 = 7, "It should be equal"
Assert 3 + 4 <> 5, "It should not be equal"

' Home-made assert for VBScript
Sub Assert( boolExpr, strOnFail )
    If Not boolExpr Then
        Err.Raise vbObjectError + 99999, , strOnFail
    End If
End Sub

邏輯運算子 (logic operator)

邏輯運算子 (logic operator) 用來進行布林運算 (boolean algebra)。在程式設計中,布林運算用來組合多個條件句,形成複合條件。包括以下運算子:

  • And
  • Or
  • Not

注意 VBScript 的邏輯運算子是用文字而非符號。這是因為早期的 Algol 家族語言 (Algol, Pascal, Basic) 都是使用文字做為保留字。

以下是實例:

' Logic operator - And.
Assert ((True And True) = True), "It should be true"
Assert ((True And False) = False), "It should be false"
Assert ((False And True) = False), "It should be false"
Assert ((False And False) = False), "It should be false"

' Logic operator - Or
Assert ((True Or True) = True), "It should be true"
Assert ((True Or False) = True), "It should be true"
Assert ((False Or True) = True), "It should be true"
Assert ((False Or False) = False), "It should be false"

' Logic operator - Not
Assert ((Not True) = False), "It should be false"
Assert ((Not False) = True), "It should be true"

' Home-made assert for VBScript
Sub Assert( boolExpr, strOnFail )
    If Not boolExpr Then
        Err.Raise vbObjectError + 99999, , strOnFail
    End If
End Sub

在本範例中,我們用中括號來調整運算子優先順序。

關於作者

身為資訊領域碩士,美思認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

美思喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,美思將所學寫成文章,放在這個網站上和大家分享。