งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

User Defined Simple Data Type

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "User Defined Simple Data Type"— ใบสำเนางานนำเสนอ:

1 User Defined Simple Data Type
Computer Programming For Engineer โดย ดร. นวภัค เอื้ออนันต์ 6 กันยายน 2545

2 Standard Scalar Data Types in Pascal
ชนิดของข้อมูล Scalar มาตราฐานในภาษา Pascal 1. Integer จำนวนเต็ม ใน Turbo Pascal กำหนดให้มีค่าระหว่าง –32768 ถึง ได้ 2. Real จำนวนจริง ใช้เก็บตัวเลขทศนิยม 3. Char ตัวอักษร ใช้เก็บตัวอักษร (char ย่อมาจาก character, ตัวอักษร 1 ตัว ใช้หน่วยความจำ 1 Byte ดังนั้นตัวอักษรที่เป็นไปได้ทั้งหมดมี 256 รูปแบบ) 4. Boolean ใช้เก็บค่าทางตรรก มีค่าที่เป็นไปได้ 2 ค่าคือ True หรือ False 5. String สายอักขระ ใช้เก็บข้อความ (มีตัวอักษรมาประกอบกันหลายตัว) หมายเหตุ Scalar หมายถึง “ค่าเดียว”

3 ชนิดของข้อมูลที่มีลำดับ
Ordinal Data Types ชนิดของข้อมูลที่มีลำดับ Ordinal แปลว่า “เป็นลำดับ” ดังนั้น ordinal data type คือชนิด ช้อมูลที่มีลำดับ (ที่จำกัด) ใน Standard scalar data types ของ Pascal มี 3 ชนิดที่เป็น Ordinal scalar data type คือ 1. Integer เลขจำนวนเต็ม เป็นข้อมูลที่มีลำดับเช่น 1 มาก่อน 2, 6 ตามหลัง 5 เป็นต้น 2. Character ตัวอักษรก็มีลำดับ เช่น ‘A’ มาก่อน ‘B’ เป็นต้น ลำดับในที่ นี้สามารถใช้เลขจำนวนเต็มแทนได้ เช่น ตัว ‘a’ คือตัวอักษรในลำดับที่ 97 ในตาราง ASCII เราสามารถใช้ function ord( ) ในการดูค่า เลขลำดับที่ ของข้อมูล เช่น writeln(ord(‘b’)) จะได้ 98 ออกมา ซี่ง 98 คือลำดับของ ‘b’ 3. Boolean ข้อมูลแบบ Boolean มีลำดับคือ false เป็น ลำดับแรก (มีค่าเป็น 0) และ True เป็นลำดับถัดมา (มีค่าเป็น 1)

4 ข้อควรระวังเรื่อง Ordinal Data type
เราไม่นับ Real ว่าเป็น ordinal เพราะถึงแม้ว่าเราสามารถเปรียบเทียบเลข จำนวนจริงได้เช่น 2.1 น้อยกว่า 2.5 แต่ระหว่าง 2.1 ถึง 2.5 มีเลขจำนวนจริงที่เป็นไป ได้นับไม่ถ้วน String ก็เช่นเดียวกัน เราไม่จัดว่าเป็น ordinal กล่าวคือเราอาจบอกได้ว่า ‘ABCD’ น้อยกว่า ‘ABCE’ หรือ ‘ABCD’ น้อยกว่า ‘ABCEA’ แต่การ นำตัวอักษรมาเรียงกันโดยไม่จำกัดความยาวนั้น มีความเป็นไปได้ไม่จำกัด เราจึงกำหนด ลำดับที่แน่นอนให้ string ไม่ได้ ข้อมูลที่ไม่เป็น Ordinal นี้ไม่สามารถนำมาเป็น index ของ array ได้

5 Top 10 ไวยากรณ์ที่นักศึกษาใช้ผิดบ่อยมาก
ตัวอย่างที่ผิด เงื่อนไขของคำสั่ง case ต้องเป็น ordinal data เท่านั้น จะเป็น real ไม่ได้ Program WrongDataType; Var age:real; Begin readln(age); Case age of : writeln(‘You are children’); : writeln(‘You are teenage’); Else writeln(‘You are adult’); End; End. Program WrongDataType; Var age:integer; Begin readln(age); Case age of : writeln(‘You are children’); : writeln(‘You are teenage’); Else writeln(‘You are adult’); End; End. ตัวอย่างที่ถูก ต้องแก้เป็น Ordinal data type

6 ชนิดของข้อมูลที่ผู้ใช้กำหนดเอง
User Defined Data Type ชนิดของข้อมูลที่ผู้ใช้กำหนดเอง ทำไมต้องมี User defined data type ชนิดของข้อมูลที่ Pascal กำหนดให้มาก็น่าจะเพียงพอในการ ทำงานของโปรแกรม แต่ในบางโอกาสเราอาจจะต้องการกำหนดชนิดของข้อมูล ขึ้นมาใหม่เพื่อให้เหมาะสมกับงานบางอย่าง หรือช่วยให้เขียนโปรแกรมได้ง่ายขึ้น ความจริง User defined data type ก็สร้างมาจาก standard Data type ของ Pascal ในภาษา Pascal มี 2 รูปแบบสำหรับ user defined data type ที่เป็น scalar 1. Subrange data type 2. Enumerated data type

7 Subrange Data Type รูปแบบการประกาศ
ชื่อชนิดข้อมูลใหม่ เป็นชื่อที่เราตั้งเอง (โดยให้ถูกต้องตามกฎการตั้งชื่อ) ทั้งค่าเริ่มต้นและค่าสุดท้ายต้องเป็น - ordinal data ชนิดเดียวกัน - ค่าสุดท้ายต้องมีลำดับที่สูงกว่าค่าเริ่มต้น ตัวอย่าง อย่าลืมใส่ .. ไว้ตรงกลาง Program MyNewType; Type month = 1..12; day = ; uppercase = ‘A’ .. ‘Z’; Var lastmonth : month; today : day; ch : uppercase; ประกาศชนิดข้อมูลใหม่ชื่อ month, day และ uppercase ประกาศตัวแปร

8 ห้ามป้อนค่าที่ไม่อยู่ในช่วงที่กำหนดไว้ใน ตอนประกาศ type เช่น
Top 10 ข้อผิดพลาด ตัวอย่างที่ผิด Program MyNewType; Type month = 1..12; day = ; uppercase = ‘A’ .. ‘Z’; Var lastmonth : month; today : day; ch : uppercase; Begin lastmonth := 14; ch := ‘h’; writeln(lastmonth,ch); End. ห้ามป้อนค่าที่ไม่อยู่ในช่วงที่กำหนดไว้ใน ตอนประกาศ type เช่น lastmonth เป็นตัวแปรชนิด month ดังนั้นค่าที่เป็นไปคือ 1 ถึง 12 เท่านั้น ส่วนค่าที่เป็นไปได้ของ ch คือ ‘A’ ถึง ‘Z’ เท่านั้น การป้อนข้อมูลจาก keyboard โดยใช้ read หรือ readln ก็ต้องระวัง ไม่ควรให้ป้อนค่าที่ไม่อยู่ในช่วงที่กำหนด

9 Enumerated Data Type เป็น data type ที่เราสามารถกำหนดชื่อให้แก่ รายการข้อมูล (data item) แต่ละรายการเรียงตามลำดับได้ รูปแบบการประกาศ Type ชื่อชนิดข้อมูล = (ชื่อรายการที่ 1,ชื่อรายการที่ 2, ไปเรื่อยๆจนถึง ,ชื่อรายการสุดท้าย); ตัวอย่าง Program MyNewType; Type days = (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday); color = (white,red,yellow,orange,green,purple,blue,black); Var today : days; mycarcolor : color; Begin today := Friday; mycarcolor := white; ตั้งชื่อตัวแปร ประกาศชนิดข้อมูล ชนิดใหม่ชื่อ days และ color การกำหนดค่าให้ตัวแปร

10 ลำดับของ enumerated data type
ทั้ง subrange data type และ enumerated data type จัดว่าเป็น Ordinal data type สำหรับ enumerated data type ใน Pascal จะจัดให้ชื่อรายการข้อมูลชื่อแรกสุดมีลำดับที่ 0 และชื่อรายการถัดมาจะมีลำดับเพิ่ม ขึ้นทีละ1 ตัวอย่าง เมื่อกำหนด Type days = (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday); จะได้ Ord(Sunday) มีค่าเป็น 0 Ord(Tuesday) มีค่าเป็น 2 Ord(Saturday) มีค่าเป็น 6 หมายเหตุ เราสามารถใช้ function ord( ) ในการหา เลขลำดับที่ ของข้อมูลแบบ Enumerated data type ได้

11 การใช้งาน Enumerated Data Type
Program MyNewType; Type days = (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday); color = (white,red,yellow,orange,green,purple,blue,black); Var today,d: days; mycarcolor : color; Begin today := Friday; mycarcolor := white; for d := Sunday to Saturday Do writeln(ord(d)); if mycarcolor < > red then writeln(‘My car color is not red’); ใช้ assign ค่าให้ตัวแปร เราสามารถใช้ชื่อรายการ ของ data ชนิดนั้นๆมาใส่ได้ ใช้ในคำสั่ง for ฟังก์ชัน ord( ) ใช้ดูลำดับของข้อมูล ใช้เปรียบเทียบข้อมูล

12 การใช้งาน Enumerated Data Type (ต่อ)
การ Assign ค่าให้ตัวแปร เราสามารถใช้ ชื่อรายการข้อมูล มากำหนดค่าให้ตัวแปรได้เลย เช่น today := Friday; Mycarcolor := white; ระวังอย่าไปสับสนระหว่าง ชื่อรายการข้อมูล กับ ข้อความ today := ‘Friday’; Mycarcolor := ‘white’; ตัวอย่างที่ผิด ใช้กับคำสั่ง for For today := Monday to Friday Do writeln(‘working day!’);

13 การใช้งาน Enumerated Data Type (ต่อ)
ใช้กับคำสั่ง case ใช้ในเงื่อนไขของ case ได้ Case today of Monday .. Friday : writeln(‘Let’s go to school!’); Sunday, Saturday : writeln(‘have a nice holiday’); End; ใช้ใน logical expression monday > tuesday ได้ค่าเป็น false Pred(Friday) = Thursday ได้ค่าเป็น true Succ(Friday) = Saturday ได้ค่าเป็น true Tuesday <= Wednesday ได้ค่าเป็น true Succ(Monday) < > pred(Wednesday) ได้ค่าเป็น false Pred(pred(pred(Saturday))) = Wednesday ได้ค่าเป็น true

14 การใช้งาน Enumerated Data Type (ต่อ)
ใช้เป็น index ในการประกาศ Array Program MyNewType; Type days = (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday); color = (white,red,yellow,orange,green,purple,blue,black); Var b : array [ days ] of integer; x : array [white .. Green] of real; today : days; Begin for today := Sunday to Saturday Do begin write(‘Please enter number of students today : ’); readln(b[today]); end; ……..

15 ข้อดีของการใช้ Enumerated data type
Case n of : writeln(‘Let’s go to school!’); 0, 6 : writeln(‘have a nice holiday’); End; สองตัวอย่าง ทำงานเหมือน กันทุกประการ เลข 0 และ 6 หมายถึงอะไร มีแต่คนเขียนที่รู้ ตัวอย่างที่ใช้ enumerated data type Case today of Monday .. Friday : writeln(‘Let’s go to school!’); Sunday, Saturday : writeln(‘have a nice holiday’); End; อ่านแล้วเข้าใจง่ายขึ้นเยอะ

16 ข้อจำกัดในการใช้งาน Enumerated Data Type
1. เราไม่สามารถใช้คำสั่ง read, readln, write และ Writeln กับตัวแปรแบบ enumerated data type ได้ (ระวัง ข้อนี้ผิดกันมาก) 2. ไม่สามารถใช้ operator + - * / กับข้อมูลแบบ enumerated data Type จะเห็นว่า การใช้ enumerated data type มีข้อจำกัดค่อนข้างมาก จึงต้อง ระวังในการใช้งานเป็นพิเศษ


ดาวน์โหลด ppt User Defined Simple Data Type

งานนำเสนอที่คล้ายกัน


Ads by Google