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