ตัวดำเนินการ

15 September 2016

ตัวดำเนินการ ใช้สำหรับจัดการกับตัวแปรและค่าคงที่ ยกตัวอย่างเช่น การกำหนดค่า การเปรียบเทียบข้อมูล ตัวดำเนินการในภาษา Visual Basic นั้นมีหลายรูปแบบ

นี่เป็นตัวดำเนินการในภาษา Visual Basic ที่คุณจะต้องทราบ

  • Assignment operator
  • Arithmetic operators
  • Compound assignment
  • Comparison Operators
  • Logical operators
  • Bitwise operators
  • String Concatenation Operator

Assignment operator

ตัวดำเนินการกำหนดค่า (assignment operator) นั้นใช้เครื่องหมายเท่ากับ = มันใช้สำหรับกำหนดค่าให้กับตัวแปรหรือค่าคงที่

Dim a As Integer = 10
Dim b As Integer
Dim c As Integer

b = 3
c = b + a

Dim bool As Boolean = True

ในตัวอย่าง เป็นการใช้ตัวดำเนินการในการกำหนดค่าให้กับตัวแปร โดยตัวดำเนินการกำหนดค่านั้นจะมี operand 2 ตัว โดยที่ expression ทางด้านขวาจะกำหนดค่าให้ทางด้านซ้าย ค่าที่กำหนดเป็นได้ทั้ง literal constant และในรูปแบบของ expression เช่น b + a

Arithmetic operators

ตัวดำเนินการคณิตศาตร์ ใช้เพื่อการกระทำทางคณิตศาสตร์ของตัวแปรและค่าคงที่เพื่อให้ได้ค่าใหม่ เช่น การบวกเลข และการลบเลข เป็นต้น

ต่อไปนี้เป็นตารางแสดงตัวดำเนินการทางคณิตศาสตร์ในภาษา Visual Basic

SymbolNameExample
+Additionc = a + b
-Subtractionc = a - b
*Multiplicationc = a * b
/Divisionc = a / b
\Division no fractionc = a \ b
^Squarec = a ^ b
ModModuloc = a Mod b

ตัวดำเนินการ 4 ตัวแรกคุณคงจะคุ้นเคยอยู่แล้ว มันคือตัวดำเนินการพื้นฐานในวิชาคณิตศาสตร์ ในการเขียนโปรแกรมภาษา Visual Basic จะมีตัวดำเนินการเพิ่มอีกสองตัวคือ การยกกำลัง (^) และ modulo (มอดดูโล) เป็นตัวดำเนินการที่ใช้ในการหารเอาเศษ

ต่อไปมาดูตัวอย่างการใช้ตัวดำเนินการทางคณิตศาสตร์ในภาษา Visual Basic

Module ArithmeticOperators

    Sub Main()

        Dim a As Integer = 5
        Dim b As Integer = 3

        Console.WriteLine("a + b = " & (a + b))
        Console.WriteLine("a - b = " & (a - b))
        Console.WriteLine("a * b = " & (a * b))
        Console.WriteLine("a / b = " & (a / b))
        Console.WriteLine("a \ b = " & (a \ b))
        Console.WriteLine("a ^ b = " & (a ^ b))
        Console.WriteLine("a Mod b = " & (a Mod b))

    End Sub

End Module

ในตัวอย่าง เราได้ประกาศตัวแปร a และตัวแปร b และกำหนดค่าให้กับมัน ต่อมาเราได้ใช้่ตัวดำเนินการทางคณิตศาสตร์แบบต่างๆ กับตัวแปรทั้งสองและแสดงผลออกทางหน้าจอ

a + b = 8
a - b = 2
a * b = 15
a / b = 1.66666666666667
a \ b = 1
a ^ b = 125
a Mod b = 2

และนี่เป็นผลลัพธ์ของโปรแกรม

ในภาษา Visual Basic เรามีตัวดำเนินการหารสองแบบคือ / คือการหารแบบปกติซึ่งจะได้เศษทศนิยมของการหารด้วย และ \ คือการหารที่จะได้ผลหารเป็น integer โดยตัดเศษทศนิยมทั้งหมดทิ้งไป

ในตัวดำเนินการยกกำลัง 5 ^ 3 หมายถึงนำ 5 มาคูณกัน 3 ครั้งซึ่งจะได้คำตอบเป็น 125 และสำหรับตัวดำเนินการมอดดูโล a Mod b ได้คำตอบเป็น 2 นั้นเป็นเพราะว่าตัวดำเนินการมอดดูโลเป็นการหารเอาเศษ ซึ่ง 5 หารด้วย 3 จะได้คำตอบเป็น 1 และมีเศษ 2

Compound assignment

Compound assignment เป็นการรวมของตัวดำเนินการใดๆ กับตัวดำเนินการกำหนดค่า (=) ที่ใช้สำหรับอัพเดทค่าให้กับตัวแปรโดยอ้างอิงจากค่าเดิมที่มีอยู่ เช่น การบวกเลขเพิ่มเข้าไปจากค่าเดิม หรือกล่าวอีกนัยหนึ่ง มันสามารถเป็นรูปแบบย่อในการใช้ตัวดำเนินการทางคณิตศาสตร์

OperatorExampleEquivalent to
+=a += 3a = a + 3
-=a -= 3a = a - 3
*=a *= 3a = a * 3
/=a /= 3a = a / 3
\=a \= 3a = a \ 3
^=a ^= 3a = a ^ 3
<<=a <<= 3a = a << 3
>>=a >>= 3a = a >> 3

ในตารางเป็นตัวดำเนินการแบบต่างๆ และนี่เป็นตัวอย่างของโปรแกรมที่ใช้งานตัวดำเนินการ compound assignment

Module CompoundAssignment

    Sub Main()

        Dim a As Integer = 10

        Console.WriteLine("a = " & a)
        a += 10
        Console.WriteLine("a = " & a)
        a += 10
        Console.WriteLine("a = " & a)

        Dim b As Double = 8.5
        Console.WriteLine("b = " & b)
        b -= 0.5
        Console.WriteLine("b = " & b)
        b -= 0.5
        Console.WriteLine("b = " & b)

    End Sub

End Module

ในตัวอย่าง โปรแกรมของเราทำการเพิ่มค่า a จากการเริ่มต้นของมันทีละ 10 โดยที่เราไม่จำเป็นต้องเขียนในรูปแบบเต็ม เช่น a = a + 10 ทำให้การเขียนโปรแกรมสะดวกมากขึ้น และต่อมาเราทำการลดค่าของ b ลงทีละ 0.5 โดยตัวดำเนินการ -=

a = 10
a = 20
a = 30
b = 8.5
b = 8
b = 7.5

นี่เป็นผลลัพธ์ของโปรแกรมในการใช้ตัวดำเนินการ compound assignment

Comparison Operators

ตัวดำเนินการเปรีบเทียบ (comparison operators) คือตัวดำเนินการที่ใช้สำหรับเปรียบเทียบตัวแปรหรือค่าคงที่สองตัว ซึ่งจะได้ผลลัพธ์เป็น boolean คือ True หรือ False เท่านั้น มันมักจะใช้กับคำสั่งควบคุมหรือคำสั่งวนซ้ำเพื่อควบคุมการทำงานของโปรแกรม

นี่เป็นตารางแสดงตัวดำเนินการเปรีบเทียบในภาษา Visual Basic

OperatorExampleResult
=a = bTrue if a equal to b, otherwise False
<>a <> bTrue if a not equal to b, otherwise False
<a < bTrue if a less than b, otherwise False
<=a <= bTrue if a less than or equal to b, otherwise False
>a > bTrue if a greater than b, otherwise False
>=a >= bTrue if a greater than or equal to b, otherwise False

ต่อไปมาดูตัวอย่างการใช้งานดำเนินการเปรีบเทียบในรูปแบบต่างๆ

Module ComparisonOperators

    Sub Main()

        Dim result As Boolean = 3 < 4
        Console.WriteLine("3 < 4 is " & result)

        Dim result2 As Boolean = (10 = 5)
        Console.WriteLine("10 = 5 is " & result2)

        ' Using with the If statement
        Const ADMIN_NAME As String = "MATEO"
        Dim name = "DANNY"

        If (name <> ADMIN_NAME) Then
            Console.WriteLine("You are not an admin.")
        End If

    End Sub

End Module

ในตัวอย่าง เป็นโปรแกรมในการใช้ตัวดำเนินการเปรียบเทียบ โดยในสองตัวแปรแรก result และ result2 เราประกาศค่าเป็น boolean เพราะว่าผลลัพธ์จากตัวดำเนินการเปรียบเทียบนั้นจะเป็น boolean เสมอ เราเรียกผลลัพธ์ที่ได้จากตัวดำเนินการเปรียบเทียบว่า expression

ต่อมาเราใช้ตัวดำเนินการเปรียบเทียบกับคำสั่งเงื่อนไข If คุณจะได้เรียนภายหลัง โปรแกรมจะทำงานในบล็อคของคำสั่ง If ถ้าหาก expression เป็นจริง นั่นหมายถึง ถ้าค่าของ name ไม่เท่ากับ ADMIN_NAME เราจะแสดงข้อความบอกว่า "You are not an admin."

3 < 4 is True
10 = 5 is False
You are not an admin.

และนี่เป็นผลลัพธ์ของโปรแกรม

Logical operators

ตัวดำเนินการตรรกศาสตร์ (logical operators) ใช้สำหรับประเมิน expression ย่อยที่เกิดจากตัวดำเนินการเปรียบเทียบสอง expression และจะได้ผลลัพธ์เป็น boolean expression มันใช้ในกรณีที่โปรแกรมมีมากกว่าหนึ่งเงื่อนไข หรือการสร้างเงื่อนไขที่ซับซ้อนขึ้นกว่าเดิม

ต่อไปนี้เป็นตารางแสดงตัวดำเนินการตรรกศาตร์ในภาษา Visual Basic

OperatorExampleDescription
NotNot aInvert True to False, False to True
Anda And bTrue if both a and b are true, False otherwise
Ora or bTrue if at least one a or b is true, False otherwise
Xora Xor bTrue if a and b different, False otherwise
AndAlsoa AndAlso bTrue if both a and b are true, False otherwise
OrElsea OrElse bTrue if at least one a or b is true, False otherwise

ในภาษา Visual Basic มีตัวดำเนินการตรรกศาสตร์ทั้งสิ้น 6 แบบ มาดูตัวอย่าง

Module LogicalOperators

    Sub Main()

        ' Using not operator
        Dim isProgrammer As Boolean = True
        Console.WriteLine("Are you a programmer? " & Not isProgrammer)

        ' Using And operator
        Dim username As String = "superadmin"
        Dim password As String = "12345678"
        If username = "superadmin" And password = "12345678" Then
            Console.WriteLine("Username and password is correct.")
        Else
            Console.WriteLine("Username or password is not correct.")
        End If

        ' Using Or operator
        Dim money As Integer = 5
        Dim age As Integer = 18
        If money > 20 Or age > 13 Then
            Console.WriteLine("You can watch this movie.")
        Else
            Console.WriteLine("You can not watch this movie.")
        End If

        ' Using Xor operator
        Console.WriteLine("True Xor True = " & (True Xor True))
        Console.WriteLine("False Xor False = " & (False Xor False))
        Console.WriteLine("True Xor True = " & (True Xor False))

    End Sub

End Module

ในตัวอย่าง เป็นการใช้ตัวดำเนินการแบบต่างๆ สำหรับตัวดำเนินการ Not นั้นจะทำการกลับค่า expression เป็นค่าที่ตรงกันข้ามคือจาก True เป็น False และจาก False เป็น True ในคำสั่ง Not isProgrammer นั้นจะกลับค่าในตัวแปรให้เป็นตรงข้ามซึ่งก็คือ False

If username = "superadmin" And password = "12345678" Then

ต่อมาเป็นการใช้ตัวดำเนินการ And ในเงื่อนไขของคำสั่ง If นั่นคือทั้ง username และ passwordต้องมีค่าเท่ากับที่ใช้ในตัวดำเนินการเปรียบเทียบ โปรแกรมจึงจะทำในบล็อคคำสั่งของ If

If money > 20 Or age > 13 Then

ต่อมาเป็นการใช้ตัวดำเนินการ And ในเงื่อนไขของคำสั่ง If ต้องมีอย่างน้อยหนึ่งตัวที่ทำให้ได้ expression ที่เป็นจริง นั่นคือหาก money มากกว่า 20 หรือ age มากกว่า โปรแกรมจะบอกว่าคุณสามารถดูภาพยนตร์เรื่องนี้ได้

สุดท้ายเป็นการใช้ตัวดำเนินการ Xor โดยตัวดำเนินการนี้จะได้ผลลัพธ์เป็น True ถ้าหาก expression ย่อยต่างกัน และให้ผลลัพธ์ False ถ้าหากเหมือนกัน

ยังมีตัวดำเนินการอีกสองตัวคือ AndAlso และ OrElse เป็นตัวดำเนินการอีกประเภทหนึ่งของ And และ Or ซึ่งจะทำงานได้เร็วกว่า ในกรณีที่มี expression เรียงต่อกันหลายตัว ยกตัวอย่างเช่น

If expression1 AndAlso expression2 AndAlso expression2... Then
    ...

If expression1 OrElse expression2 OrElse expression2... Then
    ...

ในตัวอย่าง ตัวดำเนินการ AndAlso ถ้า expression1 เป็น False โปรแกรมจะข้ามการทำงานในบล็อคคำสั่งของ If ไปทันที โดยที่ไม่ตรวจ expression ที่เหลือ สำหรับตัวดำเนินการ OrElse ถ้า expression1 มีค่าเป็น True โปรแกรมจะทำงานในบล็อคคำสั่ง If ทันทีโดยไม่ตรวจสอบคำสั่งที่เหลือ

ด้วยเหตุนี้เองทำให้ตัวดำเนินการ AndAlso และ OrElse ทำงานได้เร็วกว่าตัวดำเนินการ And และ Or ซึ่งจะต้องทำการทุกๆ expression

Bitwise operators

ตัวดำเนินการระดับบิต ใช้สำหรับการเปรียบเทียบลำดับของบิตของตัวแปรที่แสดงในรูปแบบของตัวเลขฐานสอง ซึ่งเป็นฐานที่คอมพิวเตอร์สามารถเข้าใจและทำงานได้ สำหรับมนุษย์นั้นเราใช้ฐานสิบ เพราะมันเข้าใจได้ง่ายกว่า ตัวดำเนินการระดับบิตใช้เครื่องหมายเดียวกับตัวดำเนินการตรรกศาสตร์ ซึ่งในภาษา Visual Basic มี 4 ตัว

ต่อไปนี้เป็นตารางแสดงตัวดำเนินการระดับบิตในภาษา Visual Basic

OperatorDescription
NotInvert 1 to 0, 0 to 1
And1 if both a and b are 1, 0 otherwise
Or1 if at least one a or b is 1, 0 otherwise
Xor1 if a and b different, 0 otherwise

เช่นเดียวกันกับตัวดำเนินการตรรกษสาตร์ ในตัวดำเนินการระดับบิตใช้ค่า True เป็น 1 และค่า False เป็น 0 ซึ่งเป็นตัวเลขที่มีในฐานสอง

Dim x As Integer
x = 3 And 5

ในตัวอย่าง เราได้ใช้ตัวดำเนินการระดับบิตกับเลข Integer คือ 5 และ 3 ซึ่งในการทำงานของตัวดำเนินการนั้นจะเกิดการแปลงเลขทั้งสองให้อยู่ในรูปเลขฐานสองจะได้ 101 และ 011 ตามลำดับ หลังจากนั้นนำบิตแต่ละนำแหน่งที่ตรงกันของตัวแปรทั้งสองมาประเมินด้วยตัวดำเนินการ And ซึ่งจะได้เป็น 001 ซึ่งมีค่าเท่ากับ 1 ในฐานสิบ ดังนั้นตัวแปร x จะมีค่าเท่ากับ 1

String Concatenation Operator

String concatenation operator เป็นตัวดำเนินการในการนำ string มาเชื่อมต่อกัน ซึ่งใช้สัญลักษณ์ & ผลลัพธ์ที่ได้จะได้ string ใหม่ที่เกิดจากการต่อกันของ string ทั้งหมด

Module StringConcatenationOperator

    Sub Main()

        Dim name As String = "Marcus"
        Dim newString As String = name & "Code"
        Console.WriteLine(newString)

        Dim tutorial As String = name & "Code" & " Tutorial"
        Console.WriteLine(tutorial)
        Console.WriteLine(tutorial & " " & 2016)

    End Sub

End Module

ในตัวอย่างเป็นการเชื่อมต่อ string โดยสามารถต่อกันได้ตั้งแต่ 2 ตัวขึ้นไป และการต่อ string นั้นสามารถต่อกับข้อมูลประเภทอื่นได้ เช่น ตัวเลข หรือ boolean ผลลัพธ์ทีไ่ด้คือค่าเหล่านั้นจะถูกแปลงไปเป็น string อัตโนมัติ

MarcusCode
MarcusCode Tutorial
MarcusCode Tutorial 2016

และนี่เป็นผลลัพธ์ของโปรแกรม

นอกจากนี้ในการต่อ string ยังสามารถใช้เครื่องหมายบวก + ซึ่งเป็น Overload operator ที่ใช้กับ string ในการใช้เครื่องหมายนี้ข้อมูลที่นำมาต่อต้องเป็นประเภท string ทั้งหมด

"Marcus" + "Code" ' Valid
"Marcus" + 2016 ' Not valid

ในการต่อแบบที่สองไม่สามารถใช้ตัวดำเนินการ + ได้เพราะมีข้อมูลที่เป็นตัวเลข อย่างไรก็ตามในการต่อ string หรือว่าตัวเลข คุณควรจะใช้ตัวดำเนินการ & ซึ่งมันสามารถใช้ได้กับข้อมูลทุกประเภท

ลำดับความสำคัญของตัวดำเนินการ

ในภาษา Visual ฺBasic มีลำดับความสำคัญของตัวดำเนินการ ที่โปรแกรมจะใช้ประเมินกว่าตัวดำเนินการไหนจะถูกทำก่อนซึ่งมีลำดับจากสูงสุดไปต่ำสุดดังนี้ Await, ^, sign +, –, *, /, \, Mod, +, –, &, <<, >>, =, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf...Is, Not, And, AndAlso, Or, OrElse, Xor ตามลำดับ ถ้าคุณต้องการให้ expression ใดๆ ทำก่อนคุณสามารถใส่วงเล็บ () เพื่อกำหนดความสำคัญเองได้

ในบทนี้คุณได้เรียนรู้เกี่ยวกับตัวดำเนินการในภาษา Visual Basic รวมถึงวิธีและตัวอย่างในการใช้ตัวดำเนินการประเภทต่างๆ

บทความนี้เป็นประโยชน์หรือไม่?Yes·No