7.1.54

บันทึกฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 9

วันที่ 27 - 30 ธันวาคม 2553

งานที่ปฏิบัติ

1. Retouch Poster แก้ไขเปลี่ยนแปลงรูปใหม่ เพื่อนำ Poster ไปติดประชมสัมพันธ์ บริเวณด้านหน้าบริษัท

2. ออกไปมอบกระเช้า เพื่อสวัสดีปีใหม่และขอบคุณสื่อมวลชลที่ได้ลงข่าวประชาสัมพันธ์มาโดยตลอด

3.หาข่าวประชาสัมพ์ของ Bitdefender

4. อัพข่าวประชาสัมพันธ์ใน Website ของบริษัท

5. ออกไป Repackage ให้เป็นเวอร์ชั่นใหม่ล่าสุด 2011

6. รับโทรศัพท์เพื่อตอบปัญหาของลูกค้าเมื่อลงโปรแกรม แอนตี้ไวรัส Bitdefender

ปัญหาและอุปสรรค
1. หาร้านที่จะนำ package ไม่เจอทำให้หาร้านนานมาก เสียเวลา

2. บางที่สายลูกค้าที่โทรเข้ามาอาจจะหลุดเนื่งจากรับสายชนกันที่ให้เกิดการขัดข้าง

วิธีแก้ไขปัญหา

1. สอบถามผู้ดูแล หรือ ร.ป.ภ ว่าร้านที่เรากำลังหาอยู่ตรงไหน และโทรสอบถามเจ้าของร้านนั้นๆ

2. รับสายเฉพาะที่พี่ Callcenter ไม่สามารถรับได้ เพื่อไม่ให้เกิดความซ้ำซ้อนกัน

ประโยชน์ที่ได้รับ
1. ได้รู้จักวิธีการแก้ปัญหาอย่างถูกวิธี

2. ได้รู้จักการใช้คำพูดกับลูกค้า เป็นการฝึกบุคคลิกภาพได้

27.12.53

บันทึกฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 8

วันที่ 20 - 24 ธันวาคม 2553

งานที่ปฏิบัติ
1. scan ข่าวที่ได้ค้นหาจากนิตยสารต่างๆ แล้วบันทึกข้อมูลไว้ใน Microsoft Office word มีข้อมูลเกี่ยวกับ ชื่อนิตยสาร วัน เดือน ปี ฉบับที่ และปี่ที่พิทพ์ เพื่อทำเป้น Report ในปี 2553

2. แก้ไข Artwork stend display ทำการลดขนาดให้เล้กลงลง เพื่อให้ใส่ตัวผลิตภัณฑ์ ได้แค่สองกล่องเท่านั้น

3. ออกแบบงาน Artwork ไวรัสคลีนิค ของ bitdefender เพื่อนำไปติดที่ร้านตัวแทนจำหน่าย

4. อัพเดทข้อมูลในหัวข้อ FAQ ลงบนเว็บไซค์ ของ bitdefender จำนวนสองหัวข้อด้วยกัน

5. ออกไปพบสื่อมวลชล ได้นำกระเช้าไปมอบให้สื่อมวลชล เพื่อไปสวัสดีปีใหม่และขอบคุณสื่อที่ได้ลงข่าวประชาสัมพันธ์ให้กับบริษัทมาโดยตลอด ไปมอบกระเช้าด้วยกันสองที่ - นิตยสาร Chip magazine - หนังสือพิมพ์ เดลินิวส์

ปัญหาและอุปสรรค
1. ในการหาข่าวจากนิตสารมีความซ้ำซ้อนกัน เพราะนิตยสารบางเล่มมีจำนวนที่มากกว่า 1 เล่มทำให้หาข่าวได้ซ้ำกัน เกิดความล้าช้าในการทำงาน

2. ในการออกแบบ Artwork stend display กำหนดขนาดไม่ถูกว่าจะกำหนดขนาดเท่าใดจึงจะพอดีหรือสมควร

3. ในการไปมอบกระเช้าให้กับสื่อมวลชล ไปตึกที่จะพบสื่อไม่ถูก ทำให้เสียเวลา

วิธีแก้ไขปัญหา
1. แยกนิตยสารก่อน ดูว่าเล่มไหนซ้ำกันบ้างแยกไปตามเดือน และแยกตามนิยสาร

2. วัดขนาดของกล่อง packaging ว่ามีขนาดเท่าใด แล้วจึงมาคำนวนตามสัดส่วน

3. ควรศึกษาเส้นทางก่อนออกไป โทรถามทางจากพี่ที่รู้จัก

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

2. ได้ออกไปพบสื่อมวลชลต่าง ๆ ได้ความรู้ใหม่ในการออกไปพบผู้ใหญ่สังคมภายนอกว่าเราควรวางตัวอย่างไร

19.12.53

บันทึกฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 7

วันที่ 13 - 17 ธันวาคม 2553

งานที่ปฏิบัติ
1. หาข่าวเกี่ยวกับดปรแกรมแอนตี้ไวรัส Bitdefender ป้องกันไวรัส ร่วมกับ 3BB ซื้อ 1 ปี แถม 1 ปี

2. ตรวจสอบเบอร์โทร และเบอร์ Fax ของสำนักข่าว ว่าถูกต้องหรือไม่

3. ทำ Report เทปบันทึกรายการ กอล์ฟพาราไดร์ รายการใต้เบื้องยุคลบาล และรายการความดีคู่แผ่นดินว่ามีสปร์ต โฆษณาหรือไม่

4. หาข่าวเกี่ยวกับ Bitdefender ในนิตยสารต่างๆ ว่าเล่มไหนได้ลงข่าวประชาสัมพันธ์บ้าง

5. นำข่าวที่ได้มา ไปเปะลงกระดาษ A4 และบันทึกวันที่ ชื่อนิตยสาร เพื่อจัดเก็บเป็น Report

ปัญหาและอุปสรรค
- ไฟล์รูปในการเทปบันทึกรายการค่อนข้างใหญ่ จัดเรียงภาพลำบาก

วิธีแก้ไขปัญหา
- นำไฟล์รูปไปย่อขนาดให้มีขนาดเล็กลงและมีขนาดเท่าๆกัน ก่อนที่จะนำมาเรียงภาพ

ประโยชน์ที่ได้รับ
- ได้เรียนรู้วิธีการเก็บข้อมูลต่าง ๆ ให้เป้นระเบียบเรียบร้อย

13.12.53

บันทึกฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 6

วันที่ 7-9 ธันวาคม 2553

งานที่ปฏิบัติ
1. Scan ข่าวของบริษัทต่อจากวันศุกร์ที่ผ่านมา เพื่อเก็บเป็นไฟล์งาน ป้องกันเอกสารตัวจริงหายไป

2. หาข่าวเกี่ยวกับ Bitdefender ในนิตยสารต่างๆ ว่ามีเล่มไหนบ้างที่ลงโฆษณาให้บ้าง

3. หาข่าว ของโปรแกรมแอนตี้ไวรัสในบริษัทคู่แข่ง ว่ามีตัวไหน มีข่าวอะไรบ้าง

4. Fax ข่าวประชาสัมพันธ์ให้สำนักข่าวต่างๆ

5. ค้นหาข้อมูลรายการย้อนหลัง รายการกอฟล์พาราไดซ์ ว่ามีการลงโฆษณาหรือเปล่า

ปัญหาและอุปสรรค
- ในการค้นหาข่าวคู่แข่ง อาจจะใช้เวลาในการค้นหามาก เพราะไม่มีข้อมูลในการค้นหา

วิธีการแก้ไขปัญหา
- จำกัดเขตข้อมูลให้แคบลง เพื่อที่จะได้สะดวกในการค้นหาข้อมูลมากขึ้น

ประโยชน์ที่ได้รับ
- ได้เรียนรู้การทำงานอย่างมีแบบแผน จำกัดขอบเขตในการทำงานเพื่อการทำงานจะได้มีประสิทธิภาพ

7.12.53

บันทึกฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 5

วันที่ 29 พฤศจิกายน - 3 ธันวาคม 2553

งานที่ปฏิบัติ

1. หาข่าวตามเว็บไซต์ต่าง ๆ ที่ได้ลงข่าวให้กับบริษัท เป็นข่าวเกี่ยวกับ การเตือนภัยช็อปปิ้ง ผ่านอินเตอร์เน็ต

2. Capture ไฟล์ VDO save เป็นไฟล์รูปถาพ โดยแยกเป็นรายการ และวัน/เดือน/ปี ที่ได้ออกอากาศ ว่ารายการได้ลงโฆษณาให้กับบริษัทบ้าง

3. พับกล่อง Package และนำลายเส้นคีย์ ของผลิตภัณฑ์ของบริษัท และติดสติ๊กเกอร์ข้างกล่อง

4. ปริ้นข่าวประชาสัมพันธ์ ตั้งแต่เดือน ก.ค.-พ.ย. 53

5. Scan ข่าว Girls next door 2010 ใส่ไว้ในไฟล์ Word เพื่อเก็บเป็นไฟล์ข่าวในส่วนของปี 2010

ปัญหาและอุปสรรค
1. จำนวนแผ่น CD ค่อนข้างเยอะทำให้สับสนอาจจะงงเพราะแผ่นเหมือนกันหมด

2. เวลาเรียงกล่องไม่เรียงตามตัวเลขมำให้สับสน และทำงานช้าลง

วีธีแก้ไขปัญหา
1. จัดเรียงวันที่และรายการแยกเป็นส่วนๆ เวลาทำจะได้ไม่ต้องสับสน

2. เวลาติดสติ๊กเกอร์เสร็จแล้วก็เรียงตามรหัสที่ติดอยู่ข้างกล่อง จะได้ไม่เสียเวลา

ประโยชน์ที่ได้รับ
- การ Capture ไฟล์วิดีโอ นั้นไม่สามารถกด print screen แล้วนำมาวางไว้ได้ จะต้องใช้โปรแกรมเฉพาะเท่านั้นถึงจะ ทำการ Capture วีดีโอได้ ทำให้เกิดความรู้ใหม่จะได้นำไปใช้ในงานอื่น ๆ ได้

28.11.53

บันทึกฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 4

วันที่ 22-26 พฤศจิกายน 2553

งานที่ปฎิบัติ

1. เข้าประชุมฟังพี่ๆ บรรยายเกี่ยวกับตัวผลิตภัณฑ์ ว่ามีการใช้งานอย่างไร มีคุณสมบัติอย่างไร

2. Update ข่าวลงใน website ของบริษัท 2 ข่าว คือข่าว การเตือนภัยการช้อปปิ้งผ่าน Internet
ข่าวที่ 2 ประชาสัมพันธ์ สำหรับผู้ใช้งาน Linux ปล่อยโปรแกรม Antispam สำหรับ Linux Mail Scrvers แบบ Free Edition

3. ส่ง Fax ฝากประชาสัมพันธ์ ข่าว Bitdefender เอาใจผู้ใช้การ Linux ปล่อยโปรแกรม Antispam ให้ใช้งานฟรี

4. นำแบบสอบถามเกี่ยวกับ ผลิตภัณฑ์ Bitdefender ไปสอบถามกับทาง 3BB และบริษัทองค์การส่งเสริมกิจการโคนมแห่งประเทศไทย ว่าผลิตภัณฑ์ Bitdefender ว่ามีความพึงใจในการใช้ผลิตภัณฑ์ของบริษัทมากน้อยเพียงใด

5. หาข้อมูลเกี่ยวกับ Antivirus ตัวใหม่ๆที่ออกมาในตลาด หรือหาคู่แข่งของบริษัท และหาข้อมูลในการจัดอันดับของผลิตภัณฑ์

6. ไปสำรวจตลาดที่ ห้างเซียรรังสิต ว่าที่ร้านได้นำผลิตภัณฑ์ ของ Bitdefender มาวางจำหน่ายหรือเปล่า

ปัญหาและอุปสรรค
- การ Fax ฝากข่าวประชาสัมพันธ์ บางสำนักข่าว สายไม่ว่าง เบอร์ Fax ผิด ทำให้เสียเวลาในการส่งและล่าช้า

วีธีแก้ไขปัญหา
- ส่งไปสำนักข่าวอื่นก่อน แล้วย้อนกลับมาส่ง สำนักข่าวที่ติดปัญหาต่อ และทำการแก้ไขเบอร์ ที่ถูกต้อง

ประโยชน์ที่ได้รับ
- ได้ออกไปพบลูกค้าที่ บริษัทองค์การส่งเสริมกิจการโคนมแห่งประเทศไทย ได้ไปพบปะพูดคุยเกี่ยวกับปัญหาการใช้งานแลกเปลี่ยนความรู้ ทำให้มีความรู่ใหม่ ๆ

18.11.53

บันทึกฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 3

วันที่ 15 - 19 พฤศจิกายน 2553

งานที่ปฏิบัติ
1. ค้นหาข่าวใน website ต่างๆ ของสำนักข่าวต่างๆ ว่าสำนักไหนและ เว็บไหนได้ลงข่าวของบริษัทไว้บ้าง

ถ้าเว็บไหนลงข่าวให้ ก็ทำการบันทึกข้อมูลลงไปใน Database ข้อบริษัททำการบันทึกข้อมูล

2. ออกแบบ การ์ด Happy New Year ของบริษัท เพื่อนำไปให้ลูกค้าและสื่อต่าง เพื่ออวยพรในวันขึ้นปีใหม่

3. ออกไปสำรวจตลาด ที่พันธ์ทิพย์ แถวประตูน้ำ ว่ามีผลิตภัณฑ์ของบริษัท มีการำออกมาจำหน่ายหรือเปล่า และเก็บภาพถ่ายไว้และสอบถามว่าตัวผลิตภัณฑ์นั้นว่า ขายดีไหมผลตอบรับเป็นอย่างไร เพื่อเป็นข้อมูลเพิ่มเติม


ปัญหาและอุปสรรค
1. การค้นหาข้อมูลข่าวค่อยข้างยาก ทำให้การค้นหาใช้เวลามาก

2. ทางร้านไม่ค่อยให้ความร่วมมือในการสอบถาม


วีธีแก้ไขปัญหา
1. ใช้วิธีการค้นหาแบบเจาะจง โดยการเข้าไปในเว็บไซค์ของสำนักข่าวโดยตรงและก็ค้นหาข่าวได้โดยตรง

2. สอบถามจากลูกค้าที่มาซื้อสินค้าแทนว่า ผลิตภัณฑ์นั้นเป็นอย่างไรบ้าง

ประโยชน์ที่ได้รับ

- เรียนรู้การทำงานที่แปลกใหม่ การทำงานข้างนอก การพบปะผู้คน การวางตัว

10.11.53

บันทึกฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 2

วันที่ 8-12 พฤศจิกายน 2553

งานที่ปฏิบัติ
1.ออกแบบ benner Tent Card Poster X-stand เนื้อหาเกี่ยวกับ ไวรัสคลีนิค เพื่อที่จะนำไปเปิด Booth ของบริษัทและเพื่อที่จะนำไปตกแต่งร้าน

2.จัดเรียงเอกสารข้อมูลเกี่ยวกับผลิตภัณฑ์เวอร์ชั่นใหม่เพื่อที่จะนำไปให้ผู้สื่อข่าวได้ประชาสัมพันธ์ผ่านสื่อ

3.ออกนอกสถานที่เพื่อไปพบผู้สื่อข่าว ตามสำนักข่าวต่าง ไทยรัฐ บ้านเมือง แนวหน้า และ เดลินิวส์ เพื่อไปฝากประชาสัมพันณ์ข่าวเนื่องจากผลิตภัณฑ์ได้เปิดตัวเวอร์ชั่นใหม่และได้นำผลิตภัณฑ์ ของบริษัทนำมาใหผู้สื่อข่าวได้ทดลองใช้ผลิตภัณฑ์

4.หาข่าวเกี่ยวกับบริษัท ตามสื่อต่างๆ ว่ามีข่าวไหนลงเกี่ยวกับข้อมูลบริษัทบ้าง


ปัญหาและอุปสรรค
- ข้อมูลในการออกแบบน้อย จึงทำให้การทำงานช้าลง เพราะต้องหาข้อมูลเพิ่มเติม

การแก้ไขปัญหา
- ค้นหาข้อมูลเพิ่มเติมทาง Internet เพื่อความถูกต้องและความรวดเร้วมนการทำงา

ประโยชน์ที่ได้รับ
- เรียนรู้กระบวนการทำงานเพิ่มเติมในการค้นคว้าหาความรู้ใหม่ ๆ

7.11.53

บันทึกฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 1

วันที่ 1-5 พฤศจิกายน 2553

งานที่ปฏิบัติ

1. สัปดาห์แรก ก็ทำความรู้จักกับพี่ที่ฝึกงานและต้องเรียนรู้งานจากพี่ที่ดูและการฝึกงาน ได้ฝึกงานในส่วนของ กราฟิก หน้าที่ที่ได้รับหมอบหมายคือ ดูแล Website ของบริษัท http://www.bitdefander.th.apnw.net/ ในส่วนของ ข่าวสาร และ FAQ เพื่อทำการอัพเดทข้อมูลใหม่ๆ ของบริษัท ได้ทำงาน artwork ต่างๆ เช่น ออกแบบ Banner, Tent Card, Poster

2. ตรวจหาคำผิด ในคู่มือการติดตั้งโปรแกรม antivirus Bitdefender

ปัญหาและอุปสรรค

- ไม่เข้าในการอัพโหลดรูปลง Website และคอมพิวเตอร์ที่ทำงานอยู่ เกิดการติดไวรัส จึงทำให้เการทำงานช้าลง

การแก้ไขปัญหา
- ถามพี่ที่ดูแล webmaster ว่าทำอัพรูปลงเว็บอย่างไร คอมพิวเตอร์ติดไวรัสอยู่จึงทำการ
สแกนด้วยโปรแกรม ป้องกันไวรัส Bitdefender

ประโยชน์ที่ได้รับ
- ได้เรียนรู้การทำงานใหม่ ๆ ที่ต่างจากเดิม ทำให้สนุกกับการทำงาน

14.10.52

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

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

ด้านคุณธรรมจริยธรรม
- ทำให้ข้าพเจ้ามีควมประพฤติที่ดีขึ้น
- ทำให้ข้าพเจ้ารู้จักการข่มใจตนเอง และฝึกใจตนเอง
- ทำให้ข้าพเจ้ามัความอดทนอดกลั้น และอดออม
- ทำให้ข้าพเจ้าละเว้นการกระทำความชั่ว

ความรู้สอดคล้องกับวิชาชีพ
ซึ่งมีวิทยากรมาให้คำบรรยาย ให้ความรู้ในแต่ละสัปดาห์

มีความรู้เกี่ยวกับการบริหารการเงินที่ถูกต้อง
- ข้าพเจ้าได้รุ้จักการแบ่งเงินเป็นส่วนๆ
- แบ่งเพื่อไว้ยามฉุกเฉิน เพื่อการลงทุน เพื่อการออม

มีความรู้เกี่ยวกับการใช้ภาษาไทยที่ถูกต้อง
- ในการใช้ภาษาไทยเราควรใช้อย่างถูกต้อง และเหมาะสม
- ในการใช้ภาษาพูดเราต้อง แบ่งตามระดับของแต่ละบุคคล หรือ ยศถาบรรดาศักดิ์
- ในการที่เราใช้ภาษาไทยนั้น ในการพูด การเขียน ต้องถูกต้องตามหลักเกณฑ์

มีความรู้เบื้องต้นเกี่ยวกับงานธุรกิจระหว่างประเทศ
ทำให้ข้าพเจ้าทราบว่าการที่เราจะประกอบอาชีพเกี่ยวกับธุรกิจระหว่างประเทศต้องศึกษา
ในวัฒนธรรมของประเทศนั้นๆก่อน และเปิดใจกว้างรับรู้วัฒนธรมต่างวัฒนธรรม
ในการใช้ภาษาเป็นสื่อสำคัญในการติดต่อค้าขายในต่างประเทศ

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

22.9.52

Sorting

DTS 10-09-09-2552

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

ประเภทของการเรียงลำดับข้อมูล
การเรียงลำดับข้อมูลสามารถแบ่งได้เป็น 2 ประเภทใหญ่ ๆ คือ
1. การเรียงลำดับข้อมูลแบบภายใน (Internal Sorting)
2. การเรียงลำดับข้อมูลแบบภายนอก (External Sorting)

การเรียงลำดับข้อมูลแบบภายใน (Internal Sorting)
การเรียงลำดับข้อมูลแบบภายใน หมายถึง กรรมวิธีในการเรียงลำดับที่เกิดขึ้นภายในหน่วยความจำหลัก (MainMemory) ของเครื่องคอมพิวเตอร์ ซึ่งเหมาะสำหรับข้อมูลที่มีจำนวนเพียงพอกับขนาดของหน่วยความจำ ข้อมูลมีขนาดไม่ใหญ่ไปกว่าหน่วยความจำที่กำหนดให้กับผู้ใช้แต่ละราย ดังนั้นข้อมูลทั้งหลายจึงจะเก็บอยู่ในหน่วยความจำหลัก และแบบการคำนวณสำหรับการเรียงข้อมูลสามารถอ่านข้อมูลแต่ละชิ้นจากหน่วยความจำหลักหรือเขียนข้อมูลเข้าสู่หน่วยความจำหลักได้เลย โดยไม่จำเป็นต้องใช้หน่วยความจำสำรอง (Secondary Storage) การเรียงลำดับข้อมูลแบบนี้ จำเป็นต้องคิดถึงเวลาที่เสียไปในการเปรียบเทียบและการเลื่อนข้อมูลในหน่วยความจำหลักเท่านั้นกรรมวิธีการเรียงลำดับข้อมูลแบบภายในแบ่งออกเป็นวิธีพื้นฐานได้ 3 วิธี ได้แก่ การเรียงลำดับแบบการเลือก(Selection Sort) การเรียงลำดับแบบการแลกเปลี่ยน (Exchange Sort) และการเรียงลำดับแบบการแทรก (Insertion Sort)ซึ่งแต่ละวิธีจะมีความเหมาะสมกับสถานการณ์ของข้อมูลไม่เหมือนกัน

การเรียงลำดับข้อมูลแบบภายนอก (External Sorting)
การเรียงลำดับข้อมูลแบบภายนอก หมายถึง กรรมวิธีในการเรียงลำดับข้อมูลที่เกิดขึ้นภายนอกหน่วยความจำหลักของเครื่องคอมพิวเตอร์ ซึ่งเหมาะสมสำหรับข้อมูลที่มีจำนวนมากและไม่สามารถนำข้อมูลผ่านขั้นตอนวิธีการเรียงลำดับข้อมูลแบบภายในได้พร้อมกันทั้งหมด ถ้าข้อมูลมีจำนวนมากเกินกว่าที่จะบรรจุลงในพื้นที่หน่วยความจำหลัก(Main Memory) ได้หมดในครั้งเดียวกัน จึงจำเป็นต้องแบ่งข้อมูลออกเป็นส่วนย่อย ๆ (Page) แต่ละส่วนมีขนาดพอใหญ่ที่จะบรรจุอยู่ในหน่วยความจำหลักได้ และจะได้รับการเรียงข้อมูลโดยใช้การคำนวณสำหรีบการเรียงข้อมูลแบบภายในตามแบบที่ผู้ใช้เห็นว่าเหมาะสม หลังจากนั้นก็ต้องมีการนำข้อมูลย่อยในส่วนที่เรียงแล้วเก็บลงไปยังหน่วยความจำสำรอง(Secondary Storage) เช่น เทป (Tape) หรือดิสก์ (Disk) ไว้สำหรับเก็บผลลัพธ์ชั่วคราวเพื่อรอที่จะรวมกับข้อมูลส่วน อื่น ๆ ที่เรียงลำดับแล้ว จากนั้นจึงไปนำข้อมูลในส่วนอื่น ๆ ที่ยังไม่ได้เรียงลำดับเข้ามายังหน่วยความจำหลัก และเรียงลำดับข้อมูลในลักษณะเดิมอีกจนหมดข้อมูล การเรียงลำดับข้อมูลแบบนี้ นอกจากจะต้องคิดถึงเวลาที่เสียไปในการเปรียบเทียบและการเลื่อนข้อมูลในหน่วยความจำหลักแล้ว ยังต้องคิดถึงเวลาในการถ่ายเทข้อมูลระหว่างหน่วยความจำหลักและหน่วยความจำสำรองอีกด้วย เวลาที่สูญเสียไปในระหว่างการถ่ายเทข้อมูลระหว่างหน่วยความจำหลักและหน่วยความจำสำรองจะเป็นตัวระบุประสิทธิภาพของวิธีการเรียงลำดับแบบภายนอกนี้ด้วย

Quick Sort
การเรียงลำดับในลักษณะนี้ เป็นการปรับปรุงมาจากการเรียงลำดับแบบ Bubble เพื่อให้การเรียงลำดับเร็วขึ้น วีธีนี้เหมาะกับการเรียงข้อมูลที่มีจำนวนมาก หรือมีขนาดใหญ่ และเป็นวิธีการเรียงข้อมูลที่ให้ค่าเฉลี่ยของเวลาน้อยที่สุดเท่าที่ค้นพบวิธีหนึ่งการเรียงลำดับแบบ Quick Sortจะเป็นการเปรียบเทียบสมาชิกที่ไม่อยู่ติดกัน โดยกำหนดข้อมูลค่าหนึ่ง เพื่อแบ่งชุดข้อมูลที่ต้องการเรียงลำดับออกเป้น 2 ส่วน จากนั้นก็จะทำการแบ่งย่อยชุดข้อมูล 2 ส่วนนั้นลงไปอีก ทำแบบนี้ไปเรื่อยๆจนข้อมูลแต่ละชุดมีสมาชิกเหลือเพียงตัวเดียวและทำ
ให้ชุดข้อมูลทั้งหมดมีการเรียงลำดับ

12.9.52

Graph

DTS 09-02-09-2552
กราฟ

เนื้อหาเกี่ยวกับ
- โครงสร้างข้อมูลแบบกราฟ
- นิยามของกราฟ
- การแทนที่กราฟในหน่วยความจำ
- การท่องไปในกราฟ

กราฟ (Graph) เป็นโครงสร้างข้อมูลไม่เป็นเชิงเส้น (Nonlinear Data Structure) มีความแตกต่างจากโครงสร้างข้อมูลทรีในบทที่ผ่านมา แต่เป็นลักษณะพิเศษแบบหนี่งของกราฟโดยทรีเป็นกราฟอะไซคลิกที่ไม่มีการวนลูปและการวนถอยกลับ เป็นกราฟเชื่อมกันที่มีเพียงเอจเดียวระหว่างสองโหนด กราฟมีลักษณะเป็นเซ็ตของจุด (Point) และเซ็ตของเส้น (Line) ซึ่งแต่ละเส้นทำหน้าที่เชื่อมต่อจุดเข้าด้วยกัน แต่ละจุดเรียกว่าโหนด (Node) ของกราฟและเส้นเรียกว่าเอจ (Edge) บางครั้งเอจจะเรียกว่าอาร์ค (Arc) และโหนดเรียกว่าเวอร์ทิค (Vertice) โดยกำหนดให้กราฟ G มีเซ็ตของโหนดเป็น VG และเซ็ตของเอจเป็น EG เช่นในรูปที่ 10.1 VG ={a,b,c,d} และ EG = {1,2,3,4,5,6,7,8} จำนวนสมาชิกที่มีใน VG เรียกว่าออเดอร์ (Order) ของกราฟ ถ้าออเดอร์เท่ากับ 0 คือ กราฟไม่มีสมาชิกเรียกว่านัลกราฟ (Null Graph)

นิยามของกราฟ

•กราฟ เป็นโครงสร้างที่นำมาใช้เพื่อแสดงความสัมพันธ์ระหว่างวัตถุ โดยแทนวัตถุด้วยเวอร์เท็กซ์ และเชื่อมโยงความสัมพันธ์ด้วยเอดจ์
•เขียนในรูปของสัญลักษณ์ได้เป็น G = (V,E)

•ซึ่ง V(G) คือ เซตของเวอร์เทกซ์ที่ไม่ใช่เซ็ตว่าง และมีจำนวนจำกัด
•E(G) คือ เซตของเอดจ์ ซึ่งเขียนด้วยคู่ของเวอร์เท็กซ์


ลักษณะของกราฟ

-Direct Graph (กราฟแสดงทิศทาง) เป็นกราฟที่แสดงเส้นเชื่อมระหว่าง vertex โดแสดงทิศทางของการเชื่อมต่อด้วย

-Undirected Graph กราฟที่แสดงเส้นเชื่อมต่อระหว่าง vertex แต่ไม่แสดงทิศทางของการเชื่อมต่อ


ตัวอย่างของกราฟในชีวิตประจำวัน เช่น กราฟของการเดินทางระหว่างเมือง ซึ่ง vertex คือ กลุ่มของเมืองต่างๆ และ edge คือ เส้นทางเดินระหว่างเมือง หรือ ในเครือข่ายคอมพิวเตอร์ (Computer Network) vertex ก็คือ กลุ่มของเครื่องคอมพิวเตอร์ หรือโหนดต่างๆ และ edge ก็คือ เส้นทางการติดต่อสื่อสารระหว่างโหนดต่างๆ เป็นต้น

Tree

DTS 07-25-08-2552

ทรี

ได้เรียนเกี่ยวกับ
- การท่องไปในทรี
- เอ็กซ์เพรสชันทรี
- ไบนารีเซิร์ชทรี

ทรี (tree) เป็นโครงสร้างข้อมูลที่ความสัมพันธ์ระหว่างโหนดมีความสัมพันธ์ลดหลั่นกันเป็นลำดับชั้น (hierarchical relationship) มีกี่ชั้นก็ได้แล้วแต่งาน ได้มีการนำรูปแบบทรีไปประยุกต์ใช้ในงานต่าง ๆ อย่างแพร่หลาย ส่วนมากจะใช้สำหรับแสดงความสัมพันธ์ระหว่างข้อมูล ตัวอย่างที่มีการใช้โครงสร้างข้อมูลแบบ
ทรี เช่น แผนผังแสดงองค์ประกอบของหน่วยงานต่าง ๆ โครงสร้างสารบัญหนังสือ และโครงสร้างแสดงสารบัญในหน่วยความจำสำรองในเครื่องคอมพิวเตอร์ เป็นต้น
แต่ละโหนดในทรีจะมีความสัมพันธ์กับโหนดในระดับที่ต่ำลงมาหนึ่งระดับได้หลาย ๆ โหนด หรืออาจกล่าวได้ว่าแต่ละโหนดของทรีเป็น โหนดแม่ ของโหนดลูก จะเป็นโหนดที่อยู่ในระดับต่ำลงมาหนึ่งระดับโดยสามารถมีโหนดลูกได้หลาย ๆ โหนด และโหนดต่าง ๆ ที่มีโหนดแม่เป็นโหนดเดียวกันเรียกว่า โหนดพี่น้อง ทุก ๆ โหนดต้องมีโหนดแม่เสมอยกเว้นโหนดในระดับสูงสุดไม่มีโหนดแม่จะเรียกโหนดนี้ว่า โหนดราก โหนดที่ไม่มีโหนดลูกเลยจะเรียกว่า โหนดใบ และเส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดสองโหนดเรียกว่า กิ่ง






ไบนารีทรี (Binary Tree)

-โหนดของทรี เป็น 0 หรือไม่มีโหนดที่เรียกว่า Empty tree

-กำหนดเรียกชื่อทรีย่อยด้านซ้าย และทรีย่อยด้านขวาว่า right subtree

-โหนดแต่ละโหนดสามารถมีโหนดย่อย (subtree) ได้ไม่เกิน 2 โหนด
ไบนารีทรีแบบสมบูรณ์


7.8.52

Queue

DTS 06-05-08-2552

คิว
เป็นข้อมูลหลายรายการอยู่ต่อเนื่องกัน การนำข้อมูลเข้าและออกจาก คิว มีเงื่อนไขว่าข้อมูล ที่มาก่อนจะออกก่อน(FIFO = First In First Out) ตัวอย่าง คิว ในชีวิตประจำวัน ได้แก่
- คิวของคนรอถอนเงินจากธนาคาร
- คิวของนักเรียนรอรับอาหารจากโรงเรียน
- คิวของคนรอจ่ายเงินในซุปเปอร์มาเก็ต

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

การสร้างคิว (Queue)
คิวที่อยู่ในคอมพิวเตอร์สามารถจัดเก็บได้หลายลักษณะ แต่โดยทั่วไปแล้วจะใช้การจัดเก็บแบบลิงค์ลิสท์เดี่ยวหรือจัดเก็บโดยใช้อาร์เรย์
ก่อนที่จะทำการสร้างคิวจะต้องทำความเข้าใจถึงโครงสร้างของคิว ซึ่งประกอบไปด้วย ตัวคิว ซึ่งในที่นี้ขอแทนด้วยอาร์เรย์ และจะต้องมีตัวชี้อีก 2 ตัว ได้แก่ ตัวชี้ F (Front Pointer) ชี้ไปที่สมาชิกตัวแรก และตัวชี้ R (Rear Pointer) ชี้ไปที่สมาชิกตัวสุดท้ายของคิว โดยที่เวลาข้อมูลจะเข้าสู่คิวจะเข้าทาง R ส่วนเวลาที่ข้อมูลจะออกจากคิวจะออกทาง F

ในการปฏิบัติการบนระบบคอมพิวเตอร์สามารถใช้ อาร์เรย์ หนึ่งมิติ แทนข้อมูลชนิดคิวได้ดังนี้
Var Q : array[1..10] Of Char;
กำหนดให้ Q เป็นตัวแปรแบบอาร์เรย์ หนึ่งมิติมีสมาชิกได้ 10 ชุดข้อมูล นั่นหมายความว่าสามารถมีข้อมูลใน คิว ได้เพียง 10 ข้อมูลเท่านั้น

การปฏิบัติการกับคิว มี 2 รูปแบบ คือ
(ก) การเพิ่มโหนด(Append Queues)
(ข) การลบโหนด(Deleat Queues)

2. สแตก(Stack)สแตก(Stack) เป็นข้อมูลหลายรายการซึ่งอยู่ต่อเนื่องกัน การนำข้อมูลเข้าและออกจากสแตก มีเงื่อนไขว่า ข้อมูลที่เข้าทีหลังจะออกก่อน(LIFO = Last In First Out)
ตัวอย่างสแตก ได้แก่
- ถาดจานที่วางซ้อนกัน ใบที่อยู่บนสุดจะถูกหยิบออกไปใช้ก่อน
สแตก มีใช้กันมากใน System Software เช่น Dos รวมทั้งคอมไพล์เลอร์ และ อินเตอร์พรีเตอร์ ก็ใช้สแตกด้วย เช่นกัน
ในการปฏิบัติการบนระบบคอมพิวเตอร์สามารถใช้ อาร์เรย์ หนึ่งมิติ แทนข้อมูลชนิดแสตก ได้ดังนี้
Var St : array[1..10] Of Char;

3. ลิงค์ลิสต์(Linked Lists Type)ลิงค์ลิสต์(Linked List) เป็นข้อมูลที่ประกอบด้วยกลุ่ม(List) รายการ(Item) ข้อมูล แต่ละรายการข้อมูลมีส่วน ประกอบสองส่วนคือ ส่วนที่เป็นรายละเอียดข้อมูล(Information) และส่วนที่เป็นพอยน์เตอร์ของรายการ ข้อมูลแรกจะเชื่อมโยง(Link) ไปที่รายการข้อมูล

4. ทรี(Tree)ทรี(Tree - ต้นไม้) เป็นข้อมูลซึ่งประกอบด้วยข้อมูลรายการแรก เรียกว่า รูท(Root) จากรูทจะมีการเชื่อมโยงไปยังรายการข้อมูลอื่น ข้อมูลแต่ละรายการเรียกว่า โหนด(Node) หรือ ลีฟ(Leaf) ของทรี ทรีที่เป็นส่วนหนึ่งของทรีหนึ่งเรียกว่า สับทรี(Sub-tree) โหนดที่ไม่มีสับทรีเรียกว่าเทอร์มินอลโหนด(Terminal Node) จำนวนชั้นจากรูทถึงโหนดสุดท้าย เรียกว่า ความสูง(Height) ของทรี

24.7.52

Stack

DTS 05-22-07-2552

สแตค
สแตคเป็นโครงสร้างข้อมูลที่มีลักษณะแบบลำดับ (sequential) คือการกระทำกับข้อมูลจะกระทำที่ปลายข้างเดียวกันที่ส่วนปลายสุดของสแตค การกระทำกับข้อมูลของสแตคประกอบไปด้วยการนำเข้าข้อมูลเข้า (PUSH) ที่ส่วนบนสุดของสแตค และการนำข้อมูลออก (POP) ที่ส่วนบนสุดของสแตคเช่นกัน ในการจะ Push ข้อมูลเข้าก็ต้องตรวจสอบด้วยว่าข้อมูลในสแตคเต็มหรือไม่ หากสแตคเต็มก็จะไม่สามารถ Push หรือนำข้อมูลเข้าได้ เช่นเดียวกับการ Pop ข้อมูลออกก็ต้องตรวจสอบด้วยว่ามีข้อมูลอยู่ในสแตคหรือไม่ หากไม่มีข้อมูลอยู่ในสแตคหรือสแตคว่าง (empty stack) ก็ไม่สามารถ pop ได้การนำข้อมูลเข้า-ออก จากสแตค (push , pop) จะมีลักษณะแบบเข้าหลัง ออกก่อน (LIFO : Last In , First Out) คือ ข้อมูลที่เข้าไปในสแตคลำดับหลังสุด จะถูกนำข้อมูลออกจากสแตคเป็นลำดับแรก ยกตัวอย่างการทำงานแบบ LIFO เช่น การวางจานซ้อนกัน

ตัวอย่างการทำงานแบบ LIFO ที่ข้าพเจ้าเห็นในชีวิตประจำวันของข้าพเจ้า


- ที่ร้านทำผม จะมีผ้าทำผมสำหรับ เช็ดผมให้ลูกค้าที่ทำผม ที่ร้านเขาจะพับผ้าทำผมซ้อนๆกันบนชั้นและเขาจะหยิบผ้าจากด้านบนมาใช้ก่อน การพับผ้านั้นจะพับเรียงหรือซ้อนๆกันก็จะเหมือนการทำงานแบบ LIFO แบบเข้าหลัง ออกก่อน .....
-เทปกาว , ด้ายหลอด , กระดาษเช็ดชู





การเพิ่มข้อมูลลงในสแตค

การเพิ่มข้อมูลลงในสแตค คือ การนำเข้ามูลเข้าสู่สแตคโดยทับข้อมูลที่อยู่บนสุดของสแตค ข้อมูลจะสามารถนำเข้าได้เรื่อยๆ จนกว่าสแตคจะเต็ม สมมติว่าสแตคจองเนื้อที่ไว้ N ตัว ถ้าหากค่า TOP เป็น 0 แสดงว่าสแตคว่าง หากค่า TOP = N แสดงว่าสแตคเต็มไม่สามารถเพิ่มข้อมูลลงในสแตคได้อีก


ปัญหาที่เกิดขึ้นกับสแตก
คือขอผิดพลาดที่เกิดขึ้นซึ่งมีผลมาจากการจัดการสแตกมีดังนี้
สแตกเต็ม (Full Stack)
สแตกว่าง (Empty Stack)


1 .สแตกเต็ม (Full Stack) การ push สแตกทุกครั้งจะมีการตรวจสอบที่ว่างในสแตกว่ามีที่ว่างเหลือหรือไม่ ถ้าไม่มีที่ว่างเหลืออยู่ เราก็จะไม่สามารถทำการ push สแตกได้ ในกรณีเช่นนี้เราเรียกว่าเกิดสถานะล้นเต็ม (Stack Overflow) โดย การตรวจสอบว่าสแตกเต็มหรือไม่ เราจะใช้ตัวชี้สแตก (Stack pointer) มาเปรียบเทียบกับค่าสูงสุดของ สแตก (Max stack) หากตัวชี้สแตกมีค่าเท่ากับค่าสูงสุดของสแตกแล้ว แสดงว่าไม่มีที่ว่างให้ข้อเก็บข้อมูล อีก

2. สแตกว่าง (Empty Stack)
นิยาม empty(S) ถ้า S เป็นสแตก ขบวนการ empty(S) จะส่งผลเป็นจริง (true) เมื่อสแตกว่าง และส่งผลเป็นเท็จ (false) เมื่อสแตกไม่ว่างหรือสแตกเต็ม การ pop สแตกทุกครั้งจะมีการตรวจสอบข้อมูลในสแตกว่ามีข้อมูลในสแตกหรือไม่ ถ้าไม่มีข้อมูลในสแตก เหลืออยู่ เราก็ไม่สามารถทำการ pop สแตกได้ ในกรณีเช่นนี้เรียกว่าเกิดสถานะ สแตกจม (Stack Underflow) โดยการตรวจสอบว่าสแตกว่างหรือไม่ เราจะตรวจสอบตัวชี้สแตกว่าเท่ากับ 0 หรือ null หรือไม่ถ้าเท่ากับ 0 แสดงว่า สแตกว่าง จึงไม่สามารถดึงข้อมูลออกจากสแตกได้

--------------------------------------------

การเขียนโปรแกรมแบบ iostream.h กับ stdio.h

โปรแกรมรับค่าตัวเลขถ้าน้อยกว่า 5หรือเท่ากับ แสดงข้อความ +++ Poor+++ ถ้ารับค่าตัวเลขน้อยกว่า 15 หรือเท่ากับแสดงข้อความ +++Have enough to get by+++ ถ้ารับค่าตัวเลขอื่นๆ แสดงข้อความ +++Rich+++

"iostream.h"




"stdio.h"




16.7.52

Linked List

DTS 04-15-07-2552

ลิงค์ลิสต์
ลิงค์ลิสต์เป็นการจัดเก็บชุดข้อมูลเชื่อมโยงต่อเนื่องกันไปตามลำดับ ในลิสต์จะประกอบไปด้วยข้อมูลที่เรียกว่าโหนด (node) ในหนึ่งโหนดจะประกอบด้วยส่วนของข้อมูลที่ต้องการจัดเก็บ เรียกว่าส่วน Info และส่วนที่เป็นพอยน์เตอร์ที่ชี้ไปยังโหนดถัดไป (Link) หรือชี้ไปยังโหนดอื่นๆที่อยู่ในลิสต์ หากไม่มีโหนดที่อยู่ถัดไป ส่วนที่เป็นพอยน์เตอร์หรือ Link จะเก็บค่า NULL หรือ NILL ใช้สัญลักษณ์ ^
การแทรกโหนด และการลบโหนดของรายการโยงคู่ทำได้ง่ายกว่ารายการโยงเดี่ยว เพราะการค้นหาโหนดเป้าหมายไมจำเป็นต้องใช้ตัวชี้ 2 จำนวน ไว้คอยเก็บที่อยู่โหนดก่อนหน้า และโหนดเป้าหมาย ใช้เพียงตัวชี้เดียวก็ดำเนินการได้แล้ว การเยี่ยมโหนดของรายการ แบบวงกลม และรายการโยงคู่ สามารถย้อนกลับไปเยี่ยมโหนดที่เยี่ยมมาแล้วได้ รายการแบบวงกลมใช้วิธีการเยี่ยมโหนดแบบวนรอบ จะวนกี่รอบก็ได้เพราะไม่มีตัวชี้ของโหนดจะเก็บค่า NULL ส่วนรายการโยงคู่ นำตัวชี้ด้านซ้ายมาใช้ประโยชน์ทำให้ย้อนกลับไปหาโหนดที่ผ่านมาได้




1.โครงสร้างรายการโยงเดี่ยว
การนำข้อมูลเพิ่มเข้าไปในลิสต์ การแสดงข้อมูลในลิสต์ รวมทั้งกิจกรรมอื่นๆ ที่เกี่ยวข้องกับการดำเนินการลิสต์ จะต้องใช้ คำสั่ง struct กำหนดโครงสร้างข้อมูลแบบระเบียน และตัวแปรประเภทตัวชี้กำหนดเขตข้อมูลเชื่อมโยง

2. การเพิ่มข้อมูล

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


3.การลบข้อมูล การลบข้มูล หรือลบโหนด มีหลายวิธี ดังต่อไปนี้
ต่ำแหน่งต้นลิสต์
ต่ำแหน่งท้ายลิสต์
และต่ำแหน่งกลางลิสต์


รายการแบบวงกลม ( Circular list )

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







รายการโยงคู่ ( Doubly Linked List )





-แต่ละโหนดจะมีสมาชิกอย่างน้อย 3 ฟิลด์ โดยจะมีฟิลด์ llink และ rlink ทำหน้าที่ชี้ไปยังตำแหน่งของโหนดถัดไป และโหนดก่อนหน้า ดังรูป

-ลิสต์เชื่อมโยงสองทางจะมีตัวแปร head เก็บตำแหน่งของโหนดแรกของลิสต์ โดย llink ของโหนดแรกจะเป็น NULL และ rlink ของโหนดสุดท้าย ก็จะเป็น NULL ด้วยเช่นกัน


การเพิ่มข้อมูล



เป็นการสร้างโหนดใหม่ระหว่างโหนด 2 โหนด

การลบข้อมูล

การลบข้อมูล ควรตรวจสอบสมาชิกก่อน เพื่อให้วางแผนการเขียนค่ำสั่งได้ถูกต้อง การเขียนคำสั่งลบข้อมูล มี 3 แบบ คือ

-แบบไม่มีสมาชิก

-แบบมีสมาชิก 1 จำนวน

-แบบมีสมาชิกมากกว่า 1 จำนวน

14.7.52

แบบฝึกหัดบทที่ 2



1. ให้นักศึกษากำหนดค่าของ Array 1 มิติ และ Array 2 มิติ
ตอบ

อาเรย์ คือชุดของตัวแปร ที่มีชื่อตัวแปรและชนิดตัวแปรเดียวกัน มักใช้กับตัวแปรชนิดเดียวกันหลายๆ ตัว ที่มีการทำงานเหมือนกัน เช่นคะแนนนักศึกษา 20 คน ชื่อทุกกระบวนวิชาที่เปิดสอนภายในภาควิชา (เช่นอาจมี 30 กระบวนวิชา ก็จะมีข้อมูล 30 ชื่อ) เป็นต้น
รูปแบบการประกาศอาเรย์
ชนิดข้อมูล ชื่อตัวแปร [ขนาดข้อมูล];
ตัวอย่าง ต้องการเก็บข้อมูลคะแนนสอบของนักศึกษา 10 คนไว้ในตัวแปร array จะต้องการประกาศตัวแปรอาเรย์ ดังนี้
float score[10];
อาเรย์ 2 มิติ
ข้อมูลในอาเรย์ 2 มิติ จะเป็นลักษณะของตาราง
ซึ่งมีแถวและคอลัมน์
แถว (row)
คอลัมน์ (column)
score[row][column] เช่น score[0][4]
_____________________________


2. ให้นักศึกษาหาค่าของ A[2], A[6] จากค่า A={2,8,16,24,9,7,3,8}
ตอบ A[2] คือ 16A[6] คือ 3

_____________________________


3. จากค่าของ int a[2][3] = {{6,5,4},{3,2,1}};
ให้นักศึกษา หาค่าของ a[1][0] และ a[0][2]
char a[2][3];
col1 col2 col3
row1 a[0][0] =6 a[0][1] =5 a[0][2] =4
row 2 a[1][0] =3 a[1][1] =2 a[1][2] =1

ตอบ ค่าของ a[1][0] = 3
a[0][2] = 4
______________________________
4. ให้นักศึกษากำหนด Structure ที่มีค่าของข้อมูลจากน้อย 6 Records

ตอบ struct Emp

#include
int main() {
struct date {
int day;
int month;
int year;
};
struct person {
char name[30];
int age;
float salary;
struct date bday;
};

______________________________
5. ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวชนิด Array กับ
ตัวแปร Pointer ในสภาพของการกำหนดที่อยู่ของข้อมูล
ตอบ
array หมายถึง ตัวแปรชุดที่ใช้เก็บตัวแปรชนิดเดียวกันไว้ด้วยกัน เช่น เก็บ ข้อมูล char ไว้กับ char เก็บ int ไว้กับ int ไม่สามารถเก็บข้อมูลต่างชนิดกันได้ เช่น char กับ int เรียก array อีกอย่างว่าหน่วยความจำแบ่งเป็นช่อง การกำหนดสมาชิกชิกของ array จะเขียนภายในเครื่องหมาย [ ]
pointer หมายถึง ตัวเก็บตำแหน่งที่อยู่ของหน่วยความจำ (Address) หรือเรียกว่า ตัวชี้ ตำแหน่งที่อยู่ สัญลักษณ์ของ pointer จะแทนด้วยเครื่องหมาย *


array m3[ ] จะเก็บข้อมูลอยู่ใน array มีพื้นที่เก็บข้อมูลเป็นของตัวแปรนี้และชื่อ m3 จะมี ค่า address คงที่ไม่สามารถเปลี่ยนค่าได้ใช้ m3 + 1 ได้ แต่ใช้ m3++ ไม่ได้

pointer *m3 จะชี้ไปที่ที่เก็บข้อมูล จากตัวอย่างข้างต้นจะมีพื้นที่ส่วนหนึ่งที่ใช้ในการเก็บ string ชุดนี้ไว้แล้ว m3 จะชี้ไปที่ address ของพื้นที่นั้น ๆ เราสามารถที่จะทำการเปลี่ยนค่าของ m3 ได้โดยใช้ m3++


______________________________

1.7.52

Pointer Set and String

DTS 03-01-07-2552

พอยเตอร์ เซต และสตริง
วันนี้ได้เรียน 3 เรื่อง
-Pointer
-Set and String

Pointer

Pointer คือ ตัวแปรชนิดหนึ่งที่อ้างอิงไปยังตำแหน่งของหน่วยความจำ (Address) เป็นการใช้ตัวชี้จะทำให้โปรแกรมรวดเร็วและ มีขนาดเล็ก
การประกาศตัวแปรPointer
ต้องมีระบุตัวดำเนินการ (Operator) เพื่อบอกว่าตัวแปรดังกล่าวเป็นตัวแปรแบบตัวชี้ โดยตัวดำเนินการที่ใช้คือ * และ & เช่น จะประกาศตัวแปรชนิดPointer คือ int *countPtr; ในที่นี้หมายถึง ตัวแปร countPtr ถูกประกาศให้เป็นตัวแปรชนิด Pointer และทำหน้าที่ชี้ (เก็บ Address) ไปยังตำแหน่งที่เก็บค่าจำนวนเต็ม(เป็นชนิดเดียวกับที่เราประกาศไว้ ในที่นี้คือ Integer)
ในการประกาศตัวแปร pointer จะต้องนำหน้าด้วยเครื่องหมาย * ดังเช่น
int y;
int *x; // เป็น pointer
char *z; // เป็น pointer

pointer มีประโยชน์หลายอย่างดังนี้
-ช่วยประหยัดหน่วยความจำ ไม่ต้องประกาศตัวแปรหลายๆ ครั้งเพื่อ ส่งค่าไปมา โดยเฉพาะการส่งค่าไปมาระหว่างฟังก์ชัน ถ้าเราใช้ pointer มาช่วยในการส่งค่าแบบอ้างอิง ทำให้ใน function ที่รับค่า ไม่จำเป็นต้องประกาศตัวแปรแบบเดียวกันซ้ำอีก จะเห็นได้ชัดเจนในตัวแปรแบบ array
-ช่วยประหยัดเวลา เพราะการส่งค่าไปมาแล้วเปลี่ยนแปลงค่าที่ส่งหากันระหว่างฟังก์ชันจะทำให้เสียเวลามากกว่า แต่ถ้าเราใช้ตัวแปร pointer เลย ก็จะทำให้เข้าถึงหน่วยความจำในตำแหน่งเดียวกันเลย ทำให้ไม่ต้อง copy ค่าดังกล่าวอีก


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

1.โครงสร้างแบบเชิงเส้น (linear) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์แบบหนึ่งต่อหนึ่ง (one-to-one relationship) นั่นคือเราสามารถระบุถึงข้อมูลตัวถัดไปของข้อมูลได้
2.โครงสร้างแบบต้นไม้หรือแบบลำดับขั้น (tree or hierarchical) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์กันแบบหนึ่งต่อหลาย (one-to-many relationship) นั่นคือ ข้อมูลตัวหนึ่งสามารถมีความสัมพันธ์กับข้อมูลในลำดับรองลงไปได้หลายตัว
3.โครงสร้างแบบกราฟหรือเครือข่าย (graph or network) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์กันแบบหลายต่อหลาย (many-to-many relationship) นั่นคือ ข้อมูลตัวหนึ่ง ๆ อาจจะมีความสัมพันธ์กับข้อมูลตัวอื่น ๆ กี่ตัวก็ได้


โครงสร้างข้อมูลแบบสตริง (String)สตริง เป็นข้อมูลประกอบไปด้วย ตัวอักษร ตัวเลขหรือเครื่องหมาย ที่เรียงต่อๆกันไป รวมทั้งช่องว่างด้วยสตริงกับอะเรย์ สตริงคือ อะเรย์ของอักขระ

เช่น Char name[15]

อาจจะเป็นอะเรย์ขนาด 15 ช่องอักขระ หรือเป็นสตริงขนาด 15 อักขระก็ได้ โดยจุดสิ้นสุดขอบ สตริง จะจบด้วย \0 หรือ null character

เช่น char b[] = {'S' ,'A ','W', 'A' ,'S ','D' ,'E' ,'E' ,'\0'};

หรือ char b[] = "SAWASDEE";

การกำหนดตัวแปรสตริง อาศัยหลักการของอะเรย์ เพราะสตริงคืออะเรย์ของอักขระที่เปิดท้ายด้วย (\0) และมีฟังก์ชันพิเศษสำหรับการทำงานของสตริงโดยเฉพาะ

ฟังก์ชัน scanf ( )ใช้ในการรับค่าข้อมูลต่าง ๆ ที่ป้อนเข้ามาทางแป้นพิมพ์ รูปแบบการใช้ฟังก์ชัน scanf ( )scanf ( " รหัสรูปแบบ " , &ชื่อตัวแปร ) ;โดย รหัสรูปแบบ ใช้ชุดเดียวกันกับฟังก์ชัน printf ( )ชื่อตัวแปร จะต้องนำหน้าด้วยเครื่องหมาย & ยกเว้นตัวแปร สตริงที่ใช้ในการจัดเก็บข้อความไม่ต้องมีเครื่องหมาย &

ฟังก์ชัน getchar ( ) และ getch ( )getchar( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด getch( ) เป็น ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระเหมือนกับฟังก์ชัน getchar()

ฟังก์ชัน puts() ใช้ในการพิมพ์สริงออกทางจอภาพ โดยผ่านค่าแอดเรสของสริงไปให้เท่านั้น

อะเรย์ของสตริงที่ยาวเท่ากัน

อะเรย์ในักษณะนี้จะถือว่าเป็นอะรย์ที่แท้จริง และไมาสามารถกำหนดได้ทั้งหมดเมื่อมีการให้ค่าเริ่มต้น แลเมื่อกำหนดเป็นตัวแปรโดยดำเนินการแบบการกำหนดอะเรย์ 2 มิติ การกำหนดตัวแปรในลักษณะนี้ จะแตกต่างจากการกำหนดตัวแปรแแบความยาวไม่เท่ากัน คืด ในแบบความยาวไม่เท่ากันท้ายของสตริงจะเติม (\0) ให้เพียงตัวเดียวแต่ในแบบความยาวเท่ากันนั้น จะเติม (\0) ให้ครบทุกๆช่อง เพื่อที่จะให้มีความยาวเท่าๆกัน

Introduction

DST 01 -17-06-2552

Data Structure

โครงสร้างข้อมูล คือ หน่วยข้อมูลย่อยๆ (Data Elements)
เช่น การเลือกใช้ค่า n โดยชนิดของข้อมูล char ch; เป็นการกำหนดให้คอมพิวเตอร์จัดเตรียมหน่วยความจำขนาด 8 บิต int i; เป็นการกำหนดให้คอมพิวเตอร์จัดเตรียมหน่วยความจำขนาด16 บิต float average; เป็นการกำหนดให้คอมพิวเตอร์จัดเตรียมหน่วยความจำขนาด 32 บิต

ประเภทของโครงสร้างข้อมูล
1. โครงสร้างข้อมูลทางกายภาพ
(Physical Data Structure)
เป็นโครงสร้างข้อมูลทั่วไปที่มีใช้ในภาษาคอมพิวเตอร์ ซึ่งแบ่งออกเป็น 2 ประเภทตามลักษณะข้อมูล ดังนี้
1.2 ข้อมูลเบื้องต้น (primitive data types) เป็นข้อมูลพื้นฐานซึ่งมีโครงสร้างข้อมูลไม่ซับซ้อนจะต้องมีในภาษาคอมพิวเตอร์ทุกภาษา ตัวอย่างของข้อมูลประเภทนี้ เช่น
- จำนวนเต็ม (integer)
- จำนวนจริง (real)
- ตัวอักขระ (character)

2. โครงสร้างข้อมูลทางตรรกะ
(Logical Data Structure) เป็น โครงสร้างข้อมูลที่เกิดจากจินตนาการของผู้ใช้เพื่อใช้แก้ปัญหาในโปรแกรมที่สร้างขึ้น จำแนกได้เป็น 2 ประเภท ดังนี้
2.1 โครงสร้างข้อมูลแบบเชิงเส้น (linear data structures) เป็นชนิดข้อมูลที่ความสัมพันธ์ของข้อมูลเรียงต่อเนื่องกัน โดยข้อมูลตัวที่ 2 อยู่ต่อจาก ข้อมูลตัวที่ 1 ข้อมูลตัวที่ 3 อยู่ต่อจากข้อมูลตัวที่ 2 และข้อมูลตัวที่ n อยู่ต่อจากข้อมูลตัวที่ n - 1 ตัวอย่างโครงสร้างข้อมูลแบบเชิงเส้น เช่น
- ลิสต์ (list)
- สแตก (stack)
- คิว (queue)
- ดีคิว (deque)
- สตริง (string)
2.2 โครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น (non-linear data structures) เป็นชนิดข้อมูลที่ข้อมูลแต่ละตัวสามารถมีความสัมพันธ์กับข้อมูลอื่นได้หลายตัว (ดูรายละเอียดเพิ่มเติมได้ในบทที่ 7) ตัวอย่างโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น
- ทรี (tree)
- กราฟ (graph)

การแทนที่ข้อมูลในหน่วยความจำหลัก
เป็นที่ทราบกันแล้วว่าในขณะประมวลผลด้วยคอมพิวเตอร์ ข้อมูลที่ต้องการประมวลผลจะถูกนำไปเก็บในหน่วยความจำหลัก ดังนั้นเมื่อเราต้องใช้โครงสร้างข้อมูล จึงต้องมีการแทนที่ข้อมูลในหน่วยความจำหลักด้วยเช่นกัน โดยทั่วไปการเขียนโปรแกรมคอมพิวเตอร์มีการแทนที่ข้อมูลในหน่วยความจำหลักอยู่ 2 วิธี คือ
1. การแทนที่ข้อมูลแบบสแตติก (static memory representation)
การแทนที่ข้อมูลแบบสแตติก เป็นการแทนที่ข้อมูลที่มีการจองเนื้อที่แบบคงที่แน่นอน การแทนที่แบบนี้ต้องมีการกำหนดขนาดก่อนการใช้งาน ข้อเสียของการแทนที่ด้วยวิธีนี้ก็คือไม่สามารถปรับขนาดให้เพิ่มขึ้นหรือลดลงได้ ไม่สามารถเก็บข้อมูลเกินขนาดเนื้อที่ที่กำหนดไว้ และถ้ากำหนดขนาดเนื้อที่ไว้มากเกินจำเป็นทั้งๆ ที่มีข้อมูลอยู่จำนวนน้อยจะทำให้สูญเสียเนื้อที่โดยเปล่าประโยชน์ โครงสร้างข้อมูลที่มีการแทนที่ในหน่วยความจำหลักด้วยวิธีนี้คือ แถวลำดับ (Array)
2. การแทนที่ข้อมูลแบบไดนามิก (dynamic memory representation)
การแทนที่ข้อมูลแบบไดนามิก เป็นการแทนที่ข้อมูลที่ไม่ต้องจองเนื้อที่และขนาดของเนื้อที่ก่อนการใช้งาน สามารถยืดหยุ่นได้ตามความต้องการของผู้ใช้ นั่นคือถ้าข้อมูลมีน้อยก็ใช้เนื้อที่น้อย และถ้าข้อมูลมีมากก็สามารถใช้เนื้อที่มากตามที่ใช้จริงได้ นอกจากนั้นส่วนเนื้อที่ในหน่วยความจำหลักที่ไม่ใช้แล้วสามารถส่งคืนเพื่อกลับมาใช้ใหม่ได้อีก ภาษาคอมพิวเตอร์ระดับสูงบางภาษาเท่านั้นที่สามารถแทนที่ข้อมูลด้วยวิธีนี้ เช่น ภาษาซี ภาษาปาสคาล เป็นต้น สำหรับโครงสร้างข้อมูลที่มีการแทนที่ในหน่วยความจำหลักแบบไดนามิก คือ ตัวชี้ หรือ พอยน์เตอร์ (pointer)

28.6.52

เขียน Structure

DTS 02 28-06-2552

#include
int main() {
struct date {
int day;
int month;
int year;
};
struct person {
char name[20];
int age;
float salary;
struct date bday;
};
struct person emp1={"samchai", 25, 7500,{25, 11, 28}}, emp2;
printf("Enter Data of Employee \n");
printf("Name :");
scanf("%[^\n]",emp2.name);
printf("Age :");
scanf("%d",&emp2.age);
printf("salary : ");
scanf("%f",&emp2.salary);
printf("Birthday (dd/mm/yy) :");
scanf("%d/%d/%d", &emp2.bday.day, &emp2.bday.month, &emp2.bday.year);
printf("\n\nList of Employ\n");
printf("---------------------------------------------------------------------\n");
printf(" Employ NO. Name Age salary Birthday\n");
printf("---------------------------------------------------------------------\n");
printf(" 1 %-20s %d %f %2d/%2d/%2d\n", emp1.name,emp1.age,emp1.salary,emp1.bday.day,emp1.bday.month,emp1.bday.year);
printf(" 2 %-20s %d %f %2d/%2d/%2d\n", emp2.name,emp2.age,emp2.salary,emp2.bday.day,emp2.bday.month,emp2.bday.year);
printf("---------------------------------------------------------------------\n");

return 0;
}