14 ธันวาคม 2553

การคำนวณในภาษา C++


          ไม่ได้ 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. เปลี่ยนขณะที่ประกาศตัวแปร จะได้

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;






ไม่มีความคิดเห็น:

แสดงความคิดเห็น