1 / 35

บทที่ 8 ข้อมูลชนิดโครงสร้าง

บทที่ 8 ข้อมูลชนิดโครงสร้าง. วิธีกำหนดข้อมูลให้เป็นประเภท enumerated การเขียนโปรแกรมโดยใช้ข้อมูลชนิดโครงสร้าง struct. Asst.Prof.Urachart Kokaew. วิธีกำหนดข้อมูลให้เป็นประเภท enumerated. มีรูปแบบดังนี้ enum type_name{member 1 ,member 2 ,..,member n);

Download Presentation

บทที่ 8 ข้อมูลชนิดโครงสร้าง

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. บทที่ 8ข้อมูลชนิดโครงสร้าง วิธีกำหนดข้อมูลให้เป็นประเภท enumerated การเขียนโปรแกรมโดยใช้ข้อมูลชนิดโครงสร้าง struct Asst.Prof.Urachart Kokaew

  2. วิธีกำหนดข้อมูลให้เป็นประเภท enumerated มีรูปแบบดังนี้ enum type_name{member1,member2,..,member n); ค่าของอินิวเมอเรดเต็ดเมื่อเรากําหนดข้อมูลแบบ enumerated ในโปรแกรม C จะกำหนดให้สมาชิกตัวแรกมีค่าเท่ากับจำนวนเต็ม(integer) 0 และกำหนดค่า 1,2,3,…ให้แก่สมาชิกที่อยู่ในลำดับต่อไปตามลำดับ

  3. ตัวอย่างเช่น enum DayOfWeek{sun,mon,tue,wen,thu,fri,sat}; ค่าของสมาชิกแต่ละลำดับเป็นดังนี้ sun=0, mon=1,tue=2,wen=3,thu=4,fri=5,sat=6

  4. ตัวอย่างการกำหนดค่า enum Enum DayOfWeek{sun=1,mon,tue, wen, thu, fri,sat}; ค่าคือ sun=1, mon=2,tue=3,wen=4,thu=5, fri=6 ,sat = 7

  5. ตัวอย่างการกำหนดค่า enum enum DayOfWeek{sun=1,mon,tue, wen=50,thu,fri,sat}; ค่าคือ sun=1, mon=2,tue=3,wen=50,thu=51, fri=52,sat=53

  6. ตัวอย่างการกำหนดค่า enum การกําหนดค่าของสมาชิก enumerated สามารถกำหนดค่าให้เป็นอักษรได้ เช่นenum FileMenu { FileOpen='O', FileClose='F', FileSave='S', Exit='X‘ };

  7. ข้อมูลชนิดโครงสร้าง (structure) • ข้อมูลชนิดโครงสร้าง(structure) เป็นการรวมตัวแปรตั้งแต่ 1 ตัวขึ้นไป ซึ่งอาจมี type เหมือนกันหรือต่างกันก็ได้ รวมเข้าด้วยกัน ภายใต้ชื่อหนึ่ง • ข้อมูลชนิดโครงสร้าง ทำให้ผู้เขียนโปรแกรมสามารถสร้างกลุ่มของข้อมูลขึ้นมาใช้ในโปรแกรมได้

  8. การประกาศข้อมูลชนิดโครงสร้างการประกาศข้อมูลชนิดโครงสร้าง • รูปแบบการประกาศเป็นดังนี้ struc [Structure name] { type element1; type element2; . . }[variable name];

  9. ตัวอย่างการประกาศข้อมูลชนิดโครงสร้างตัวอย่างการประกาศข้อมูลชนิดโครงสร้าง • ยกตัวอย่าง เช่น struct emprec { char name[21]; char address[21]; char town[21]; char postcode[9]; int day; int month; int year; };

  10. การประกาศตัวแปรชนิดโครงสร้างการประกาศตัวแปรชนิดโครงสร้าง • เป็นโครงสร้างของพนักงานคนหนึ่ง ซึ่งประกอบด้วย ชื่อ ที่อยู่ วันที่เริ่มงาน เราสามารถสร้างตัวแปรให้มี type เป็นโครงสร้างของ emprec ได้ดังนี้ struc emprec employee; struc emprec emp[200];

  11. การอ้างอิงข้อมูลที่อยู่ในตัวแปรชนิดโครงสร้างการอ้างอิงข้อมูลที่อยู่ในตัวแปรชนิดโครงสร้าง • ในการอ้างถึงแต่ละฟิลด์ในโครงสร้างข้อมูล สามารถทำได้ดังนี้ - employee.name - emp[2].month

  12. ข้อมูลแบบมีโครงสร้างstructureข้อมูลแบบมีโครงสร้างstructure • structure หมายถึง กลุ่มข้อมูลซึ่งประกอบด้วยข้อมูลชนิดเดียวกันหรือหลายชนิดก็ได้ ทำให้สามารถแยกโปรแกรมออกเป็นหน่วย (Modular Programming) ซึ่งแก้ไขได้ง่ายเพราะสามารถแยกฟังก์ชันและตัวแปรออกเป็นหน่วยๆ ซึ่งก็เป็นประโยชน์ในการสร้างฐานข้อมูลด้วย • ข้อมูล แต่ละรายการใน structure เรียกว่า สมาชิกของสตรักเจอร์ (members of structure) ซึ่งต่างชนิดกันได้ในแต่ละรายการ

  13. struct เปรียบเทียบกับ array

  14. ตัวอย่างเช่น • ข้อมูลประวัตินักศึกษา ประกอบด้วย รหัสนักศึกษา, ชื่อนักศึกษา, อายุ, วันเดือนปีเกิด • ข้อมูลรายละเอียดวิชา ประกอบด้วย รหัสวิชา, ชื่อวิชา, จำนวนหน่วยกิต, ผู้สอน • ข้อมูลประวัติสินค้า ประกอบด้วย รหัสสินค้า, คำอธิบายรายการ, หน่วยนับ, ราคาต่อหน่วย

  15. วิธีสร้างstructure และการนำไปใช้ มี 2 ขั้นตอน คือ 1. สร้างชื่อประเภทข้อมูลให้เป็นประเภท structure ก่อนโดยผู้ใช้กำหนดชื่อ structure จาก keyword คำว่า struct 2. จากนั้นจากนำ ชื่อประเภทข้อมูล structure ไปประกาศตัวแปรที่ต้องการสร้างขึ้นใช้ภายใน โปรแกรม การสร้างประเภทข้อมูลให้เป็น structure มีรูปแบบโครงสร้าง ดังนี้ struct ชื่อสตรักเจอร์ { ชนิดข้อมูล ชื่อรายการ; ชนิดข้อมูล ชื่อรายการ; ชนิดข้อมูล ชื่อรายการ; } ;

  16. ตัวอย่างเช่น ถ้าต้องการสร้างข้อมูลแบบ structure เพื่อเก็บข้อมูล รหัสนักศึกษา, ชื่อนักศึกษา, คะแนนสอบระหว่างภาค, คะแนนสอบปลายภาค และเกรด กำหนดรายละเอียดใน structure ดังนี้ struct STD //(ชื่อ structure กำหนดโดยผู้ใช้ ) { char code[9]; // (ชื่อ ฟิลด์(Field) ในโครงสร้าง ) char name[31]; int midterm; int final; char grade; }; STD คือชื่อของประเภท structure ที่มีสมาชิกหรือฟิลด์(Field) 5 รายการคือ code, name, midterm, final และ grade โดยที่สมาชิกแต่ละรายการมีชนิดข้อมูลที่แตกต่างกันได้

  17. 3.การประกาศตัวแปรทำได้ 3 วิธี คือ 3.1. การใช้ คำสั่ง struct สร้างตัวแปรชนิด student โดยตรง คือ ประกาศตัวแปรไปพร้อมกับการสร้าง 3.2 การใช้ คำสั่ง struct สร้างตัวแปรชนิด student ผ่านตัวแปร STD คือ ประกาศตัวแปร หลังจากสร้าง structure แล้ว 3.3การใช้ คำสั่ง typedef struct เพื่อสร้างตัวแปรชนิด student ผ่านตัวแปร STD

  18. structSTD { char code[9]; char name[31]; int midterm; int final; char grade; } student; structproduct { int weight; float price; } apple, banana, melon; 3.1. การใช้ คำสั่ง struct สร้างตัวแปรชนิด student โดยตรงคือ ประกาศตัวแปรไปพร้อมกับการสร้าง

  19. คือ ประกาศตัวแปร หลังจากสร้าง structure แล้ว struct product { int weight; float price; }; product apple; product banana, melon; 3.2 การใช้ คำสั่ง struct สร้างตัวแปรชนิด student ผ่านตัวแปร STD struct STD { char code[9]; char name[31]; int midterm; int final; char grade; }; STD student; // ชื่อตัวแปร Student เป็นประเภท STD

  20. เพื่อสร้างตัวแปรชนิด student ผ่านตัวแปร STD #define MAX_LEN 12 /* Length of name */ typedef struct { char name[MAX_LEN]; int id; float gpa; char major[10];} product;products;product stu1, stu2, stu3; 3.3การใช้ คำสั่ง typedef struct typedef struct { char code[9]; char name[31]; int midterm; int final; char grade; } STD;STDstudent;

  21. 4. การอ้างถึง structure และสมาชิกของ structure การอ้างถึงสมาชิกใน structure จะต้องกำหนดตัวแปร(variable) ที่มีชนิดเป็น structure ขึ้นมาก่อน เช่น จากตัวอย่างที่สร้าง structure ชื่อ STD STD student,stud; //ชื่อตัวแปรคือ student และ stud หรือ struct STD { char code[9]; char name[31]; int midterm; int final; char grade; }student,stud;

  22. อ้างถึงสมาชิกของ STDได้โดยการเขียนชื่อตัวแปรเครื่องหมายจุด(.)และตามด้วยชื่อรายการ สมาชิกหรือฟิลด์(Field)ของ STD • student.code หมายถึง รหัสนักศึกษา • student.name หมายถึง ชื่อนักศึกษา • student.midterm หมายถึง คะแนนสอบระหว่างภาค • student.final หมายถึง คะแนนสอบปลายภาค • student.grade หมายถึง เกรด • stud.code หมายถึง รหัสนักศึกษา • stud.name หมายถึง ชื่อนักศึกษา • stud.midterm หมายถึง คะแนนสอบระหว่างภาค • stud.final หมายถึง คะแนนสอบปลายภาค • stud.grade หมายถึง เกรด

  23. ตัวอย่างโปรแกรม typedef struct { int month, day, year; } DATE; void main( ) { DATE d1; d1.month = 12; d1.day = 2; d1.year = 1970; }

  24. การกำหนดค่าเริ่มต้นให้กับตัวแปรการกำหนดค่าเริ่มต้นให้กับตัวแปร struct CAR { char color[10] = “Black”; long price = 40000; } mycar; • [C++ Error] ……….cpp(6): E2233 Cannot initialize a class member here

  25. ตัวอย่าง : การกำหนดค่าเริ่มต้นให้กับตัวแปร struct CAR { char color[10] = “Red”; long price = 30000; } hiscar; • [C++ Error] ……….cpp(6): E2233 Cannot initialize a class member here

  26. 5. การกำหนดค่าคงที่ให้กับสมาชิกของ structure จากโครงสร้างของ STD และการกำหนดตัวแปร student , stud สามารถกำหนดค่าให้กับตัว แปรได้ดังนี้ struct STD { char code[9]; char name[31]; int midterm; int final; char grade; }student,stud;

  27. 5.1. กำหนดค่าคงที่ให้กับ structure เขียนได้ดังนี้ strcpy(student.code,"40214514"); //เนื่องจากเป็น string ต้องใช้ strcpy() strcpy(student.name, "Somsak"); student.midterm = 45; student.final = 30; student.grade=75;

  28. 5.2. การกําหนดค่าของตัวแปรให้กับ structure เขียนได้ดังนี้ char co[9]=”10015210”; strcpy(student.code,co); int x = 25; student.midterm = x;

  29. 6.อาร์เรย์ของ structure struct STD //สร้าง structure ชื่อ STD { char code[9]; char name[31]; int midterm; int final; char grade; }; STD student[5]; //ประกาศตัวแปรชื่อ student เป็นอาร์เรย์รายการ 5

  30. อาร์เรย์ของ structure

  31. การอ้างถึงสมาชิกของอาเรย์การอ้างถึงสมาชิกของอาเรย์ การอ้างถึงสมาชิกของอาเรย์ต้องใช้ [index] ตามหลังชื่อตัวแปรและอ้างถึงสมาชิกของ structure ต้องใช้ ตามด้วยจุด (.) และชื่อรายการสมาชิกใน structure ดังนี้ student[0].midterm=30; student[1].final=50; strcpy(student[0].code,"10012512"); cin>>student[4].code; cout<<student[4].code;

  32. 7. โครงสร้างแบบซ้อนใน • โครงสร้างอาจมีการซ้อนกันได้เช่น struc date { int date; int month; int year; }; struc emprec { char name[21]; char address[21]; char town[21]; char postcode[9]; struc date start; } employee;

  33. โครงสร้างแบบซ้อนใน(ต่อ)โครงสร้างแบบซ้อนใน(ต่อ) • การเรียกใช้สามารถทำได้ดังนี้ employee.name employee.postcode employee.start.year

More Related