ตัวแปรชนิดโครงสร้าง (structure)
DESCRIPTION
ตัวแปรชนิดโครงสร้าง (Structure). http://www.renvi.src.ku.ac.th. QUIZ. 4. Today Agenda. struct ?. 1. 2. การใช้งานตัวแปรชนิดโครงสร้าง. ตัวแปรชนิดโครงสร้างกับอาร์เรย์. 3. เกริ่นนำเกี่ยวกับ สตรัคเจอร์. - PowerPoint PPT PresentationTRANSCRIPT
ตัวแปรชนิดโครงสรา้ง (Structure)http://www.renvi.src.ku.ac.th
Today Agenda
struct ?1
การใชง้านตัวแปรชนิดโครงสรา้ง2
ตัวแปรชนิดโครงสรา้งกับอารเ์รย์3
QUIZ4
2
เกริน่นำาเก่ียวกับสตรคัเจอร์
สตรคัเจอร ์(Structure) คือ โครงสรา้งขอ้มูลท่ีนำาเอาขอ้มูลท่ีมปีระเภทขอ้มูลชนิดพื้นฐานท่ีแตกต่างกันแต่มคีวามสมัพนัธกั์นมารวมกันเป็นโครงสรา้งขอ้มูลชนิดใหม ่เชน่ การเก็บขอ้มูลนิสติ (student) จะต้องประกอบไปด้วยขอ้มูลรหัสนิสติ, ชื่อ (name), นามสกลุ (surname), สาขาวชิา (major), คณะ (faculty) เป็นต้น
3
student0
namesurnam
emajorfaculty
student1
namesurnam
emajorfaculty
student2
namesurnam
emajorfaculty
การใชง้านตัวแปรชนิดโครงสรา้ง
1 •กำ�หนดโครงสร�้ง
2 •สร�้งตัวแปรจ�กโครงสร�้งท่ีกำ�หนด
3 •กำ�หนดค�่ใหก้ับสม�ชกิของตัวแปร
4 •แสดงผลค�่สม�ชกิของตัวแปร
4
การกำาหนดโครงสรา้งตัวแปรชนิดโครงสรา้งก่อนจะสรา้งตัวแปรชนิดสตรคัเจอรม์าใชง้านได้นัน้ เรา
ต้องกำาหนดโครงสรา้งขอ้มูลสำาหรบัตัวแปรนัน้ก่อน ดังน้ี
5
รูปแบบท่ี 1struct ชื่อของโครงสรา้งท่ีจะสรา้ง {
ชนิดขอ้มูลพื้นฐาน ชื่อตัวแปร;
ชนิดขอ้มูลพื้นฐาน ชื่อตัวแปร;
… ชนิดขอ้มูลพื้นฐาน ชื่อ
ตัวแปร;};
ตัวอยา่งการใชง้านstruct student {
int stu_id;char
stu_name[20];char
stu_surname[20];char major[20];char
faculty[20];};
การกำาหนดโครงสรา้งตัวแปรชนิดโครงสรา้ง (ต่อ)
6
รูปแบบท่ี 2typedef struct {
ชนิดขอ้มูลพื้นฐาน ชื่อตัวแปร;
ชนิดขอ้มูลพื้นฐาน ชื่อตัวแปร;
… ชนิดขอ้มูลพื้นฐาน ชื่อ
ตัวแปร;} ชื่อของโครงสรา้งท่ีจะสรา้ง;
ตัวอยา่งการใชง้านtypedef struct {
int stu_id;char
stu_name[20];char
stu_surname[20];char major[20];char
faculty[20];} STUDENT;
การสรา้งตัวแปรชนิดโครงสรา้ง
เมื่อกำาหนดโครงสรา้งขอ้มูลให้กับตัวแปรตามต้องการแล้ว ต่อไปคือขัน้ตอนท่ีเราจะสรา้งตัวแปรจากโครงสรา้งท่ีเราได้กำาหนดไว ้โดยมรูีปแบบดังน้ี
7
หากกำาหนดโครงสรา้งในรูปแบบท่ี 1struct ชนิดของขอ้มูลชนิด
โครงสรา้ง ชื่อตัวแปร;เชน่struct student stu1, stu2; หากกำาหนดโครงสรา้งในรูปแบบท่ี 2
ชนิดของขอ้มูลชนิดโครงสรา้ง ชื่อตัวแปร;เชน่STUDENT stu1, stu2;
การกำาหนดค่าเริม่ต้นให้กับตัวแปรชนิดโครงสรา้งคล้ายกับการกำาหนดค่าเริม่ต้นให้กับอารเ์รย ์กำาหนดค่า
ไวใ้น { } และแยกค่าแต่ละค่าด้วยเครื่องหมาย , (comma) เชน่
8
หากกำาหนดโครงสรา้งในรูปแบบท่ี 1struct student stu = {101, “Steve”, “Josh”, “CS”, “RENVI”};
หากกำาหนดโครงสรา้งในรูปแบบท่ี 2STUDENT stu = {101, “David”, “Paul”, “IT”, “RENVI”};
การอ้างถึงสมาชกิในตัวแปรชนิดโครงสรา้ง
การอ้างถึงตัวแปรหรอืสมาชกิแต่ละตัวในตัวแปรประเภท struct สามารถทำาได้ด้วยรูปแบบดังนี้
9
ชื่อตัวแปรชนิดโครงสรา้ง.ชื่อตัวแปรสมาชกิ
การกำาหนดขอ้มูลให้กับตัวแปรชนิดโครงสรา้งการกำาหนดค่าต้องกำาหนดให้ถกูต้องตามชนิดขอ้มูล
ของสมาชกิ
10
1. typedef struct {2. int stu_id;3. char stu_name[20];4. char stu_surname[20];5. }STUDENT;6. STUDENT stu;7. printf("Enter student ID: ");8. scanf(“____", __________);9. printf("Enter name: ");10. scanf(“____", __________);11. printf("Enter surname: ");12. scanf(“____", ___________);13. printf("ID: %d, Name: %s, Surname: %s", stu.stu_id, stu.stu_name,
stu.stu_surname);}
การแสดงผลสมาชกิในตัวแปรชนิดโครงสรา้ง (ต่อ)สมาชกิของตัวแปรชนิดโครงสรา้งเป็นตัวแปรชนิดพื้น
ฐานเราจงึใชค้ำาสัง่ printf() ตามปกติ โดยใชร้หัสควบคมุการแสดงผลให้ถกูต้องตามชนิดขอ้มูลสมาชกิ
1. typedef struct {2. int stu_id;3. char stu_name[20];4. char stu_surname[20];5. }STUDENT;6. STUDENT stu = {101, "Steve", "Jobs"};7. printf("----- Student Info -----\n\n");8. printf("Student ID: ____\n", __________);9. printf("Name: ____\n", __________);10. printf("Surname: ____\n", __________);
11
ตัวแปรชนิดโครงสรา้งกับการใชอ้ารเ์รย์
เราสามารถสรา้งตัวแปรอารเ์รยข์องตัวแปรชนิดโครงสรา้งได้ ในกรณีท่ีมคีวามจำาเป็นต้องใชตั้วแปรชนิดโครงสรา้งตัวเดียวกันหลาย ๆ ตัว
12
ตัวอยา่งการใชง้านtypedef struct {
int stu_id;char
stu_name[20];char
stu_surname[20];char major[20];char
faculty[20];};STUDENT stu[10];
stu[0]name
surname
majorfaculty
stu[9]name
surname
majorfaculty
….
….
ตัวแปรชนิดโครงสรา้งกับการใชอ้ารเ์รย ์(ต่อ)
1. typedef struct {2. int stu_id;3. char stu_name[20];4. char stu_surname[20];5. }STUDENT;6. STUDENT stu[5];7. for(i=0; i<5; i++){8. printf("Enter student ID: ");9. scanf(“____", __________);10. printf("Enter name: ");11. scanf(“____", __________);12. printf("Enter surname: ");13. scanf(“____", ___________);14. printf("Added !\n\n");15.} 16.for(i=0; i<5; i++){17. printf("%d. ID: ____\tName: ____\tSurname: ____\n", i+1,__________,
__________, __________);18.}
13
http://www.renvi.src.ku.ac.th