Docstoc

Data Type

Document Sample
Data Type Powered By Docstoc
					DATA TYPE
 Chainate, W.
01418216 Principles of programming language

ASSIGNMENTS
•   Python
                           แบ่งกลุ่มๆ ละ ไม่เกิน 7 คน
•   Tcl
•   Ruby
                                    เลือกภาษาที่ชอบๆ
•                             แล้วทา preview report
    Objective C (Mac Hardware required)
•   Assembly
•   Prolog                       พร้อม presentation
•   Scheme
•   Smalltalk                        ั
                ส่งรายงานในล๊อคเกอร์วนอังคารที่ 4 ม.ค.
•   LISP
•   APL                       และนาเสนอในชม. เรียน
บทนา
•                                   ่
    การเขียนโปรแกรมเป็ นการเขียนคาสังควบคุ มการทางาน เพื่อให้เกิดการเปลี่ยนแปลงกับข้อมูล
•   โครงสร้างพื้ นฐาน...
     • การแทนข้อมูล
     • การปฏิบัติการกับข้อมูล
     • การควบคุ มลาดับการทางานกับข้อมูล
•   ข้อแตกต่างของแต่ละภาษาโปรแกรม...
     • วิธีการกาหนดรูปแบบการแทนข้อมูล
     • การกาหนดชนิ ดข้อมูลพื้ นฐาน
     • วิธีการสังงานเพื่อเปลี่ยนแปลงข้อมูล
                ่
คุณสมบัติของข้อมูล (PROPERTY OF DATA)
•                         ้
    เมื่อโปรแกรมประกาศใช้ขอมูล คุ ณสมบัติหรือคุณลักษณะที่จะช่วยให้โปรแกรมใช้งานข้อมูลนั้ นได้ ประกอบด้วย
     • Name
     • Location
     • Type
     • Value
     • Lifetime
     • Scope
•   ชนิ ดของข้อมูล (type) มีความสาคัญ และมีบทบาทอย่างมากในการตรวจสอบความถูกต้องของข้อความสัง
                                                                                           ่
     • เช่น int n;
     • ขนาดเนื้ อที่ในหน่ วยความจา, ช่วงของค่าที่เป็ นไปได้, การกระทาที่สามารถกระทากับตัวแปร n ได้
ระบบชนิ ดข้อมูล (TYPE SYSTEM)
•   การกาหนดชนิ ดข้อมูล คือ การกาหนดเซตของค่า และการกาหนดปฏิบัติการที่สามารถกระทากับค่าเหล่านั้ น
     • เช่น ชนิ ดข้อมูล int หมายถึง เซตของ {…, -2, -1, 0, 1, 2, …} และ {+, -, *, /, …}
     • ชนิ ดข้อมูล boolean หมายถึง {true, false} และ {&&, ||, !}
•   ระบบชนิ ดข้อมูล คือ ระบบที่ทาหน้าที่ เชื่อมโยงชนิ ดข้อมูลเข้ากับตัวแปรและข้อมูลอื่นๆ ในโปรแกรม รวมถึ งการมีกลไก
    ในการตรวจสอบความถูกต้องของชนิ ดข้อมูล
     • ภาษา C, Java จะเชื่อมโยงข้อมูลเพียงชนิ ดเดียวให้กับตัวแปร เรียกว่า ภาษาที่มีชนิ ดคงตัว (statically
       typed language)
     • ภาษา APL, LISP จะอนุ ญาตให้ตัวแปรเปลี่ยนชนิ ดข้อมูลได้ เรียกว่า ภาษาที่มีชนิ ดข้อมูลพลวัต
       (dynamically typed language)
ระบบชนิ ดข้อมูล (ต่อ)
•   ระบบชนิ ดข้อมูลที่ เข้มแข็ง (strongly typed) เช่น ภาษา Java, Pascal
•   ระบบชนิ ดข้อมูลที่ อ่อนแอ (weakly typed) เช่น ภาษา C
•   โปรแกรมที่ปราศจากข้อผิดพลาดเกี่ยวกับชนิ ดข้อมูล จะเรียกว่า มีชนิ ดข้อมูลที่ปลอดภัย (type safe)
     • ข้อผิดพลาดทั้งหลายที่ เกี่ยวเนื่ องกับชนิ ดข้อมูลจะถูกตรวจพบได้โดย คอมไพเลอร์ และระบบประมวลผล
•   การตรวจสอบชนิ ดข้อมูล
     • ระบบชนิ ดข้อมูล สร้างกลไกในการตรวจสอบชนิ ดข้อมูล (type checking) เพื่อเป็ นหลักประกันว่า โปรแกรมที่
                                  ้
       ผ่านการตรวจสอบแล้วจะไม่มีขอผิดพลาดใดๆ เกี่ยวกับชนิ ดข้อมูล
การตรวจสอบชนิ ดข้อมูล (TYPE CHECKING)
•   สมมติให้ภาษาคอมพิวเตอร์นี้มีชนิ ดข้อมูลเพียง 2 ชนิ ดคือ int และ boolean
ขั้นตอนการตรวจสอบชนิ ดข้อมูล
1. ตรวจสอบว่าตัวแปรที่ประกาศใช้ทุกตัวต้องมีช่ือที่ไม่ซ้ากัน
2. ตรวจสอบชนิ ดข้อมูลว่าตรงตามไวยากรณ์ของภาษา
3. ตัวแปรที่ มีการอ้างถึงในนิ พจน์ ทุกนิ พจน์ ตองมีการประกาศชื่อและชนิ ดมาก่อน
                                               ้
4. ชนิ ดข้อมูลที่เป็ นผลลัพธ์จากการประมวลผลนิ พจน์ ตองได้รบการตรวจสอบดังนี้
                                                    ้     ั
       • ถ้านิ พจน์ เป็ นตัวแปรเดี่ยวหรือค่าเดี่ยว ชนิ ดของข้อมูลผลลัพธ์ของนิ พจน์ ก็จะเป็ นชนิ ดเดียวกับตัวแปรหรือค่านั้ นๆ
       • ถ้านิ พจน์ มีการใช้เครื่องหมายคานวณทางคณิตศาสตร์ (+, -, *, /) เทอมทุกเทอมต้องเป็ นชนิ ด int และผลลัพธ์
         จากการคานวณจะเป็ นชนิ ด int
       • ถ้านิ พจน์ มีการใช้เครื่องหมายเปรียบเที ยบค่า (<, <=, >, >=, ==, !=) เทอมทุกเทอมต้องเป็ นชนิ ด int และ
         ผลลัพธ์จากการคานวณจะเป็ นชนิ ด boolean
       • ถ้านิ พจน์ มีการใช้เครื่องหมายตรรกะ (&&, ||, !) เทอมทุกเทอมต้องเป็ นชนิ ด boolean และผลลัพธ์จากการ
         คานวณจะเป็ นชนิ ด boolean
ขั้นตอนการตรวจสอบชนิ ด ข้อมูล (ต่อ)
5. ข้อความสังกาหนดค่าต้องมีการตรวจสอบชนิ ดข้อมูลของตัวแปรปลายทาง ว่าตรงกันกับชนิ ดข้อมูลของนิ พจน์ ตนทาง
            ่                                                                                       ้
6. ข้อความสังทางานแบบมีเงื่อนไขและสังวนรอบ นิ พจน์ ในคาสังต้องมีการตรวจสอบว่าเป็ นชนิ ดข้อมูล boolean
            ่                       ่                    ่


•         ้
    หากมีขอผิดพลาดเกิดขึ้ น และระบบตรวจสอบชนิ ดข้อมูลพบข้อผิดพลาดนี้ ระบบก็จะแจ้งข้อความเตือนโปรแกรมเมอร์ให้
    มีการแก้ไขโปรแกรม
•   การตรวจสอบชนิ ดข้อมูลนี้ อาจจะเกิดขึ้ นในช่วงการคอมไพล์โปรแกรม เรียกว่า static type checking เช่น ภาษา
    C, Java, Pascal เป็ นต้น
•   หรือ อาจจะเกิดขึ้ นในช่วงรันโปรแกรม เรียกว่า dynamic type checking เช่น ภาษา APL, LISP, PROLOG
ความเข้ากันได้ของชนิ ดข้อมูล
•   ภาษาคอมพิวเตอร์โดยทัวไปมักจะไม่เข้มงวดกับชนิ ดของตัวแปรมากจนเกินไป (More writability less reliability)
                        ่
•                                                     ่
    ตัวแปรที่ มีชนิ ดคล้ายกันมักจะอนุ โลมให้ใช้งานคาสังร่วมกันได้
•   ดังนั้ น ระบบชนิ ดข้อมูลจะต้องมีกลไกตรวจสอบเพิ่มขึ้ น
     • ความเข้ากันได้ของชนิ ดข้อมูล (Type compatibility)
     • ความเท่าเที ยมกันของชนิ ดข้อมูล (Type equivalence)
ความเข้ากันได้ของชนิ ดข้อมูล
•   ความเข้ากันได้โดยชื่อ (name compatibility)
     • ชนิ ดข้อมูลที่มีชื่อตรงกัน เช่น int x, y;
     • เช่น ภาษา Pascal
•   ความเข้ากันได้โดยโครงสร้าง (structural compatibility)
     • ชนิ ดข้อมูลที่มีชื่อตรงกัน หรือมีโครงสร้างที่ เหมือนกัน
     • เช่น ภาษา C (ยกเว้นข้อมูลชนิ ด struct)
•   จากตัวอย่างนี้ จะเป็ นอย่างไรหาก
     1. ภาษานี้ อนุ ญาตเฉพาะชนิ ดข้อมูลที่เข้ากันด้วยชื่อ
     2. ภาษามีความยืดหยุ่นมากขึ้ นด้วยลักษณะการเข้ากัน
        ได้โดยโครงสร้าง
การเปลี่ยนชนิ ดข้อมูล (TYPE CONVERSION)
•   บางครั้งรูปแบบคาสังต้องการชนิ ดข้อมูล T1 แต่ขอมูลที่ เกิดขึ้ นจริงเป็ น T2
                      ่                          ้
     • ถ้า T1 และ T2 เป็ นข้อมูลชนิ ดที่เข้ากันได้ โปรแกรมก็สามารถทางานได้
     • แต่ถา T1 และ T2 เป็ นชนิ ดข้อมูลที่ต่างกัน อาจต้องใช้การเปลี่ยนชนิ ดข้อมูล
           ้
•   แบบแรก: coercion เป็ นการเปลี่ยนชนิ ดข้อมูลให้โดยอัตโนมัติโดยคอมไพเลอร์ เรียกว่า implicit conversion
     • คาสังภาษา C ต่อไปนี้
           ่




     • จะได้เป็ น x = (int)((float)x+z)
การเปลี่ยนชนิ ดข้อมูล (ต่อ)
•   แบบที่สอง: casting
     • เป็ นการบังคับเปลี่ยนชนิ ดข้อมูลโดยโปรแกรมเมอร์ เรียกว่า explicit conversion
     • เช่น จากตัวอย่างเดิม โปรแกรมเมอร์อาจกาหนดให้เป็ น x = x+(int)z;
•   ผลกระทบที่เกิดจากการเปลี่ยนชนิ ดของข้อมูล
     • การทาให้กว้างขึ้ น widening
     • การทาให้แคบลง narrowing
•   นิ สิต คิดว่าแบบไหนอาจส่งผลกระทบต่อโปรแกรมได้
ชนิ ดข้อมูลแบบสเกลาร์ (SCALAR DATA TYPE)
•   เป็ นชนิ ดข้อมูลพื้ นฐาน (Primitive data type) ที่ เก็ บค่าเดี่ยว
     • เช่น จานวนเลข, อักขระ, ค่าตรรกะ เป็ นต้น
•   Built-in เช่น ชนิ ดข้อมูล int, float, char ในภาษา C
•   ชนิ ดข้อมูลเลขจานวนเต็ม (integer)
     • เป็ นชนิ ดข้อมูลที่ มีค่าเรียงลาดับจากค่าจานวนเต็ มลบไปถึงค่าจานวนเต็ มบวก
     • การปฏิบัติการที่สามารถกระทากับข้อมูลชนิ ดนี้ ประกอบด้วย
             • การคานวณทางคณิตศาสตร์
             • การเปรียบเทียบ
INTEGER (CONT)
•   การเก็บข้อมูลเลขจานวนเต็ มในคอมพิวเตอร์ นิ ยมใช้วิธีการสองรูปแบบ
     • การเก็บค่าโดยไม่ตองมีคาอธิบายเกี่ยวกับชนิ ดของค่า การใช้จะต้องมีการประกาศตัวแปรล่วงหน้า และใช้วิธี
                        ้
       ตรวจสอบชนิ ดข้อมูล แบบ static type checking เช่น ภาษา C, Java
     • การเก็บคาอธิบายเกี่ยวกับชนิ ดของค่าแยกจากการเก็บค่าของข้อมูล เป็ นวิธีการที่ใช้ในภาษาที่ เป็ น dynamic
       type checking เช่น ภาษา LISP
INTEGER (CONT)
•   ในภาษาคอมพิวเตอร์บางภาษา เช่น Pascal, Ada อนุ ญาตให้ประกาศชนิ ดข้อมูลเลขจานวนเต็ มที่ มีขอบเขตของค่าอยู่
    ภายในช่วงแคบๆ เรียกว่า subrange หรือ subtype
ชนิ ดข้อมูลเลขจานวนจริง (FLOATING-POINT)
•   กาหนดมาตรฐานโดย IEEE ซึ่งแบ่งได้เป็ น 2 กลุ่ม คือ
     • Single precision
     • Double precision
•   ซึ่งในภาษา C จะเรียกชนิ ดข้อมูลนี้ ว่า float และ double
ชนิ ดข้อมูลตรรกะ (BOOLEAN)
•   True and False
•   and, or, not



• ชนิ ดข้อมูลอักขระ (character)
     • ASCII ใช้เนื้ อที่ 1 byte
     • เก็บได้ 128 อักขระ
     • สามารถเปรียบเที ยบลาดับก่อน-หลังได้
ชนิ ดข้อมูลแจกแจงค่า (ENUMERATION)
•   เป็ นชนิ ดข้อมูลแบบแจกแจงค่าเดี่ยว กาหนดได้โดยโปรแกรมเมอร์ ด้วยการระบุชื่อชนิ ดข้อมูล และค่าต่างๆ ที่ เป็ นไปได้
     • ตัวอย่างในภาษา C




     • ตัวอย่างในภาษา Pascal

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:12
posted:2/25/2013
language:Unknown
pages:19