User Defined Simple Data Type

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
Advertisements

โครงสร้างโปรแกรมภาษา C
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
บทที่ 2 ภาษาปาลคาลเบื้องต้น.
การทำงานแบบเลือกทำ (Selection)
ประเภทของข้อมูลและตัวดำเนินการ Data Types and Operator (บทที่ 3)
BC320 Introduction to Computer Programming
บทที่ 3 ตอนที่ 1 คำสั่งเงื่อนไขและการตัดสินใจ(p
ชนิดของข้อมูลและตัวดำเนินการ
Week 6 ประกาศค่าตัวแปร.
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
Visual Basic 6 By Samaporn Yendee VB6.
รับและแสดงผลข้อมูล.
PHP LANGUAGE.
Lab 3: คำสั่งพื้นฐานสำหรับการรับและการแสดงผลข้อมูล
อาเรย์ (Array).
ภาษาปาสคาล ผู้สร้าง Dr.Niklaus Wirth ปี 2513
คำสั่งเงื่อนไขและการควบคุม
การรับข้อมูล และ การแสดงผล
ตัวแปรชุด.
เรื่อง ประเภทของข้อมูล
Arrays.
SCC : Suthida Chaichomchuen
การจัดการข้อมูลด้วยคอมพิวเตอร์
ตัวอย่างการใช้คำสั่ง IF_THEN
คำสั่ง Repeat...Until คำสั่งควบคุมให้ทำงานซ้ำ
ตัวอย่างคำสั่ง FOR.
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 ตัวดำเนินการ และ นิพจน์
บทที่ 9 การรับและแสดงผลข้อมูล
บทที่ 2 ประเภทข้อมูล (DATA TYPE)
บทที่ 7 การกำหนดชนิดข้อมูลใหม่
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
ข้อมูลพื้นฐานและตัวดำเนินการ
อาร์เรย์และข้อความสตริง
ตัวแปร (variable) ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ใน หน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล การตั้งชื่อตัวแปร ชื่อตัวแปรในภาษา.
ตัวแปร (Variable) คือ ชื่อที่ตั้งขึ้นเพื่อเก็บข้อมูลในหน่วยความจำ สามารถเก็บข้อมูลชนิดใดก็ ได้ ลักษณะที่สำคัญ ค่าที่จัดเก็บ เมื่อปิดโปรแกรมข้อมูลจะหายไป.
การเขียนโปรแกรมภาษาซี
ตัวแปรกับชนิดของข้อมูล
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
คำสั่งเงื่อนไข ง การเขียนไดนามิก เว็บเพจ ศูนย์คอมพิวเตอร์โรงเรียนปลวกแดงพิทยาคม.
แถวอักขระ (string) ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ง30212 พื้นฐานการเขียนโปรแกรม ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
โครงสร้างแบบลำดับ คำสั่ง x คำสั่ง y.
TURBO PASCAL OUTLINE 1. บทนำเกี่ยวกับการเขียนโปรแกรมภาษาปาสคาล
ตัวแปรกับชนิดของข้อมูล
Week 2 Variables.
Week 12 Engineering Problem 2
การประมวลผลสายอักขระ
Computer Programming for Engineers
บทที่ 10 คำสั่งควบคุม OUTLINE 1. คำสั่งแบบเรียงลำดับ (Sequence)
บทที่ 8 ตัวดำเนินการ และ นิพจน์
หลักการเขียนโปรแกรม ( )
วิธีการเขียนโปรแกรมเพื่อทำงานกับข้อมูล โดยที่ ข้อมูลนั้นจะต้อง 1. เป็นประเภทเดียวกัน | ตัวเลข, ตัวอักษร 2. มีขนาดเท่ากัน ? ARRAY คืออะไร.
PHP การตรวจสอบเงื่อนไข.
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
Java Programming Java Structure and Datatype,Variable
อาจารย์ปิยศักดิ์ ถีอาสนา
หลักการเขียนโปรแกรม ( )
หน่วยที่ 4 โครงสร้างโปรแกรมภาษาซี
บทที่ 7 เงื่อนไขในภาษาซี
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
เ อกสารประกอบการสอนวิชา Computer Programming for Engineer ดร. นวภัค เอื้ออนันต์ ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น.
ตัวแปร และชนิดข้อมูล.
การรับและแสดงผลข้อมูล (Input/Output)
1 บทที่ 5 โปรแกรมย่อย Part II Function. 2 ฟังก์ชัน (Function) เป็นชุดคำสั่งย่อยที่มีหน้าที่เฉพาะอย่างใดอย่างหนึ่ง เหมือนกับ procedure สามารถมีการรับส่งค่าข้อมูล.
หลักการทั่วไปเกี่ยวกับการเขียนโปรแกรม
ใบสำเนางานนำเสนอ:

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

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

ชนิดของข้อมูลที่มีลำดับ 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)

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

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

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

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

ห้ามป้อนค่าที่ไม่อยู่ในช่วงที่กำหนดไว้ใน ตอนประกาศ type เช่น Top 10 ข้อผิดพลาด ตัวอย่างที่ผิด Program MyNewType; Type month = 1..12; day = 1..365; 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 ก็ต้องระวัง ไม่ควรให้ป้อนค่าที่ไม่อยู่ในช่วงที่กำหนด

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 การกำหนดค่าให้ตัวแปร

ลำดับของ 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 ได้

การใช้งาน 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( ) ใช้ดูลำดับของข้อมูล ใช้เปรียบเทียบข้อมูล

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

การใช้งาน 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

การใช้งาน 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; ……..

ข้อดีของการใช้ Enumerated data type Case n of 1 .. 5 : 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; อ่านแล้วเข้าใจง่ายขึ้นเยอะ

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