ตัวดำเนินการ
ตัวดำเนินการ ใช้สำหรับจัดการกับตัวแปรและค่าคงที่ ยกตัวอย่างเช่น การกำหนดค่า การเปรียบเทียบข้อมูล ตัวดำเนินการในภาษา 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
Symbol | Name | Example |
---|---|---|
+ | Addition | c = a + b |
- | Subtraction | c = a - b |
* | Multiplication | c = a * b |
/ | Division | c = a / b |
\ | Division no fraction | c = a \ b |
^ | Square | c = a ^ b |
Mod | Modulo | c = 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 เป็นการรวมของตัวดำเนินการใดๆ กับตัวดำเนินการกำหนดค่า (=) ที่ใช้สำหรับอัพเดทค่าให้กับตัวแปรโดยอ้างอิงจากค่าเดิมที่มีอยู่ เช่น การบวกเลขเพิ่มเข้าไปจากค่าเดิม หรือกล่าวอีกนัยหนึ่ง มันสามารถเป็นรูปแบบย่อในการใช้ตัวดำเนินการทางคณิตศาสตร์
Operator | Example | Equivalent to |
---|---|---|
+= | a += 3 | a = a + 3 |
-= | a -= 3 | a = a - 3 |
*= | a *= 3 | a = a * 3 |
/= | a /= 3 | a = a / 3 |
\= | a \= 3 | a = a \ 3 |
^= | a ^= 3 | a = a ^ 3 |
<<= | a <<= 3 | a = a << 3 |
>>= | a >>= 3 | a = 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
Operator | Example | Result |
---|---|---|
= | a = b | True if a equal to b, otherwise False |
<> | a <> b | True if a not equal to b, otherwise False |
< | a < b | True if a less than b, otherwise False |
<= | a <= b | True if a less than or equal to b, otherwise False |
> | a > b | True if a greater than b, otherwise False |
>= | a >= b | True 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
Operator | Example | Description |
---|---|---|
Not | Not a | Invert True to False, False to True |
And | a And b | True if both a and b are true, False otherwise |
Or | a or b | True if at least one a or b is true, False otherwise |
Xor | a Xor b | True if a and b different, False otherwise |
AndAlso | a AndAlso b | True if both a and b are true, False otherwise |
OrElse | a OrElse b | True 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
Operator | Description |
---|---|
Not | Invert 1 to 0, 0 to 1 |
And | 1 if both a and b are 1, 0 otherwise |
Or | 1 if at least one a or b is 1, 0 otherwise |
Xor | 1 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 รวมถึงวิธีและตัวอย่างในการใช้ตัวดำเนินการประเภทต่างๆ