|
|
|
|
|
|
มีความรู้ความเข้าใจเกี่ยวกับตัวดำเนินการในภาษาซี การแปลงนิพจน์ทางคณิตศาสตร์เป็นนิพจน์ภาษาซี
|
|
|
|
|
|
|
|
|
ตัวดำเนินการ
(Operator)
ตัวดำเนินการ(Operator)
ในการเขียนโปรแกรมภาษาซี
มีอยู่ 3 ประเภทใหญ่
ๆ ดังนี้
1)
ตัวคำนวณทางคณิตศาสตร์ (arithmetic operators) 2)
ตัวดำเนินการทางตรรกะ
(logical operator) 3)
ตัวดำเนินการเปรียบเทียบ
(relational operator)
ซึ่งการดำเนินการแต่ละประเภทจะมีเครื่องหมายที่ต้องใช้เพื่อเขียนคำสั่ง
สำหรับการดำเนินการประเภทนั้น ๆ ดังรายละเอียด
ตัวคำนวณทางคณิตศาสตร์
(arithmetic operators)
เป็นตัวดำเนินการทางคณิตศาสตร์
ได้แก่ เครื่องหมายที่ใช้ในการบวก
ลบ คูร หาร ตัวเลข
และอื่น ๆ ดังตาราง
ตัวดำเนินการ
|
ความหมาย
|
ตัวอย่าง
|
+
|
การบวก
|
X
+ Y
|
-
|
การลบ
|
X
- Y
|
*
|
การคูณ
|
X
* Y
|
/
|
การหาร
|
X
/ Y
|
%
|
การหารจะเอาเฉพาะเศษไว้
|
11%3=3
เศษ
2 ดังนั้น
2 เป็นผลลัพธ์
|
-
-
|
การลดค่าลงครั้งละ
1
|
X--
หรือ
--X
เหมือนกับ
X=X-1
|
++
|
การเพิ่มค่าครั้งละ
1
|
X++ หรือ
++X
เหมือนกับ
X=X+1
|
|
ตารางแสดงตัวดำเนินการของภาษาซี
|
|
ขั้นตอนการทำงานของตัวดำเนินการในซี
ในบางครั้งนิพจน์ประกอบด้วยตัวดำเนินการมากมาย
ทำให้เกิดความยุ่งยากในการพิจารณาขั้นตอนการทำงานของตัวดำเนินการ
จึงได้ตั้งกฎเกี่ยวกับลำดับการทำงานก่อนหลังของตัวดำเนินการ
(Operator) ดังตาราง
ตัวดำเนินการ
|
ตัวอย่าง
|
(
)
|
1
(สูงสุด)
|
++
--
unary
|
2
|
*
/
%
|
3
|
+
-
|
4
|
+=
-=
*=
=
/=
%=
|
5
(ต่ำสุด)
|
|
ตารางแสดงลำดับการทำงานของตัวดำเนินการ
|
|
ตัวดำเนินการที่มีความสำคัญอยู่ในระดับเดียวกัน
ให้ทำงานตามขั้นตอนจากซ้ายไปขวาเป็นหลัก
ดังตัวอย่างในตาราง
ตัวอย่าง
|
5
+ 6
* 2
|
ตัวดำเนินการ
*
อยู่ลำดับสูงกว่า
+
จึงต้องคูณเลข
ก่อนแล้วบวก
5 ภายหลัง
|
2
*
3
-
14/7
+
5
|
ตัวดำเนินการ
*
และ
/
อยู่ลำดับเดียวกัน
ให้ทำจาก
ซ้ายไปขวา
คือ
คูณเลข
แล้วหารเลข
|
|
ตัวดำเนินการ
-
และ
+
อยู่ลำดับเดียวกัน
ทำจาก
ซ้ายมือก่อน
คือ
ลบเลข
แล้วจึงบวกเลขในภายหลัง
|
|
ตารางแสดงลำดับการทำงานของตัวดำเนินการ
|
ตัวคำนวณทางตรรกะ
(logical operators)
เครื่องหมายตรรกะ
มีจุดประสงค์ใช้ในการเปรียบเทียบเพื่อตัดสินใจ
เครื่องหมายตรรกะที่ใช้ในภาษาซี
มีดังนี้
เครื่องหมาย
|
ความหมาย
|
ตัวอย่าง
|
&&
|
และ
|
x
<
60 &&
x >
50 กำหนดให้
x
มีค่าในช่วง
50 ถึง
60
|
||
|
หรือ
|
x
= =
10 ||
x =
= 15
กำหนดให้
x มีค่าเท่ากับตัวเลข
2 ค่า
คือ
10
หรือ
15
|
!
|
ไม่
|
x
= 10
!x
กำหนดให้
x
ไม่เท่ากับ
10
|
|
|
ตัวคำนวณเปรียบเทียบ
(relational operators)
ใช้เปรียบเทียบค่า
2 ค่า เพื่อแสดงการเลือก
ซึ่งโปรแกรมโดยทั่วไปใช้ในการทดสอบ เงื่อนไขตามที่กำหนด
การเปรียบเทียบโดยการเท่ากันของ
2 ค่า จะใช้เครื่องหมาย
==
เครื่องหมาย
|
ความหมาย
|
ตัวอย่าง
|
>
|
มากกว่า
|
a
>
b a
มากกว่า
b
|
>=
|
มากกว่า
หรือ
เท่ากับ
|
a
>=
b a
มากกว่าหรือเท่ากับ
b
|
<
|
น้อยกว่า
|
a
< b
a
น้อยกว่า
b
|
<=
|
น้อยกว่า
หรือ
เท่ากับ
|
a
<= b
a
น้อยกว่าหรือเท่ากับ
b
|
==
|
เท่ากับ
|
a
== b
a
เท่ากับ
b
|
!=
|
ไม่เท่ากับ
|
a
!= b
a
ไม่เท่ากับ
b
|
|
|
นิพจน์
(Expression)
นิพจน์(Expression)
คือ การนำตัวแปร
ค่าคงที่ และตัวดำเนินการมาเขียนประกอบกัน
โดยใช้เครื่องหมายอย่างใดอย่างหนึ่งเป็นตัวเชื่อม
และเพื่อให้ตัวแปรภาษาสามารถเข้าใจและคำนวณหาผลลัพธ์ได้ตามที่เราต้องการ โดยมีกฎเกณฑ์ทั่ว
ๆ ไปในการเขียนนิพจน์ของภาษาซี
มีดังนี้
1)
เขียนตัวอักษรหลายตัวติดกันได้โดยไม่มีเครื่องหมายคั่น
เช่น XY ถือเป็น
1 ตัวแปร 2)
กรณีนิพจน์มีค่าของตัวแปรหรือค่าคงที่ต่างชนิดกันในนิพจน์เดียวกัน
กลไกของภาษาซี จะเปลี่ยนชนิดของข้อมูลที่มีขนาดเล็กให้เป็นชนิดของข้อมูลที่ใหญ่ขึ้น
ดังนั้นจึงควรระวังในการตั้งตัวแปรเพื่อเก็บผลลัพธ์ที่ได้จากการดำเนินการของนิพจน์มีค่าของตัวแปรหรือค่าคงที่ต่างชนิดกัน
ซึ่งตัวแปรที่ตั้งขึ้น
ควรเป็นชนิดของข้อมูลที่ใหญ่ที่สุดในนิพจน์นั้น
ดังตัวอย่าง
หากนิพจน์มี int
กับ long
กลไกของภาษาซีจะเปลี่ยนชนิดของข้อมูลเป็น
long
หากนิพจน์มี int
กับ double
กลไกของภาษาซีจะเปลี่ยนชนิดของข้อมูลเป็น
double
ตัวอย่างนิพจน์
นิพจน์ทางคณิตศาสตร์ตามปกติ
|
นิพจน์ทางคณิตศาสตร์ในภาษาซี
|
x
+ y
- z
|
x
+ y
- z
|
2xy
+ 4z
|
2
* x
* y
+ 4
* z
|
x2
+ 2x
+ 1
|
x
* x
+ 2
* x
+ 1
|
2r
|
2
* r
|
|
(a
- b)
/ (c
- d)
|
b
- 4ac
|
b
* b
- 4
* a
* c
|
|
x
* x
/ (x
* y
+ 2)
|
|
|
|
|