1 / 28

บทที่ 3 ตัวดำเนินการ และ นิพจน์

บทที่ 3 ตัวดำเนินการ และ นิพจน์. OUTLINE 1. ตัวดำเนินการ (Operator) 2. นิพจน์(Expression) 3. คำสั่งเชิงเดียว และ คำสั่งเชิงกลุ่ม. ตัวดำเนินการ (Operator). ตัวดำเนินการ (Operator) เทียบได้กับคำสั่งให้ดำเนินกรรมวิธีกับข้อมูล ทางคณิตศาสตร์ บูลีน การเปรียบเทียบ และ อื่นๆ.

ugo
Télécharger la présentation

บทที่ 3 ตัวดำเนินการ และ นิพจน์

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 3ตัวดำเนินการ และ นิพจน์ • OUTLINE 1. ตัวดำเนินการ (Operator) 2. นิพจน์(Expression) 3. คำสั่งเชิงเดียว และ คำสั่งเชิงกลุ่ม

  2. ตัวดำเนินการ (Operator) • ตัวดำเนินการ (Operator) เทียบได้กับคำสั่งให้ดำเนินกรรมวิธีกับข้อมูล ทางคณิตศาสตร์ บูลีน การเปรียบเทียบ และ อื่นๆ

  3. ตัวดำเนินการ (Operator) • ตัวดำเนินการ (Operator) ในปาสคาลแบ่งออกเป็น • ตัวดำเนินการทางคณิตศาสตร์ (arithmetic operator) • มี +, -, *, /, div, mod • ตัวดำเนินการระดับบิต (bitwise operators/ logical operator) • ตัวดำเนินการเปรียบเทียบ (relational operators)

  4. ตัวดำเนินการ (Operator) • ตัวดำเนินการบูลีน (boolean operator) • ตัวดำเนินการแอดเดรส (address operator) • ตัวดำเนินการเซต (set operator) • ตัวดำเนินการสตริง (string operator)

  5. ตัวดำเนินการระดับบิต • ตัวดำเนินการระดับบิต (bitwise operators) • ต้องเป็นเลขจำนวนเต็มเท่านั้น • shl(shift left) เลื่อนข้อมุลทุกบิตไปทางซ้าย โดยจำนวนครั้งอยู่ทางขวาของตัวดำเนินการ เช่น 2 shl 1 จะได้ค่า 4 2 shl 2 จะได้ค่า 8

  6. ตัวดำเนินการระดับบิต • ถ้าข้อมูลเป็น byte จะใช้เนื้อที่ 1 ไบต์ มี 8 บิต และมี ค่าเป็น 2แล้วการ shl ทำได้ดังนี้ 1. ข้อมูลมีค่า 2 0000 0010 มีค่า 2 2. ถ้าใช้ 2 shl 1 0000 0100 หลังเลื่อนมีค่าเป็น 4 3. ถ้าใช้ 15 shl 2 0011 1100 หลังเลื่อนมีค่าเป็น 60

  7. ตัวดำเนินการระดับบิต • Shl ถ้าเลื่อนไปทางซ้าย จะเหมือนกับเอาข้อมูล คูณด้วย สองยกกำลังจำนวนครั้งที่เลื่อน เช่น 15 shl 2 จะเท่ากับ 15 * 22= 60 • shr(shift right) เลื่อนข้อมูลทุกบิตไปทางขวา • Shl ถ้าเลื่อนไปทางขวา จะเหมือนกับเอาข้อมูล หารด้วย สองยกกำลังจำนวนครั้งที่เลื่อน เช่น 15 shr 2 จะเท่ากับ 15 / 22= 3 ได้ผลหารไม่มีเศษ

  8. ตัวดำเนินการระดับบิตแบบตรรกะตัวดำเนินการระดับบิตแบบตรรกะ • AND ระดับบิต ทำกับเลขจำนวนเต็ม 2 จำนวน จะ and เฉพาะบิตที่ตรงกันเท่านั้น เช่น 15 and 9 ค่า 15 0000 1111 ค่า 9 0000 1100 15 and 9 0000 1100

  9. ตัวดำเนินการระดับบิตแบบตรรกะตัวดำเนินการระดับบิตแบบตรรกะ • OR ระดับบิต ทำกับเลขจำนวนเต็ม 2 จำนวน จะ OR ในบิตที่ตรงกัน เช่น 15 OR 9 ค่า 15 0000 1111 ค่า 9 0000 1100 15 OR 9 0000 1111

  10. ตัวดำเนินการระดับบิตแบบตรรกะตัวดำเนินการระดับบิตแบบตรรกะ • XOR (Exclusive or) ระดับบิต ทำกับเลขจำนวนเต็ม ลักษณะการทำงานคือ • ถ้าบิตตรงกันมีค่าต่างกันผลลัพธ์เป็น 1 • ถ้าบิตตรงกันมีค่าเหมือนกันผลลัพธ์เป็น 0 ค่า 15 0000 1111 ค่า 9 0000 1100 15 XOR 9 0000 0011

  11. ตัวดำเนินการระดับบิตแบบตรรกะตัวดำเนินการระดับบิตแบบตรรกะ • Not ระดับบิต เป็นตัวดำเนินการที่มีค่าอยู่หลัง not ซึ่งจะทำการกลับบิต เช่น not 17 ค่า 17 0001 0001 not 17 1110 1110 มีค่า -18

  12. โปรแกรมการใช้ Operator PROGRAM operator1; USES Wincrt; begin writeln('+: ',25+50); writeln('/: ',25/50:5:2); writeln('MOD: ',50 mod 3); writeln('DIV: ',50 div 3);

  13. โปรแกรมการใช้ Operator writeln('shl: ',1 shl 1:5, 2 shl 2:5, 2 shl 3:5); writeln('shr: ',15 shr 1:5, 15 shr 2:5, 15 shr 3:5); writeln('and: ',25 and 50); writeln('OR: ', 25 or 50); writeln('XOR: ',25 XOR 50); writeln('not: ', not 25); end.

  14. ตัวดำเนินการเปรียบเทียบ ตัวดำเนินการเปรียบเทียบ • ตัวดำเนินการเปรียบเทียบ มีค่าที่ต้องการเปรียบเทียบอยู่ระหว่างตัวดำเนินการ ผลลัพธ์เป็นบูลีน คือ false , true • >, <, >=, <=, <>, in • ‘E’ in [‘a’,’e’,’i’,’o’,’u’] • 2 < 3

  15. ตัวดำเนินการบูลีน • ตัวดำเนินการบูลีน มี 4 ตัว and, or, xor, not มีการทำงานเหมือนระดับบิต ต่างตรงที่ สองข้างของตัวดำเนินการเป็นบูลีน เช่น (a>13) and (b < 5) ผลลัพธ์มี จริงกับเท็จ

  16. ตัวดำเนินการบูลีน Aมีค่า B มีค่า A and B A or B A xor B not A T T T T F F T F F T T F F T F T T T F F F F F T

  17. ตัวดำเนินการแอดเดรส • ตัวดำเนินการแอดเดรส มี 2 ตัวคือ @ และ^ • @ ใช้บอกตำแหน่งในหน่วยความจำของตัวแปร เช่น ตัวแปร sum ถ้าเขียน @sum จะได้ที่อยู่ในหน่วยความจำของ sum

  18. ตัวดำเนินการเซต และ สตริง • ตัวดำเนินการเซต มี • + union • - intersection • * difference • ตัวดำเนินการสตริง มี ตัวเดียว คือ concatenate +เป็นการเชื่อมตัวอักษรเข้าด้วยกัน เช่น ‘a’ +’bc’ ได้ abc

  19. ลำดับการทำงานของตัวดำเนินการลำดับการทำงานของตัวดำเนินการ 1. @, not 2. *, /, div, mod, and, shl, shr 3. +, -, or, xor 4. =, <> , < , > , <= , >= , IN ถ้ามีฟังก์ชัน หรือ วงเล็บให้ทำก่อน

  20. นิพจน์คณิตศาสตร์ • นิพจน์ อาจเป็น ตัวแปร ค่าคงที่ หรือ ฟังก์ชัน • นิพจน์ทางคณิตศาสตร์ คือ นิพจน์ที่ใช้ตัวดำเนินการทางคณิตศาสตร์ +, - , * , / , div , mod โดยข้อมูลต้องเป็นตัวเลข • หากมีการผสมระหว่างเลขจำนวนเต็ม และ จำนวนจริง เลขจำนวนเต็มจะถูกเปลี่ยนเป็นจำนวนจริงโดยอัตโนมัต • หากต้องการเก็บค่าของเลขจำนวนจริงไว้ในเลขจำนวนเต็มต้องใช้ ฟังก์ชัน trunc(R) round( R) ก่อน

  21. การสร้างนิพจน์ทางคณิตศาสตร์การสร้างนิพจน์ทางคณิตศาสตร์ • 5(num+total ) ===> 5 * (num + total) • (x2 +y2)2 ====> SQR(x*x + y*y) หรือ SQR(SQR(x)+SQR (y)) • -b+ b2- 4ac ===> (-b+SQRT(SQR(b)-4*a*c))/ (2*a) 2a

  22. ตัวอย่างนิพจน์ทางคณิตศาสตร์ตัวอย่างนิพจน์ทางคณิตศาสตร์ PROGRAM expression1; USES Wincrt; VAR a,b,tem1,tem2 :integer; c,d,tem3 : real; BEGIN clrscr; a:= 27; b:=4; c:= 56.2; d:= 7.0;

  23. ตัวอย่างนิพจน์ทางคณิตศาสตร์ตัวอย่างนิพจน์ทางคณิตศาสตร์ Writeln ('int,int: ', A+B:15, a-b:15, a*b:15, a/b:25); Writeln('int,rel: ',a+c:18, a-c:18, a*c:18, a/c:18); Writeln('rel,int: ',d+b:18,d-b:18,d*b:18,d/c:18); Writeln('rel,rel: ',c+d:18,c-d:18,c*d:18,c/d:18); tem1 := a div b; tem2 := a mod b; tem3 := a div b; Writeln (tem1:20,tem2:20,tem3:20) End.

  24. นิพจน์แบบบูลีน มีค่า จริงกับเท็จเท่านั้น เพราะฉะนั้นต้องประกาศตัวแปลงแบบบูลีน ตัวอย่าง: VAR count,total :integer; length,height : real; done : boolean: Count < total (count=total) and(length>height) and done (count mod total =0) or(count <= 100) นิพจน์แบบบูลีน

  25. PROGRAM operator1; USES Wincrt; VAR a, b : real; flag : boolean; begin write('Enter a:'); Readln (a); write('Enter b:'); Readln (b); flag := a < b; Writeln(flag); end. นิพจน์แบบบูลีน

  26. คำสั่งเชิงเดียว และ คำสั่งเชิงกลุ่ม • คำสั่งเชิงเดียว คือ ประโยคคำสั่ง 1 คำสั่ง • คำสั่งเชิงกลุ่ม (compound statement) เมื่อต้องการให้มีคำสั่งหลายประโยคหรือ เป็นกลุ่มคำสั่งให้จัดอยู่ในคอมเปานด์ มีรูปแบบดังนี้ begin statement 1; : statement N end

More Related