ไม่ได้ Update Blog มากนาน (อีกแล้ว) ในระหว่างที่รอเพื่อนทำงาน แอบ Update Blog หน่อยแล้วกัน สำหรับบทความในวันนี้ เราจะมาเรียนรู้การคำนวณในภาษา C++ กันดีกว่า โดยปกติแล้วการทำโปรแกรมขึ้นมาสักตัวนั้น จะต้องมีการคำนวณ บวก ลบ คูณ หาร หรือหาเศษจากการหาร
แต่การคำนวณในภาษา C++ นั้น สามารถเขียนได้หลายรูปแบบ และการคำนวณบางครั้ง อาจไม่ตรงตามหลักการทางวิชา คณิตศาสตร์ด้วย เอาละมาเริ่มกันเลยดีกว่า
การคำนวณในภาษา C++ นั้นมีสัญลักษณ์ดังนี้
สัญลักษณ์ในการคำนวณ | คำอธิบาย |
+
|
ใช้ในการบวก |
-
|
ใช้ในการลบ |
*
|
ใช้ในการคูณ |
/
|
ใช้ในการหาร เพื่อเอาผลหาร |
%
|
ใช้ในการหาร เพื่อเอาเศษจากการหาร |
ระดับความสำคัญของสัญลักษณ์ในการคำนวณ
ความสำคัญระดับสูง ได้แก่ : ตัวที่อยู่ในวงเล็บ ( ..... )
ความสำคัญระดับกลาง ได้แก่ : * / %
ความสำคัญระดับต่ำ ได้แก่ : + -
เมื่อทำการคำนวณสมการยาวๆ ที่มีทั้ง * + - / ก็จะคำนวณในความสำคัญระดับสูงก่อนแล้วจึงคำนวณในความสำคัญระดับต่ำลงมาเรื่อยๆ
หากมีความสำคัญในระดับเดียวกัน จะคำนวณจากซ้ายไปขวา
ตัวอย่างการคำนวณในภาษา C++
int a;
a = 2+2;
ผลลัพธ์ของ a คือ 4
int b;
b = 3%2;
ผลลัพธ์ของ b คือ 1 เพราะ เศษจาก 3 หารด้วย 2 คือ 1
int c;
c = 2+3*5;
ผลลัพธ์ของ b คือ 17 เพราะ * มีความสำคัญมากกว่า + จึงทำ * ก่อน
int d;
d = 3*2%4;
ผลลัพธ์ของ c คือ 2 เพราะ * และ % มีความสำคัญระดับเดียวกัน จะคำนวณจากซ้ายไปขวา
ข้อควรระวังในการคำนวณ 1
int / int จะได้ int
int / float จะได้ float
float / int จะได้ int
float / float จะได้ float
ตัวอย่าง
int a=3,b=2;
float c;
c = a/b;
หากตามหลักการทางคณิตศาสตร์ 3 หาร 2 จะได้ 1.5
แต่จริงๆแล้วในทาง Computer ผลลัพธ์ของ c จะได้ 1 เนื่องจาก จำนวนเต็ม (int) จำนวนเต็ม (int) จะได้ผลลัพธ์เป็นจำนวนเต็ม
วิธีแก้ไขคือต้องเปลี่ยนชนิดตัวแปรจาก int เป็น float สามารถทำได้ 2 อย่างดังนี้
1. เปลี่ยนขณะที่ประกาศตัวแปร จะได้
2. เปลี่ยนขณะที่คำนวณ
ความสำคัญระดับสูง ได้แก่ : ตัวที่อยู่ในวงเล็บ ( ..... )
ความสำคัญระดับกลาง ได้แก่ : * / %
ความสำคัญระดับต่ำ ได้แก่ : + -
เมื่อทำการคำนวณสมการยาวๆ ที่มีทั้ง * + - / ก็จะคำนวณในความสำคัญระดับสูงก่อนแล้วจึงคำนวณในความสำคัญระดับต่ำลงมาเรื่อยๆ
หากมีความสำคัญในระดับเดียวกัน จะคำนวณจากซ้ายไปขวา
ตัวอย่างการคำนวณในภาษา C++
int a;
a = 2+2;
ผลลัพธ์ของ a คือ 4
int b;
b = 3%2;
ผลลัพธ์ของ b คือ 1 เพราะ เศษจาก 3 หารด้วย 2 คือ 1
int c;
c = 2+3*5;
ผลลัพธ์ของ b คือ 17 เพราะ * มีความสำคัญมากกว่า + จึงทำ * ก่อน
int d;
d = 3*2%4;
ผลลัพธ์ของ c คือ 2 เพราะ * และ % มีความสำคัญระดับเดียวกัน จะคำนวณจากซ้ายไปขวา
ข้อควรระวังในการคำนวณ 1
int / int จะได้ int
int / float จะได้ float
float / int จะได้ int
float / float จะได้ float
ตัวอย่าง
int a=3,b=2;
float c;
c = a/b;
หากตามหลักการทางคณิตศาสตร์ 3 หาร 2 จะได้ 1.5
แต่จริงๆแล้วในทาง Computer ผลลัพธ์ของ c จะได้ 1 เนื่องจาก จำนวนเต็ม (int) จำนวนเต็ม (int) จะได้ผลลัพธ์เป็นจำนวนเต็ม
วิธีแก้ไขคือต้องเปลี่ยนชนิดตัวแปรจาก int เป็น float สามารถทำได้ 2 อย่างดังนี้
1. เปลี่ยนขณะที่ประกาศตัวแปร จะได้
float a=3,b=2;
float c;
c = a/b;
2. เปลี่ยนขณะที่คำนวณ
int a=3,b=2;
float c;
c = (float)a/(float)b;
ผลลัพธ์ของ c จะได้ออกมาเป็น 1.5 ตามที่เราต้องการ
ข้อควรระวังในการคำนวณ 2
เมื่อเราจะนำตัวแปรไปคำนวณ จะต้องแน่ใจว่าตัวแปรนั้นมีค่าอยู่
บางคนจะเข้าใจว่า หากเราประกาศตัวแปรที่เก็บพวกตัวเลขแล้ว มันจะกำหนดค่าเป็น 0 ให้เลย นั้นเป็นความเชื่อที่ผิด!!!
ที่จริงแล้ว ตัวแปรที่เราสร้างขึ้นนั้นจะไม่มีการกำหนดค่าเริ่มต้นอะไรทั้งสิ้น
เมื่อเรานำตัวแปรที่ยังไม่ได้กำหนดค่านั้นไปใช้ในการคำนวณ ค่าที่ออกมานั้นจะผิดพลาด
ตัวอย่างเช่น
int sum;
sum = sum + 1;
ค่า sum ที่ได้นั้นจะออกมาผิดพลาดเป็นค่าแปลกๆ
วิธีแก้คือกำหนดค่าเริ่มต้นให้ sum ก่อน
ตัวอย่างเช่น
int sum=0;
sum = sum + 1;
ผลลัพธ์ที่จะได้คือ sum = 1 จะไม่แสดงผิดพลาดแล้ว
การคำนวณในภาษา C++ สามารถเขียนได้อีกหลายรูปแบบดังนี้
int a=1;
a += 3; //เหมือนกับ a = a+3;
ผลลัพธ์จะได้ a=4 สามารถที่จะเปลี่ยน + เป็นเครื่องหมายอย่างอื่นได้ด้วย
int b=1;
b++; //เหมือนกับ b = b+1;
ผลลัพธ์ที่ได้คือ b=2
int c=1;
++c; //เหมือนกับ c = c+1;
ผลลัพธ์ที่ได้คือ c=3
ความแตกต่างของ a++ กับ ++a
int a=1,b=1;
a = a + ++b;
ผลลัพธ์ของ a = 3 เพราะจะเพิ่มค่าของ b ขึ้น 1 ก่อนที่จะไปคำนวณกับ a
ในรูปแบบที่อ่านง่ายจะได้
b = b+1;
a = a+b;
int c=1,d=1;
c = c + d++;
ผลลัพธ์ของ c = 2 เพราะจะนำ b ไปคำนวณก่อน แล้วจังทำการเพิ่ม b ขึ้น 1
ในรูปแบบที่อ่านง่ายจะได้
c = c+d;
d = d+1;
ไม่มีความคิดเห็น:
แสดงความคิดเห็น