นิพจน์(Expression)
C# นั้น บรรจุ Operator หรือตัวดำเนินการ จำนวนหนึ่งเพื่อวัตถุประสงค์นี้ การผสมผสาน Operator กับตัวแปร และค่าคงที่นั้น สิ่งเหล่านี้เรียกว่า Operand หรือตัวถูกดำเนินการ เราก็จะสามารถสร้างนิพจน์ หรือ Expression ซึ่งเป็น Block การสร้างการคำนวนพื้นฐานได้
Operator ที่มีให้ใช้ มีตังแต่ระดับ ง่าย จนถึงระดับที่ ซับซ้อน Operator อย่างงายประกอบไปด้วย การปฏิบัติการทาง คณิตศาสตร์ ขั้นพื้นฐาน ทั้งหมด เช่น บวก ลบ คูณ หาร เป็นต้น และ Operator ที่ซับซ้อนนั้น ประกอบไปด้วย การจัดการเนื้อหาตัวแปร โดยการแทนที่เนื้อหาเหล่านี้ด้วย ค่าของ Binaty เป็นต้น ยังมี Opreator ทางตรรกะที่จะใช้ในการ ติดต่อค่าประเภท Boolean โดยเฉพาะ Operator ทั้งหลายถูกแบ่งออกเป็น 3 กลุ่มดังนี้
Unary ทำงานกับ Operand เดียว
Binary ทำงานกับ Operand 2 ตัว
Ternary ทำงานกับ Operand 3 ตัว
Operator ส่วนใหญ่อยู่ในกลุ่ม Binary มี Operand แบบ Unary น้อยมาก และ Operator แบบ Ternary เพียงตัวเดียวที่เรียกว่า เงือนไข
Operator ทางคณิตศาสตร์
มี Operator ทางคณิตศาสตร์ แบบง่ายๆ อยู่ 5 ตัว ซึ่ง 6 ตัวอยู่ในกลุ่มของ Binary และ Unary ด้วย ดังในตารางข้างล่าง
Operator | กลุ่ม | ตัวอย่าง | ความหมาย |
+ | Binary | a = b+c; | a เท่ากับผลลัพธ์ของ b บวกกับ c |
- | Binary | a = b-c; | a เท่ากับผลลัพธ์ของ b ลบกับ c |
* | Binary | a = b*c; | a เท่ากับผลลัพธ์ของ b คูณกับ c |
/ | Binary | a = b/c; | a เท่ากับผลลัพธ์ของ b หารกับ c |
% | Binary | a = b%c; | a เท่ากับผลลัพธ์ของเศษของ b หารกับ c |
+ | Unary | a = +b; | a เท่ากับผลลัพธ์ของ b |
- | Unary | a = -b; | a เท่ากับผลลัพธ์ของ b คูณกับ -1 |
++ | Unary | a = ++b; | a เท่ากับผลลัพธ์ของ b+1 b ถูกเพิ่มค่าอีก 1 |
-- | Unary | a = --b; | a เท่ากับผลลัพธ์ของ b-1 b ถูกลดค่าอีก 1 |
++ | Unary | a = b++; | a เท่ากับผลลัพธ์ของ b b ถูกเพิ่มค่าอีก 1 |
-- | Unary | a = b--; | a เท่ากับผลลัพธ์ของ b b ถูกลดค่าอีก 1 |
เพื่อความเข้าใจมากยิ่งขึ้น ผมได้เขียนโปรแกรม เพื่อทดสอบผลลัพธ์ ข้างต้นเพื่อให้เห็นผลดังนี้
ตัวอย่าง โปรแกรมที่ 2
จากโปรแกรมที่ 2 จะเห็นว่า เมื่อ b = 10 และ c = 5 ให้สังเกตุผลลัพธ์ของ ++b, --b, b++, b-- จะเห็นว่า หากเครื่องหมาย ++ และ -- อยู่ตัวแปร เพิ่มค่าให้กับตัวแปรก่อน แล้วค่อย กระทำการ กำหนดค่าให้กับ นิพจน์นั้นๆ เช่น a = ++b จะทำการ เพิ่มค่า b ก่อน แล้วนำค่า b มาเก็บไว้ที่ a แต่ถ้าเครื่องหมาย ++และ -- อยู่ หลังตัวแปร จะทำการ นำค่า b มาเก็บใน a ก่อน แล้วค่อยเพิ่มค่าของ b
Operator กำหนดค่า
เมื่อเรารู้จัก Opreator อย่างง่าย ไปแล้วคือ = แต่ก็ยังมี Operator กำหนดค่าอย่างอื่นอีก Operator กำหนดค่าทั้งหมดที่ว่านั้น จะทำงานคล้ายกับ = ซึ่งจะให้ผลลัพธ์ จากค่าที่ถูกกำหนด ให้กับตัวแปรที่อยู่ทางซ้ายมือ โดยขึ้นอยู่กับ Operand และ Operator ที่อยู่ทางด้านขวามือ ดังตาราง
Operator | กลุ่ม | ตัวอย่าง | ความหมาย |
= | ฺBinary | a = b; | a เท่ากับผลลัพธ์ของ b |
+= | Binary | a += b; | a เท่ากับผลลัพธ์ของ a บวก b |
-= | Binary | a -= b; | a เท่ากับผลลัพธ์ของ a ลบ b |
*= | Binary | a *= b; | a เท่ากับผลลัพธ์ของ a คูณ b |
/= | Binary | a /= b; | a เท่ากับผลลัพธ์ของ a หาร b |
%= | Binary | a %= b; | a เท่ากับผลลัพธ์ของเศษของ a หาร b |
ดูตัวอย่าง Source เพื่อความเข้าใจมากยิ่งขึ้น
ตัวอย่าง โปรแกรมที่ 3
ความสำคัญของ Operator ( อีกรอบ )
เมื่อนิพจน์หนึ่งๆ ถูกประเมินค่า แต่ละ Operator ก็จะถูกประมวลตามลำดับของมัน อย่างไรก็ตาม นี่ไม่ได้หมายความว่า การประเมินค่า Operator เหล่านี้จะเริ่มจากซ้ายไปขวา แต่จะเริ่มจากความสำคัญของ Operator ดังตารางลำดับความสำคัญ
ลำดับความสำคัญ | Operator |
1 | ++ (ใช้นำหน้า) เช่น ++a |
2 | -- (ใช้นำหน้า) เช่น --a |
3 | + (ใช้นำหน้า) เช่น +a |
4 | - (ใช้นำหน้า) เช่น -a |
5 | * เช่น a * b |
6 | / เช่น a / b |
7 | % เช่น a % b |
8 | + เช่น a + b |
9 | - เช่น a - b |
10 | = เช่น a = b |
11 | *= เช่น a *= b |
12 | /= เช่น a /= b |
13 | %= เช่น a %= b |
14 | += เช่น a += b |
15 | -= เช่น a -= b |
16 | ++ (ใช้ตามหลัง) เช่น a++ |
17 | -- (ใช้ตามหลัง) เช่น a-- |
จากตารางความสำคัญ หาก มีเครื่องหมาย ( ) จะทำใน () ก่อนเป็นอันดับแรก เช่น(a-b)+c*d จะทำ a-b ก่อน แล้วเก็บค่าไว้ ก่อน หลังจากนั้น จะทำ c*d แล้วจึงนำค่า ดังกล่าวมาบวกกัน เช่น
(5-3) + 4*2 = 10
(15-3)+5-4 = 3
4/2*5 = 0.4
ดูตัวอย่าง Source เพื่อความเข้าใจมากยิ่งขึ้น
ตัวอย่าง โปรแกรมที่ 4
****************หมายเหตุ Source Code สำหรับ Borland C# Builder เท่านั้น****************
credit: http://www.thai-programmer.com
ไม่มีความคิดเห็น:
แสดงความคิดเห็น