16/10/52

ลูกแรดเตรียมพร้อมล่าเหยื่อ

สิ่งที่ได้จากการเรียนเตรียมฝึกประสบการณ์วิชาชีพ

1. ทำให้เกิดการพัฒนาตนเอง โดยหาความรู้เพิ่มเติมใหม่ๆ อยู่เสมอ

ทำให้รู้สึกสนุกสนาน และมีความสุขที่ได้เรียนรู้ เมื่อเรียนรู้แล้วต้องพัฒนาตนเองมากขึ้น อ่านหนังสือมากขึ้น ช่างสังเกตเหตุการณ์รอบตัว ฟังข่าว หรือเหตุการณ์ต่างๆที่เกิดขึ้น รวมไปถึง ทิศทางหรือแนวโน้มใหม่ๆ ที่เป็นประโยชน์มากขึ้น เพื่อให้เกิดการพัฒนาที่ดีของตนเองต่อไป

2. รอบคอบและเป็นระบบมากขึ้น

การเรียนรู้ ย่อมเกี่ยวข้องกับรายละเอียดต่างๆ มากมาย ไม่ว่าจะเป็นเอกสารประกอบการเรียนรู้ อุปกรณ์ สื่อ เราในฐานะผู้เรียนต้องเตรียมพร้อมเพื่อที่จะเก็บเกี่ยวสิ่งที่เรียนรู้ ตัวเราเอง ในอดีต เป็นคนไม่รอบคอบ การเรียนเตรียมฝึกทำให้เราได้พัฒนาตนเอง เป็นคนที่ละเอียดรอบคอบ และเป็นระบบมากขึ้น

3. สมาธิดีขึ้น

การเรียนรู้ต้องอาศัยการจดจำ นั่นคือการจดบันทึก ในขณะที่เรียนรู้ เราต้องตั้งใจฟัง และวิเคราะห์เพื่อจดบันทึกในองค์ความรู้ต่างๆ ทำให้เราฝึกการมีสมาธิในการทำสิ่งต่าง ๆ ที่ดีขึ้น

4. นำความรู้ที่ได้ ไปใช้ในการทำงานต่าง ๆ

5/8/52

DTS06-04-08-2552

#Stack#
  • สแตก เป็นโครงสร้างข้อมูล มีการเก็บข้อมูลได้ทั้งเรคอร์ด อาร์เรย์ หรือ เก็บในลักษณะลิงค์ลิสต์
  • รูปแบบของการทำงาน เป็นการจัดเก็บ หรือ บันทึกสมาชิกในลักษณะของการพักไว้
  • เป็นโครงสร้างที่มีลักษณะเป็นเชิงเส้น สามารถลบ หรือ เพิ่มจำนวนสมาชิกเข้ามาในโครงสร้างได้
  • LIFO ข้อมูลที่เข้ามาในลิสต์เป็นลำดับสุดท้าย จะถูกนำออกจากลิสต์เป็นอันดับแรก
#พื้นฐานการดำเนินการกับสแตก#
  • Push หรือ การนำเข้าข้อมูล เป็นการเพิ่มข้อมูลในสแตก กรณีที่ไม่มีข้อมูลจะ push เข้าในตำแหน่งแรก ซึ่งเป็นตำแหน่ง top แต่หากนำข้อมูล push เข้ามาอีก จะดำเนินการจัดลงในตำแหน่งต่อจาก top และปรับค่า top มาอยู่ที่ตำแหน่งข้อมูลที่ push เข้ามาใหม่ ปัญหา stack over flow คือไม่มีพื้นที่ว่างสำหรับการเพิ่มข้อมูลเข้าไปใน สแตก หรือ สแตก เต็ม
  • Pop หรือการดึงข้อมูลออก คือ การนำเอาข้อมูลออกจากสแตก จะดำเนินการในตำแหน่ง top ต้องตวรจสอบด้วยว่า หากไม่มีข้อมูลภายในสแตกแล้วยังมีการเรียก pop ข้อมูลอีกจะทำให้เกิดข้อผิพลาดที่เรียกว่า stack under flow
  • Top หรือตำแหน่งบนสุด บอกให้ทราบว่าหากต้องการ pop หรือ push ข้อมูลก็สามารถทำได้ ณ ตำแหน่งนี้ โดยลักษณะการดำเนินการของ top เป็นเพียงสิ่งที่บอกตำแหน่งของข้อมูลท่อยู่บนสุดเท่านั้น หากมีการ push ข้อมูลตำแหน่งของ top ก็จะชี้ไปค่าตำแหน่งสูงสุดใหม่ หรือ หากมีการ pop ข้อมูลออกไป top ก็ไม่ใช่ตัวลบค่า แต่จะเป็นการคืนค่าและลดตำแหน่งลงมา

#พื้นฐานของ Stack ที่สร้างด้วย Linked list#

  • Create stack: สร้าง stack head node
  • Push stack: เพิ่มรายการใน stack
  • Pop stack: การนำข้อมูลบนสุดออกจาก stack (ไม่บอกตำแหน่งเพราะเอาตัวบนสุดออกมาเท่านั้น)
  • Stack top: เป็นการคัดลอกข้อมูลที่อยู่บนสุดของ stack
  • Empty stack: ตรวจสอบว่า stack ว่างเปล่าหรือไม่
  • Full stack: ตรวจสอบว่า stack เต็มหรือไม่
  • Stack count: ส่งค่าจำนวนรายการใน stack
  • Destroy stack: คืนหน่วยความจำของทุก node ใน stack ให้ระบบ

#การประยุกต์ใช้งานสแตกในการแปลงรูปนิพจน์ทางคณิตศาสตร์#

1.รูปแบบนิพจน์ทางคณิตศาสตร์ แบ่งเป็น 3 ประเภทคือ

  • Infix คือ นิพจน์ที่มีเครื่องหมายดำเนินการอยู่กึ่งกลางตัวถูกดำเนินการ (operand)
  • Postfix คือ นิพจน์ที่มีเครื่องหมายดำเนินการอยู่ด้านหลังตัวถูกดำเนินการ (operand)
  • Prefix คือ นิพจน์ที่มีเครื่องหมายดำเนินการอยู่ด้านหน้าตัวถูกดำเนินการ (operand)
  • เครื่องหมายดำเนินการ (operand) ได้แก่ + - * ^
  • ตัวถูกดำเนินการ ได้แก่ สัญลักษณ์แทนค่าตัวเลข หรือ ตัวแปรอื่น

#นิพจน์ infix#

  • จะเป็นลักษณะของนิพจน์ที่ใช้งานกันทั่วไป มีการนำเครื่องหมายการดำเนินการไว้ตรงกลาง

#นิพจน์ posfix#

  • เป็นนิพจน์ที่มีการจัดรูปแบบของการคำนวณโดยเอาเครื่องหมายดำเนินการไว้หลังตัวถูกดำเนินการเพื่อให้ระบบอ่านตัวถูกดำเนินการก่อนแล้วจึงทราบวิธีการคำนวณ

2.การแปลงนิพจน์ infix เป็น posfix ในระบบคอมพิวเตอร์ไม่สามารถที่จะจัดลำดับของการคำนวณในรูปแบบของ infix ได้ แต่จะแปลงเป็นนิพจน์ของ infix หรือ prefix เสียก่อน

  • ลักษณะของการแปลงนิพจน์จะใช้การเปรียบเทียบความสำคัญของตัวดำเนินการ เครื่องหมายในการคำนวณทั้ง 5 ตัว และหลักการอัลกอริทึมของการแปลงนิพจน์

#วิธีการเปลี่ยน Infix เป็น Postfix#

1. ใส่ “(“ เข้าไปใน Stack•

2. อ่าน EXP จากซ้ายไปขวา

  • 2.1 ถ้าพบตัวถูกดำเนินการ(ตัวเลข) ให้ใส่เข้าไปใน NEXP
  • 2.2 ถ้าพบ “(“ ให้ push ใส่ stack
  • 2.3 ถ้าพบตัวดำเนินการ(เครื่องหมาย) ให้ทำดังนี้ - ให้ pop ตัวดำเนินการ ทุกตัวที่มีลำดับความสำคัญกว่าตัวดำเนินการที่พบใน 2.3 ออกมาใส่ใน NEXP ให้หมด - นำตัวดำเนินการที่พบใน2.3 push เข้าใน stack แทนที่
  • 2.4 ถ้าพบ “)” ให้ทำดังนี้ • - ให้ push ตัวดำเนินการ ทุกตัวมาใส่ไว้ใน NEXP ให้หมดจนพบ “(“ • - push “(“ ทิ้ง

3. จบการทำงาน

4/8/52

DTS05-28-07-2552

#ลิงค์ลิสต์#

เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่าง ๆ โดยมีพอยเตอร์เป็นตัวเชื่อมต่อ แต่ละอิลิเมนท์ เรียกว่าโนด (Node) ซึ่งในแต่ละโนดจะประกอบไปด้วย 2 ส่วน คือ
-Data จะเก็บข้อมูลของอิลิเมนท์
-Link Field จะทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์
-ส่วนของ data อาจเป็นรายการเดี่ยว หรือ เป็นเรคคอร์ดก็ได้
-ส่วนของ link เป็นส่วนที่เก็บตำแหน่งของโหนดถัดไป ในโหนดสุดท้ายจะเก็บค่า Null ซึ่งไม่ได้ชี้ไปยังตำแหน่งใด ๆ เป็นตัวบอกการสิ้นสุดของลิสต์ในลิงค์ลิสต์จะมีตัวแปรสำหรับชี้ตำแหน่งลิสต์ (List pointer variable)ซึ่งเป็นที่เก็บตำแหน่งเริ่มต้นของลิสต์ ซึ่งก็ คือ โหนดแรกของลิสต์นั่นเอง
-ถ้าลิสต์ไม่มีข้อมูล ข้อมูลในโหนดแรกของลิสต์จะเป็น Null

#โครงสร้างข้อมูลแบบลิงค์ลิสต์#

จะแบ่งเป็น 2 ส่วน คือ
1.Head Structure จะประกอบไปด้วย 3 ส่วนได้แก่
-จำนวนโหนดในลิสต์ (Count)
-พอยเตอร์ที่ชี้ไปยังโหนดที่เข้าถึง (Pos)
-พอยเตอร์ที่ชี้ไปยังโหนดข้อมูลแรกของลิสต์ (Head)
2.Data Node Structure จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป

#กระบวนงานและฟังก์ชั่นที่ใช้ดำเนินงานพื้นฐาน#

1. กระบวนงาน Create List หน้าที่ คือ สร้างลิสต์ว่าง ผลลัพธ์ คือ ลิสต์ว่าง
2. กระบวนงาน Insert Node หน้าที่ คือ เพิ่มข้อมูลลงไปในลิสต์บริเวณตำแหน่งที่ต้องการ ข้อมูลนำเข้า คือลิสต์ ข้อมูล และตำแหน่ง ผลลัพธ์ คือ ลิสต์ที่มีการเปลี่ยนแปลง
3. กระบวนงาน Delete Node หน้าที่ คือ ลบสมาชิกในลิสต์บริเวณตำแหน่งที่ต้องการ ข้อมูลนำเข้า คือ ข้อมูลและตำแหน่ง ผลลัพธ์ คือ ลิสต์ที่มีการเปลี่ยนแปลง
4. กระบวนงาน Search list หน้าที่ คือ ค้นหาข้อมูลในลิสต์ที่ต้องการ ข้อมูลนำเข้าลิสต์ ผลลัพธ์ คือ ค่าจริงถ้าพบข้อมูล ค่าเท็จถ้าไม่พบข้อมูล
5. กระบวนงาน Traverse หน้าที่ คือ ท่องไปในลิสต์เพื่อเข้าถึงและประมวลผลข้อมูลนำเข้าลิสต์ ผลลัพธ์ คือ ขึ้นกับการประมวลผล เช่น เปลี่ยนแปลงค่าใน node , รวมฟิลด์ในลิสต์ ,คำนวณค่าเฉลี่ยของฟิลด์เป็นต้น
6. กระบวนงาน Retrieve Node หน้าที่ คือ หาตำแหน่งข้อมูลจากลิสต์ ข้อมูลนำเข้าลิสต์ ผลลัพธ์ คือตำแหน่งข้อมูลที่อยู่ในลิสต์
7. ฟังก์ชั่น EmptyList หน้าที่ คือ ทดสอบว่าลิสต์ว่างข้อมูลนำเข้า ลิสต์ ผลลัพธ์ คือ เป็นจริง ถ้าลิสต์ว่างเป็นเท็จ ถ้าลิสต์ไม่ว่าง
8. ฟังก์ชั่น FullList หน้าที่ คือ ทดสอบว่าลิสต์เต็มหรือไม่ข้อมูลนำเข้าลิสต์ ผลลัพธ์ คือ เป็นจริง ถ้าหน่วยความจำเต็ม เป็นเท็จ ถ้าสามารถมีโหนดอื่น
9. ฟังก์ชั่น list count หน้าที่ คือ นับจำนวนข้อมูลที่อยู่ในลิสต์ ข้อมูลนำเข้าลิสต์ ผลลัพธ์ คือ จำนวนข้อมูลที่อยู่ในลิสต์
10. กระบวนงาน destroy list หน้าที่ คือ ทำลายลิสต์ ข้อมูลนำเข้า คือ ลิสต์ ผลลัพธ์ คือ ไม่มีลิสต์

#Linked List แบบซับซ้อน#

1. Circular Linked List เป็นลิงค์ลิสต์ที่สมาชิกตัวสุดท้ายมีตัวชี้ (list) ชี้ไปที่สมาชิกตัวแรกของลิงค์ลิสต์ จะมีการทำงานไปในทิศทางเดียวเท่านั้น คือเป็นแบบวงกลม
2. Double Linked List เป็นลิงค์ลิสต์ที่มีทิศทางการทำงานแบบ 2 ทิศทาง
-ในลิงค์ลิสต์แบบ 2 ทิศทาง ส่วนข้อมูลจะมีตัวชี้ไปที่ข้อมูลก่อนหน้า (backward pointer) และตัวชี้ข้อมูลถัดไป(forward pointer)

19/7/52

DTS04-14-07-2552

#Set and String #

-ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันเลย

#ตัวดำเนินการของเซ็ต#

-Set intersection การซ้ำกัน
-Set union การรวมกัน
-Set difference ความแตกต่าง
-สตริงของอักขระ ข้อมูลที่ประกอบด้วยตัวอักษร ตัวเลข หรือเครื่องหมาย
-สตริงในภาษา C คือ อาร์เรย์ของตัวอักษร ที่มีข้อมูลชนิดตัวอักษรเรียงกันไป แต่จะต้องมีจุดสิ้นสุดด้วย
-Null Character เป็นจุดสิ้นสุดของสตริง ต่างจากอาร์เรย์ปกติที่ไม่ต้องมีจุดสิ้นสุดของอาร์เรย์ ซึ่งจุสิ้นสุดของสตริงจะใช้ Null Characterหรือ ‘\0’

#การเก็บข้อมูลของสตริง#

มีการเก็บอยู่ 2 ส่วน
-ส่วนแรกเป็นข้อมูลตัวอักษร เก็บเรียงกัน
-ส่วนที่ 2 จะเก็บจุดสิ้นสุดของสตริง
-ข้อมูลชนิดตัวอักษร ต้องการหน่วยความจำเพียง 1 ส่วน
-ข้อมูลชนิดสตริงตัวอักษร 1 ตัว ต้องการหน่วยความจำ 2 ส่วน ส่วนแรกใช้เก็บข้อมูล และส่วนที่สองใช้เก็บจุดสิ้นสุดของสตริง
-การดู Character การดู String ดูได้จาก Single quote กับ double quote
-double quote ฟันหนู หรืออัญประกาศ หรือเขาคู่ หรือเครื่องหมายคำพูด
-single quote apostrophe หรือฝนทอง หรือเขาเดี่ยว
-ความยาวของสตริงจพถูกกำหนดโดยขนาดของสตริง
-การกำหนดตัวแปรสตริงในการกำหนดตัวแปรของสตริง อาศัยหลักการของอะเรย์
-สตริงก็คืออะเรย์ของอักขระที่ปิดท้ายด้วย null character (\0)

#ฟังก์ชันพิเศษสำหรับทำงานกับสตริงโดยเฉพาะ#

-getch() ใช้รับตัวอักขระ 1 ตัวจากแป้นพิมพ์ แต่ขณะรับไม่แสดงทางจอภาพฟังก์ชัน
-gets() เป็นฟังก์ชันใช้สำหรับรับข้อมูลชนิด String หรือ ข้อความ ซึ่งป้อนทางแป้นพิมพ์รับข้อมูลที่เป็นข้อความจากเป็นฟังก์ชันที่ใช้ในการแป้นพิมพ์เข้ามาเก็บไว้ในตัวแปรแบบอาเรย์ การใช้ต้องมีการประกาศตัวแปรแบบอาเรย์ และกำหนดจำนวนตัวอักษรที่ต้องการป้อน
-ถ้าหากมีสตริงจำนวนมาก ควรทำให้เป็นอะเรย์ของสตริง เพื่อเขียนโปรแกรมได้สะดวก
-การสร้างอะเรย์ของสตริง สามารถสร้างได้ทั้งแบบที่ให้ค่าเริ่มต้น และแบบที่กำหนดเป็นตัวแปร
-การใช้ฟังก์ชันต่าง ๆ ต้องนำเข้าไลบรารีไฟล์ strintg.h เสมอ
-Strlen ใช้ในการหาขนาดความยาวของข้อความ ว่ามีความยาวของข้อมูลกี่ตัวอักษร
-strcpy, strncpy 2 ฟังก์ชันนี้ จะเป็นฟังก์ชันในการคัดลอกสตริง ฟังก์ชันที่ 2 สามารถกำหนดความยาวของสตริงที่ต้องการจะคัดลอกได้
-strcpy การคัดลอกสตริงพื้นฐาน ทำการคัดลอกสตริงต้นทั้งหมด รวม Null Character ด้วย ใส่ในสตริงปลายทาง
-strcmp,strncmp ทำการเปรียบเทียบ
-strncmp จะกำหนดความยาวในการเปรียบเทียบได้
-strcat, strncat ใช้ในการต่อสตริง การทำงานของฟังก์ชัน จะจับสตริงชุดหนึ่งไปต่อท้ายกับสตริงอีกชุดหนึ่ง

#ข้อแนะนำการใช้ฟังก์ชันรับข้อมูล#

-การรับค่าข้อมูล string ใช้ฟังก์ชัน gets( ) หรือ scanf( )
-การรับตัวเลข หรือตัวอักษรเพียง 1 ตัว ที่ไม่ต้องการเห็นบนจอภาพ และไม่ต้องกดแป้น enter ใช้ getch( ) ถ้าต้องการเห็นบนจอภาพควรใช้ getche( )
-การรับข้อมูลตัวเลขที่มากกว่า 1 ตัว ใช้ฟังก์ชัน scanf( )
-การใช้ฟังก์ชัน scanf( ) รับข้อมูลติดต่อกันมากกว่า 2 ครั้ง อาจเกิดความผิดพลาดในการรับข้อมูล ควรใช้คำสั่ง ch = getchar( ); ก่อนที่จะรับข้อมูลครั้งที่ 3 ต้องมีคำสั่งประกาศตัวแปร char ch; ด้วย

6/7/52

DTS03-23-06-2552

#Array and Record#

-อะเรย์ เป็นโครงสร้างข้อมูลที่พบมากในการเขียนโปรแกรมภาษาคอมพิวเตอร์ทุกภาษา
-อะเรย์ เป็นพื้นฐานในการทำความเข้าใจกับโครงสร้างข้อมูลตัวอื่น ๆ
-อะเรย์ เป็นโครงสร้างข้อมูลที่มีลักษณะคล้ายเซ็ตในคณิตศาสตร์ ประกอบด้วยสมาชิก มีจำนวนคงที่ มีรูปแบบข้อมูลเป็นแบบเดียวกัน สมาชิกแต่ละตัวใช้เนื้อที่จัดเก็บที่มีขนาดเท่ากัน เรียงต่อเนื่องในหน่วยความจำหลัก
-อะเรย์ ถือเป็นโครงสร้างข้อมูลแบบ Static data structure
-อะเรย์จะมีขนาดคงที่ เป็นแถวลำดับแบบอันดับ (Ordered list ) ประกอบด้วยชุดของตัวแปร มีลักษณะเป็นช่องหลาย ๆ ช่องที่มีชื่อเดียวกัน ใช้เก็บข้อมูลชนิดเดียวกัน ข้อมูลในช่องแต่ละช่อง เรียกว่า สมาชิกของอะเรย์
-อะเรย์ คุณสมบัติหลัก ๆ คือ มีขนาดคงที่ ข้อมูลแสดงผลออกมาแบบเรียงลำดับ (inorder)
-สามารถดึงสมาชิกออกมาได้
-สามารถแทนที่สมาชิกได้
-สามารถเพิ่มสมาชิกใหม่เข้าไปในแถวลำดับได้
-สามารถลบสมาชิกที่มีอยู่ออกจากแถวลำดับได้
-อะเรย์ มีการจองพื้นที่หน่วยความจำเป็นชุด ๆ ประกอบด้วยจำนวนช่องข้อมูลหลายช่อง พื้นที่แต่ละช่องข้อมูลอยู่ในตำแหน่งที่ต่อเนื่องกันไป
-การเข้าถึงข้อมูลใด ๆ ทำโดยระบุหมายเลขกำกับช่องข้อมูล เรียกว่า ตัวดัชนี หรือ ตัวชี้ หรือ ซับสคริปต์
-การกำหนดอะเรย์ ต้องกำหนดชื่ออะเรย์ พร้อม subscript ซึ่งเป็น ตัวกำหนดขอบเขต มีมากกว่า 1 ตัว จำนวน subscript เป็นตัวบอกมิติของอะเรย์
-อะเรย์ที่มี subscript มากกว่า 1 ตัวขึ้นไป เรียกว่า อะเรย์หลายมิติ
-การกำหนด subscript ประกอบไปด้วย ค่าสูงสุด และ ค่าต่ำสุดของ subscript
-ค่าต่ำสุดต้องมีค่าน้อยกว่า หรือเท่ากับค่าสูงสุดเสมอ
-ค่าต่ำสุด เรียกว่า ขอบเขตล่าง
-ค่าสูงสุด เรียกว่า ขอบเขตบน
-ค่า subscript ที่ใช้อ้างอิงถึงสมาชิก ต้องมีค่ามากกว่า หรือเท่ากับขอบเขตล่าง และน้อยกว่าหรือเท่ากับขอบเขตบน
-ขนาดของ index แต่ละตัว ของ Array หาได้จาก ขนาดของ subscript = upper bound – lower bound + 1
-อะเรย์ใช้ index บ่งชี้ตำแหน่ง การดึงข้อมูล และการจัดเก็บข้อมูลลงในอะเรย์ สิ่งที่ต้องคำนึง คือ ค่าต่ำสุด ในแต่ละมิติ แทนด้วย Lค่าสูงสุด ในแต่ละมิติ แทนด้วย U
-จำนวนหรือขนาดของอะเรย์ Range = ( U -L ) + 1
-จำนวนสมาชิก หรือ ขนาดของอะเรย์ n มิติ หาได้จาก ขนาดของอะเรย์ = ผลคูณของขนาดของ subscript แต่ละตัว

#การจัดเก็บอะเรย์ในหน่วยความจำหลัก#

ใช้เนื้อที่ขนาดเท่ากัน เพื่อเก็บสมาชิกแต่ละตัว โดยเนื้อที่จะเรียงต่อเนื่องกัน พิจารณาตามประเภทในมิติต่าง ๆ ดังนี้
1]โครงสร้างข้อมูลอะเรย์หนึ่งมิติ คือ มีการจัดเก็บข้อมูลต่อเนื่องกันไปเป็นแถวต่อเนื่องกันตลอด เหมือนกับตารางแถวเดียว มีดัชนีอ้างเพียง 1 ตัว
-data-type array-name[expression]
-data-type คือ ประเภทของข้อมูลอะเรย์
-array-name คือ ชื่อของอะเรย์
-expression คือ จำนวนเต็ม ระบุจำนวนสมาชิกของอะเรย์
-ถ้าเป็นอะเรย์มิติเดียว สามารถทำได้ทั้งหมด 3 วิธี


[1] มีการประกาศขนาดของอะเรย์ที่ทำหน้าที่ในการรับค่า
[2]ไม่ต้องมีการประกาศขนาดของอะเรย์ที่ทำหน้าที่ในการรับค่า
[3]ตัวแปรที่ทำหน้าที่รับค่าถูกกำหนดเป็นพอยน์เตอร์


-การส่งผ่านอะเรย์ให้ฟังก์ชัน เป็นการส่งผ่านโดยการอ้างอิง เรียกว่า Pass by reference ค่าของสมาชิกแต่ละตัวจะไม่ได้ถูกส่งไปให้ฟังก์ชัน แต่ชื่อของอะเรย์จะถูกมองเป็นตำแหน่งในหน่วยความจำที่ใช้เก็บสมาชิกตัวแรกซึ่ง address นี้จะถูกส่งให้กับอาร์กิวเมนต์ที่ตรงกัน
-อาร์กิวเมนต์เป็น pointer ชี้ไปยังสมาชิกตัวแรกของอะเรย์
-Pass by value การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้ โดยส่งค่าของตัวแปรหรือค่าคงที่ไปโดยตรง ค่าของอาร์กิวเมนต์ที่ผ่านให้กับฟังก์ชันจะถูกคัดลอกส่งให้กับฟังก์ชัน และจะถูกเปลี่ยนแปลงเฉพาะภายในฟังก์ชันโดยค่าของอาร์กิวเมนต์ในโปรแกรมที่เรียกใช้จะไม่เปลี่ยนแปลง
-Pass by reference การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งเป็นค่าตำแหน่งที่อยู่ของตัวแปรไปซึ่งหากภายในฟังก์ชันมีการเปลี่ยนแปลงค่าของอาร์กิวเมนต์ที่ส่งไป ก็จะมีผลทำให้ค่าของอาร์กิวเมนต์นั้นในโปรแกรมที่เรียกใช้เปลี่ยนไปด้วย


2]โครงสร้างข้อมูลอะเรย์สองมิติ มีการจัดเก็บข้อมูลแบบตารางสองทาง ข้อมูลมีการจัดเรียงกันตามแนวแถว และ แนวหลัก การอ้างถึงข้อมูลต้องระบุตำแหน่งแถว และตำแหน่งหลักที่ข้อมูลนั้นอยู่
-การเข้าถึงสมาชิกตัวใด ใช้ตัวบอกลำดับ 2 ตัว
-โครงสร้างสามารถมองได้ในลักษณะ Matrix หรือ Table สมาชิกถูกจัดเรียงอยู่ในลักษณะแถว และคอลัมน์
-Structure โครงสร้างที่สมาชิกแต่ละตัวมีประเภทข้อมูลแตกต่างกัน อาจมีสมาชิกเป็นจำนวนเต็ม ทศนิยม อักขระ อะเรย์ หรือพอยเตอร์ หรือแม้แต่ structure ด้วยกันก็ได้
-Structure กับ pointer
-เราสามารถที่จะอ้างถึงที่อยู่เริ่มต้นของ structure ได้เหมือนกับตัวแปรอื่น ๆ โดยใช้ตัวดำเนินการ &
-ถ้า variable เป็นตัวแปรประเภท structure &variable จะเป็นเลขที่อยุ่เริ่มต้นของตัวแปร
-Pointer เป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่งที่อยู่ (Address) ของตัวแปรที่อยู่ในหน่วยความจำ

28/6/52

DTS02-23-06-2552

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

-เป็นความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น

#ชนิดข้อมูล 3 ระดับ#

ข้อมูลในระดับเครื่อง ข้อมูลในระดับโปรแกรม และข้อมูลในระดับความคิด

--ข้อมูลในระดับเครื่องเป็นแบบชนิดข้อมูลในระดับต่ำสุดซึ่งมีการจัดเก็บจริงในหน่วยความจำของเครื่อง ได้แก่ จำนวนเต็ม จำนวนจริง และตัวอักขระ
--ข้อมูลในระดับโปรแกรมเป็นแบบชนิดข้อมูลที่มีให้ใช้ในภาษาคอมพิวเตอร์ เช่น สตริง แถวลำดับ เซต และแฟ้มข้อมูล เป็นต้น
--ข้อมูลในระดับความคิดเป็นข้อมูลที่เกิดจากการจินตนาการของผู้ใช้เพื่อแก้ปัญหาที่ต้องการ เช่น ลิสต์ สแตก คิว ทรี และกราฟ เป็นต้น

#โครงสร้างข้อมูลในภาษาคอมพิวเตอร์#

แบ่งออกเป็น 2 ประเภท คือ โครงสร้างข้อมูลทางกายภาพ และโครงสร้างข้อมูลทางตรรกะ
--โครงสร้างข้อมูลทางกายภาพเป็นโครงสร้างข้อมูลพื้นฐานทั่วไปที่ทุกภาษาควรจะมีให้ใช้ เช่น จำนวนเต็ม จำนวนจริง ตัวอักขระ แถวลำดับ ระเบียนข้อมูล และแฟ้มข้อมูล เป็นต้น
--โครงสร้างข้อมูลทางตรรกะเป็นโครงสร้างข้อมูลที่เกิดจากจินตนาการของผู้ใช้ เช่น ลิสต์ สแตก คิว ทรี และกราฟ เป็นต้น


#การแทนที่ข้อมูลในหน่วยความจำหลัก#

ทำได้ 2 วิธีคือ
--การแทนที่ข้อมูลแบบสแตติก ก่อนใช้งานต้องมีการจองเนื้อที่ก่อนโดยมีขนาดคงที่แน่นอนเพิ่มหรือลดขนาดไม่ได้ โครงสร้างข้อมูลที่มีการแทนที่ด้วยวิธีนี้คือ แถวลำดับ
--การแทนที่ข้อมูลแบบไดนามิก เป็นการใช้เนื้อที่ในความจำหลักแบบมีความยืดหยุ่นใช้เนื้อที่เท่าที่มีใช้จริงไม่ต้องจองเนื้อที่ โครงสร้างข้อมูลที่มีการแทนที่ด้วยวิธีนี้คือ พอยน์เตอร์

#########


#include
#include
int main(void)
{

struct washing
{
char series[20];
int washing_capacity;
int weight_net;
int weight_gross;
char color[10];
char digital_display[2];
char child_lock[2];
int price;

}machine;

strcpy(machine.series,"WA13PA");
machine.washing_capacity = 12;
machine.weight_net = 39 ;
machine.weight_gross = 10;
strcpy(machine.color , "green");
strcpy(machine.digital_display,"y");
strcpy(machine.child_lock,"y");
machine.price = 9900;

printf(" Series : %s\n Washing capacity : %d\n Weight net : %d\n Weight gross : %d\n Color : %s\n Digital display: %s\n Child lock : %s\n Price : %d\n",
machine.series,machine.washing_capacity,machine.washing_capacity,machine.weight_gross,machine.color,machine.digital_display,machine.child_lock,machine.price);
return 0;
}

23/6/52

ประวัติ

นายอนุวรรษ วุฒิกูล รหัสนักศึกษา 50172792030

Mr.Anuwat Wuttikul

หลักสูตร : การบริหารธุรกิจ(คอมพิวเตอร์ธุรกิจ) คณะวิทยาการจัดการ

มหาวิทยาลัยราชภัฎสวนดุสิต

E-mail :
u50172792030@gmail.com