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

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

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

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


งานนำเสนอเรื่อง: "User Defined Simple Data Type 168 250 Computer Programming For Engineer โดย ดร. นวภัค เอื้ออนันต์ 6 กันยายน 2545."— ใบสำเนางานนำเสนอ:

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

5 Top 10 ไวยากรณ์ที่นักศึกษาใช้ผิดบ่อยมาก 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. เงื่อนไขของคำสั่ง case ต้องเป็น ordinal data เท่านั้น จะเป็น real ไม่ได้ ตัวอย่างที่ผิด ตัวอย่างที่ถูก ต้องแก้เป็น Ordinal data type 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.

6 ทำไมต้องมี 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 User Defined Data Type ชนิดของข้อมูลที่ผู้ใช้กำหนดเอง

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

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

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


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

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


Ads by Google