วันอังคารที่ 1 มีนาคม พ.ศ. 2554

สรุปผลการฝึกประสบการณ์วิชาชีพ

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

-
อ่านคู่มือการใช้งานโปรแกรม ITECStock2007 ของบริษัทซอฟท์บ็อกซ์ จำกัด
- รุ่นพี่ที่ทำงานสอนวิธีการใช้งานโปรแกรม ITECStock2007 ของบริษัท ซอฟท์บ็อกซ์ จำกัด
- ไปจ่ายค่าน้ำประปาที่ประปาแม้นศรี
- โทรหาลูกค้าของบริษัท ซอฟท์บ็อกซ์ จำกัด เพื่อขอ E-mail ของลูกค้า
- รุ่นพี่ที่ทำงานสอนวิธีการใช้งานโปรแกรม ITECStockcoffee ซึ่งเป็นโปรแกรมใหม่ของบริษัท ซอฟท์บ็อกซ์ จำกัด
- ลองทดลองใช้โปรแกรม ITECStockcoffee
- ฟังการอธิบายเกี่ยวกับการไป Presents การใช้งาานของโปรแกรมให้ลูกค้าฟัง
- รุ่นพี่ที่ทำงานสอนวิธีการใช้งานโปรแกรม ITECStock2007 ของบริษัท ซอฟท์บ็อกซ์ จำกัด
- ค้นหารูปภาพเพื่อใช้ในการ add ลงในโปรแกรม ITECStockcoffee
- ติดสติ๊กเกอร์ใบแต้มสะสมคะแนน
- เขียนใบกำกับภาษี/ใบเสร็จ
- พิมพ์รายชื่อลูกค้า/สถานที่ลูกค้า ปริ้น ตัด ทากาวติดหน้าซองจดหมาย เพื่อใส่ใบกำกับภาษี/ใบเสร็จส่งลูกค้า

- โทรหาลูกค้าบองบริษัทเพื่อขอทบทวนที่อยู่ของลูกค้าเพื่อส่งจดหมายใบกำกับภาษี/ใบเสร็จ
- คีย์ข้อมูล po ลงใน ITECstock
- คีย์ข้อมูล po ลงใน Oracal
- ถ่ายเอกสาร จำนวน 30 ใบ
- แม็คใบกำกับภาษีกับสำเนาบัตรประชานชนของลูกค้า
- ปริ้นข้อมูล PO
- นำใบ Po ที่ปริ้นแม็คเข้ากับใบเสร็จสินค้า
- เรียงใบเสร็จสินค้าลงในแฟ้ม
- ค้นหาใบเสร็จสินค้าลงในแฟ้ม
- แยกกระดาษที่ใช้แล้วมาใช้ใหม่
- ปั๊มตราบริษัทลงในใบสะสมแต้ม
- ค้นหารายการสินค้าเพื่อเก็บรวบรวมข้อูลลูกค้าลงใน Excel
- สรุปยอดการขายของผลิตภัณฑ์ Notebook samsung , lenovo , gateway

- เบิกพัสดุ เช่น ปากกา ดินสอ แฟ้ม
- เรียงข้อมูลใบสร็จสินค้าลงในแฟ้ม
- เขียนข้อมูลบิลของ Sony
- แสกนใบงาน
- จัดสต๊อกสินค้า ปริ้นบาร์โค๊ต
- ตรวจเช็คสต๊อกสินค้
- ส่งใบเบิกของ
- ทำ INV
- ส่งของลงหน้าร้าน
- ส่งใบปลิวลงหน้าร้าน
- ทำยอดขายของสินค้า Fujitsu , assu
- ปริ้นใบ Po จาก Oracai pro
- แก้ไขข้อมูล po ลงใน Oracal

ปัญหา

- กระดาษเครื่อถ่ายหมด- ไม่เคยจัดสต๊อกก็เลยทำไม่เป็น
- บิลมักมีปัญหา
- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม
- กระดาษติดกับเครื่องถ่ายเอกสาร
- ค้าหา INV. ไม่เจอ
- ไม่เคยจัดสต๊อกก็เลยทำไม่เป็น
- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม
- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม
- กระดาษติดกับเครื่องถ่ายเอกสาร
- ค้าหา INV. ไม่เจอ
- ไม่เคยจัดสต๊อกก็เลยทำไม่เป็น
- บิลมักมีปัญหา
- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม

การแก้ไขปัญหา

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



วันจันทร์ที่ 28 กุมภาพันธ์ พ.ศ. 2554

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 18
วันที่ 28 กุมภาพันธุ์ 2554


งานที่ปฏิบัติประจำวัน

- ถ่ายเอกสาร จำนวน 65 ใบ
- คีย์ข้อมูล po ลงใน ITECstock จำนวน 10 ID
- แก้ไขข้อมูล po ลงใน Oracal จำนวน 3 ID
- ปริ้นใบ Po จาก Oracai pro จำนวน 3 ID
- ส่งสินค้าที่หน้าร้าน ID4

ปัญหาที่พบ

- กระดาษเครื่อถ่ายหมด

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

- ไปเอามาใส่และถ่ายต่อ

วันศุกร์ที่ 25 กุมภาพันธ์ พ.ศ. 2554

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 17
ระหว่างวันที่ 21 - 25 กุมภาพันธุ์ 2554


งานที่ปฏิบัติประจำวัน

- เขียนใบกำกับภาษี / ใบเสร็จ จำนวน 560 ใบ
- ถ่ายเอกสาร จำนวน 65 ใบ
- คีย์ข้อมูล po ลงใน ITECstock จำนวน 450 ID
- แก้ไขข้อมูล po ลงใน Oracal จำนวน 11 ID

ปัญหาที่พบ

- ไม่เคยจัดสต๊อกก็เลยทำไม่เป็น

- บิลมักมีปัญหา
- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม

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

- รุ่นพี่ที่ฝึกงานสอนในการจัดสต๊อก
- แยกกองบิลที่มีปัญหาออกจากกองดี
- รอรุ่นพี่ที่ฝึกงานทำการคีย์ข้อมูลเข้าโปรแกรม
สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 16
ระหว่างวันที่ 14 - 17 กุมภาพันธุ์ 2554


งานที่ปฏิบัติประจำวัน

- ทำ INV จำนวน 11 ID
- ถ่ายเอกสาร จำนวน 50 ใบ
- คีย์ข้อมูล po ลงใน ITECstock จำนวน 367 ID
- ส่งใบปลิวลงหน้าร้าน จำนวน 35 ID
- ค้นหาใบ INV. สินค้า Dell จำนวน 25 ใบ

ปัญหาที่พบ

- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม
- กระดาษติดกับเครื่องถ่ายเอกสาร
- ค้าหา INV. ไม่เจอ

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

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


งานที่ปฏิบัติประจำวัน

- เขียนใบกำกับภาษี / ใบเสร็จ จำนวน 356 ใบ
- ทำ INV จำนวน 11 ID
- ถ่ายเอกสาร จำนวน 25 ใบ
- คีย์ข้อมูล po ลงใน ITECstock จำนวน 366 ID
- ส่งของลงหน้าร้าน จำนวน 12 ID

ปัญหาที่พบ

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

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

- รุ่นพี่ที่ฝึกงานสอนในการจัดสต๊อก

- รอรุ่นพี่ที่ฝึกงานทำการคีย์ข้อมูลเข้าโปรแกรม

วันอาทิตย์ที่ 6 กุมภาพันธ์ พ.ศ. 2554

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 14
ระหว่างวันที่ 31 มกราคม - 4 กุมภาพันธุ์ 2554


งานที่ปฏิบัติประจำวัน


- ทำ INV จำนวน 25 ID
- ถ่ายเอกสาร จำนวน 86 ใบ
- คีย์ข้อมูล po ลงใน ITECstock จำนวน 101 ID
- ส่งใบปลิวลงหน้าร้าน จำนวน 20 ID
- ค้นหาใบ INV. สินค้า Dell จำนวน 60 ใบ
- ทำยอดขายของสินค้า Fujitsu , assu

ปัญหาที่พบ

- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม
- กระดาษติดกับเครื่องถ่ายเอกสาร
- ค้าหา INV. ไม่เจอ

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

- ดึงกระดาษที่ติดอยู่ออกจากเครื่องถ่ายเอกสารและถ่ายต่อ
- แยกกองบิลที่มีปัญหาออกจากกองดี
- รอรุ่นพี่ที่ฝึกงานทำการคีย์ข้อมูลเข้าโปรแกรม
- ค้นหาวันต่อไป
สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 13
ระหว่างวันที่ 24 - 28 มกราคม 2554


งานที่ปฏิบัติประจำวัน


- เขียนใบกำกับภาษี / ใบเสร็จ จำนวน 250 ใบ
- ทำ INV จำนวน 91 ID
- ถ่ายเอกสาร จำนวน 60 ใบ
- คีย์ข้อมูล po ลงใน ITECstock จำนวน 386 ID
- ทำใบลดหนี้ จำนวน 7 บริษัท
- ส่งใบปลิวลงหน้าร้าน จำนวน 12 ID

ปัญหาที่พบ

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

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

- ดึงกระดาษที่ติดอยู่ออกจากเครื่องถ่ายเอกสารและถ่ายต่อ
- แยกกองบิลที่มีปัญหาออกจากกองดี
- รอรุ่นพี่ที่ฝึกงานทำการคีย์ข้อมูลเข้าโปรแกรม
สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 12
ระหว่างวันที่ 17 - 21 มกราคม 2554


งานที่ปฏิบัติประจำวัน


- เขียนใบกำกับภาษี / ใบเสร็จ จำนวน 400 ใบ
- ทำ INV จำนวน 86 ID
- ถ่ายเอกสาร จำนวน 78 ใบ
- คีย์ข้อมูล po ลงใน ITECstock จำนวน 366 ID
- คีย์ข้อมูล po ลงใน Oracal จำนวน 25 ID
- ส่งของลงหน้าร้าน จำนวน 21 ID

ปัญหาที่พบ

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

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

- รุ่นพี่ที่ฝึกงานสอนในการจัดสต๊อก
- แยกกองบิลที่มีปัญหาออกจากกองดี
- รอรุ่นพี่ที่ฝึกงานทำการคีย์ข้อมูลเข้าโปรแกรม
สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 11
ระหว่างวันที่ 10 - 14 มกราคม 2554


งานที่ปฏิบัติประจำวัน


- ถ่ายเอกสาร จำนวน 86 ใบ

- คีย์ข้อมูล po ลงใน ITECstock จำนวน 308 ID

- คีย์ข้อมูล po ลงใน Oracal จำนวน 5 ID
- ส่งใบเบิกของ


ปัญหาที่พบ

- กระดาษติดกับเครื่องถ่ายเอกสาร
- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม

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

- ดึงกระดาษที่ติดอยู่ออกจากเครื่องถ่ายเอกสารและถ่ายต่อ
- รอรุ่นพี่ที่ฝึกงานทำการคีย์ข้อมูลเข้าโปรแกรม

วันศุกร์ที่ 7 มกราคม พ.ศ. 2554

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 10
ระหว่างวันที่ 4 - 7 มกราคม 2554


งานที่ปฏิบัติประจำวัน


- ติดสะติ๊กเกอร์ในใบสะสมแต้ม จำนวนว 2 แผ่น
- ถ่ายเอกสาร จำนวน 50 ใบ
- ปริ้นใบ Po ที่ถูกยกเลิกแล้ว จำนวน 47 ID

- คีย์ข้อมูล po ลงใน ITECstock จำนวน 157 ID

- คีย์ข้อมูล po ลงใน Oracal จำนวน 7 ID
- ตรวจเช็คสต๊อกสินค้า จำนวน 10 ID

ปัญหาที่พบ

- กระดาษติดกับเครื่องถ่ายเอกสาร
- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม
- กระดาษติดเครื่องปริ้น

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

- ดึงกระดาษที่ติดอยู่ออกจากเครื่องถ่ายเอกสารและถ่ายต่อ
- รอรุ่นพี่ที่ฝึกงานทำการคีย์ข้อมูลเข้าโปรแกรม
- ดึงกระดาษออกจากเครื่องปริ้น
สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 9
ระหว่างวันที่ 27 - 30 ธันวาคม 2553


งานที่ปฏิบัติประจำวัน


- จัดสต๊อกสินค้า ปริ้นบาร์โค๊ต จำนวน 200 ใบ
- ตรวจเช็คบิลใบกำกับภาษี จำนวน 1325 บิล
- คีย์ข้อมูล po ลงใน ITECstock จำนวน 43 ID
- คีย์ข้อมูล po ลงใน Oracal จำนวน 1 ID

ปัญหาที่พบ

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

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

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

วันจันทร์ที่ 27 ธันวาคม พ.ศ. 2553

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 8
ระหว่างวันที่ 20 - 24 ธันวาคม 2553


งานที่ปฏิบัติประจำวัน


- ติดสะติ๊กเกอร์ในใบสะสมแต้ม จำนวนว 45 แผ่น
- ปั๊มตราบริษัทลงในใบสะสมแต้ม จำนวน 93 ใบ
- คีย์ข้อมูลสินค้าของบริษัทลูกค้า จำนวน 92 รายการ
- ถ่ายเอกสาร จำนวน 94 ใบ
- ปริ้นใบรายชื่อลูกค้า จำนวน 1 แผ่น
- พิมพ์ราบชื่อลูกค้า ที่อยู่ จำนวนว 24 รายชื่อ
- นำรายชื่อที่ปริ้นมาตัดและติดกาวแปะที่ซองจดหมาย จำนวน 24 ซอง
- คีย์ข้อมูล po ลงใน ITECstock จำนวน 41 ID

- คีย์ข้อมูล po ลงใน Oracal จำนวน 7 ID

ปัญหาที่พบ

- สะติ๊กเกอร์ไม่มีกาว
- ไม่มีกาวแปะ
- กระดาษติดกับเครื่องถ่ายเอกสาร
- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม

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

- นำสะก๊อตเทปมาแปะ
- เบิกจากห้องพัสดุ
- ดึงกระดาษที่ติดอยู่ออกจากเครื่องถ่ายเอกสารและถ่ายต่อ
- รอรุ่นพี่ที่ฝึกงานทำการคีย์ข้อมูลเข้าโปรแกรม



วันพุธที่ 22 ธันวาคม พ.ศ. 2553

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 7
ระหว่างวันที่ 13 - 17 ธันวาคม 2553

งานที่ปฏิบัติประจำวัน

-เขียนใบกำกับภาษี / ใบเสร็จ จำนวน 413 ใบ
-ถ่ายเอกสาร จำนวน 105 ใบ

- แสกนใบงาน จำนวน 4 แผ่น
- ติดสะติ๊กเกอร์ในใบสะสมแต้ม จำนวนว 48 แผ่น
- เรียงเอกสารบิลสินค้า Sony จำนวน 50 ใบ

ปัญหาที่พบ

- กระดาษในเครื่องถ่ายเอกสารหมด
- ใบกำกับภาษีหน้าหนึ่งกับหน้าสองแยกออกจากกัน

- เอกสารบิลสินค้าไม่ชัด


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

-
ดึงกระดาษออกจากเครื่องถ่ายเอกสาร
- แยกออกจากกองและพอเจอก็นำกลับมารวมกันและใส่กลับเข้ากองของมัน
- ถามรุ่นพี่ที่ฝึกงาน

วันอังคารที่ 14 ธันวาคม พ.ศ. 2553

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 6
ระหว่างวันที่ 7 - 9 ธันวาคม 2553


งานที่ปฏิบัติประจำวัน


- เรียงข้อมูลใบสร็จสินค้าลงในแฟ้ม จำนวน 250 ใบ
- เขียนข้อมูลบิลของ Sony จำนวน 150 ใบ
- เขียนใบกำกับภาษี จำนวน 500 ใบ
- เบิกพัสดุ เช่น ปากกา ดินสอ แฟ้ม
- ถ่ายเอกสาร จำนวน 20 ใบ
- ค้นหารายการสินค้าเพื่อเก็บรวบรวมข้อูลลูกค้าลงใน Excel จำนวน 11 สินค้า 136 ลูกค้า
- สรุปยอดการขายของผลิตภัณฑ์ Notebook samsung , lenovo , gateway

ปัญหาที่พบ

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

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

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

วันจันทร์ที่ 6 ธันวาคม พ.ศ. 2553

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 5
ระหว่างวันที่ 29 พฤศจิกายน - 3 ธันวาคม 2553


งานที่ปฏิบัติประจำวัน


- คีย์ข้อมูล po ลงใน ITECstock จำนวน 101 ID

- ติดสะติ๊กเกอร์ใบแต้มสะสมคะแนน จำนวน 15 แผ่น
- เขียนใบกำกับภาษี จำนวน 75 แผ่น

- ถ่ายเอกสาร จำนวน 45 ใบ
- ปริ้นข้อมูล PO จำนวน 15 ใบ
- นำใบ Po ที่ปริ้นแม็คเข้ากับใบเสร็จสินค้า จำนวน 15 ใบ
- เรียงใบเสร็จสินค้าลงในแฟ้ม จำนวน 15 ใบ
- ค้นหาใบเสร็จสินค้าลงในแฟ้ม จำนวน 20 ใบ
- แยกกระดาษที่ใช้แล้วมาใช้ใหม่ จำนวน 200 ใบ
- ติดสะติ๊กเกอร์ใบสะสมแต้ม จำนวน 15 ใบ
- ปั๊มตราบริษัทลงในใบสะสมแต้ม จำนวน 177 ใบ

ปัญหาที่พบ


- เครื่องปริ้นมีปัญหาปริ้นไม่ออก
- บางสินค้ายังไม่ถูกคีย์ข้อมูลเข้าโปรแกรม
- ค้นหาใบเสร็จสินค้าไม่เจอ
- กระดาษในเครื่องถ่ายเอกสารหมด

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

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

วันศุกร์ที่ 26 พฤศจิกายน พ.ศ. 2553

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 4
ระหว่างวันที่ 22 - 26 พฤศจิกายน 2553


งานที่ปฏิบัติประจำวัน

- คีย์ข้อมูล po ลงใน ITECstock จำนวน 79 ID
- คีย์ข้อมูล po ลงใน Oracal จำนวน 43 ID
- ถ่ายเอกสาร จำนวน 30 ใบ
- คีย์ข้อมูลเกี่ยวกับลูกค้า สินค้า วัน รหัส ที่อยู่ของลูกค้า E-mail เบอร์โทร ชื่อลูกค้า จำนวน 50 คน
- ติดสติ๊กเกอร์ใบแต้มสะสมคะแนน จำนวน 93 แผ่น

- แม็คใบกำกับภาษีกับสำเนาบัตรประชานชนของลูกค้า จำนวน 75 ชุด
- เขียนใบกำกับภาษี จำนวน 40 แผ่น

ปัญหาที่พบ

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

วิธีการแก้ไขปัญหา
- พี่ที่ฝึกงานให้เติม HR หลังข้อมูล รหัส 50
- เปิดหน้า ITECstock ขึ้นมาอีกหน้านึงเพื่อเป็นการสะดวกในการค้นหาข้อมูล
- ดึงกระดาษที่ติดอยู่ออกจากเครื่องถ่ายเอกสารและถ่ายต่อ
- นำสะก๊อตเทปมาแปะ
- ไปเบิกเข็มแม็คจากฝ่ายพัสดุ

วันพุธที่ 24 พฤศจิกายน พ.ศ. 2553

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 3
ระหว่างวันที่ 15 - 19 พฤศจิกายน 2553


งานที่ปฏิบัติประจำวัน


- คีย์ข้อมูล รหัสลูกค้า จำนวน 250 คน
- ฉีกกระดาษใบกำกับภาษี / ใบเสร็จ จำนวน 200 ใบ
- เขียนใบกำกับภาษี / ใบเสร็จ จำนวน 500 ใบ
- คีย์ข้อมูลเกี่ยวกับลูกค้า สินค้า วัน รหัส ที่อยู่ของลูกค้า E-mail เบอร์โทร ชื่อลูกค้า จำนวน 304 คน
- คีย์ข้อมูลของลูกค้าของสินค้า acer จำนวน 150 คนด้รับของแถ
- ฉีกใบกำกับภาษีที่ปร้ินออกมาจากเครื่องปริ้น จำนวน 400 ใบ
- คีย์รหัสลูกค้าเข้าเครื่อง จำนวน 200 คน
- เขียนใบสิทธิ์ประโยชน์ให้แก่ลูกค้า จำนวน 150 ใบ
- โทรหาลูกค้าเพื่อสอบถามลูกค้าเกี่ยวกับการไ้ด้รับของแถมจากงาน commart จำนวนว 13 คน
- ตรวจเช็ครายชื่อ ที่อยู่ รหัส เบอร์โทร วัน ของลูกค้าที่ส่งแฟรกมาว่าถูกต้องเหรอป่าว จำนวน 13 ใบ

ปัญหาที่พบ

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

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

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

วันอาทิตย์ที่ 14 พฤศจิกายน พ.ศ. 2553

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 2
ระหว่างวันที่ 8 - 12 พฤศจิกายน 2553

งานที่ปฏิบัติประจำวัน

-
รุ่นพี่ที่ทำงานสอนวิธีการใช้งานโปรแกรม ITECStock2007 ของบริษัท ซอฟท์บ็อกซ์ จำกัด
- ค้นหารูปภาพเพื่อใช้ในการ add ลงในโปรแกรม ITECStockcoffee
- ติดสติ๊กเกอร์ใบแต้มสะสมคะแนน จำนวน 55 แผ่น
- เขียนใบกำกับภาษี/ใบเสร็จ จำนวน 50 ใบ
- พิมพ์รายชื่อลูกค้า/สถานที่ลูกค้า ปริ้น ตัด ทากาวติดหน้าซองจดหมาย เพื่อใส่ใบกำกับภาษี/ใบเสร็จส่งลูกค้า จำนวน 20 ซอง

- โทรหาลูกค้าบองบริษัทเพื่อขอทบทวนที่อยู่ของลูกค้าเพื่อส่งจดหมายใบกำกับภาษี/ใบเสร็จ จำนวน 50 ท่าน

ปัญหาที่พบ

- การค้นหารูปใบรายชื่อรูปมีตัวอักษรที่เล็กไม่เกินไปเลยอ่านไม่ออก
- ใบสะสมแต้มมันไม่พอต่อสติ๊กเกอร์แต้ม
- ลูกค้าไม่รับโทรศัพท์และโทรไม่ติด

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

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

- รุ่นพี่ที่ฝึกงานนำสะติ๊กเกอร์สะสมแต้มมาให้ใหม่




วันศุกร์ที่ 5 พฤศจิกายน พ.ศ. 2553

สรุปผลการฝึกประสบการณ์วิชาชีพ สัปดาห์ที่ 1
ระหว่างวันที่ 1 - 5 พฤศจิกายน 2553


งานที่ปฏิบัติประจำวัน


- อ่านคู่มือการใช้งานโปรแกรม ITECStock2007 ของบริษัทซอฟท์บ็อกซ์ จำกัด
- รุ่นพี่ที่ทำงานสอนวิธีการใช้งานโปรแกรม ITECStock2007 ของบริษัท ซอฟท์บ็อกซ์ จำกัด
- ไปจ่ายค่าน้ำประปาที่ประปาแม้นศรี
- โทรหาลูกค้าของบริษัท ซอฟท์บ็อกซ์ จำกัด เพื่อขอ E-mail ของลูกค้า จำนวน 35 ร้าน
- รุ่นพี่ที่ทำงานสอนวิธีการใช้งานโปรแกรม ITECStockcoffee ซึ่งเป็นโปรแกรมใหม่ของบริษัท ซอฟท์บ็อกซ์ จำกัด
- ลองทดลองใช้โปรแกรม ITECStockcoffee
- ฟังการอธิบายเกี่ยวกับการไป Presents การใช้งาานของโปรแกรมให้ลูกค้าฟัง

ปัญหาที่พบ

- งงเกี่ยวกับการใช้งานของโปรแกรม ITECStock2007 ของบริษัทซอฟท์บ็อกซ์ จำกัด
- ไม่เข้าเกี่ยวกับการกรอกข้อมูลเพิ่มลงในตัวโปรแกรมบางรายการ
- ลูกค้าของ
บริษัทซอฟท์บ็อกซ์ จำกัด ไม่รับโทรศัทพ์
- โทรหาลูกค้ายังไม่ครบตามจำนวนที่ได้กำหนดไว้
-
โปรแกรม
ITECStockcoffee เวลานำข้อมูลเข้าไปในโปรแกรมและกำหนดตั้งค่าราคายากและงง

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

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




วันพฤหัสบดีที่ 15 ตุลาคม พ.ศ. 2552

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

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

วันศุกร์ ที่ 3 เดือน กรกฏาคม พ.ศ. 2552
หลักการประกันคุณภาพ
- รู้จักความหมายของหลักการประกันคุณภาพ
- รู้ว่ามหาวิทยาลัยใช้หลักการประกันคุณภาพอย่างไร
- รู้จักการวางแผนในการทำงาน

วันศุกร์ ที่ 10 เดือน กรกฏาคม พ.ศ. 2552
คุณธรรมจริยธรรม
- ได้รับความรู้เกี่ยวกับเรื่องของคุณธรรม จริยธรรม
- รู้จักหลักการดำเนินชีวิตในชีวิตประจำวัน
- ได้นำหลักธรรมที่เรียนมาปรับใช้ในชีวิตประจำวัน
- ได้พัฒนาความรู้เกี่ยวกับการใช้ปัญญาแก้ปัญหา

วันศุกร์ ที่ 17 เดือน กรกฏาคม พ.ศ. 2552
การเงินส่วนบุคคล
- ได้ความรู้เกี่ยวกับแหล่งการเ งิน
- ได้จัดทำการบันทึกรายรับ-รายจ่ายให้ทราบเกี่ยวกับการใช้เงิน รู้จักการอดออม และการประหยัด
- ได้ความรู้เรื่องการบริหารการเงิน

วันศุกร์ ที่ 24 เดือน กรกฏาคม พ.ศ. 2552
การพัฒนาบุคคลิกภาพ
- รู้จักการแต่งกายให้ถูกระเบียบ ถูกกาละเทศะ และตามโอกาสต่างๆ
- รู้เรื่องการแต่งหน้าตามโอกาสต่างๆ
- ได้เรียนรู้เรื่องการพัฒนาบุคคลิกภาพตนเอง


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

วันศุกร์ ที่ 14 เดือน สิงหาคม พ.ศ. 2552
กิจกรรมแขนงธุรกิจระหว่างประเทศ
- รู้จักในเรื่องของวัฒนธรรม ความเชื่อ แนวความคิดระหว่างประเทศ

วันศุกร์ ที่ 21 เดือน สิงหาคม พ.ศ. 2552
กิจกรรมแขนงการตลาด
- รู้จักเส้นทางแห่งความสำเร็จ
- รู้วิธีการดำเนินชีวิตที่ดี การทำงานอย่างมีประสิทธิภาพ

วันศุกร์ ที่ 11 เดือน กันยายน พ.ศ. 2552
ภาษาไทยในชีวิตประจำวัน
-รู้จักประเภทของภาษาไทย
- การใช้ภาษาไทยที่ถูกต้อง
- การรักษาวัฒนธรรมการใช้ภาษาไทย
- การใช้ภาษาไทยในโอกาสต่างๆ

วันศุกร์ ที่ 18 เดือน กันยายน พ.ศ. 2552
วันปัจฉิมนิเทศ
- รู้จักการกตัญญูกตเวทีต่อผู้มีพระคุณ
- การอยู่ร่วมกันอย่างเป็นสุข สงบสุขในสังคม
- การแก้ปัญหาเมื่อปัญหาเกิดขึ้นอย่างถูกต้อง

วันพุธที่ 16 กันยายน พ.ศ. 2552

DTS10-16/09/52

การเรียงลำดับแบบเร็ว (quick sort)
เป็นวิธีการเรียงลำดับที่ใช้เวลาน้อยเหมาะสำหรับข้อมูลที่มีจำนวนมากที่ต้องการความรวดเร็วในการทำงาน วิธีนี้จะเลือกข้อมูลจากกลุ่มข้อมูลขึ้นมาหนึ่งค่าเป็นค่าหลัก แล้วหาตำแหน่งที่ถูกต้องให้กับค่าหลักนี้ เมื่อได้ตำแหน่งที่ถูกต้องแล้ว ใช้ค่าหลักนี้เป็นหลักในการแบ่งข้อมูลออกเป็นสองส่วนถ้าเป็นการเรียงลำดับจากน้อยไปมาก ส่วนแรกอยู่ในตอนหน้าข้อมูล ทั้งหมดจะมีค่าน้อยกว่าค่าหลักที่อีกส่วนหนึ่งจะอยู่ในตำแหน่งตอนหลังข้อมูลทั้งหมด จะมีค่ามากกว่าค่าหลัก แล้วนำแต่ละส่วนย่อยไปแบ่งย่อยในลักษณะเดียวกันต่อไปจนกระทั่งแต่ละส่วนไม่สามารถแบ่งย่อยได้อีกต่อไปจะได้ข้อมูลที่มีการเรียงลำดับตามที่ต้องการถ้าเป็นการเรียงลำดับจากน้อยไปมากการเปรียบเทียบเพื่อหาตำแหน่งให้กับค่าหลักตัวแรกเริ่มจากข้อมูลในตำแหน่งแรกหรือสุดท้ายก็ได้ ถ้าเริ่มจากข้อมูลที่ตำแหน่งที่ 1เป็นค่าหลัก พิจารณาเปรียบเทียบค่าหลักกับข้อมูลในตำแหน่งสุดท้าย ถ้าค่าหลักมีค่าน้อยกว่าให้เปรียบเทียบกับข้อมูลในตำแหน่งรองสุดท้ายไปเรื่อย ๆ จนกว่าจะพบค่าที่น้อยกว่าค่าหลัก แล้วให้สลับตำแหน่งกันหลังจากสลับตำแหน่งแล้วนำค่าหลักมาเปรียบเทียบกับข้อมูล ในตำแหน่งที่ 2, 3,ไปเรื่อย ๆ จนกว่าจะพบค่าที่มากกว่าค่าหลักสลับตำแหน่งเมื่อเจอข้อมูลที่มากกว่าค่าหลัก ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งได้ตำแหน่งที่ถูกต้องของค่าหลักนั้น ก็จะแบ่งกลุ่มข้อมูลออกเป็นสองส่วน ส่วนแรกข้อมูลทั้งหมดมีค่าน้อยกว่าค่าหลักและส่วนที่สองข้อมูลทั้งหมดมีค่ามากกว่าค่าหลัก
การเรียงลำดับแบบแทรก (insertion sort)
เป็นวิธีการเรียงลำดับที่ทำการเพิ่มสมาชิกใหม่เข้าไปในเซต ที่มีสมาชิกทุกตัวเรียงลำดับอยู่แล้ว และทำให้เซตใหม่ที่ได้นี้มีสมาชิกทุกตัวเรียงลำดับด้วย วิธีการเรียงลำดับจะ1. เริ่มต้นเปรียบเทียบจากข้อมูลในตำแหน่งที่ 1 กับ 2หรือข้อมูลในตำแหน่งสุดท้ายและรองสุดท้ายก็ได้ถ้าเป็นการเรียงลำดับจากน้อยไปมาก2. จะต้องจัดให้ข้อมูลที่มีค่าน้อยอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก และถ้าเรียงจากมากไปน้อยจะก็จะจัดให้ข้อมูลที่มีค่ามากอยู่ในตำแหน่งก่อน
การเรียงลำดับแบบฐาน (radix sort)
เป็นการเรียงลำดับโดยการพิจารณาข้อมูลทีละหลัก
1. เริ่มพิจารณาจากหลักที่มีค่าน้อยที่สุดก่อน นั่นคือถ้าข้อมูลเป็นเลขจำนวนเต็มจะพิจารณาหลักหน่วยก่อน
2. การจัดเรียงจะนำข้อมูลเข้ามาทีละตัว แล้วนำไปเก็บไว้ที่ซึ่งจัดไว้สำหรับค่านั้น เป็นกลุ่ม ๆตามลำดับการเข้ามา
3. ในแต่ละรอบเมื่อจัดกลุ่มเรียบร้อยแล้ว ให้รวบรวมข้อมูลจากทุกกลุ่มเข้าด้วยกัน โดยเริ่มเรียงจากกลุ่มที่มีค่าน้อยที่สุดก่อนแล้วเรียงไปเรื่อย ๆ จนหมดทุกกลุ่ม
4. ในรอบต่อไปนำข้อมูลทั้งหมดที่ได้จัดเรียงในหลักหน่วยเรียบร้อยแล้วมาพิจารณาจัดเรียงในหลักสิบต่อไป ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งครบทุกหลักจะได้ข้อมูลที่เรียงลำดับจากน้อยไปมากตามต้องการ
การจัดเรียงลำดับแบบเร็วเป็นวิธีที่ค่อนข้างซับซ้อน แต่ประสิทธิภาพการทำงานค่อนสูง เนื่องจากใช้เวลาในการเรียงลำดับน้อย ถ้ามีข้อมูลทั้งหมด n ตัวจำนวนครั้งของการเปรียบเทียบเป็นดังนี้กรณีที่ดีที่สุด คือ กรณีที่ค่าหลักที่เลือกแบ่งแล้วข้อมูลอยู่ตรงกลางกลุ่มพอดี และในแต่ละส่วนย่อยก็เช่นเดียวกันจำนวนครั้งของการเปรียบเทียบเป็นดังนี้จำนวนครั้งของการเปรียบเทียบ = n log2 n ครั้ง
กรณีที่แย่ที่สุด คือ กรณีที่ข้อมูลมีการเรียงลำดับอยู่แล้ว อาจจะเรียงจากน้อยไปมากหรือจากมากไปน้อย หรือค่าหลักที่เลือกในแต่ละครั้งเป็นค่าหลักที่น้อยที่สุดหรือมากที่สุด จำนวนครั้งของการเปรียบเทียบจะมากที่สุดดังนี้จำนวนครั้งของการเปรียบเทียบ
= (n −1) + (n −2) + . . . + 3 + 2 + 1
= n (n −1) / 2 ครั้ง
การค้นหาข้อมูล (Searching)การค้นหา คือการใช้วิธีการค้นหากับโครงสร้างข้อมูล เพื่อดูว่าข้อมูลตัวที่ต้องการถูกเก็บอยู่ในโครงสร้างแล้วหรือยังวัตถุประสงค์ของการค้นหาโดยทั่วไป ได้แก่เพื่อดูรายละเอียดเฉพาะข้อมูลส่วนที่ต้องการดึงข้อมูลตัวที่ค้นหาออกจากโครงสร้างเปลี่ยนแปลงแก้ไขรายละเอียดบางอย่างของข้อมูลตัวที่ค้นพบ และ/หรือเพิ่มข้อมูลตัวที่ค้นหาแล้วพบว่ายังไม่เคยเก็บไว้ในโครงสร้างเลยเข้าไปเก็บไว้ในโครงสร้าง เพื่อใช้งานต่อไป
การค้นหาข้อมูล (Searching)
การค้นหา คือแบ่งเป็น 2 ประเภท ตามแหล่งที่จัดเก็บข้อมูลเช่นเดียวกับการเรียงลำดับการค้นหาข้อมูลแบบภายใน (Internal Searching)การค้นหาข้อมูลแบบภายนอก (External Searching)Searching
1. การค้นหาแบบเชิงเส้นหรือการค้นหาตามลำดับ(Linear)เป็นวิธีที่ใช้กับข้อมูลที่ยังไม่ได้เรียงลำดับหลักการ คือ ให้นำข้อมูลที่จะหามาเปรียบเทียบกับข้อมูลตัวแรกในแถวลำดับถ้าไม่เท่ากันให้เปรียบเทียบกับข้อมูลตัวถัดไปถ้าเท่ากันให้หยุดการค้นหา หรือการค้นหาจะหยุดเมื่อพบข้อมูลที่ต้องการหรือหาข้อมูลทุกจำนวนในแถวลำดับแล้วไม่พบ
2. การค้นหาแบบเซนทินัล (Sentinel)เป็นวิธีที่การค้นหาแบบเดียวกับวิธีการค้นหาแบบเชิงเส้นแต่ประสิทธิภาพดีกว่าตรงที่เปรียบเทียบน้อยครั้งกว่า พัฒนามาจากอัลกอริทึมแบบเชิงเส้นหลักการ1) เพิ่มขนาดของแถวลำดับ ที่ใช้เก็บข้อมูลอีก 1 ที่2) นำข้อมูลที่จะใช้ค้นหาข้อมูลใน Array ไปฝากที่ต้นหรือ ท้ายArray3) ตรวจสอบผลลัพธ์จากการหาโดยตรวจสอบจากตำแหน่งที่พบ ถ้าตำแหน่งที่พบมีค่าเท่ากับ n-1แสดงว่าหาไม่พบ นอกนั้นถือว่าพบข้อมูลที่ค้าหา
3. การค้นหาแบบไบนารี (Binary Search)การค้นหาแบบไบนารีใช้กับข้อมูลที่ ถูกจัดเรียงแล้วเท่านั้นหลักการของการค้นหาคือ ข้อมูลถูกแบ่งออกเป็นสองส่วนแล้วนำค่ากลางข้อมูลมาเปรียบเทียบกับคีย์ที่ต้องการหา
1.หาตัวแทนข้อมูลเพื่อนำมาเปรียบเทียบกับค่าที่ต้องการค้นตำแหน่งตัวแทนข้อมูลหาได้จากสูตรmid = (low+high)/2mid คือ ตำแหน่งกลาง ,low คือ ตำแหน่งต้นแถวลำดับhigh คือ ตำแหน่งท้ายของแถวลำดับ
2. นำผลการเปรียบเทียบกรณีที่หาไม่พบมาใช้ในการค้นหารอบต่อไปหาในส่วน Aถ้าค่าที่จะหานั้นน้อยกว่าค่าที่ตำแหน่งกลาง ในทางกลับกันหาในส่วน Bถ้าค่าที่จะหานั้นมากกว่าค่าตำแหน่งกลางSearching
สว่ น A ค่ากลาง สว่ นB
ข้อมูลเรียงลำดับจากน้อยไปมาก
การค้นหาแบบไบนารี (Binary Search)ถ้าข้อมูลมีการเรียงจากน้อยไปหามาก เมื่อเปรียบเทียบแล้วคีย์มีค่ามากกว่าค่ากลาง แสดงว่าต้องทำการค้นหาข้อมูลในครึ่งหลังต่อไป จากนั้นนำข้อมูลครึ่งหลังมาหาค่ากลางต่อ ทำอย่างนี้ไปเรื่อย ๆ จนกว่าจะได้ข้อมูลที่ต้องการเช่นต้องการหาว่า 12 อยู่ในลิสต์
(1 4 6 8 10 12 18 19) หรือไม่
เริ่มการค้นหาแบบไบนารีด้วยการเปรียบเทียบกับค่ากลางในลิสต์ คือค่าa[4] ซึ่งเก็บค่า 8 ซึ่ง 12 > a[4] หมายความว่าค่า 12 ควรจะอยู่ในข้อมูลด้านขวาของ a[4] คือ ช่วง a[5] …a[8]โดยไม่สนใจช่วงข้อมูล a[1] …a[3] และใช้วิธีการค้นหาแบบไบนารีเช่นเดิมอีกกับชุดข้อมูลครึ่งหลัง คือa[5] …a[8] นั่นคือเปรียบเทียบกับค่ากลางของชุดข้อมูลครึ่งหลัง(a[5] …a[8] ) คือค่า a[6] ซึ่งเก็บค่า 12 ซึ่ง 12 = a[6]จะได้ว่าค่า 12 อยู่ในตำแหน่งที่ 6 ในลิสต์
จากตัวอย่างนี้ การค้นหาค่า 12 โดยวิธีการค้นหาแบบไบนารีใช้การเปรียบเทียบ เพียง 2 ครั้ง อย่างไรก็ตามในตัวอย่างนี้ ภายใต้สมมุติฐานว่าข้อมูลที่ต้องการค้นหามีอยู่ในลิสต์ จะใช้การเปรียบเทียบอย่างมากที่สุดเพียง 3 ()ครั้ง เช่น ถ้าต้องการหาค่า 19 ดังแสดงในรูป
(ในทางกลับกันการค้นหาแบบ Sequential Search ต้องเปรียบเทียบจากค่าในตำแหน่งแรกไปจนถึงค่าในตำแหน่งสุดท้าย นั่นคือมีการเปรียบเทียบ 8 ครั้ง) หรือถ้าค่าที่ต้องการหาไม่อยู่ในลิสต์ จะใช้การเปรียบเทียบเพียง4 ครั้งถ้าค่าที่ต้องการหาไม่อยู่ในลิสต์ เช่น ถ้าต้องการหาค่า 5ครั้งที่ 11 4 6 8 10 12 18 19

วันพุธที่ 9 กันยายน พ.ศ. 2552

DTS09-09/09/52


Sorting
การเรียงลำดับ (sorting) เป็นการจัดให้เป็นระเบียบมีแบบแผน ช่วยให้การค้นหาสิ่งของหรือข้อมูล ซึ่งจะสามารถกระทำได้รวดเร็วและมีประสิทธิภาพ เช่น การค้นหาความหมายของคำในพจนานุกรม ทำได้ค่อนข้างง่ายและรวดเร็วเนื่องจากมีการเรียงลำดับคำตามตัวอักษรไว้อย่างมีระบบและเป็นระเบียบ หรือ การค้นหาหมายเลขโทรศัพท์ในสมุดโทรศัพท์ ซึ่งมีการเรียงลำดับ ตามชื่อและชื่อสกุลของเจ้าของโทรศัพท์ไว้ ทำให้สามารถค้นหา หมายเลขโทรศัพท์ของคนที่ต้องการได้อย่างรวดเร็ว เป็นต้น
การเรียงลำดับอย่างมีประสิทธิภาพหลักเกณฑ์ในการพิจารณาเพื่อเลือกวิธีการเรียงลำดับที่ดี และเหมาะสมกับระบบงาน เพื่อให้ประสิทธิภาพในการทำงานสูงสุด ควรจะต้องคำนึงถึงสิ่งต่าง ๆ ดังต่อไปนี้
1) เวลาและแรงงานที่ต้องใช้ในการเขียนโปรแกรม
2) เวลาที่เครื่องคอมพิวเตอร์ต้องใช้ในการทำงานตามโปรแกรมที่เขียน
3) จำนวนเนื้อที่ในหน่วยความจำหลักมีเพียงพอหรือไม่
วิธีการเรียงลำดับ
เนื่องจากมีวิธีการมากมายที่สามารถใช้ในการเรียงลำดับข้อมูลได้ บางวิธีก็มีขั้นตอนการจัดเรียงเป็นแบบง่าย ๆ ตรงไปตรงมา แต่ใช้เวลาในการจัดเรียงลำดับนาน และบางวิธีก็มีขั้นตอนในการจัดเรียงลำดับแบบซับซ้อนยุ่งยากแต่ใช้เวลาในการจัดเรียงไม่นานนัก ดังนั้นจึงควรศึกษาวิธีการจัดเรียงลำดับด้วยวิธีการต่าง ๆ เพื่อเลือกใช้วิธีการที่ดีและเหมาะสมกับระบบงานนั้นที่สุด วิธีการเรียงลำดับสามารถแบ่งออกเป็น2 ประเภท คือ
(1)การเรียงลำดับแบบภายใน (internal sorting)เป็นการเรียงลำดับที่ข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำหลัก เวลาที่ใช้ในการเรียงลำดับจะคำนึงถึงเวลาที่ใช้ในการเปรียบเทียบและเลื่อนข้อมูลภายในความจำหลัก
(2) การเรียงลำดับแบบภายนอก(external sorting) เป็นการเรียงลำดับข้อมูลที่เก็บอยู่ในหน่วยความจำสำรอง ซึ่งเป็นการเรียงลำดับข้อมูลในแฟ้มข้อมูล (file) เวลาที่ใช้ในการเรียงลำดับต้องคำนึงถึงเวลาที่เสียไประหว่างการถ่ายเทข้อมูลจากหน่วยความจำหลักและหน่วยความจำสำรองนอกเหนือจากเวลาที่ใช้ในการเรียงลำดับข้อมูลแบบภายใน
การเรียงลำดับแบบเลือก (selection sort)
ทำการเลือกข้อมูลมาเก็บในตำแหน่งที่ ข้อมูลนั้นควรจะอยู่ทีละตัว โดยทำการค้นหาข้อมูลนั้นในแต่ละรอบแบบเรียงลำดับถ้าเป็นการเรียงลำดับจากน้อยไปมาก
1. ในรอบแรกจะทำการค้นหาข้อมูลตัวที่มีค่าน้อยที่สุดมาเก็บไว้ที่ตำแหน่งที่ 1
2. ในรอบที่สองนำข้อมูลตัวที่มีค่าน้อยรองลงมาไปเก็บไว้ที่ตำแหน่งที่สอง
3. ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งครบทุกค่าในที่สุดจะได้ข้อมูลเรียงลำดับจากน้อยไปมากตามที่ต้องการ
ในรอบที่ 1 ทำการเปรียบเทียบข้อมูลเพื่อค้นหาข้อมูลที่มีค่าน้อยที่สุด คือ 22นำไปวางที่ตำแหน่งที่ 1 สลับตำแหน่งกับ 35ในรอบที่ 2 ทำการเปรียบเทียบอีกเพื่อค้นหาค่าที่น้อยที่สุดรองลงมาโดยเริ่มค้นตั้งแต่ตำแหน่งที่ 2 เป็นต้นไปได้ค่าน้อยที่สุดคือ 35นำไปวางที่ตำแหน่งที่ 2 สลับตำแหน่งกับ 67ในรอบต่อไปก็ทำในทำนองเดียวกันจนกระทั่งถึงรอบสุดท้ายคือรอบที่ 7 จะได้ข้อมูลที่เรียงลำดับจากน้อยไปมากตามที่ต้องการ
ตรงไปตรงมา แต่มีข้อเสียตรงที่ใช้เวลาในการจัดเรียงนานเพราะแต่ละรอบต้องเปรียบเทียบกับข้อมูลทุกตัว ถ้ามีจำนวนข้อมูลทั้งหมด n ตัว ต้องทำการเปรียบเทียบทั้งหมดn – 1 รอบ และจำนวนครั้งของการเปรียบเทียบในแต่ละรอบเป็นดังนี้รอบที่ 1 เปรียบเทียบเท่ากับ n −1 ครั้งรอบที่ 2 เปรียบเทียบเท่ากับ n – 2 ครั้ง...รอบที่ n – 1 เปรียบเทียบเท่ากับ 1 ครั้ง
จำนวนครั้งของการเปรียบเทียบทั้งหมด
= (n −1) + (n −2) + . . . + 3 + 2 + 1
= n (n −1) / 2 ครั้ง
การเรียงลำดับแบบฟอง (Bubble Sort)
เป็นวิธีการเรียงลำดับที่มีการเปรียบเทียบข้อมูลในตำแหน่งที่อยู่ติดกัน1. ถ้าข้อมูลทั้งสองไม่อยู่ในลำดับที่ถูกต้องให้สลับตำแหน่งที่อยู่กัน2. ถ้าเป็นการเรียงลำดับจากน้อยไปมากให้นำข้อมูลตัวที่มีค่าน้อยกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก ถ้าเป็นการเรียงลำดับจากมากไปน้อยให้นำข้อมูล ตัวที่มีค่ามากกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่าน้อย
กำหนดให้มีข้อมูล n จำนวน การเปรียบเทียบเริ่มจากคู่แรกหรือคู่สุดท้ายก็ได้ ถ้าเริ่มจากคู่สุดท้ายจะเปรียบเทียบข้อมูลที่ตำแหน่ง n-1 กับ n ก่อนแล้วจัดเรียงให้อยู่ในตำแหน่งที่ถูกต้อง ต่อไปเปรียบเทียบข้อมูลที่ตำแหน่ง n-2 กับ n-1 ทำเช่นนี้ไป เรื่อย ๆจนกระทั่งถึงข้อมูลตัวแรก และทำการเปรียบเทียบในรอบอื่นเช่นเดียวกันจนกระทั่งถึงรอบสุดท้ายที่เหลือข้อมูล 2 ตำแหน่งสุดท้าย เมื่อการจัดเรียงเสร็จเรียบร้อยทุกตำแหน่งก็จะได้ข้อมูลเรียงลำดับตามที่ต้องการ

DTS08-02/09/52


Graph
กราฟ (Graph) เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น อีกชนิดหนึ่ง กราฟเป็นโครงสร้างข้อมูลที่มีการนำไปใช้ในงานที่เกี่ยวข้องกับการแก้ปัญหาที่ค่อนข้างซับซ้อนเช่น การวางข่าย งานคอมพิวเตอร์ การวิเคราะห์เส้นทางวิกฤติ และปัญหาเส้นทางที่สั้นที่สุด เป็นต้น
นิยามของกราฟกราฟ เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้นที่ประกอบ ด้วยกลุ่มของสิ่งสองสิ่งคือ(1) โหนด (Nodes) หรือ เวอร์เทกซ์(Vertexes)(2) เส้นเชื่อมระหว่างโหนด เรียก เอ็จ (Edges)กราฟที่มีเอ็จเชื่อมระหว่างโหนดสองโหนดถ้าเอ็จไม่มีลำดับ ความสัมพันธ์จะเรียกกราฟนั้นว่ากราฟแบบไม่มีทิศทาง (Undirected Graphs)และถ้ากราฟนั้นมีเอ็จที่มีลำดับความสัมพันธ์หรือมีทิศทางกำกับด้วยเรียกกราฟนั้นว่า กราฟแบบมีทิศทาง(Directed Graphs)บางครั้งเรียกว่า ไดกราฟ (Digraph)ถ้าต้องการอ้างถึงเอ็จแต่ละเส้นสามารถเขียนชื่อเอ็จกำกับไว้ก็ได้การเขียนกราฟแสดงโหนดและเส้นเชื่อมความสัมพันธ์ ระหว่างโหนดไม่มีรูปแบบที่ตายตัวการลากเส้นความสัมพันธ์เป็นเส้นลักษณะไหนก็ได้ที่สามารถแสดงความสัมพันธ์ระหว่างโหนดได้ถูกต้อง นอกจากนี้เอ็จจากโหนดใด ๆ สามารถวนเข้าหาตัวมันเองได้โดยทั่ว ๆ ไปการเขียนกราฟเพื่อแสดงให้เห็นความสัมพันธ์ ของสิ่งที่เราสนใจแทนโหนดด้วย จุด (pointes) หรือวงกลม (circles)ที่มีชื่อหรือข้อมูลกำกับ เพื่อบอกความแตกต่างของแต่ละโหนดและเอ็จแทนด้วยเส้นหรือเส้นโค้งเชื่อมต่อระหว่างโหนดสองโหนดถ้าเป็นกราฟแบบมีทิศทางเส้นหรือเส้นโค้งต้องมีหัวลูกศรกำกับทิศทางของความสัมพันธ์ด้วยกราฟแบบไม่มีทิศทางเป็นเซตแบบจำกัดของโหนดและเอ็จ โดยเซตอาจจะว่างไม่มีโหนดหรือเอ็จเลยเป็นกราฟว่าง (Empty Graph)แต่ละเอ็จจะเชื่อมระหว่างโหนดสองโหนด หรือเชื่อมตัวเอง เอ็จไม่มีทิศทางกำกับ ลำดับของการเชื่อมต่อกันไม่สำคัญ นั่นคือไม่มีโหนดใดเป็นโหนดแรก (First Node) หรือไม่มีโหนดเริ่มต้น และไม่มีโหนดใดเป็นโหนดสิ้นสุด
โหนดสองโหนดในกราฟแบบไม่มีทิศทางถือว่าเป็นโหนดที่ใกล้กัน (Adjacent) ถ้ามีเอ็จเชื่อมจากโหนดที่หนึ่งไปโหนดที่สองกราฟ
(ก) แสดงกราฟที่มีลักษณะ ต่อเนื่อง(Connected) เป็นกราฟที่มีเส้นทางเชื่อมจากโหนดใด ๆ ไปยังโหนดอื่นเสมอกราฟ
(ข) แสดงกราฟที่มีลักษณะเป็น วีถี(Path) มีเส้นทางเชื่อมไปยังโหนดต่าง ๆ อย่างเป็นลำดับ โดยแต่ละโหนดจะเป็นโหนดที่ใกล้กันกับโหนดที่อยู่ถัดไปกราฟ
(ค) แสดงกราฟที่เป็นวัฎจักร (Cycle)ซึ่งต้องมีอย่างน้อย 3 โหนด ที่โหนดสุดท้ายต้องเชื่อมกับโหนดแรกกราฟ
(ง) แสดงกราฟที่มีลักษณะ ไม่ต่อเนื่อง(Disconnected) เนื่องจากไม่มีเส้นทางเชื่อมจากโหนด 3 ไปยังโหนดอื่นเลยกราฟ
(จ) แสดงกราฟที่เป็นทรี โดยทรีเป็นกราฟที่ต่อเนื่อง ไม่มีทิศทาง และไม่เป็นวัฏจักร
กราฟแบบมีทิศทาง เป็นเซตแบบจำกัดของโหนดและเอ็จ โดยเซตอาจจะว่างไม่มีโหนดหรือเอ็จเลยเป็นกราฟว่าง (Empty Graph) แต่ละเอ็จจะเชื่อมระหว่างโหนดสองโหนด เอ็จมีทิศทางกำกับแสดงลำดับของการเชื่อมต่อกัน โดยมีโหนดเริ่มต้น(Source Node) และ โหนดสิ้นสุด (Target Node)รูปแบบต่าง ๆ ของกราฟแบบมีทิศทางเหมือนกับรูปแบบ ของกราฟไม่มีทิศทาง ต่างกันตรงที่กราฟแบบนี้จะมีทิศทางกำกับด้วยเท่านั้น
การแทนกราฟในหน่วยความจำ
ในการปฏิบัติการกับโครงสร้างกราฟ สิ่งที่ต้องการจัดเก็บ จากกราฟโดยทั่วไปก็คือ เอ็จ ซึ่งเป็นเส้นเชื่อมระหว่างโหนดสองโหนด มีวิธีการจัดเก็บหลายวิธี วิธีที่ง่ายและตรงไปตรงมาที่สุดคือ การเก็บเอ็จในแถวลำดับ 2 มิติการแทนกราฟในหน่วยความจำด้วยวิธีเก็บเอ็จทั้งหมดใน แถวลำดับ 2 มิติ จะค่อนข้างเปลืองเนื้อที่ เนื่องจากมีบางเอ็จที่เก็บซ้ำอาจหลีกเลี่ยงปัญหานี้ได้โดยใช้แถวลำดับ 2 มิติเก็บโหนดและ พอยเตอร์ชี้ไปยงตำแหน่งของโหนดต่าง ๆ ที่สัมพันธ์ด้วย และใช้ แถวลำดับ1 มิติเก็บโหนดต่าง ๆ ที่มีความสัมพันธ์กับโหนดในแถวลำดับ 2 มิติการจัดเก็บกราฟด้วยวิธีเก็บโหนดและพอยน์เตอร์นี้ยุ่งยาก ในการจัดการเพิ่มขึ้นเนื่องจากต้องเก็บโหนดและพอยน์เตอร์ในแถวลำดับ 2 มิติ และต้องจัดเก็บโหนดที่สัมพันธ์ด้วยในแถวลำดับ1 มิติ อย่างไรก็ตามทั้งสองวิธีไม่เหมาะกับกราฟที่มีการเปลี่ยนแปลง ตลอดเวลา ควรใช้ในกราฟที่ไม่มีการเปลี่ยนแปลงตลอดการใช้งานเพราะถ้ามีการเปลี่ยนแปลงส่วนใดส่วนหนึ่งของกราฟจะกระทบกับส่วนอื่น ๆ ที่อยู่ในระดับที่ต่ำกว่าด้วยเสมอ
กราฟที่มีการเปลี่ยนแปลงตลอดเวลาอาจจะใช้วิธีแอดจาเซนซีลิสต์(Adjacency List) ซึ่งเป็นวิธีที่คล้ายวิธีจัดเก็บกราฟด้วยการเก็บโหนดและพอยน์เตอร์ แต่ต่างกันตรงที่ จะใช้ ลิงค์ลิสต์แทนเพื่อความสะดวกในการเปลี่ยนแปลงแก้ไขวิธีแทนกราฟในความจำหลักอีกวิธีหนึ่งซึ่งเป็นที่นิยมใช้ กันมากที่สุดคือ การแทนด้วยแอดจาเซนซีเมทริกซ์(Adjacency Matrix) โดยที่ถ้ากราฟ G มีทั้งหมด nโหนด แอดจาเซนซีเมทริกซ์เป็นเมทริกซ์จัตุรัสขนาด n x nสมมติว่าคือเมทริกซ์ M แต่ละ M(i,j) เมื่อ i, j = 1, 2, 3, . . ., nจะมีค่าเป็น 1 ถ้ามีเอ็จเชื่อมความสัมพันธ์ระหว่างโหนด iไปยังโหนด j และมีค่าเป็น 0 ถ้าไม่มีเอ็จเชื่อมความสัมพันธ์จากโหนด i ไปยังโหนด j หรืออาจจะกำหนดด้วย ค่าตรรกะ (BooleanValue) ก็ได้ลักษณะที่น่าสนใจอย่างหนึ่งของแอดจาเซนซีเมทริกซ์ก็คือ สามารถหาได้ว่ามีจำนวนเส้นทางกี่เส้นทางจากโหนด Xi ไปยังโหนด Xj ใด ๆ ได้ โดยดูจากค่าในแอดจาเซนซีเมทริกซ์ เช่นถ้า M เป็นแอดจาเซนซีเมทริกซ์ Mk เป็นการคูณเมทริกซ์ M ด้วยตัวมันเอง k ครั้ง และ Mkij เป็นสมาชิกในแถวที่ i คอลัมน์ที่ j ของเมทริกซ์ Mk
อาจกล่าวได้ว่า เมทริกซ์ M บอกให้ทราบว่ามีเส้นทางจากโหนดในแถวที่ i ไปยังโหนดในคอลัมน์ที่ j ขนาดหนึ่งจำนวนเส้นทางเมทริกซ์ M2 บอกให้เราทราบว่ามีเส้นทางจากโหนดในแถวที่ i ไปยังโหนดในคอลัมน์ที่ jขนาดสองจำนวนเส้นทาง เมทริกซ์ M3 บอกให้เราทราบว่ามีเส้นทางจากโหนดในแถวที่ iไปยังโหนดในคอลัมน์ที่ j ขนาดสามจำนวนเส้นทาง และสมาชิก ใด ๆ มีค่าดังนี้
- ถ้า Mkij = 0 จะได้ว่าไม่มีเส้นทางขนาดk จากโหนดในแถวที่ i ไปยังโหนดในคอลัมน์ที่ j
- ถ้า Mkij = p เมื่อ p เป็นจำนวนเต็มบวก ได้ว่ามีเส้นทางขนาด k จำนวน pเส้นทาง จากโหนดในแถวที่ i ไปยังโหนดในคอลัมน์ที่ j
การท่องไปในกราฟ
การท่องไปในกราฟ (graph traversal) คือกระบวนการเข้าไปเยือนโหนดในกราฟ โดยมีหลักในการทำงานคือ แต่ละโหนดจะถูกเยือนเพียงครั้งเดียว สำหรับการท่องไปในทรีเพื่อเยือนแต่ละโหนดนั้นจะมีเส้นทางเดียวแต่ในกราฟระหว่างโหนดอาจจะมีหลายเส้นทาง ดังนั้นเพื่อป้องกันการท่องไปในเส้นทางที่ซ้ำเดิมจึงจำเป็นต้องทำเครื่องหมายบริเวณที่ได้เยือนเสร็จเรียบร้อยแล้วเพื่อไม่ให้เข้าไปเยือนอีก สำหรับเทคนิคการท่องไปในกราฟมี 2 แบบดังนี้
1. การท่องแบบกว้าง (Breadth First Traversal)วิธีนี้ทำโดยเลือกโหนดที่เป็นจุดเริ่มต้น ต่อมาให้เยือนโหนดอื่นที่ใกล้กันกับโหนดเริ่มต้นทีละระดับจนกระทั่งเยือนหมดทุกโหนดในกราฟ
2. การท่องแบบลึก (Depth First Traversal)การทำงานคล้ายกับการท่องทีละระดับของทรี โดยกำหนดเริ่มต้นที่โหนดแรกและเยือนโหนดถัดไปตามแนววิถีนั้นจนกระทั่งนำไปสู่ปลายวิถีนั้น จากนั้นย้อนกลับ (backtrack) ตามแนววิถีเดิมนั้น จนกระทั่งสามารถดำเนินการต่อเนื่องเข้าสู่แนววิถีอื่น ๆ เพื่อเยือนโหนดอื่น ๆ ต่อไปจนครบทุกโหนด

วันพฤหัสบดีที่ 27 สิงหาคม พ.ศ. 2552

DTS07-26/08/52


Tree
ทรี (Tree) เป็นโครงสร้างข้อมูลที่ความสัมพันธ์ระหว่าง โหนดจะมีความสัมพันธ์ลดหลั่นกันเป็นลำดับชั้น (Hierarchical Relationship)ได้มีการนำรูปแบบทรีไปประยุกต์ใช้ในงานต่าง ๆ อย่างแพร่หลาย ส่วนมากจะใช้สำหรับแสดงความสัมพันธ์ระหว่างข้อมูลเช่น แผนผังองค์ประกอบของหน่วยงานต่าง ๆโครงสร้างสารบัญหนังสือ เป็นต้น
แต่ละโหนดจะมีความสัมพันธ์กับโหนดในระดับที่ต่ำลงมา หนึ่งระดับได้หลาย ๆ โหนดเรียกโหนดดังกล่าวว่า โหนดแม่ (Parent orMother Node)โหนดที่อยู่ต่ำกว่าโหนดแม่อยู่หนึ่งระดับเรียกว่า โหนดลูก (Child or Son Node)โหนดที่อยู่ในระดับสูงสุดและไม่มีโหนดแม่เรียกว่า โหนดราก (Root Node)
โหนดที่มีโหนดแม่เป็นโหนดเดียวกันเรียกว่า โหนดพี่น้อง (Siblings)โหนดที่ไม่มีโหนดลูก เรียกว่าโหนดใบ (Leave Node)เส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดสองโหนดเรียกว่า กิ่ง (Branch)
นิยามของทรี
1. นิยามทรีด้วยนิยามของกราฟทรี คือ กราฟที่ต่อเนื่องโดยไม่มีวงจรปิด (loop) ในโครงสร้าง โหนดสองโหนดใด ๆ ในทรีต้องมีทางติดต่อกันทางเดียวเท่านั้น และทรีที่มี N โหนด ต้องมีกิ่งทั้งหมด N-1 เส้นการเขียนรูปแบบทรี อาจเขียนได้ 4
ก) แบบที่มีรากอยู่ด้านบน
ข) แบบที่มีรากอยู่ด้านล่าง
ค) แบบที่มีรากอยู่ด้านซ้าย
ง) แบบที่มีรากอยู่ด้านขวา
2. นิยามทรีด้วยรูปแบบรีเคอร์ซีฟทรีประกอบด้วยสมาชิกที่เรียกว่าโหนด โดยที่ ถ้าว่าง ไม่มีโหนดใด ๆ เรียกว่านัลทรี (Null Tree) และถ้ามีโหนดหนึ่งเป็นโหนดราก ส่วนที่เหลือจะแบ่งเป็นทรีย่อย (Sub Tree)T1, T2, T3,…,Tk โดยที่ k>=0 และทรีย่อยต้องมีคุณสมบัติเป็นทรี
นิยามที่เกี่ยวข้องกับทรี
1. ฟอร์เรสต์ (Forest)หมายถึง กลุ่มของทรีที่เกิดจากการเอาโหนดรากของทรีออกหรือ เซตของทรีที่แยกจากกัน(Disjoint Trees)
2. ทรีที่มีแบบแผน (Ordered Tree)หมายถึง ทรีที่โหนดต่าง ๆ ในทรีนั้นมีความสัมพันธ์ที่แน่นอน เช่น ไปทางขวาไปทางซ้าย เป็นต้น
3. ทรีคล้าย (Similar Tree) คือทรีที่มีโครงสร้างเหมือนกัน หรือทรีที่มีรูปร่างของทรีเหมือนกัน โดยไม่คำนึงถึงข้อมูลที่อยู่ในแต่ละโหนด
4. ทรีเหมือน (Equivalent Tree) คือทรีที่เหมือนกันโดยสมบูรณ์ โดยต้องเป็นทรีที่คล้ายกันและแต่ละโหนดในตำแหน่งเดียวกันมีข้อมูลเหมือนกัน
5. กำลัง (Degree) หมายถึงจำนวนทรีย่อยของโหนด นั้น ๆ เช่นในรูปโหนด “B” มีกำลังเป็น 1 เพราะมีทรีย่อย คือ {“D”}ส่วนโหนด “C” มีค่ากำลังเป็นสอง เพราะมีทรีย่อย คือ {“E”, “G”, “H”, “I”} และ {“F”}
6. ระดับของโหนด (Level of Node) คือระยะทางในแนวดิ่งของโหนดนั้น ๆ ที่อยู่ห่างจากโหนดราก เมื่อกำหนดให้ โหนดรากของทรีนั้นอยู่ระดับ 1และกิ่งแต่ละกิ่งมีความเท่ากันหมด คือ ยาวเท่ากับ 1หน่วย ซึ่งระดับของโหนดจะเท่ากับจำนวนกิ่งที่น้อยที่สุดจากโหนดรากไปยังโหนดใด ๆ บวกด้วย 1และจำนวนเส้นทางตามแนวดิ่งของโหนดใด ๆ ซึ่งห่างจากโหนดราก เรียกว่า ความสูง (Height) หรือความลึก (Depth)
การแทนที่ทรีในหน่วยความจำหลัก
การแทนที่โครงสร้างข้อมูลแบบทรีในความจำหลักจะมีพอยเตอร์เชื่อมโยงจากโหนดแม่ไปยังโหนดลูก แต่ละโหนดต้องมีลิงค์ฟิลด์เพื่อเก็บที่อยู่ของโหนดลูกต่าง ๆ นั่นคือจำนวน ลิงค์ฟิลด์ของแต่ละโหนดขึ้นอยู่กับจำนวนของโหนดลูกการแทนที่ทรี ซึ่งแต่ละโหนดมีจำนวนลิงค์ฟิลด์ไม่เท่ากัน ทำให้ยากต่อการปฏิบัติการ วิธีการแทนที่ที่ง่ายที่สุดคือ ทำให้แต่ละโหนดมี จำนวนลิงค์ฟิลด์เท่ากัน โดยอาจใช้วิธีการต่อไปนี้
1. โหนดแต่ละโหนดเก็บพอยเตอร์ชี้ไปยังโหนดลูกทุกโหนด การแทนที่ทรีด้วยวิธีนี้ จะให้จำนวนฟิลด์ในแต่ละโหนดเท่ากันโดยกำหนดให้มีขนาดเท่ากับจำนวนโหนดลูกของโหนดที่มีลูกมากที่สุด โหนดใดไม่มีโหลดลูกก็ให้ค่าพอยเตอร์ในลิงค์ฟิลด์นั้นมีค่าเป็น Nullและให้ลิงค์ฟิลด์แรกเก็บค่าพอยเตอร์ชี้ไปยังโหนด ลูกลำดับที่หนึ่ง ลิงค์ฟิลด์ที่สองเก็บค่าพอยเตอร์ชี้ไปยังโหนดลูกลำดับที่สอง และลิงค์ฟิลด์อื่นเก็บค่าพอยเตอร์ของโหนดลูกลำดับ ถัดไปเรื่อย ๆการแทนทรีด้วยโหนดขนาดเท่ากันค่อนข้างใช้เนื้อที่จำนวนมาก เนื่องจากแต่ละโหนดมีจำนวนโหนดลูกไม่เท่ากันหรือบางโหนดไม่มีโหนดลูกเลยถ้าเป็นทรีที่แต่ละโหนดมีจำนวนโหนดลูกที่แตกต่างกันมาก จะเป็นการสิ้นเปลืองเนื้อที่ในหน่วยความจำโดยเปล่าประโยชน์
2. แทนทรีด้วยไบนารีทรีเป็นวิธีแก้ปัญหาเพื่อลดการ สิ้นเปลืองเนื้อที่ในหน่วยความจำก็คือกำหนดลิงค์ฟิลด์ให้มีจำนวนน้อยที่สุดเท่าที่จำเป็นเท่านั้น
โดยกำหนดให้แต่ละโหนดมีจำนวนลิงค์ฟิลด์สองลิงค์ฟิลด์
-ลิงค์ฟิลด์แรกเก็บที่อยู่ของโหนดลูกคนโต
-ลิงค์ฟิลด์ที่สองเก็บที่อยู่ของโหนดพี่น้องที่เป็นโหนดถัดไป
โหนดใดไม่มีโหนดลูกหรือไม่มีโหนดพี่น้องให้ค่าพอยน์เตอร์ในลิงค์ฟิลด์มีค่าเป็น Null
โครงสร้างทรีที่แต่ละโหนดมีลิงค์ฟิลด์แค่สองลิงค์ฟิลด์ ซึ่งช่วยให้ประหยัดเนื้อที่ในการจัดเก็บได้มาก เรียกโครงสร้างทรีที่แต่ละโหนดมีจำนวนโหนดลูกไม่เกินสองหรือแต่ละโหนดมีจำนวนทรีย่อยไม่เกินสองนี้ว่า ไบนารีทรี (Binary Tree)
ไบนารีทรีที่ทุก ๆ โหนดมีทรีย่อยทางซ้ายและทรีย่อยทางขวา ยกเว้นโหนดใบ และโหนดใบทุกโหนดจะต้องอยู่ที่ระดับเดียวกันเรียกว่า ไบนารีทรีแบบสมบูรณ์ (complete binary tree)สามารถคำนวณจำนวนโหนดทั้งหมดในไบนารีทรีแบบสมบูรณ์ได้ถ้ากำหนดให้ L คือระดับของโหนดใด ๆ และN คือจำนวนโหนดทั้งหมดในทรีจะได้ว่าระดับ 1 มีจำนวนโหนด 1 โหนดระดับ 2 มีจำนวนโหนด 3 โหนดระดับ 3 มีจำนวนโหนด 7 โหนด
ระดับ L มีจำนวนโหนด 2L – 1 โหนดนั่นคือ จำนวนโหนดทั้งหมดในทรีสมบูรณ์ที่มี L ระดับ สามารถคำนวณได้จากสูตรดังนี้
N = 2L – 1
การแปลงทรีทั่วไปให้เป็นไบนารีทรี
ขั้นตอนการแปลงทรีทั่วๆ ไปให้เป็นไบนารีทรี มีลำดับขั้นตอนการแปลง ดังต่อไปนี้1. ให้โหนดแม่ชี้ไปยังโหนดลูกคนโต แล้วลบความสัมพันธ์ ระหว่างโหนดแม่และโหนดลูกอื่น ๆ2. ให้เชื่อมความสัมพันธ์ระหว่างโหนดพี่น้อง3. จับให้ทรีย่อยทางขวาเอียงลงมา 45 องศา
การท่องไปในไบนารีทรี
ปฏิบัติการที่สำคัญในไบนารีทรี คือ การท่องไปในไบนารีทรี (Traversing Binary Tree) เพื่อเข้าไปเยือนทุก ๆโหนดในทรี ซึ่งวิธีการท่องเข้าไปต้องเป็นไปอย่างมีระบบแบบแผน สามารถเยือนโหนดทุก ๆ โหนด ๆ ละหนึ่งครั้งวิธีการท่องไปนั้นมีด้วยกันหลายแบบแล้วแต่ว่าต้องการลำดับขั้นตอนการเยือนอย่างไร โหนดที่ถูกเยือนอาจเป็นโหนดแม่ (แทนด้วย N)ทรีย่อยทางซ้าย (แทนด้วย L)หรือทรีย่อยทางขวา (แทนด้วย R)
มีวิธีการท่องเข้าไปในทรี 6 วิธี คือ NLRLNR LRN NRL RNL และ RLN แต่วิธีการท่องเข้าไปไบนารีทรีที่นิยมใช้กันมากเป็นการท่องจากซ้ายไปขวา 3 แบบแรกเท่านั้นคือ NLR LNR และ LRN ซึ่งลักษณะการนิยามเป็นนิยามแบบ รีเคอร์ซีฟ(Recursive)ซึ่งขั้นตอนการท่องไปในแต่ละแบบมีดังนี้
1. การท่องไปแบบพรีออร์เดอร์(Preorder Traversal)เป็นการเดินเข้าไปเยือนโหนดต่าง ๆ ในทรีด้วยวิธีNLR มีขั้นตอนการเดินดังต่อไปนี้(1) เยือนโหนดราก(2) ท่องไปในทรีย่อยทางซ้ายแบบพรีออร์เดอร์(3) ท่องไปในทรีย่อยทางขวาแบบพรีออร์เดอร์
2.การท่องไปแบบอินออร์เดอร์(Inorder Traversal)เป็นการเดินเข้าไปเยือนโหนดต่าง ๆในทรีด้วยวิธี LNRมีขั้นตอนการเดินดังต่อไปนี้(1) ท่องไปในทรีย่อยทางซ้ายแบบอินออร์เดอร์(2) เยือนโหนดราก(3) ท่องไปในทรีย่อยทางขวาแบบอินออร์เดอร์
3. การท่องไปแบบโพสออร์เดอร์(Postorder Traversal)เป็นการเดินเข้าไปเยือนโหนดต่าง ๆในทรีด้วยวิธี LRN มีขั้นตอนการเดินดังต่อไปนี้(1) ท่องไปในทรีย่อยทางซ้ายแบบโพสต์ออร์เดอร์(2) ท่องไปในทรีย่อยทางขวาแบบโพสต์ออร์เดอร์(3) เยือนโหนดราก
เอ็กซ์เพรสชันทรี (Expression Tree)เป็นการนำเอาโครงสร้างทรีไปใช้เก็บนิพจน์ทางคณิตศาสตร์โดยเป็นไบนารีทรี ซึ่งแต่ละโหนดเก็บตัวดำเนินการ (Operator) และและตัวถูกดำเนินการ(Operand) ของนิพจน์คณิตศาสตร์นั้น ๆ ไว้ หรืออาจจะเก็บค่านิพจน์ทางตรรกะ (Logical Expression)นิพจน์เหล่านี้เมื่อแทนในทรีต้องคำนึงลำดับขั้นตอนในการคำนวณตามความสำคัญของเครื่องหมายด้วยโดยมีความสำคัญตามลำดับดังนี้
- ฟังก์ชัน
- วงเล็บ
- ยกกำลัง
- เครื่องหมายหน้าเลขจำนวน (unary)
- คูณ หรือ หาร
- บวก หรือ ลบ
- ถ้ามีเครื่องหมายที่ระดับเดียวกันให้ทำจากซ้ายไปขวา
การแทนนิพจน์ในเอ็กซ์เพรสชันทรี ตัวถูกดำเนินการจะเก็บอยู่ที่โหนดใบ ส่วนตัวดำเนินการจะเก็บในโหนดกิ่ง หรือโหนดที่ไม่ใช่โหนดใบเช่น นิพจน์ A + B สามารถแทนในเอ็กซ์เพรสชันทรี
ไบนารีเซิร์ชทรี
ไบนารีเซิร์ชทรี (Binary Search Tree)เป็นไบนารีทรีที่มีคุณสมบัติที่ว่าทุก ๆ โหนดในทรี ค่าของโหนดรากมีค่ามากกว่าค่าของทุกโหนดในทรีย่อยทางซ้าย และมีค่าน้อยกว่าหรือเท่ากับค่าของทุกโหนดในทรีย่อยทางขวาและในแต่ละทรีย่อยก็มี คุณสมบัติเช่นเดียวกัน
ปฏิบัติการในไบนารีเซิร์ชทรี ปฏิบัติการเพิ่มโหนดเข้าหรือดึงโหนดออกจากไบนารีเซิร์ชทรีค่อนข้างยุ่งยากกว่าปฏิบัติการในโครงสร้างอื่น ๆเนื่องจากหลังปฏิบัติการเสร็จเรียบร้อยแล้วต้องคำนึงถึงความเป็นไบนารีเซิร์ชทรีของทรีนั้นด้วยซึ่งมีปฏิบัติการดังต่อไปนี้
(1) การเพิ่มโหนดในไบนารีเซิร์ชทรี การเพิ่มโหนดใหม่เข้าไปในไบนารีเซิร์ชทรี ถ้าทรีว่างโหนดที่เพิ่มเข้าไปก็จะเป็นโหนดรากของทรี ถ้าทรีไม่ว่างต้องทำการตรวจสอบว่าโหนดใหม่ที่เพิ่มเข้ามานั้นมีค่ามากกว่าหรือน้อยกว่าค่าที่โหนดราก ถ้ามีค่ามากกว่าหรือเท่ากันจะนำโหนดใหม่ไปเพิ่มในทรีย่อยทางขวาและถ้ามีค่าน้อยกว่านำโหนดใหม่ไปเพิ่มในทรีย่อยทางซ้ายในทรีย่อยนั้นต้องทำการเปรียบเทียบในลักษณะเดียวกันจนกระทั่งหาตำแหน่งที่สามารถเพิ่มโหนดได้ ซึ่งโหนดใหม่ที่เพิ่มในทรีในที่สุดจะต้องเป็นโหนดใบ
(2) การดึงโหนดในไบนารีเซิร์ชทรีหลังจากดึงโหนดที่ต้องการออกจากทรีแล้วทรีนั้นต้องคงสภาพไบนารีเซิร์ชทรีเหมือนเดิมก่อนที่จะทำการดึงโหนดใด ๆ ออกจากไบนารีเซิร์ชทรี ต้องค้นหาก่อนว่าโหนดที่ต้องการดึงออกอยู่ที่ตำแหน่งไหนภายในทรีและต้องทราบที่อยู่ของโหนดแม่โหนดนั้นด้วยแล้วจึงทำการดึงโหนดออกจากทรีได้ ขั้นตอนวิธีดึงโหนดออกอาจแยกพิจารณาได้ 3กรณีดังต่อไปนี้
ก. กรณีโหนดที่จะดึงออกเป็นโหนดใบการดึงโหนดใบออกในกรณีนี้ทำได้ง่ายที่สุดโดยการดึงโหนดนั้นออกได้ทันที เนื่องจากไม่กระทบกับโหนดอื่นมากนัก วิธีการก็คือให้ค่าในลิงค์ฟิลด์ของโหนดแม่ซึ่งเก็บที่อยู่ของโหนดที่ต้องการดึงออกให้มีค่าเป็น Null
ข. กรณีโหนดที่ดึงออกมีเฉพาะทรีย่อยทางซ้ายหรือทรีย่อยทางขวาเพียงด้านใดด้านหนึ่ง วิธีการดึงโหนดนี้ออกสามารถใช้วิธีการเดียวกับการดึงโหนดออกจากลิงค์ลิสต์ โดยให้โหนดแม่ของโหนดที่จะดึงออกชี้ไปยังโหนดลูกของโหนดนั้นแทน
ค. กรณีโหนดที่ดึงออกมีทั้งทรีย่อยทางซ้ายและทรีย่อยทางขวาต้องเลือกโหนดมาแทนโหนดที่ถูกดึงออก โดยอาจจะเลือกมาจากทรีย่อยทางซ้ายหรือทรีย่อยทางขวาก็ได้
- ถ้าโหนดที่มาแทนที่เป็นโหนดที่เลือกจากทรีย่อยทางซ้ายต้องเลือกโหนดที่มีค่ามากที่สุดในทรีย่อยทางซ้ายนั้น
- ถ้าโหนดที่จะมาแทนที่เป็นโหนดที่เลือกมาจากทรีย่อยทางขวา ต้องเลือกโหนดที่มีค่าน้อยที่สุดในทรีย่อยทางขวานั้น

วันพฤหัสบดีที่ 20 สิงหาคม พ.ศ. 2552

DTS06-05/08/52

Queues

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

ลักษณะของคิว จะมีปลายสองข้าง ซึ่งข้างหนึ่งจะเป็นช่องทางสำหรับข้อมูลเข้าที่เรียกว่า REAR และอีกข้างหนึ่งซึ่งจะเป็นช่องทางสำหรับข้อมูลออก เรียกว่า FRONT


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

การแทนที่ข้อมูลของคิว มี 2 วิธี คือ

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

การดำเนินการเกี่ยวกับคิว
1.Create Queue คือการสร้างคิวขึ้นมา แล้วจัดสรรหน่วยความจำให้กับ Head Node และพอยเตอร์มีค่าเป็น Null
2.Enqueue คือ การเพิ่มข้อมูลลงไปในคิวโดยการเพิ่มจะเพิ่มจากส่วนท้าย
3.Dequeue คือ การนำข้อมูลในคิวออก จะออกโดยข้อมูลที่เข้าไปตัวแรกจะออกก่อน
4.Queue Front คือ การนำข้อมูลตัวแรกที่เข้าไปในคิวออกมาแสดง
5.Queue Rear คือ การนำข้อมูลตัวสุดท้ายที่เข้ามาในคิวออกมาแสดง
6.Empty Queue คือ เป็นการตรวจสอบว่าคิวนั้นยังคงว่างอยู่หรือไม่
7.Full Queue คือ เป็นการตรวจสอบว่าคิวนั้นเต็มหรือไม่
8.Queue Count คือ เป็นการนับจำนวนข้อมูลที่อยูในคิว ว่ามีจำนวนเท่าไร
9.Destroy Queue คือ การลบข้อมูลที่อยูในคิวทิ้ง

การเพิ่มข้อมูลเข้าไปในคิว

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

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

DTS05-29/07/52

การแทนที่ข้อมูลของสแตกแบบอะเรย์
การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสตจะประกอบไปด้วย 2 ส่วน คือ
1. Head Node จะประกอบไปด้วย 2ส่วนคือ top pointer และจำนวนสมาชิกในสแตก
2. Data Node จะประกอบไปด้วยข้อมูล (Data)และพอยเตอร์ ที่ชี้ไปยังข้อมูล

การดำเนินการเกี่ยวกับสแตกการดำเนินการเกี่ยวกับสแตก ได้แก่
1. Create Stack จัดสรรหน่วยความจำให้แก่ Head Nodeและส่งค่าตำแหน่งที่ชี้ไปยัง Head ของสแตกกลับมา
2.Push Stack การเพิ่มข้อมูลลงไปในสแตก
3.Pop stack การนำข้อมูลบนสุดออกจากสแตก
4. Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตกโดยไม่มีการลบข้อมูลออกจากสแตก
5.Empty Stack เป็นการตรวจสอบการวางของสแตกเพื่อไม่ให้เกิดความผิดพลาดในการนำข้อมูลออกจากสแตกที่เรียกว่า Stack Underflow
6. Full Stack เป็นการตรวจสอบว่าสแตกเต็มหรือไม่เพื่อไม่ให้เกิดความผิดพลาดในการนำข้อมูลเข้าสแตกที่เรียกว่า Stack Overflow
7. Stack Count เป็นการนับจำนวนสมาชิกในสแตก8.Destroy Stack เป็นการลบข้อมูลทั้งหมดที่อยู่ใน สแตก
8.Destroy Stack เป็นการลบข้อมูลทั้งหมดที่อยู่ใน สแตก

การใช้ สแตค เพื่อแปลรูปนิพจน์ทางคณิตศาสตร์
รูปแบบนิพจน์ทางคณิตศาสตร์
• นิพจน์ Infix คือ นิพจน์ที่เครื่องหมายดำเนินการ (Operator) อยู่ระหว่างตัวดำเนินการ (Operands) เช่น A+B-C
• นิพจน์ Prefix คือ นิพจน์ที่เครื่องหมายดำเนินการ (Operator) อยู่หน้าตัวดำเนินการ (Operands) เช่น +-AB
• นิพจน์ Postfix คือ นิพจน์ที่เครื่องหมายดำเนินการ (Operator) อยู่หลังตัวดำเนินการ (Operands) เช่น AC*+

ลำดับการทำงานของตัวดำเนินการทางคณิตศาสตร์ (Operator Priority)
มีการลำดับความสำคัญของตัวดำเนินการจากลำดับสำคัญมากสุดไปน้อยสุด คือ ลำดับที่มีความสำคัญมากที่ต้องทำก่อน ไปจนถึงลำดับที่มีความสำคัญน้อยสุดที่ไว้ทำทีหลัง ดังนี้


เครื่องหมายบวก ( + ) , ลบ ( - )
เครื่องหมายคูณ ( * ) , หาร ( / )
เครื่องหมายวงเล็บเปิด (
เครื่องหมายวงเล็บปิด )

ขั้นตอนการแปลงจากนิพจน์ Infix เป็นนิพจน์ Postfix

1. อ่านอักขระในนิพจน์ Infix เข้ามาทีละตัว
2. ถ้าเป็นตัวถูกดำเนินการจะถูกย้ายไปเป็นตัวอักษรในนิพจน์ Postfix
3. ถ้าเป็นตัวดำเนินการ จะนำค่าลำดับความสำคัญของตัว ดำเนินการที่อ่านเข้ามาเทียบกับค่าลำดับความสำคัญของตัวดำเนินการที่อยู่บนสุดของสแตก
- ถ้ามีความสำคัญมากกว่า จะถูก push ลงในสแตก
- ถ้ามีความสำคัญน้อยกว่าหรือเท่ากัน จะต้อง pop ตัวดำเนินการที่อยู่ในสแตกขณะนั้นไปเรียงต่อกับตัวอักษรในนิพจน์ Postfix
4. ตัวดำเนินการที่เป็นวงเล็บปิด “)” จะไม่ push ลงในสแตกแต่มีผลให้ตัวดำเนินการอื่น ๆ ถูก pop ออกจากสแตกนำไป เรียงต่อกันในนิพจน์ Postfix จนกว่าจะเจอ “(” จะ popวงเล็บเปิดออกจากสแตกแต่ไม่นำไปเรียงต่อ
5. เมื่อทำการอ่านตัวอักษรในนิพจน์ Infix หมดแล้ว ให้ทำการ Pop ตัวดำเนินการทุกตัวในสแตกนำมาเรียงต่อในนิพจน์Postfix

เช่น
*** เครื่องหมายดำเนินการ (operand) ได้แก่เครื่องหมาย + - * ^ ตัวถูกดำเนินการ ได้แก่ สัญลักษณ์แทนค่าตัวเลข เช่น A B C Dหรือตัวแปรอื่น
สำหรับการดำเนินการด้านการคำนวณนั้น ในระบบคอมพิวเตอร์ไม่สามารถที่จะจัดลำดับของการคำนวณในรูปแบบของ infix ได้ แต่จะแปลงเป็นนิพจน์ของ infix หรือ prefix เสียก่อน โดยลักษณะของการแปลงนิพจน์จะใช้การเปรียบเทียบความสำคัญของตัวดำเนินการ
ลำดับความสำคัญของตัวดำเนินการ
+ -
* /
(
)

ขั้นตอนการแปลง infix เป็น postfix
1.อ่านอักขระใน infix
2.ถ้าเป็น operand ย้ายไปใส่ใน postfix
3.ถ้าเป็น operator จะต้องดูลำดับความสำคัญของตัวดำเนินการด้วยแล้วใส่ลงในสแตกที่เก็บตัวดำเนินการ ถ้ามีค่ามากกว่าให้ push ถ้ามีค่าน้อยกว่าหรือเท่ากันให้ pop ออกแล้วไปเรียงต่อตัวอักษรใน postfix
4.ตัวดำเนินการที่เป็น ) จะไม่ถูก push แต่จะทำให้ตัวดำเนินการตัวอื่นถูก pop ออกมาแล้วไปเรียงต่อใน postfix
5.เมื่ออ่านอักขระใน infix หมด ให้ pop ตัวดำเนินการทุกตัวมาเรียงต่อใน postfix
*** ถ้าเจอเครื่องหมาย + - หลังเครื่องหมาย * / ให้ pop เครื่องหมายในสแตกออก
ถ้าเจอเครื่องหมาย * / หลังเครื่องหมาย + - ให้ push ลงในสแตก
การคำนวณค่า postfix
1.อ่านตัวอักษรจาก postfix ที่ละตัว
2.ถ้าเป็น operand ให้ push ไปเรื่อยๆ
3.ถ้าเป็น operator ให้ pop ตัวอักษรออก 2 ตัว แล้วทำการคำนวณตัวที่ถูก pop ที่หลังจะเป็นตัวตั้งแล้วนำ push ผลลัพธ์ลงไป

วันอังคารที่ 28 กรกฎาคม พ.ศ. 2552

DTS04-22/07/52

สรุป
Linked List
การลบโหนด (Delete node)
กำหนดค่า pList คือ พอยน์เตอร์เริ่มต้น
pPre คือ พอยน์เตอร์โหนดpLoc คือ โหนดพอยน์เตอร์
dataout คือ ข้อมูลที่จัดเก็บในโหนดหลักการทำงาน คือ ทำการลบข้อมูลพร้อมโหนดออกจากลิงค์ลิสต์และคืนค่าหน่วยความจำ
ก่อนการกำหนดค่ากำหนด pList คือ พอยน์เตอร์ที่ชี้ไปยังโหนดต้นลิสต์
pPre คือ พอยน์เตอร์ที่ใช้ไปยังลิงค์ของโหนดก่อนหน้าโหนดที่ต้องการ
pLoc คือ พอยน์เตอร์ที่ชี้ไปยังโหนดที่ต้องการลบ
dataout คือ ตำแหน่งโหนดที่จัดเก็บข้อมูลที่ต้องการลบหลังการทำงาน ข้อมูลจะถูกลบไปและทำการคืนพื้นที่ ที่จองให้กับหน่วยความจำ
การค้นหาลิสต์ (Search list)
กำหนดค่า pList พอยน์เตอร์เริ่มต้น
pPre พอยน์เตอร์โหนด
Loc พอยน์เตอร์โหนด
target ชนิดของคีย์หลักการทำงาน ทำการรันหาลิสต์และเทียบค่ากับตำแหน่งชนิดของคีย์
เพื่อตรวจสอบการตรงกันของตำแหน่งก่อนการทำงาน
กำหนด pList เป็นพอยน์เตอร์ชี้ค่าที่ตำแหน่งเริ่มต้น
กำหนด pPre เป็นพอยน์เตอร์ตัวแปรเก็บตำแหน่งโหนดก่อนหน้า
กำหนด pLoc เป็นพอยน์เตอร์ตัวแปรเก็บตำแหน่งตัวเลือก
กำหนด target เป็นคีย์ที่กำหนดการค้นหา
หลังการทำงาน กำหนด pLoc ชี้ไปยังโหนดและทำการเปรียบค่าคีย์ตามเงื่อนไขจนกว่าจะครบทุกโหนดหรือค้นเจอลิสต์ที่ต้องการการคืนค่า คืนค่าจริงหากค้นเจอลิสต์คืนค่าเท็จหากค้นไม่พบลิสต์
การตรวจสอบลิสต์ว่าง
หลักการทำงาน ทำการตรวจสอบลิสต์ว่างก่อนการทำงาน กำหนด pList ชี้ไปยังโหนดต้นลิสต์อ่านค่า countการคืนค่า คืนค่าจริงถ้า countว่างคืนค่าเท็จถ้า countไม่ว่าง
การตรวจลิสต์เต็ม
กำหนด pList เป็นพอยน์เตอร์เริ่มต้นหลักการทำงาน ทำการตรวจสอบลิสต์ว่าเต็มหรือไม่ก่อนการทำงาน ทำกำหนด pList ชี้ไปยังโหนดต้นลิสต์การคืนค่า คืนค่าจริงหากไม่สามารถสร้างลิสต์ใหม่ได้คืนค่าเท็จหากสามารถสร้างลิสต์ใหม่ได้การยกเลิกลิสต์การกำหนด pList พอยน์เตอร์เริ่มต้นหลักการทำงาน ทำการลบข้อมูลทั้งหมดในลิสต์และโหนดต่างๆออกให้หมดก่อนการทำงาน pList ชี้ไปยังโหนดต้นลิสต์ที่จัดเก็บข้อมูลของลิสต์หลังการทำงาน ข้อมูลทุกตัวพร้อมกับโหนดต้นลิสต์ถูกลบการคืนค่า พอยน์เตอร์มีค่าเป็น nul
Stack
สแต็ก คือ ส่วนที่ใช้สำหรับอ่านและเขียนในหน่วยความจำ (RAM) และใช้สำหรับ CPU เท่านั้นในการนำข้อมูลเข้าไปเก็บ ซึ่งเป็นที่เก็บข้อมูลชั่วคร่าว เพราะว่าพื้นที่ที่ใช้สำหรับเก็บข้อมูลของ CPU (รีจีสเตอร์) มีใช้งานอย่างจำกัดในส่วนที่เป็นสแต็กเราจะมีรีจีสเตอร์ที่ใช้อยู่ 2 ตัวคือ SS(Stack Segment) และ SP(Stack Pointer) โดยที่ SS จะเป็นตัวกำหนดที่อยู่ของสแต็ก และมี SP เป็นตัวชี้ที่อยู่ของข้อมูลแต่ละตัว โดยจะมีคำสั่งที่ใช้สำหรับเขียนและอ่าน อยู่ 4 คำสั่ง คือคำสั่งที่ใช้สำหรับเขียน PUSH คำสั่งที่ใช้สำหรับอ่าน POP คำสั่งที่ใช้สำหรับเก็บสถานะของแฟล็ก PUSHF คำสั่งที่ใช้สำหรับอ่านสถานะของแฟล้ก POPF
การเก็บข้อมูลลงในสแต็ก PUSH
ในการเก็บข้อมูลลงในสแต็กนั้น จะทำการลดค่าของ SP ลงครั้ง 2 ไบต์ในการเขียนแต่ละครั้ง เพราะว่าในการเขียนแต่ละครั้งจะทำการเขียนครั้งละ 16 บิต ซึ่งต้องใช้หน่วยความจำ 2 ไบต์ และในเก็บข้อมูลลงสู่สแต็ก นั้นใน 80x86 จะทำการเก็บไบต์ต่ำก่อน สมมุตว่า AH = 24H และ AL=12H เมื่อเราใช้คำสั่ง PUSH AX และนำไปเก็บในตำแหน่งหน่วยความจำที่แอดเดรส SS:1234 เก็บข้อมูลดังนี้ 12H และตำแหน่งที่ SS:1235 จะเก็บข้อมูลดังนี้ 24H
การอ่านข้อมูลออกจากสแต็ก POP

ในการในการอ่านข้อมูลออกจากสแต็กนั้น จะทำการเพิ่มค่าของ SP ขึ้นครั้ง 2 ไบต์ในการอ่านแต่ละครั้ง เพราะว่าในการอ่านแต่ละครั้งจะทำการอ่านครั้งละ 16 บิต ซึ่งต้องใช้หน่วยความจำ 2 ไบต์ และในอ่านข้อมูลออกจากสแต็ก นั้นใน 80x86 จะทำการอ่านไบต์ต่ำก่อน สมมุตว่าที่แอดเดรสที่ SS:1234Hมีข้อมูลดังนี้ 12H และที่ตำแหน่ง SS:1235Hมีข้อมูล 24Hตามลำดับ เมื่อเราใช้คำสั่ง POP AX ข้อมูลในรีจีสเตอร์ AX จะได้ดังนี้ AH=24H และAL=12H

ตัวอย่างสแตกที่เราเห็นในชีวิตประจำวันทั่วไป

1.เทปกาวสองหน้า = มันพันข้างในก่อนเวลาใช้ก็ต้องดึงข้างนอกออกใช้ก่อน

2.กล่องคุ๊กกี้ชิ้นใหญ่ๆที่มีคุ๊กกี้ = กล่องคุ๊กกี้ที่เรียงกันสวยๆจะเรียงอันล่างก่อนเวลากินก็ต้องกินจากข้างบน

ก่อน

3.ตู้ ATM = เงินที่เก็บอยู่ในตู้วางล่างสุดก่อนแล้วเวลาจะออกมาก็ใบบนออกมาก่อน

การบ้าน

แบบ Stdio.h

#include
void main()
{
int N1, N2, Sum;

printf("please input an integer number : ");
scanf("%d",&N1);
printf("please input another integer number : ");
scanf("%d",&N2);

Sum = N1 + N2;
printf("%d + %d = %d",N1,N2,Sum);
}



...................................................................................................................................
แบบ iostream.h

#include
void main()
{
int N1, N2, Sum;

cout<<"please input an integer number : "; cin>>N1;
cout<<"please input another integer number : "; cin>>N2;

Sum = N1 + N2;
cout

................................................................................................

0utput

แบบ Stdio.h

please input an integer number :......


please input another integer number :.......


เป็นผลรวม

แบบ iostream.h

please input an integer number :......

please input another integer number :.......

เป็นผลรวม