Lecture no. 6 Structure & Union

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

ชนิดของข้อมูลในโปรแกรม Interactive C
Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
ตัวแปรประเภทตัวชี้ (Pointer)
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
ข้อมูลชนิดอาร์เรย์ Array (บทที่ 5)
BC322 ครั้งที่ 10 ตัวแปรชุด (Array)
BC320 Introduction to Computer Programming
Introduction to C Programming
Department of Computer Business
พอยน์เตอร์ (Pointer) Chapter Introduction to Programming
ข้อมูลชนิดโครงสร้าง (Structure Data)
ตัวแปรชุด (Array) Chapter Introduction to Programming
ตัวแปรชนิดโครงสร้าง (Structure)
Data Type part.II.
หลักการโปรแกรม 1 Lecture 3: ตัวแปร, นิพจน์คณิตศาสตร์, การคำนวณทางคณิตศาสตร์,การดำเนินการกับสายอักขระ.
Lecture 11: อาร์เรย์แบบหลายมิติ
Structure Programming
ตัวอย่าง Flowchart.
ชนิดของข้อมูลและตัวดำเนินการ
Structure.
LAB # 5 Computer Programming 1 1.
Week 6 ประกาศค่าตัวแปร.
Visual Basic 6 By Samaporn Yendee VB6.
PHP LANGUAGE.
ตัวชี้ P O I N T E R Created By Tasanawan Soonklang
อาเรย์ (Array).
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
ตัวแปรชุด.
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
Arrays.
ตัวแปรแบบโครงสร้าง.
บทที่ 12 Structure and union Kairoek choeychuen
C Programming Lecture no. 9 Structure.
C Programming Lecture no. 6: Function.
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 11 การเขียนโปรแกรมภาษาซี
ข้อมูลพื้นฐานและตัวดำเนินการ
อาร์เรย์และข้อความสตริง
อาร์เรย์ (Array).
อาร์เรย์ (Array).
ตัวแปรกับชนิดของข้อมูล
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ง30212 พื้นฐานการเขียนโปรแกรม ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ปฏิบัติการครั้งที่ 10 pointer. หน่วยความจำ หน่วยความจำนั้นเสมือนเป็นช่องว่างไว้เก็บ ของที่มีหมายเลขประจำติดไว้ที่แต่ละช่อง เพื่อใช้ในการระบุตำแหน่งของช่องได้
ตัวแปรกับชนิดของข้อมูล
Week 2 Variables.
Computer Programming for Engineers
ความหมาย การประกาศ และการใช้
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
ข้อมูลแบบโครงสร้างและยูเนียน
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
หลักการเขียนโปรแกรม ( )
1. Global variable คือ ตัวแปรที่กำหนดหรือประกาศไว้นอกฟังก์ชันใด ๆ ทุกฟังก์ชัน สามารถนำตัวแปรประเภท Global ไปใช้ได้ทุกฟังก์ชัน.
หน่วยที่ 4 โครงสร้างโปรแกรมภาษาซี
บทที่ 2 โครงสร้างของภาษา C.
การกระทำทางคณิตศาสตร์
ตัวแปร และชนิดข้อมูล.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การเขียนโปรแกรม (ภาษาซี)
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
Variable, Constant. Variable คือชื่อที่ตั้งขึ้นมาเพื่อจองพื้นที่ใน หน่วยความจำสำหรับ พักข้อมูล.
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
หลักการทั่วไปเกี่ยวกับการเขียนโปรแกรม
ใบสำเนางานนำเสนอ:

Lecture no. 6 Structure & Union C Programming Lecture no. 6 Structure & Union

(Structures and Unions) ข้อมูลแบบโครงสร้างและยูเนียน (Structures and Unions) Department of Computer Science 310322 C Programming

1. ความรู้ทั่วไปเกี่ยวกับโครงสร้าง (0,0) (4,3) หากต้องการเก็บข้อมูลจุดบนแกนโคออดิเนท จะประกอบไปข้อมูลแกน x และ y เป็นข้อมูลจำนวนเต็มประเภท int ประเภทข้อมูลที่ใช้ได้แก่ประเภทข้อมูลแบบโครงสร้าง สามารถประกาศประเภทข้อมูลที่ใช้ดังนี้ Department of Computer Science 310322 C Programming

การประกาศประเภทข้อมูลแบบโครงสร้าง struct point { int x; int y; }; Member หมายเหตุ การประกาศชื่อสมาชิกภายใน struct จะใช้ชื่อใดก็ได้ อาจจะซ้ำกับชื่อตัวแปรที่อยู่ภายนอก struct แต่ชื่อที่อยู่ภายใน struct เดียวกันห้ามประกาศชื่อซ้ำกัน Department of Computer Science 310322 C Programming

การประกาศตัวแปรข้อมูลแบบโครงสร้าง (2) แบบที่ 1 struct point { int x; int y; } x, y , z; หมายเหตุ จะเห็นว่าชื่อของ struct จะประกาศหรือไม่ก็ได้ หากไม่มีการประกาศจะไม่สามารถนำ struct นั้นกลับมาใช้ได้อีก Department of Computer Science 310322 C Programming

การประกาศแบบข้อมูลโครงสร้าง การประกาศตัวแปร ข้อมูลแบบโครงสร้าง แบบที่ 2 การประกาศแบบข้อมูลโครงสร้าง struct point { int x; int y; }; struct point x,y,z การประกาศตัวแปร ข้อมูลแบบโครงสร้าง Department of Computer Science 310322 C Programming

struct point pt = {320,200}; struct_name.member การกำหนดค่าเริ่มต้นให้กับตัวแปรข้อมูลแบบโครงสร้าง struct point pt = {320,200}; การอ้างถึงสมาชิกภายในตัวแปรข้อมูลแบบโครงสร้าง struct_name.member Department of Computer Science 310322 C Programming

printf ( “%d, %d”, pt.x, pt.y ); ตัวอย่าง เมื่อต้องการอ้างถึงสมาชิกภายใน struct ว่าอยู่ตรงกับจุดใดบนแกนโคออดิเนทจะใช้ printf ( “%d, %d”, pt.x, pt.y ); หรือหากต้องการคำนวณระยะทางจะว่าห่างจากจุดเริ่มต้น (0, 0) เท่าใดสามารถใช้ double dist, sqrt (double); dist =sqrt ((double)pt.x * pt.x +(double)pt.y * pt.y ); Department of Computer Science 310322 C Programming

สมาชิกของข้อมูลประเภท struct อาจจะเป็นตัวแปรประเภทใดก็ได้ ทั้งข้อมูลพื้นฐาน และประเภทข้อมูลอื่น ๆ เช่น อาเรย์ และยังประกาศ ตัวแปรของข้อมูลประเภท struct ได้อีกด้วย ตัวอย่าง pt2 pt1 หากต้องการเก็บข้อมูลของสี่เหลี่ยมดังรูปสามารถทำการประกาศตัวแปรได้ดังนี้ Department of Computer Science 310322 C Programming

การประกาศแบบข้อมูลโครงสร้าง การประกาศ ตัวแปรข้อมูลแบบโครงสร้าง struct rect { struct point pt1; struct point pt2; }; struct rect screen; int co_x; co_x = screen.pt1.x การประกาศแบบข้อมูลโครงสร้าง การประกาศ ตัวแปรข้อมูลแบบโครงสร้าง การอ้างถึงสมาชิก Department of Computer Science 310322 C Programming

2. การเก็บข้อมูลแบบโครงสร้าง 2. การเก็บข้อมูลแบบโครงสร้าง การเก็บข้อมูลแบบโครงสร้างภายในหน่วยความจำจะเก็บตามลำดับที่มีการประกาศสมาชิกของข้อมูลนั้น โดยทั่วไปข้อมูลแบบโครงสร้างจะประกอบขึ้นจากข้อมูลหลาย ๆ ชนิด และข้อมูลแต่ละชนิดมักจะมีการจองพื้นที่ใช้งานแต่ต่างกัน เนื่องจากการจองพื้นที่หน่วยความจำในระบบส่วนใหญ่จะจองที่แอดเดรสที่หารด้วย 2 หรือ 4 ลงตัว Department of Computer Science 310322 C Programming

ตัวอย่าง 2.1 struct alignment { int num1; char ch; int num2; member struct alignment { int num1; char ch; int num2; } example; num1 ch num2 3 4 2 Byte Offset จะเห็นว่า num2 จะไม่สามารถใช้พื้นที่ที่ติดกับ ch ได้ เนื่องจาก num2 เป็นข้อมูลประเภทเลขจำนวนต้องใช้พื้นที่ที่มีแอดเดรสหารด้วย 2 หรือ 4 ลงตัว ทำให้เกิดที่ว่างที่ไม่สามารถนำมาใช้ประโยชน์ได้ เพราะฉะนั้นการประกาศสมาชิกของ โครงสร้างจะมีผลต่อการใช้พื้นที่ในหน่วยความจำด้วย Department of Computer Science 310322 C Programming

3. การใช้ข้อมูลแบบโครงสร้างกับฟังก์ชัน 3. การใช้ข้อมูลแบบโครงสร้างกับฟังก์ชัน การทำงานของตัวแปรที่เป็นประเภทโครงสร้างสามารถทำงานต่าง ๆ ได้เช่นเดียวกับตัวแปรอื่น ๆ ยกเว้นการเปรียบเทียบตัวแปร struct กับตัวแปร struct เนื่องจากข้อมูลของตัวแปร struct จะเก็บอยู่ในตัวแปรที่เป็นสมาชิกของ struct การเปรียบเทียบจึงต้องทำผ่านตัวแปรที่เป็นสมาชิกของ struct เท่านั้น การใช้งานตัวแปร struct กับฟังก์ชันสามารถทำได้หลายลักษณะ ทั้งการให้ฟังก์ชันคืนค่าเป็น struct การส่งอากิวเมนท์ให้ฟังก์ชันเป็นตัวแปร struct Department of Computer Science 310322 C Programming

ตัวอย่าง 3.1 ฟังก์ชันใช้ในการกำหนดค่าให้กับตัวแปร struct struct point makepoint ( int x, int y ) { struct point temp; temp.x = x; temp.y = y; return temp; } หมายเหตุ ตัวอย่างนี้แสดงฟังก์ชันที่ทำการส่งค่ากลับเป็นรูปแบบโครงสร้าง Department of Computer Science 310322 C Programming

การเรียกใช้งานฟังก์ชัน struct rect screen; struct point middle; struct point makepoint ( int, int ); screen.pt1 = makepoint ( 0, 0 ); screen.pt2 = makepoint ( XMAX, YMAX ); middle = makepoint ((screen.pt1.x + screen.pt2.x) / 2, (screen.pt1.y + screen.pt2.y) / 2 ); Department of Computer Science 310322 C Programming

ตัวอย่าง 5.2 struct point addpoint(struct point p1, struct point p2) { ฟังก์ชันการบวก x และ y ของจุด 2 จุด และคืนค่าผลของการบวกเป็น struct struct point addpoint(struct point p1, struct point p2) { p1.x += p2.x; p1.y += p2.y; return p1; } หมายเหตุ ตัวอย่างนี้แสดงการส่งอาร์กิวเมนท์แบบ struct ให้กับฟังก์ชัน Department of Computer Science 310322 C Programming

ฟังก์ชันการหาว่าจุดอยู่ในพื้นที่สี่เหลี่ยมหรือไม่ ตัวอย่าง 5.3 ฟังก์ชันการหาว่าจุดอยู่ในพื้นที่สี่เหลี่ยมหรือไม่ int pinrect ( struct point p, struct rect r ) { return p.x >= r.pt1.x && p.x < r.pt2.x && p.y >= r.pt1.y && p.y < r.pt2.y; } หมายเหตุ ตัวอย่างนี้เป็นการหาว่าจุดที่ระบุอยู่ในพื้นที่สี่เหลี่ยมหรือไม่ โดยส่งค่าจุดและพื้นที่สี่เหลี่ยมเป็นอากิวเมนท์ให้กับฟังก์ชัน หากจุดอยู่ในพื้นที่สี่เหลี่ยมจะคืนค่า1 แต่หากจุดอยู่นอกพื้นที่สี่เหลี่ยมจะคืนค่าเป็น 0 Department of Computer Science 310322 C Programming