37
ETE183 การเขียนโปรแกรมคอมพิวเตอร์สำหรับ วิศวกรรมไฟฟ้า ผศ . ดร . วชิรา พรรณ แก้ว ประพันธ์ . ชนกชนม์ สังวรโยธิน

ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

ETE183 การเขียนโปรแกรมคอมพิวเตอร์สำหรับ

วิศวกรรมไฟฟ้า

ผศ.ดร.วชิราพรรณ แก้วประพนัธ์อ.ชนกชนม์ สังวรโยธิน

Page 2: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

บทท่ี 12 ตัวแปรโครงสร้าง

Page 3: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

บทท่ี 12

ความหมายของ ตัวแปรโครงสร้าง

Typedef และ Struct

การสร้างโครงสร้างข้อมูล

การนำโครงสร้างข้อมูลมาใช ้

การประยุกต์โครงสร้างข้อมูลกับอารเ์รย์

Page 4: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

โครงสร้างข้อมูล Data Structure

?

Page 5: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

โครงสร้างข้อมูล

คือ กลุ่มของตัวแปรที่สามารถสร้างและเก็บไว้ในตัวแปรเดียวกัน เราเรียกว่า “โครงสร้างข้อมูล” เราสามารถสร้างและออกแบบโครงสร้างข้อมูลของเราได้ตามที่ต้องการ โดยโครงสร้างข้อมูลจะมีสมาชิกที่เป็นตัวแปร (members) และฟังก์ชันได้ในเวลาเดียวกัน

Page 6: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

นักเรียน ถ้าหากพูดถึง “นักเรียน” จะนึกถึงข้อมูล

อะไรบ้าง ที่ไม่ใช่การกระทำ

Page 7: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

นักเรียน

ช่ือข้อมูล ชนิดการเก็บข้อมูลรหัสนักเรียน char arrayช่ือ stringภาควิชา stringช้ันปี intเกรดเฉลี่ย float

Page 8: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

นักเรียน 5 คน

ถ้าหากมีนักเรียน 5 คน จะต้องเก็บข้อมูลอย่างไร

Page 9: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

รหัสนักเรียนของคนที่ 1รหัสนักเรียนของคนที่ 2รหัสนักเรียนของคนที่ 3รหัสนักเรียนของคนที่ 4รหัสนักเรียนของคนที่ 5

ชื่อของคนที่ 1ชื่อของคนที่ 2ชื่อของคนที่ 3ชื่อของคนที่ 4ชื่อของคนที่ 5

ภาควิชาของคนที่ 1ภาควิชาของคนที่ 2ภาควิชาของคนที่ 3ภาควิชาของคนที่ 4ภาควิชาของคนที่ 5

ชั้นปีของคนที่ 1ชั้นปีของคนที่ 2ชั้นปีของคนที่ 3ชั้นปีของคนที่ 4ชั้นปีของคนที่ 5

เกรดเฉล่ียของคนที่ 1เกรดเฉล่ียของคนที่ 2เกรดเฉล่ียของคนที่ 3เกรดเฉล่ียของคนที่ 4เกรดเฉล่ียของคนที่ 5

Page 10: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

นักเรียน 5 คน

ลองนำมาจัดอยู่ในรูปแบบของอาร์เรย์รหัสนักเรียน [5];ช่ือ [5];

ภาควิชา [5];ช้ันปี [5];

เกรดเฉลี่ย [5];

Page 11: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

โครงสร้างข้อมูลของ “นักเรียน”

Page 12: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

โครงสร้างข้อมูลของ “นักเรียน”

โครงสร้างข้อมูล นักเรียน{

รหัสนักเรียน;ช่ือ;ภาควิชา;ช้ันปี;เกรดเฉลี่ย;

};

Page 13: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

นำโครงสร้างมาใช้

นักเรียน นักเรียนคนท่ี1; นักเรียนคนท่ี1.รหัสนักเรียน;นักเรียนคนท่ี1.ช่ือ;นักเรียนคนท่ี1.ภาควิชา;นักเรียนคนท่ี1.ช้ันป;ีนักเรียนคนท่ี1.เกรดเฉล่ีย;

Page 14: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

นำโครงสร้างมาใช้

เมื่อมีนักเรียน 5 คน เราใช ้array เข้ามาช่วย

นักเรียน นักเรียนคนท่ี[5];

Page 15: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

นำโครงสร้างมาใช้

นักเรียนคนท่ี[0].รหัสนักเรียน;นักเรียนคนท่ี[0].ช่ือ;นักเรียนคนท่ี[0].ภาควิชา;นักเรียนคนท่ี[0].ช้ันป;ีนักเรียนคนท่ี[0].เกรดเฉล่ีย;

นักเรียนคนท่ี[1].รหัสนักเรียน;นักเรียนคนท่ี[1].ช่ือ;นักเรียนคนท่ี[1].ภาควิชา;นักเรียนคนท่ี[1].ช้ันป;ีนักเรียนคนท่ี[1].เกรดเฉล่ีย;

Page 16: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

Structure

Page 17: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

ความแตกต่างระหว่าง Array กับ Structure

Page 18: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้
Page 19: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

struct

Page 20: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

รูปแบบการสร้างโครงสร้างแบบ

struct

• การสร้างโครงสร้างและสร้างตวัแปรโครงสร้างพร้อมกนั

1

• การสร้างโครงสร้างไว้ก่อน แล้วนําโครงสร้างมาสร้างเป็นตวัแปรโครงสร้างทีหลงั

2

Page 21: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

1

การสร้างโครงสร้างและสร้างตัวแปรโครงสร้างพร้อมกัน

Page 22: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

2

การสร้างโครงสร้างไว้ก่อน แล้วนำโครงสร้างมาสร้างเป็นตัวแปรโครงสร้างทีหลัง

Page 23: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การอ้างอิงถึงสมาชิกของ structure

การอ้างถึงสมาชิกใน structure ไม่สามารถจะอ้างถึงช่ือตัวแปรใน structure ได้โดยตรง แต่จะต้องกำหนดตัวแปรโครงสร้างขึ้นมาก่อน จากนั้นจึงจะสามารถอ้างอิงสมาชิกตัวแปรท่ีอยู่ในโครงสร้างได้ โดยใช้ช่ือตัวแปรโครงสร้าง ตามด้วยจุด (.) และตามด้วยช่ือสมาชิกตัวแปรในโครงสร้าง เช่น >…..

Page 24: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การอ้างอิงถึงสมาชิกของ structure

struct STD { char name[31];

float midterm;char grade;

} student, stud;

student.name = “Wacheerapan”;student.midterm = 25.23;

stud.name = “Chanokchon”;stud.grade = ‘A’;

Page 25: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การนำตัวแปรโครงสร้างไปใช ้

struct STD { char name[31];

float midterm;char grade;

} student, stud; scanf(“%s”,&student.name);scanf(“%f”,&student.midterm)if (student.midterm > 15) {

printf(“%s, Good.”,student.name)}else {

printf(“%s, %.2f is bad.”,student.name, student.midterm);}

Page 26: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

typedefstruct

Page 27: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

รูปแบบการสร้างโครงสร้างแบบ

typedef

typedef struct { ชนิดข้อมูล ชื่อรายการ; ชนิดข้อมูล ชื่อรายการ; ชนิดข้อมูล ชื่อรายการ; ชนิดข้อมูล ชื่อรายการ; } ชื่อสตรักเจอร์;

Page 28: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การนำโครงสร้างtypedef ไปสร้างเป็นตัวแปรโครงสร้าง

#define MAX_LEN 12typedef struct {

char name[MAX_LEN];int id;float gpa;char major[10];

} student_t;

student_t s;student_t stu1, stu2, stu3;

Page 29: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การนำตัวแปรโครงสร้าง

typedef ไปใช้

typedef struct{

int month, day, year;} DATE;

main() {DATE d1;

d1.month = 12;d1.day = 2;d1.year = 1970;

}

Page 30: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การนำตัวแปรโครงสร้าง

typedef ไปใช้

typedef struct{

int month, day, year;} DATE;

main() {DATE d1 = {12, 2, 1970};

}

Page 31: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การนำตัวแปรโครงสร้าง

typedef ไปใช้

typedef struct{

int month, day, year;} DATE;

main() {DATE d1, d2;d1 = {12, 2, 1970};d2 = d1;

}

Page 32: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การนำตัวแปรโครงสร้างไปใช้กับอาร์เรย์

Page 33: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การนำตัวแปรโครงสร้างไปใช้กับอาร์เรย์

กรณีท่ีต้องการใช้ตัวแปรโครงสร้างซ้ำกันหลายๆตัว เราสามารถใช้คุณสมบัติของอาร์เรย์กับตัวแปรโครงสร้างได้ ตัวอย่างเช่นต้องการสร้างตัวแปรโครงสร้าง “student” 10 ชุด จะสามารถกำหนดเป็นตัวแปรอาร์เรย์โครงสร้างได้คือ student[10];

Page 34: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การนำตัวแปรโครงสร้างไปใช้กับอาร์เรย์

Page 35: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

การนำตัวแปรโครงสร้างไปใช้กับอาร์เรย์

Page 36: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

ประเมินการสอน

เข้าไปประเมินการสอนในระบบ ete.tido.tech

Page 37: ETE183-2560-บทที่-12ete.tido.tech/ete-programming/student/tutorials/ETE183-2560_Chapter12.pdf · การสร้างโครงสร้างข้อมูล การนำโครงสร้างข้อมูลมาใช้

Mini Project

1. Videoแสดงความคืบหน้าของงาน อพัโหลดลง youtube แล้วนําลงิค์ใสล่งในไฟล์ .txtสง่ในระบบ ภายใน วนัศกุร์ทีE 10พ.ย. 2560เวลา 23.59น.

2. ไฟล์นําเสนอ+ไฟล์โปรแกรมทีEใช้ในการสอบจบมินิโปรเจค บีบอดัลงใน zip สง่ในระบบภายใน วนัจนัทร์ทีE20พ.ย.2560เวลา 13.00น.