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