Transcript pptx

C#
Operation
สุพจน์ สวัตติวงศ ์
[email protected]
Reference:
• นิรันดร์ ประวิทย์ธนา, เก่ง C# ให้ครบสู ตร ฉบับ OOP, วิตตีก
้ รุ๊ป
• http://tidno1.exteen.com/20050604/c-tutorial-2
1
Operation ใน C#
• Operation ใน C# แบ่งออกเป็ น 3 ชนิดคือ
– Numerical Operation
– String Operation
– Boolean Operation
2
Numerical Operation
• เป็ น Operation ในการคานวณทางคณิตศาสตร์
้ ้มัง้ ตัวเลข, เลขทศนิยม และ
สามารถใชได
ตัวอักษร
• หลักการเหมือนการคานวณทางคณิตศาสตร์
โดยทั่วไป
• เครือ
่ งหมายทีใ่ ช ้ =, +, -, *, /, %, ++, --, () เป็ นต ้น
3
การหาร
• ในภาษาคอมพิวเตอร์ มีการหารอยู่ 2 แบบคือ
• Divide หรือ Div (/) คือการหารโดยปกติ
• หากตัวแปรทีท
่ าการหารเป็ นจานวนเต็ม Div จะทา
การหารโดยตัดเศษทิง้
• หากตัวเป็ นจานวนจริง(ทศนิยม) จะแสดงค่า
Console.WriteLine("17.0%2.0="+(17.0
ผลลัพธ์การหารตามปกติ % 2.0) + " 17%2=" + (17 % 2));
Console.WriteLine("17.0/2.0="+(17.0 / 2.0) + " 17/2=" + (17 / 2));
• Modulus หรือ Mod(%)คือการหารเอาเศษไว ้ใช ้
17.0%2.0=1 17%2=1
งาน
17.0/2.0=8.5 17/2=8
4
Increment Operator
และ Decrement Operator
• เป็ น Operator ทีท
่ าการเพิม
่ หรือลดค่าตัวมันเอง
ั ลักษณ์ตา่ งๆ ดังนี้
โดยใชส้ ญ
 ++ (Increment Operator) จะทาการเพิม
่ ค่าให ้ตัว
แปรทีละ 1 หรือ +1
 -- (Decrement Operator) จาทาการลดค่าตัวแปรที
ละ1 หรือ -1
ั มากขึน
• เป้ าหมายเพือ
่ ให ้กระชบ
้
5
ตัวอย่าง
int x = 3, y = 2, z;
float a, b, c;
x = 3;
Console.WriteLine("x= " + x);
Console.WriteLine("x++ =" + (x++));
Console.WriteLine("x= " + x);
x= 3
x++ =3
x= 4
x = 3;
Console.WriteLine("x= " + x);
Console.WriteLine("++x =" + (++x));
Console.WriteLine("x= " + x);
x= 3
++x =4
x= 4
a = 3.0f;
Console.WriteLine("a= " + a);
Console.WriteLine("a++ =" + (a++));
Console.WriteLine("a= " + a);
a= 3
a++ =3
a= 4
6
ตัวอย่าง
char d='A';
Console.WriteLine("d= " + d);
Console.WriteLine("d++ =" + (d++));
Console.WriteLine("d= " + d);
d= A
d++ =A
d= B
7
x++ เท่ากับ x+1?
• จากทีผ
่ า่ นมาจะสงั เกตุวา่ x++ จะดูเหมือนจะ
เท่ากับ x+1?
x = 3;
Console.WriteLine("x= " + x);
x= 3
Console.WriteLine("x++ =" + (x++));
x++ =3
Console.WriteLine("x= " + x);
x= 4
x = 3;
Console.WriteLine("x= " + x);
x= 3
Console.WriteLine("x+1 =" + (x+1));
Console.WriteLine("x= " + x);
x+1 =4
x= 3
8
x++ เท่ากับ x+1?
x = 3;
Console.WriteLine("x= " + x);
x= 3
Console.WriteLine("++x =" + (++x));
x++ =4
Console.WriteLine("x= " + x);
x= 4
x = 3;
Console.WriteLine("x= " + x);
x= 3
Console.WriteLine("x+1 =" + (x+1));
Console.WriteLine("x= " + x);
x = 3;
Console.WriteLine("x= " + x);
Console.WriteLine("x=x+1 =" + (x=x+1));
Console.WriteLine("x= " + x);
x+1 =4
x= 3
x= 3
x+1 =4
x= 4
9
Assignment Operator
• นอกจากเครือ
่ งหมาย = ยังมี Operator อืน
่ ๆ อีก
่ +=, -=, *=, /=, %=
เชน
ั
• โดยเครือ
่ งหมายเหล่านีท
้ าให ้ Code ดูกระชบ
มากขึAssignment
น
้
Operator
มีความหมายเท่ากับ
x+=3;
x=x+3;
x-=3;
x=x-3;
x*=3;
x=x*3;
x/=3;
x=x/3;
x%=3;
x=x%3;
10
้
ขันตอนการค
านวณของคอมพิวเตอร ์
ในต ัวดาเนิ นการทางคณิ ตศาสตร ์
1. วงเล็บ “( )” ไม่วา่ อย่างไรก็ตาม คอมพิวเตอร์จะ
ทาการคานวณในวงเล็บให ้เสร็จก่อนดาเนินการ
ต่อไป
2. “++”และ “--” กรณี ทเป็
ี่ น++ อยู ่ดา้ นหน้า เช่น
้
++x นับจากซายไปขวาหากเจอเครื
อ
่ งหมาย
เหล่านีจ
้ ะทาก่อน
้
3. การคู ณ “*”และ การหาร “ /”, “%” นับจากซาย
ไปขวา เจอเครือ
่ งหมายใด (คูณ หรือ หาร) ก็จะทา
ก่อน
้
่ กัน
4. การบวก และ ลบ “+”,“-” จากซายไปขวาเช
น
เจอเครือ
่ งหมายใด (บวก หรือ ลบ) ก็จะทาก่อน
5. “++”และ “--” กรณี ทเป็
ี่ น++ อยู ่ดา้ นหลัง เช่น
้
x++ นับจากซายไปขวาหากเจอเครื
อ
่ งหมาย
11
Exercise
int a=2, b=3, c=4;
float d=5.0, e=7.0, f=9.0;
1. 5+3
2. 4-5
3. -8+9
4. 4+-2*-5-(6*2)
5. (20/5)+(9-5)*6/3
6. a+=5
7. a*=2
8. a/=3
9. a%= 6
10. 144/3
11. 144.0/3
12. 144.0/3.0f
13. 1/2
14. 1.0/2
15. 12%3
16. 12.0%3
17. 3%2
18. 125/10
19. 125/100
20. 125%10
21. 125%10
22. 125%100
23. 125%1000
24. b+c*d/e
25. f+c*1/2.0
26. b+c*2.0
27. (b++) +d
28. ++b
29. b-30. (c++)+(++c)
12
String Operation
• เป็ น Operation ทีท
่ างานกับ String ด ้วย
operator “+”
String s1, s2, s3;
s1 = "1";
s2 = "6";
s3 = s1 + s2;
Console.WriteLine("s1 ===>"+s1+"\ns2 ===>"+s2+"\ns3=s1+s2
====>"+s3);
s1 ===>1
s2 ===>6
s3=s1+s2 ====>16
13
Boolean Operation
หรือ Logical Operation
• คือ Operation ทีส
่ ง่ ค่าคืนกลับมาเป็ น “True”
หรือ “False” เท่านัน
้
่ ==, <=, <, >, >=, !=, &&, || เป็ นต ้น
• เชน
• โดย Logical Operation มีการแบ่งออกเป็ น
– Comparison Operator
– Logical Operator
14
Comparison Operator
่
เครืองหมาย
ความหมาย
ตัวอย่าง
==
เท่ากับ
a==b
<
น ้อยกว่า
a<b
<=
น ้อยกว่าเท่ากับ
a<=b
>
มากกว่า
a>b
>=
มากกว่าเท่ากับ
a>=b
!=
ไม่เท่ากับ
a!=b
15
Logical Operator
่
เครืองหมาย
ความหมาย
ตัวอย่าง
&&
และ
a&&b
||
หรือ
a||b
!
ไม่
!b
16
Exercise
int a=2, b=3, c=4;
float d=5.0, e=7.0, f=9.0;
1. 2 <=5
2. 10 > 50
3. (2<5) &&
(6>1)
4. (5!=6) ||
(2>3)
5. a!=null
6. c-c==false
7. 0==(int)true
8. a=2+1==b
9. (a=2+1)==
b
11. (a=0)==fals
e
12. (a=1)==tru
e
13. (b<b) &&
(c>c)
14. (a!=-a) ||
(b>e)
15. c!=e=b
16. f==b=b
17. !true
18. !false
17
Bitwise Operators
• เป็ น operator อย่างหนึง่ ของ Numerical Operation
• ทีจ
่ ะกระทากับทุก ๆ bit ของ operand ในชนิด integer
type(sbyte, short, int, long, byte, ushort, uint, ulong)
• การทางานของ Bitwise เป็ นการคานวณทีเ่ ร็วกว่าการคานวณใน
แบบปกติ
่
เครืองหมาย
ความหมาย
ตัวอย่าง
&
Bitwise And
a&b
|
Bitwise Or
a|b
^
Bitwise XOR
a^b
~
Bitwise complement
~b
<<
Bitwise Shift Left
a<<b
>>
Bitwise Shift Right
a>>b
18
Truth Table AND
a
b
a&b
0
0
0
0
1
0
1
0
0
1
1
1
19
Truth Table OR
a
b
a|b
0
0
0
0
1
1
1
0
1
1
1
1
20
Truth Table XOR
a
b
a^b
0
0
0
0
1
1
1
0
1
1
1
0
21
Truth Table Complement
a
~a
0
1
1
0
22
การคานวณของ Bitwise Operators
• สมมติ ตัวแปร a =3; b=2;
• ให ้ทาการเปลีย
่ น a และ b เป็ นเลขฐาน 2 ก่อน
a= 112
b= 102
• จากนัน
้ จึงนามาคานวณกับ Bitwise ดังนี้
a&b
0000 0011 &
0000 0010
0000 0010
a|b
0000 0011|
0000 0010
0000 0011
2
3
a^b
0000 0011 &
0000 0010
0000 0001
1
~b
~ 0000 0010
b<<1
0000 0010
b>>1
0000 0010
<<
<<
1111 1101
0000 0100
0000 0001
-3
4
1
23
ประโยชน์ของ Bitwise Operators
้
• ใชในการค
านวณได ้เร็วขึน
้
้
่
• สามารถนามาใชในการ
คูณ 2 แบบเร็วๆ ได ้เชน
4<<1 = 8
่ กัน เชน
่
• สามารถมาทาผลหาร2 แบบเร็วๆ ได ้เชน
18>>1
int =9
personal = 1;
int groupในการท
้ = 2;
• สามารถใช
า Flag ได ้ โดยเก็บค่าต่างๆ
int all = 4;
ไว ้ในintBit
user_permission = personal | group;
if ((personal & user_permission) != 0)
Console.WriteLine("access granted");
24
Bitwise Assignment Operator
• นอกจากเครือ
่ งหมาย = ยังมี Operator อืน
่ ๆ อีก
่ &=, |=, ^=,<<=, >>=
เชน
ั
• โดยเครือ
่ งหมายเหล่านีท
้ าให ้ Code ดูกระชบ
มากขึน
้ และเหมือนกับ Assignment Operator
มีความหมายเท่ากับ
ปกติ Assignment Operator
x&=3;
x=x&3;
x|=3;
x=x|3;
x^=3;
x=x^3;
x<<=3;
x=x<<3;
x>>=3;
x=x>>3;
25
Exercise
int a = 1, b = 2, c = 3, d = 4, e = 5, f = 7, g =8;
1. a|b
2. a&b
3. (a&b)|(a&c)
4. a&(b|c)
5. (a|b)&(a|c)
6. a|(b&c)
7. a^b+c|b
8. a^b
9. d*e/1.0^b
10. f=a|b|d
11. a&b&c
12. a&b|c
13. a|b|d|g
14. a&b&d&g
15. g>>1
16. g<<1
17. b<<2
18. (4*2)>>1
19. (16)>>3
20. ~a
26
้
สรุปลาดับการใชงานของ
Operator
ทัง้ หมดใน C#
1.
2.
3.
4.
5.
6.
7.
8.
9.
()
++, -- กรณี วางไว ้หน ้าตัวแปร
*, /, %
+, ==, !=
&&
||
=, +=, -=, /=, %=
++, -- กรณี วางไว ้หลังตัวแปร
27
Enumerations
• การกาหนด Constant แบบ Enum
• กาหนดโดยตรงใน namespace ดังนี้
enum Color { red, blue, green } // values: 0, 1, 2
enum Access { personal = 1, group = 2, all = 4 }
enum Access1 : byte { personal = 1, group = 2, all = 4 }
้
• วิธใี ชงานดั
งต่อไปนี้
Color c = Color.blue; // enumeration constants must be qualified
Access a = Access.personal | Access.group;
if ((Access.personal & a) != 0)
Console.WriteLine("access granted");
28
้ อ
การใชเครื
่ งหมายของ enum ใน
C#
• Enumerations ไม่สามารถใช ้ int แทนได ้ (ยกเว ้นถูก
กาหนด Type ไว ้ก่อน)
• Enumeration types ถูก inherit จาก object จึงใช ้
method (Equals, ToString, ...)ได ้
• Class System.Enum ครอบคลุมการทางานบน
enumerations
• (GetName, Format, GetValues, ...).
29