1 / 19

Data Type

Data Type. Chainate, W. 01418216 Principles of programming language. Assignments. แบ่งกลุ่มๆ ละ ไม่เกิน 7 คน เลือกภาษาที่ชอบๆ แล้วทำ preview report พร้อม presentation ส่งรายงานในล๊อคเกอร์วันอังคารที่ 4 ม.ค. และนำเสนอในชม. เรียน . Python Tcl Ruby Objective C (Mac Hardware required)

elie
Download Presentation

Data Type

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. Data Type Chainate, W.

  2. 01418216 Principles of programming language Assignments แบ่งกลุ่มๆ ละ ไม่เกิน 7 คน เลือกภาษาที่ชอบๆ แล้วทำ preview report พร้อม presentation ส่งรายงานในล๊อคเกอร์วันอังคารที่ 4 ม.ค. และนำเสนอในชม. เรียน • Python • Tcl • Ruby • Objective C (Mac Hardware required) • Assembly • Prolog • Scheme • Smalltalk • LISP • APL

  3. บทนำ • การเขียนโปรแกรมเป็นการเขียนคำสั่งควบคุมการทำงาน เพื่อให้เกิดการเปลี่ยนแปลงกับข้อมูล • โครงสร้างพื้นฐาน... • การแทนข้อมูล • การปฏิบัติการกับข้อมูล • การควบคุมลำดับการทำงานกับข้อมูล • ข้อแตกต่างของแต่ละภาษาโปรแกรม... • วิธีการกำหนดรูปแบบการแทนข้อมูล • การกำหนดชนิดข้อมูลพื้นฐาน • วิธีการสั่งงานเพื่อเปลี่ยนแปลงข้อมูล

  4. คุณสมบัติของข้อมูล (property of data) • เมื่อโปรแกรมประกาศใช้ข้อมูล คุณสมบัติหรือคุณลักษณะที่จะช่วยให้โปรแกรมใช้งานข้อมูลนั้นได้ ประกอบด้วย • Name • Location • Type • Value • Lifetime • Scope • ชนิดของข้อมูล (type) มีความสำคัญ และมีบทบาทอย่างมากในการตรวจสอบความถูกต้องของข้อความสั่ง • เช่น int n; • ขนาดเนื้อที่ในหน่วยความจำ, ช่วงของค่าที่เป็นไปได้, การกระทำที่สามารถกระทำกับตัวแปร n ได้

  5. ระบบชนิดข้อมูล (type system) • การกำหนดชนิดข้อมูล คือ การกำหนดเซตของค่า และการกำหนดปฏิบัติการที่สามารถกระทำกับค่าเหล่านั้น • เช่น ชนิดข้อมูล int หมายถึงเซตของ {…, -2, -1, 0, 1, 2, …} และ {+, -, *, /, …} • ชนิดข้อมูล boolean หมายถึง {true, false} และ {&&, ||, !} • ระบบชนิดข้อมูล คือ ระบบที่ทำหน้าที่เชื่อมโยงชนิดข้อมูลเข้ากับตัวแปรและข้อมูลอื่นๆ ในโปรแกรม รวมถึงการมีกลไกในการตรวจสอบความถูกต้องของชนิดข้อมูล • ภาษา C, Java จะเชื่อมโยงข้อมูลเพียงชนิดเดียวให้กับตัวแปร เรียกว่า ภาษาที่มีชนิดคงตัว (statically typed language) • ภาษา APL, LISP จะอนุญาตให้ตัวแปรเปลี่ยนชนิดข้อมูลได้ เรียกว่า ภาษาที่มีชนิดข้อมูลพลวัต (dynamically typed language)

  6. ระบบชนิดข้อมูล (ต่อ) • ระบบชนิดข้อมูลที่เข้มแข็ง (strongly typed) เช่น ภาษา Java, Pascal • ระบบชนิดข้อมูลที่อ่อนแอ (weakly typed) เช่น ภาษา C • โปรแกรมที่ปราศจากข้อผิดพลาดเกี่ยวกับชนิดข้อมูล จะเรียกว่า มีชนิดข้อมูลที่ปลอดภัย (type safe) • ข้อผิดพลาดทั้งหลายที่เกี่ยวเนื่องกับชนิดข้อมูลจะถูกตรวจพบได้โดย คอมไพเลอร์ และระบบประมวลผล • การตรวจสอบชนิดข้อมูล • ระบบชนิดข้อมูล สร้างกลไกในการตรวจสอบชนิดข้อมูล (type checking) เพื่อเป็นหลักประกันว่า โปรแกรมที่ผ่านการตรวจสอบแล้วจะไม่มีข้อผิดพลาดใดๆ เกี่ยวกับชนิดข้อมูล

  7. การตรวจสอบชนิดข้อมูล (type checking) • สมมติให้ภาษาคอมพิวเตอร์นี้มีชนิดข้อมูลเพียง 2 ชนิดคือ intและ boolean

  8. ขั้นตอนการตรวจสอบชนิดข้อมูลขั้นตอนการตรวจสอบชนิดข้อมูล • ตรวจสอบว่าตัวแปรที่ประกาศใช้ทุกตัวต้องมีชื่อที่ไม่ซ้ำกัน • ตรวจสอบชนิดข้อมูลว่าตรงตามไวยากรณ์ของภาษา • ตัวแปรที่มีการอ้างถึงในนิพจน์ทุกนิพจน์ต้องมีการประกาศชื่อและชนิดมาก่อน • ชนิดข้อมูลที่เป็นผลลัพธ์จากการประมวลผลนิพจน์ต้องได้รับการตรวจสอบดังนี้ • ถ้านิพจน์เป็นตัวแปรเดี่ยวหรือค่าเดี่ยว ชนิดของข้อมูลผลลัพธ์ของนิพจน์ก็จะเป็นชนิดเดียวกับตัวแปรหรือค่านั้นๆ • ถ้านิพจน์มีการใช้เครื่องหมายคำนวณทางคณิตศาสตร์ (+, -, *, /) เทอมทุกเทอมต้องเป็นชนิด int และผลลัพธ์จากการคำนวณจะเป็นชนิด int • ถ้านิพจน์มีการใช้เครื่องหมายเปรียบเทียบค่า (<, <=, >, >=, ==, !=) เทอมทุกเทอมต้องเป็นชนิด int และผลลัพธ์จากการคำนวณจะเป็นชนิด boolean • ถ้านิพจน์มีการใช้เครื่องหมายตรรกะ (&&, ||, !) เทอมทุกเทอมต้องเป็นชนิด boolean และผลลัพธ์จากการคำนวณจะเป็นชนิด boolean

  9. ขั้นตอนการตรวจสอบชนิดข้อมูล(ต่อ)ขั้นตอนการตรวจสอบชนิดข้อมูล(ต่อ) • ข้อความสั่งกำหนดค่าต้องมีการตรวจสอบชนิดข้อมูลของตัวแปรปลายทาง ว่าตรงกันกับชนิดข้อมูลของนิพจน์ต้นทาง • ข้อความสั่งทำงานแบบมีเงื่อนไขและสั่งวนรอบ นิพจน์ในคำสั่งต้องมีการตรวจสอบว่าเป็นชนิดข้อมูล boolean • หากมีข้อผิดพลาดเกิดขึ้น และระบบตรวจสอบชนิดข้อมูลพบข้อผิดพลาดนี้ ระบบก็จะแจ้งข้อความเตือนโปรแกรมเมอร์ให้มีการแก้ไขโปรแกรม • การตรวจสอบชนิดข้อมูลนี้อาจจะเกิดขึ้นในช่วงการคอมไพล์โปรแกรม เรียกว่า static type checking เช่น ภาษา C, Java, Pascal เป็นต้น • หรือ อาจจะเกิดขึ้นในช่วงรันโปรแกรม เรียกว่า dynamic type checking เช่น ภาษา APL, LISP, PROLOG

  10. ความเข้ากันได้ของชนิดข้อมูลความเข้ากันได้ของชนิดข้อมูล • ภาษาคอมพิวเตอร์โดยทั่วไปมักจะไม่เข้มงวดกับชนิดของตัวแปรมากจนเกินไป (More writabilityless reliability) • ตัวแปรที่มีชนิดคล้ายกันมักจะอนุโลมให้ใช้งานคำสั่งร่วมกันได้ • ดังนั้น ระบบชนิดข้อมูลจะต้องมีกลไกตรวจสอบเพิ่มขึ้น • ความเข้ากันได้ของชนิดข้อมูล (Type compatibility) • ความเท่าเทียมกันของชนิดข้อมูล (Type equivalence)

  11. ความเข้ากันได้ของชนิดข้อมูลความเข้ากันได้ของชนิดข้อมูล • ความเข้ากันได้โดยชื่อ (name compatibility) • ชนิดข้อมูลที่มีชื่อตรงกัน เช่น int x, y; • เช่น ภาษา Pascal • ความเข้ากันได้โดยโครงสร้าง (structural compatibility) • ชนิดข้อมูลที่มีชื่อตรงกัน หรือมีโครงสร้างที่เหมือนกัน • เช่น ภาษา C (ยกเว้นข้อมูลชนิด struct) • จากตัวอย่างนี้จะเป็นอย่างไรหาก • ภาษานี้อนุญาตเฉพาะชนิดข้อมูลที่เข้ากันด้วยชื่อ • ภาษามีความยืดหยุ่นมากขึ้นด้วยลักษณะการเข้ากันได้โดยโครงสร้าง

  12. การเปลี่ยนชนิดข้อมูล (type conversion) • บางครั้งรูปแบบคำสั่งต้องการชนิดข้อมูล T1 แต่ข้อมูลที่เกิดขึ้นจริงเป็น T2 • ถ้า T1 และ T2 เป็นข้อมูลชนิดที่เข้ากันได้ โปรแกรมก็สามารถทำงานได้ • แต่ถ้า T1 และ T2 เป็นชนิดข้อมูลที่ต่างกัน อาจต้องใช้การเปลี่ยนชนิดข้อมูล • แบบแรก: coercion เป็นการเปลี่ยนชนิดข้อมูลให้โดยอัตโนมัติโดยคอมไพเลอร์ เรียกว่า implicit conversion • คำสั่งภาษา C ต่อไปนี้ • จะได้เป็น x = (int)((float)x+z)

  13. การเปลี่ยนชนิดข้อมูล (ต่อ) • แบบที่สอง: casting • เป็นการบังคับเปลี่ยนชนิดข้อมูลโดยโปรแกรมเมอร์ เรียกว่า explicit conversion • เช่น จากตัวอย่างเดิม โปรแกรมเมอร์อาจกำหนดให้เป็น x = x+(int)z; • ผลกระทบที่เกิดจากการเปลี่ยนชนิดของข้อมูล • การทำให้กว้างขึ้น widening • การทำให้แคบลง narrowing • นิสิต คิดว่าแบบไหนอาจส่งผลกระทบต่อโปรแกรมได้

  14. ชนิดข้อมูลแบบสเกลาร์(Scalar data type) • เป็นชนิดข้อมูลพื้นฐาน (Primitive data type) ที่เก็บค่าเดี่ยว • เช่น จำนวนเลข, อักขระ, ค่าตรรกะ เป็นต้น • Built-in เช่น ชนิดข้อมูล int, float, char ในภาษา C • ชนิดข้อมูลเลขจำนวนเต็ม (integer) • เป็นชนิดข้อมูลที่มีค่าเรียงลำดับจากค่าจำนวนเต็มลบไปถึงค่าจำนวนเต็มบวก • การปฏิบัติการที่สามารถกระทำกับข้อมูลชนิดนี้ประกอบด้วย • การคำนวณทางคณิตศาสตร์ • การเปรียบเทียบ

  15. Integer (cont) • การเก็บข้อมูลเลขจำนวนเต็มในคอมพิวเตอร์ นิยมใช้วิธีการสองรูปแบบ • การเก็บค่าโดยไม่ต้องมีคำอธิบายเกี่ยวกับชนิดของค่า การใช้จะต้องมีการประกาศตัวแปรล่วงหน้า และใช้วิธีตรวจสอบชนิดข้อมูล แบบ static type checking เช่น ภาษา C, Java • การเก็บคำอธิบายเกี่ยวกับชนิดของค่าแยกจากการเก็บค่าของข้อมูล เป็นวิธีการที่ใช้ในภาษาที่เป็น dynamic type checking เช่น ภาษา LISP

  16. Integer (cont) • ในภาษาคอมพิวเตอร์บางภาษา เช่น Pascal, Adaอนุญาตให้ประกาศชนิดข้อมูลเลขจำนวนเต็มที่มีขอบเขตของค่าอยู่ภายในช่วงแคบๆ เรียกว่า subrangeหรือ subtype

  17. ชนิดข้อมูลเลขจำนวนจริง (floating-point) • กำหนดมาตรฐานโดย IEEE ซึ่งแบ่งได้เป็น 2 กลุ่ม คือ • Single precision • Double precision • ซึ่งในภาษา C จะเรียกชนิดข้อมูลนี้ว่า float และ double

  18. ชนิดข้อมูลตรรกะ (Boolean) • True and False • and, or, not • ชนิดข้อมูลอักขระ (character) • ASCII ใช้เนื้อที่ 1 byte • เก็บได้ 128 อักขระ • สามารถเปรียบเทียบลำดับก่อน-หลังได้

  19. ชนิดข้อมูลแจกแจงค่า (enumeration) • เป็นชนิดข้อมูลแบบแจกแจงค่าเดี่ยว กำหนดได้โดยโปรแกรมเมอร์ ด้วยการระบุชื่อชนิดข้อมูล และค่าต่างๆ ที่เป็นไปได้ • ตัวอย่างในภาษา C • ตัวอย่างในภาษา Pascal

More Related