บทที่ 3

ตัวดำเนินการและนิพจน์ทางคณิตศาสตร์

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

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

  1. ตัวดำเนินการเลขคณิต
  2. ตัวดำเนินการเปรียบเทียบ
  3. ตัวดำเนินการทางตรรกะ
  4. ตัวดำเนินการแบบบิต
  5. ตัวดำเนินการกำหนดค่าเชิงประกอบ
  6. ตัวดำเนินการเพิ่มค่าและลดค่า

1. ตัวดำเนินการเลขคณิต

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

ตารางที่ 3.4.1 ตารางแสดงตัวดำเนินการเลขคณิต

ตัวอย่างที่ 3.4.1 โปรแกรมพิมพ์ผลลัพธ์จากการใช้ตัวดำเนินการคำนวณ 1 ตัว
  • หมายเหตุ
  • หมายถึง ให้กดปุ่ม Enter บนแป้นพิมพ์

จากตัวอย่าง 3.4.2 คำสั่ง sum / 3 ควรจะให้ผลลัพธ์เป็นจำนวนเต็ม 8 เนื่องจากตัวถูกดำเนินการทั้งสองตัวมีชนิดเป็นจำนวนเต็ม แต่ในที่นี้เราได้แปลงชนิดข้อมูลของตัวแปร sum แบบชั่วคราว จากจำนวนเต็มให้เป็นจำนวนจริง โดยใช้ (float) ทำให้ sum / 3 ในบรรทัดที่ 13 ให้ผลลัพธ์เป็นจำนวนจริงก่อนนำไปกำหนดให้เป็นค่าของตัวแปร average

2. ตัวดำเนินการเปรียบเทียบ

ตัวดำเนินการเปรียบเทียบ (Relation Operators) จะนำข้อมูลสองค่ามาเปรียบเทียบกัน โดยข้อมูลทั้งสองค่าจะต้องเป็นข้อมูลประเภทเดียวกัน ผลลัพธ์ที่ได้จะเป็นค่าทางลอจิก คือ จริงหรือเท็จ


ตารางที่ 3.4.2 ตารางแสดงตัวดำเนินการเปรียบเทียบ

3. ตัวดำเนินการทางตรรกะ

ตัวดำเนินการทางตรรกะ (Logical Operator) ประกอบด้วย การทำ AND(และ) , OR(หรือ) และNOT(นิเสธ) เมื่อกระทำกับค่าใด ผลลัพธ์ที่ออกมาจะเป็นจริงหรือเท็จ ตัวดำเนินการทางตรรกะแสดงได้ ดังตารางต่อไปนี้

ตารางที่ 3.4.3 ตารางแสดงตัวดำเนินการทางตรรกะ

4. ตัวดำเนินการแบบบิต

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

ตารางที่ 3.4.5 ตารางแสดงตัวดำเนินการแบบบิต

5. ตัวดำเนินการกำหนดค่าเชิงประกอบ

การใช้ตัวดำเนินการบางประเภทสามารถนำมารวมกันเป็น ตัวดำเนินการกำหนดค่าเชิงประกอบ (Compound Assisgnment) ได้ มีรูปแบบคือ

a op= b

มีความหมายเทียบเท่ากับ

a = a op b

เมื่อ op เป็นตัวดำเนินการคำนวณใดๆ ดังตัวอย่างต่อไปนี้

ตารางที่ 3.4.6 ตารางแสดงตัวอย่างการใช้ตัวดำเนินการกำหนดค่าเชิงประกอบ

จากโปรแกรม สามารถอธิบายได้ ดังนี้

บรรทัดที่ คำสั่ง ลักษณะการทำงาน

6 a += 4 a = a + 4

8 a *= 3 a = a * 3

10 a /= 4 a = a / 4

12 a %= 5 a = a % 5

15 a /= a - b a = a / (a - b)

17 b *= b + a b = b * (b + a)

6. ตัวดำเนินการเพิ่มค่าและลดค่า

ตัวดำเนินการเพิ่มค่า (Increment Operator) ใช้เครื่องหมาย ++

ตัวดำเนินการลดค่า (Decrement Operator) ใช้เครื่องหมาย --

โดยการเพิ่มค่า หรือการลดค่าด้วยตัวดำเนินการดังกล่าว จะเพิ่มทีละหนึ่ง หรือลดทีละหนึ่ง และจะต้องใช้กับตัวแปรโดดๆ โดยสามารถใช้เครื่องหมาย ++ และ -- เขียนนำหน้าตัวแปร (Prefix) หรือหลังตัวแปร (Postfix) ก็ได้ เช่น ++i หรือ i++ แต่ทั้งสองแบบนี้จะมีวิธีการจัดการกับค่าที่แตกต่างกัน ดังตาราง

ตารางที่ 3.4.7 ตารางแสดงตัวดำเนินการเพิ่มค่าและลดค่า

นิพจน์

นิพจน์ (Expression) ในภาษาซีนี้ ประกอบด้วย ค่าคงตัว ค่าคงที่ หรือตัวแปร 1 จำนวน หรือกลุ่มของค่าคงตัว ค่าคงที่ หรือตัวแปรพร้อมด้วยตัวดำเนินการของภาษาซี ตัวดำเนินการที่ใช้ในนิพจน์ที่กล่าวถึงได้แก่ ตัวดำเนินการกำหนดค่า ตัวดำเนินการคำนวณ และตัวดำเนินการบอกตำแหน่งบนหน่วยความจำ

ans = 100 - 50

score = midterm + final +quiz

income = salary + (ot * RATE) + bonus - tax

จากนิพจน์คณิตศาสตร์ข้างต้น พบว่า ans, score และ income เป็นตัวแปรที่ใช้เก็บผลลัพธ์จากการคำนวณ ส่วนนิพจน์ด้านขวาจะเป็นนิพจน์แบบหลายตัวแปร ซึ่งสามารถมีได้ทั้งตัวแปร และค่าคงที่ รวมถึงตัวดำเนินการคณิตศาสตร์ เช่น + - * / เป็นต้น ซึ่งในการสร้างสูตรคำนวณค่าตัวเลข ซึ่งเป็นสูตรที่มีความซับซ้อน จะต้องระมัดระวังในการจัดลำดับนิพจน์ เพื่อให้คอมพิวเตอร์ประมวลผลได้อย่างถูกต้อง ทั้งนี้ตัวดำเนินการต่างๆ ที่นำมาใช้เพื่อการคำนวณนั้น แต่ละตัวจะมีลำดับความสำคัญที่แตกต่างกัน เช่น เมื่อพบเครื่องหมาย + และ * การประมวลผลจะกระทำที่ตัวดำเนินการ * ก่อน เพราะจะมีลำดับความสำคัญสูงกว่า + นั่นเอง

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

ตัวดำเนินการแต่ละตัวจะมีลำดับความสำคัญก่อนหลังที่แตกต่างกัน โดยการประมวลผลจะกระทำกับตัวดำเนินการที่มีลำดับควาสำคัญสูงก่อน แต่ถ้ากรณีที่มีลำดับความสำคัญเท่ากัน ตามปกติจะกระทำกับตัวดำเนินการจากซ้ายไปขวา

ตารางที่ 3.4.7 ตารางแสดงตัวดำเนินการกับลำดับความสำคัญ

จากตัวอย่าง 3.4.6 เมื่อพิจารณาจากลำดับความสำคัญของตัวดำเนินการ จะพบว่า

ในบรรทัดที่ 18 นิพจน์ c - b / a * a มีค่าเท่ากับ c - ((b / a) * a) ซึ่งมีค่าเท่ากับ 1 และมีค่าเท่ากับค่าของนิพจน์ (c - b) / (a * a) ในบรรทัดที่ 19

จากบรรทัดที่ 22 ค่าของนิพจน์ 8 + 2 * 6 / 3 - 2 มีค่าเท่ากับนิพจน์ (8 + ((2 * 6) / 3) - 2

และบรรทัดที่ 23 ค่าของนิพจน์ 5 % 5 + 5 * 5 - 5 / 5 มีค่าเท่ากับนิพจน์ ((5 % 5) + (5 * 5)) - (5 / 5)

ขอขอบคุณ ช่อง GGT Channel สำหรับคลิป VDO