วันอังคารที่ 8 พฤศจิกายน พ.ศ. 2554

นิพจน์ภาษาซี

นิพจน์และตัวดำเนินการ

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

ตัวดำเนินการคณิตศาสตร์ (Arithmetic operator)
ตัวดำเนินการกำหนดค่า (Assignment operator)
ตัวดำเนินการแบบยูนารี (Unary opeator)
ตัวดำเนินการเชิงตรรก (Logical operator) และ ตัวดำเนินการเปรียบเทียบ (Comparative operator)
ตัวดำเนินการเงื่อนไข (Conditional Operator)
ต่อไปนี้จะกล่าวถึงตัวดำเนินการต่างๆ โดยละเอียด


--------------------------------------------------------------------------------
ตัวดำเนินการคณิตศาสตร์
ได้แก่

+ (การบวก)
- (การลบ)
* (การคูณ)
/ (การหาร)
% (modulus หรือเศษที่ได้จากการหารเลขจำนวนเต็ม)
นักศึกษาลองเขียนโปรแกรมคำนวณผลจากการดำเนินการหาร 10 / 3 = ? ในภาษาซี นั้น 10.0 / 3.0 จะไม่เท่ากับ 10 / 3 ลองทำดู



--------------------------------------------------------------------------------
ตัวดำเนินการกำหนดค่า
เป็นตัวดำเนินการในการใส่ค่าตัวเลขแก่ตัวแปร เช่น
i = 6 ;
x = y = 6 ;

นอกจากนั้นยังมีตัวกำหนดค่าอื่นๆ อีก คือ

+=
-=
*=
/=
%=
ตัวอย่างการใช้งานเช่น i +=3 มีความหมายเดียวกับ i = i + 3
นักศึกษาลองเขียนโปรแกรมใช้งานตัวดำเนินการ += -= *= และ /=




--------------------------------------------------------------------------------
ตัวดำเนินการแบบยูนารี
เป็นตัวดำเนินการที่ต้องการตัวถูกดำเนินการเพียงตัวเดียวเท่านั้น ได้แก่ ++ และ -- เช่น
i++ มีความหมายเดียวกันกับ i + 1
i-- มีความหมายเดียวกันกับ i - 1

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

โปรแกรมที่ 1 ตัวดำเนินการยูนารี

# include

main()
{
int i , j ;
int x, y ;

i = j = 1 ;

x = i-- + 1 ;
y = --j + 1 ;

printf("i = %d and j = %d \n",i,j) ;
printf("x = %d and y = %d \n",x,y) ;
return 0 ;
}






--------------------------------------------------------------------------------
ตัวดำเนินการเชิงตรรก และ ตัวดำเนินการเปรียบเทียบ
ตัวดำเนินการเปรียบเทียบใช้เพื่อเปรียบเทียบค่าสองค่า เพื่อให้ผลเป็นค่าตรรกะคือ จริง หรือ เท็จ โดยผลจากการดำเนินการจะเป็นเลขจำนวนเต็ม คือ หากได้ 1 หมายถึง จริง และ 0 หมายถึง เท็จ ตัวดำเนินการเปรียบเทียบก็ได้แก่

< (น้อยกว่า) > (มากกว่า)
<= (น้อยกว่าหรือเท่ากับ) >= (มากกว่าหรือเท่ากับ)
== (เท่ากับ)
!= (ไม่เท่ากับ)
จงลองเขียนโปรแกรมข้างล่างนี้ เพื่อทดสอบการใช้งานตัวดำเนินการเปรียบเทียบ
โปรแกรมที่ 2 การใช้งานตัวดำเนินการเปรียบเทียบ


# include

main()
{
int i = 1 , j = 2 , k = 3 ;

printf(" The value of i < j is %d \n", i < j) ; printf(" The value of (k-i) > j is %d \n",(k-i) > j) ;
printf(" The value of (i+j)==k is %d \n", (i+j)==k) ;
}




ตัวดำเนินการเชิงตรรกในภาษาซีมีอยู่ 3 ตัวได้แก่

&& (และ)
|| (หรือ)
! (ไม่ใช่)
โปรแกรมที่ 3 การใช้งานตัวดำเนินการเปรียบเทียบและตัวดำเนินการเชิงตรรก
# include

main( )
{
int i = 1 , j =2 , k = 3 ;

printf("The value of (j > i) && (k > i) is %d \n",(j > i) && (k > i)) ;
printf("The value of (j > i) || (k > i) is %d \n", (j > i) || (k > i)) ;
printf("The value of !(j > i) && (k > i) is %d \n", (j > i) && (k > i)) ;
printf("The value of !(j > i) || (k > i) is %d \n", !(j > i) || (k > i)) ;
return 0 ;
}

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

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