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

สรุปทั้งหมดที่ได้รับจากการฝึกวิชาชีพ

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

ประโยชน์ที่ได้รับ
1. ได้เรียนรู้จากการทำงานร่วมกับผู้อื่น
2. ได้รู้จักการตรงต่อเวลาการทำงาน
3. ได้สร้างมนุษย์สัมพันธ์ในองค์กร ในการทำงานเราไม่ทราบต้องทำอย่างไรบ้างเราจึงต้องถามเพื่อความเข้าใจ
4. ได้การแสดงออกมาขึ้นในการทำงานและมีความรับผิดชอบมากขึ้น
5. ฝึกการใช้มารยาทในการทำงาน
6. ได้เรียนรู้เกี่ยวกับเอกสารในการจัดอบรมมากขึ้น

วันพฤหัสบดีที่ 24 กุมภาพันธ์ พ.ศ. 2554

สรุปผลการปฏิบัติงานสัปดาห์ที่ 18 วันที่ 28 กุมภาพันธ์ 2554

- พิมพ์บันทึกเรื่องหลักสูตรอบรม
- แก้ไขบันทึกเรื่องการจัดอบรม
- ส่งอีเมล์ให้ฝ่าย อพบ.

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

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

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

- ทำบันทึกขออนุมัติจำนวน 4 เรื่อง
- แก้ไขบันทึกขออนุมัติจัดอบรม จำนวน 3 ฉบับ
- ถ่ายเอกสารจำนวน 10 ชุด
- ทำบันทึกเรื่องขอเคลียร์ค่าใช้จ่ายจัดอบรมพนักงานใหม่ จำนวน 1 ฉบับ
- ขนย้ายอุปกรณ์คอมพิวเตอร์ไปไว้ที่ห้อง 478
- แก้ไขบันทึกการจัดอบรมในหลักสูตร พัฒนาบุคลากร
- ทำการขนย้ายตู้สำนักงานไปไว้ที่ห้อง 478
- พิมพ์บันทึกเร่องกำหนดการเข้าร่วมประชุม

ปัญหา/อุปสรรค
1. ในการพิมพ์บันทึกขออนุมัติต้องตรวจสอบให้ละเอียดก่อนทำการปริ้น
2. ในการขนย้ายอุปกรณ์ทำให้ขนย้ายลำบาก เพราะใส่กระโปรงมาทำให้ขนย้ายไม่สะดวก มีฝุ่นเยอะเป็นจำนวนมากต้องนำผ้าปิดจมูกมาปิด

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

สรุปผลการปฏิบัติงานสัปดาห์ที่ 16 ระหว่างวันที่ 14 - 18 กุมภาพันธ์ 2554

- พิมพ์ใบสั่งจ่ายย่อยจำนวน 25 ชุด
- พิมพ์หลักสูตรการเรียนรู้ข้ามสายงานผู้ว่าการในสายงาน รวพ.
- พิมพ์บันทึกเรื่องการพัฒนาบุคคลอย่างมีประสิทธิภาพ
- ส่งอีเมล์ให้ฝ่าย อพบ.
- พิมพ์บันทึกเรื่อง การจัดทำแผนพัฒนารายบุคคล IDP
- พิมพ์บันทึกเรื่อง คุณธรรมสำหรับนักบริหาร
- แก้ไขบันทึกเรื่อง บรรยายให้ความรู้เกี่ยวกับ KM
- พิมพ์บันทึกเรื่อง บรรยายให้ความรู้เกี่ยวกับ SEPA SMS


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

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

สรุปผลการปฏิบัติงานสัปดาห์ที่ 15 ระหว่างวันที่ 7 - 11 กุมภาพันธ์ 2554

- จัดเตรียมเอกสารการอบรม
- ส่ง E-mail ให้ฝ่าย อพบ.
- หารายชื่อพนักงานที่เข้าร่วมอบรม
- สแกนงาน
- แก้ไขรายงานผลดำเนินการให้เปลี่ยนเป็นตัวเลขไทยทั้งหมด
- จัดทำหน้าปกรายงานผลดำเนินการ
- ทำลายเอกสารที่ยังเหลืออยู่
- เข้าเล่มรายงานจำนวน 2 เล่ม

ปัญหา/อุปสรรค
1. ในการจัดเตรียมเอกสารทำให้งงและสับสน เพราะมีเอกสารหลายชุด
2. ในการหารายชื่อพนักงานที่เข้าร่วมอบรมเป็นเรื่องที่ยากมาก เพราะว่ารายชื่อที่ส่งมาส่วนมากจะส่งมาทางแฟ็กซ์ ทำให้อ่านยากมาก ๆ จึงต้องทำการหาข้อมูลทางเว็บไซต์ของ กฟผ.

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

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

- เข้าเล่มรายงานจำนวน 5 เล่ม
- สแกนงานให้ฝ่าย อพบ.
- แก้ไขแผนงบประมาณปี 54
- ทำรายงานการประชุม
- เข้ารับฟังการคัดเลือก QCC ปี 54
- ทำแผนพัฒนาบุคลากรปี 54
- ส่ง E-mail ให้ฝ่าย อหพ.

ปัญหา/อุปสรรค
1. แผงงบประมาณปี 54 ตัวเลขไม่ตรงกันทำให้ต้องกับมาแก้ไขใหม่ทั้งหมด
2. ในการเข้ารับฟังการคัดเลือก QCC ปี 54 ไม่มีที่นั่งเพราะคนเยอะมาก ทำให้ต้องยืนเป็นเวลานาน

วันอาทิตย์ที่ 30 มกราคม พ.ศ. 2554

สรุปผลการปฏิบัติงานสัปดาห์ที่ 13 ระหว่างวันที่ 24 - 28 มกราคม 2554

- พิมพ์บันทึกเรื่อง การขอใช้ห้องประชุม
- พิมพ์หน้าปกรายงานเรื่อง รายงานผลการตรวจประเมินองค์กร Feedback Report การไฟฟ้าฝ่ายผลิตแห่งประเทศไทย
- พิมพ์เอกสารการอบรม
- ส่ง E-mail ให้ฝ่าย อพบ.
- ทำงบประมาณปี 54
- ช่วยขนย้ายอุปกรณ์ เช่น เก้าอี้ เอกสารต่าง ๆ
- ทำแบบฟอร์มใบสั่งจ่ายย่อย
- พิมพ์รายชื่อผู้เข้าร่วมอบรมจำนวน 52 คน
- ถ่ายเอกสารจำนวน 60 ชุด
- พิมพ์รายละเอียดหลักสูตรการพัฒนาบุคลากร 20 หลักสูตร
- ขนย้ายเอกสารที่ลาย ลงไปไว้ชั้นที่ 1


ปัญหา/อุปสรรค
1. ในการจัดพิมพ์บันทึกต้องตรวจสอบให้ละเอียด
2. การจัดทำงบประมาณปี 54 มีตัวเลขเยอะทำให้สับสนและงงมาก ต้องค่อย ๆ ตรวจสอบไปทีละตัว
3. การขนย้ายเอกสารที่ทำลายทำให้ลำบากเพราะมีน้ำหนักมากและเยอะ ทำให้ขนหลายรอบ

วันอาทิตย์ที่ 23 มกราคม พ.ศ. 2554

สรุปผลการปฏิบัติงานสัปดาห์ที่ 12 ระหว่างวันที่ 17 - 21 มกราคม 2554

- ส่ง E-mail
- ถ่ายเอกสารจำนวน 50 ชุด
- ทำลายเอกสาร
- เข้าเล่มรายงานจำนวน 5 เล่ม
- พิมพ์หน้าปกเรื่อง สมรรถะตามลักษณะงาน แล้วนำไปเข้าเล่ม
- จัดทำเอกสารการอบรม
- หาจำนวนสายงานรองผู้ว่าการทั้งหมดว่ามีกี่แผนก และกี่ฝ่าย มี 8 สายงานรองผู้ว่าการ ทั้งหมด 89 ฝ่าย


ปัญหา/อุปสรรค
1. ทำลายเอกสารโดยวิธีการฉีกทำให้เจ็บมือและเสียเวลามาก
2. จัดทำเอกสารการอบรมมีหลายชุดต้องทำการตรวจสอบให้ละเอียด
3. ในการหาจำนวนสายงานรองผู้ว่าการนั้นต้องเข้าไปในเว็บแต่ละฝ่ายทำให้ยากแก่การหามาก

วันเสาร์ที่ 15 มกราคม พ.ศ. 2554

สรุปผลการปฏิบัติงานสัปดาห์ที่ 11 ระหว่างวันที่ 10 - 14 มกราคม 2554

- พิมพ์บันทึกเรื่อง การซ่อมเครื่องปริ้นเตอร์
- จัดทำเอกสารการอบรม
- ถ่ายเอกสารจำนวน 40 ชุด
- ส่ง E-mail ให้แผนกต่าง ๆ


ปัญหา/อุปสรรค
1. ในการจัดทำบันทึกต้องตรวจสอบให้ละเอียด ในเรื่องคำถูกและผิด
2. ในการถ่ายเอกสารจำนวนมากทำให้กระดาษติดเครื่อง ต้องเรียกเจ้าหน้าที่มาซ่อม
3. จัดทำเอกสารการอบรมมีหลายชุดต้องทำการตรวจสอบให้ละเอียดอย่างมาก

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

- ทำลายเอกสาร
- ขนย้ายอุปกรณ์สำนักงาน
- จัดพิมพ์บันทึกเรื่อง เครื่องปริ้นเตอร์


ปัญหา/อุปสรรค
1. การทำลายเอกสารด้วยวิธีการฉีกทำให้เจ็บมือ ส่วนเครื่องย่อยเอกสารทำให้ช้า
2. ขนย้ายอุปกรณ์มีฝุ่นเยอะ ต้องนำผ้าปิดจมูกมาปิด

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

สรุปผลการปฏิบัติงานสัปดาห์ที่ 9 ระหว่างวันที่ 27 - 30 ธันวาคม 2553

- ทำลายเอกสารทั้งอาทิตย์ เนื่องจากจะทำการเปลี่ยนงานใหม่ทั้งหมด



ปัญหา/อุปสรรค
1. การทำลายเอกสารโดยวิธีการฉีกทำให้เจ็บมือ ส่วนเครื่องย่อยกระดาษทำให้เสียเวลาและช้ามาก
และเอกสารมีฝุ่นเยอะ

วันอาทิตย์ที่ 26 ธันวาคม พ.ศ. 2553

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

- ถ่ายเอกสารจำนวนทั้งหมด 67 ชุด
- พิมพ์สรุปยอดค่าใช้จ่ายปี 54
- ทำสันแฟ้มจำนวน 2 อัน
- พิมพ์บันทึกเรื่องขอความอนุเคราะห์ในการแจกปฏิทินปี 54 จำนวน 200 รายการ
- พิมพ์เรื่ององค์ความรู้ แนวทางการป้องกันการเกิดสนิมเหล็กของอาคารหอหล่อเย็น
- ส่ง E-mail ให้หน่วยงาน อหพ.
- ทำตารางรายชื่อหลักสูตรการอบรมด้านนิวเคลียร์เทคโนโลยี กฟผ.
- กิจกรรมกีฬาสี Egat Game


ปัญหา / อุปสรรค
1. เครื่องถ่ายเอกสารหมึดหมดไม่สามารถถ่ายต่อได้ จึงนำไปถ่ายตึกฝั่งตรงข้าม
2. ในการพิมพ์องค์ความรู้ทำให้อ่านลายมือยากมากเพราะเป็นการส่งแฟ็กซ์มา ต้องค่อย ๆ อ่าน

วันอาทิตย์ที่ 19 ธันวาคม พ.ศ. 2553

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

- ถ่ายเอกสารจำนวน 10 ชุด
- ส่งแฟ็กซ์
- จัดทำบันทึกเรื่อง การขออนุมัติดำเนินการจัดสัมนา
- พิมพ์รายชื่อสมาชิกแต่ละสี และกติกาเกมส์การเล่น
- พิมพ์หนังสือสรุปยอดรวมแผนปี 54
- สแกนงาน
- ส่ง E-mail
- พิมพ์เรื่ององค์กรความรู้ เรื่องการตรวจสอบและทดสอบอุปกรณ์ Aluminum Conductor
- พิมพ์รายชื่อ KM
- เข้าร่วมกิจกรรมกีฬาสีในแผนก
- จัดทำเอกสารการอบรม


ปัญหา/อุปสรรค
1. การพิมพ์หนังสือขออนุมัติต้องทำการตรวจสอบให้ละเอียด
2. สแกนงานผิดเพราะฟังไม่ละเอียดรอบคอบทำให้ต้องสแกนใหม่
3. ทางหน่วยงานที่จะให้ส่ง E-mail ไปให้บอก E-mail ผิดเมื่อส่งไปแล้วเขาไม่ได้รับ ทำให้ต้องโทรไปถาม E-mail ที่ถูกต้อง

วันอาทิตย์ที่ 12 ธันวาคม พ.ศ. 2553

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

- ถ่ายเอกสารจำนวน 30 ชุด
- ส่งแฟ็กซ์
- สแกนงานโดยใช้ USB เสียบเข้ากับตัวเครื่อง
- แจกเอกสารผู้เข้าร่วมอบรม
- ส่ง E-mail ให้ฝ่าย อหพ.
- จัดเตรียมเครื่องมือและอาหารว่าง สำหรับการประชุม

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

วันอาทิตย์ที่ 5 ธันวาคม พ.ศ. 2553

สรุปผลการปฏิบัติงานสัปดาห์ที่ 5 ระหว่างวันที่ 29 - 3 ธันวาคม 2553

- ทำป้ายชื่อวิทยากรจำนวน 3 คน
- ทำการตรวจเช็ค งบประมาณแผนการจัดอบรมสายงาน กฟผ. ประจำปี 54 จำนวน 7 แผนก
- ทำบันทึกเรื่อง ขออนุมัติซ่อมเครื่อง LCD Projector
- ถ่ายเอกสารจำนวน 10 ชุด
- ทำการตีหน้าซองจดหมาย "ด่วนมาก"
- ทำแบบประเมินอบรมทั้งหมด 3 หลักสูตร
- ทำการเขียนหน้าซองจดหมาย ว่าจะดำเนินการส่งไปตามแผนกต่าง ๆ จำนวน 16 แผนก
- เดินส่งจดหมายตามแผนกต่าง ๆ
- ทำบันทึกเรื่อง ขอสรุปกิจกรรม Qcc กพอพ-ห. ปี 2553
- ส่งแฟ็กซ์

ปัญหา/อุปสรรค
1. การตรวจเช็คงบประมาณทั้งหมด 7 แผนกยังไม่เข้าใจเกี่ยวกับตัวเลขของงบประมาณเท่า
ที่ควร เนื่องจากถ้าคีย์ผิดอาจจะทำให้งบไม่ตรงกัน จึงต้องมีความละเอียดรอบครอบในการตรวจเช็ค
2. ยังไม่ทราบชื่อแผนก ตำแหน่ง สังกัด เพราะมีจำนวนเยอะและยาวมาก
ทำให้เกิดความสับสนและเขียนผิดจำนวนมาก ต้องพยายามเข้าใจและศึกษาต่อไป
3. การเดินส่งจดหมายตามแต่ละแผนก ทำให้เสียเวลาเพราะไม่ทราบชั้นและห้อง
ต้องคอยถามทางจากพี่ ๆ ในหน่วยงาน

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

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

- รวบรวมรายชื่อผู้เข้าร่วมอบรมเรื่อง การบริหารทรัพยากรเชิงกลยุทธ์ ในวันที่ 25 พ.ย. 53 จากแผนกต่าง ๆ
- สแกนงานเรื่อง การบริหารทรัพยากรเชิงกลยุทธ์
- ส่งแฟ็กซ์เรื่อง การบริหารทรัพยากรเชิงกลยุทธ์
- ถ่ายเอกสารจำนวน 70 ชุด เพื่อใช้ในการอบรม
- จัดทำเอกสารการเข้าร่วมอบรม
- รวบรวมรายชื่อผู้เข้าร่วมอบรมเรื่อง การบริหารทรัพยากรเชิงกลยุทธ์ ในวันที่ 25 พ.ย. 53 จากแผนกต่าง ๆ ครบทุกแผนกแล้ว นำไปพิมพ์ลงใน Microsoft word 2003 เพื่อทำเป็นใบลงทะเบียนให้แก่ผู้เข้าร่วมอบรม


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

วันพฤหัสบดีที่ 18 พฤศจิกายน พ.ศ. 2553

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

- ได้ทำการเปลี่ยนแฟ้มเอกสาร KM ปี 53 เนื่องจากแฟ้มมีสภาพชำรุด และได้ทำการถ่ายเอกสารทั้งหมดเพื่อเก็บไว้
- พิมพ์และปริ้นรายชื่อแต่ละแผนก
- เดินส่งเอกสารและไปส่งเอกสารเพื่อขอเลขจดหมายจากหน่วยงาน สารบัญ
- แก้ไขเอกสารเรื่อง การขอเชิญวิทยากร
- จัดทำเอกสารการอบรม
- แจกเอกสารการอบรม
- ถ่ายเอกสารจำนวน 15 ชุด
- จัดทำเอกสารประกอบการบรรยาย Persentation
- ตรวจสอบหนังสือ KM (องค์กรความรู้) ว่ามีเรื่องใดส่งมาบ้างให้ทำการบันทึกไว้
- พิมพ์รายชื่อผู้เข้าร่วมอบรม
- SCAN งาน
- ส่ง E-mail ให้ฝ่ายต่าง ๆ
- จดบันทึกการประชุม

ปัญหา/อุปสรรค

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

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

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

- ถ่ายสำเนาเอกสารจำนวน 15 ชุด
- ได้รับมอบหมายให้รับผิดชอบดูแลเรื่อง การดำเนินงาน KM ปี 53 สายงาน รวพ.
- เดินส่งเอกสาร
- ทำหนังสือบันทึกเรื่อง ผลการปฎิบัติงานประจำปี 53
- แก้ไขงานไฟล์ Power Point เพื่อเสนอในที่ประชุม เรื่อง สรุปรายงานประจำปี 53
- ทำการ Downlond Font ผ่านทางเว็บไซต์ฝ่ายวางแผนเทคโนโลยีสารสนเทศ ในการใช้ Font จัด ทำหนังสือ กฟผ. จำนวน 7 เครื่อง
- แก้ไขเอกสารเรื่อง การบรรยายในหัวข้อ การบริหารบุคคลเชิงกลยุทธ์ HR
- พิมพ์หนังสือ พิจารณาการวิเคราะห์สาเหตุ แผนภูมิก้างปลา
- พิมพ์หนังสือ ขอเชิญเป็นวิทยากรการบรรยาย
- ตรวจสอบเอกสารเรื่อง องค์กรความรู้ KM
- พิมพ์ชื่อและที่อยู่ลงใน Microsoft Excel 2003 จำนวน 200 รายชื่อ เพื่อทำเป็นจดหมายเวียนทาง Microsoft word 2003
- พิมพ์หนังสือบันทึกเรื่อง ขอเชิญวิทยากรการบรรยาย ความรู้เบื้องต้นเกี่ยวกับงานวิจัย
- ทำการปริ้นรายชื่อที่จ่าหน้าซองจดหมายจำนวน 200 รายชื่อ


ปัญหาและอุปสรรค
1. ไม่ทราบว่าแผนกที่จะไปส่งเอกสารอยู่ชั้นใดบ้าง ตึกไหน ทำให้เสียเวลาในการส่งเอกสาร จึง ต้องถามทางจากพวกพี่ ๆ ในตึก
2. การพิมพ์เอกสารยังมีบางตัวที่ผิดอยู่ ทำให้เสียกระดาษในการปริ้น ฉะนั้นต้องทำการตรวจให้ละเอียดก่อนแล้วจึงปริ้น
3. ลายมือยังอ่านไม่ออก เพราะอ่านยากมาก ต้องคอยถามพี่ ๆ
4. ในการปริ้นซองจดหมายมีการผิดพลาดเกิดขึ้น เช่น ชื่อไม่อยู่ตรงกลาง ต้องทำการจัดให้พอดีแล้วจึงปริ้น

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

รายการปฎิบัติงานสัปดาห์ที่ 1 ระหว่างวันที่ 1 - 5 พฤศจิกายน 2553

- มารายงานตัวกับแผนกบุคคล หน่วยงานมารับตัวและอบรมรายละเอียดในการทำงานและการวางตัวอยู่ ในทีทำงาน เล่าเรื่องเกี่ยวกับการกำเนิดไฟฟ้าฝ่ายผลิตให้ฟัง เริ่มปฏิบัติงานโดยการจัดเอกสารทั้งหมด ให้เป็นหมวดหมู่ พิมพ์รายชื่อเอกสารทั้งหมดจำนวน 40 เล่ม โดยใข้โปรแกรม Microsoft word ถ่าย เอกสารและสแกนเอกสารโดยการจัดเรียงไฟล์ให้เป็นระเบียบ
- ทำการเขียนปก CD เรื่องหลักสูตรการเตรียมความพร้อมสู้การเป็นผู้บริหารสายงานรองผู้ว่าการพัฒนา (รวพ.) และทำการใส่ปกด้านหลังจำนวน 51 ชุด พิมพ์รายชื่อ KM โดยใข้โปรแกรม Microsoft word จำนวน 34 รายชื่อ พร้อมรายชื่อหัวเรื่อง จัดเรียงเอกสารให้เป็นหมาวดหมู่
- ทำบันทึกเรียนเชิญการเข้าร่วมอบรมศึกษาดูงานเกี่ยวกับเรื่องนิวเคลียร์ จำนวน 3 ฉบับ

ปัญหา/อุปสรรค
1. ไม่ทราบเรื่องหมวดหมู่ของเอกสารว่าอยู่หมวดใดบ้าง ต้องพยายามศึกษาต่อไป
2. อุปกรณ์สำนักงานยังใช้ไม่ค่อยเป็น เช่น เครื่องสแกนที่ต้องเสียบ USB และสแกน
3. ปากกาที่ใช้เขียนแผ่น CD เขียนไปแล้วไม่สามารถลบได้ ถ้าเขียนผิด
4. การทำบันทึกเรียนเชิญเข้าร่วมอบรม ยังใช้คำไม่สละสวย ต้องพยายามศึกษาต่อไป

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

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

จากการที่ได้เรียนวิชาเตรียมฝึกประสบการณวิชาชีพ 3
คิดว่าได้ประสบการณ์มากในการเตรียมพร้อมที่จะออกฝึกงาน ไม่ว่าจะเป็นใน
1.เรื่องคุณธรรมและจริยธรรมในการทำงานและการปฏิบัติงานกับเพื่อนร่วมงาน ความรับผิดชอบในหน้าที่
2.เรื่องการเงินส่วนบุคคล ทำให้รู้จักการออมเงินว่าจะบริหารเงินอย่างไร
3.การพัฒนาบุคลิกภาพ เช่น การแต่งหน้า การทำผม การแต่งตัวและการวางตัวให้อยู่ในสังคมได้โดยเหมาะสม
4.มีการทดสอบภาษาอังกฤษ เพื่อจะทราบถึงว่าเรามีความสามารถภาษาอังกฤษมากน้อยเพียงใด
5.กิจกรรมการคัดไทย ทำให้เราฝึกการเขียน เพื่อที่จะได้นำไปปฏิบัติการทำงาน
6.ได้ประสบการณ์ในการคุมสอบ IT เพราะการคุมสอบ IT ครั้งนี้มีปัญหาและอุปสรรคว่าเราควรจะแก้ไขอย่างไร
7.ได้รู้จักแนวคิดและวิธีที่จะประสบความสำเร็จในชิวีต
8.ได้รู้ถึงวัฒนธรรมของต่างชาติ ทำให้ทราบว่าการทำธุรกิจกับชาวต่างชาติและการติดต่อสื่อสารกับชาวต่างชาติ
9.มีความรู้ในด้านซอฟต์แวร์ต่าง ๆ มากขึ้น เพื่อที่เราจะได้นำไปพัฒนาและศึกษา
10.ได้รับฟังข้อคิดดี ๆ จากพระอาจารย์ที่มาเทศนาให้ฟัง

วันพุธที่ 14 ตุลาคม พ.ศ. 2552

DTS12-29-09-2552

Sorting และSearching
Sorting การเรียงลำดับแบบเร็ว
การเรียงลำดับแบบเร็ว (quick sort) เป็นวิธีการเรียงลำดับที่ใช้เวลาน้อยเหมาะสำหรับข้อมูลที่มีจำนวนมากที่ต้องการความรวดเร็วในการทำงาน วิธีนี้จะเลือกข้อมูลจากกลุ่มข้อมูลขึ้นมาหนึ่งค่าเป็นค่าหลัก แล้วหาตำแหน่งที่ถูกต้องให้กับค่าหลักนี้ เมื่อได้ตำแหน่งที่ถูกต้องแล้วใช้ค่าหลักนี้เป็นหลักในการแบ่งข้อมูลออกเป็น สองส่วน ถ้าเป็นการเรียงลำดับจากน้อยไปมาก ส่วนแรกอยู่ในตอนหน้าข้อมูลทั้งหมดจะมีค่าน้อยกว่าค่าหลักที่เป็นตัวแบ่งส่วน และอีกส่วนหนึ่งจะอยู่ในตำแหน่งตอนหลังข้อมูลทั้งหมดจะมีค่ามากกว่าค่าหลัก แล้วนำแต่ละส่วนย่อยไปแบ่งย่อยในลักษณะเดียวกันต่อไป จนกระทั่งแต่ละส่วนไม่สามารถแบ่งย่อยได้อีกต่อไปจะได้ข้อมูลที่มีการเรียงลำดับตามที่ต้องการ
กรณีที่แย่ที่สุด คือ กรณีที่ข้อมูลมีการเรียงลำดับอยู่แล้ว อาจจะเรียงจากน้อยไปหามากหรือจากมากไปน้อยที่สุดหรือมากที่สุด จำนวนครั้งของการเปรียบเทียบจะมากที่สุดดังนี้
กรณีที่ดีที่สุด คือ กรณีที่ค่าหลักที่เลือกแบ่งข้อมูลอยู่ตรงกลางกลุ่มพอดี และในแต่ละส่วนย่อยก็เช่นเดียวกันจำนวนครั้งของการเปรียบเทียบเป็นดังนี้
จำนวนครั้งของการเปรียบเทียบ = n log2n คร้ง

Searching การค้นหาข้อมูล
การค้นหา แบ่งออกเป็น 2ประเภท ตามแหล่งที่จัดเก็บข้อมูลเช่นเดียวกับการเรียงลำดับ
1. การค้นหาข้อมูลแบบภายใน
2. การค้นหาข้อมูลแบบภายนอก
การค้นหาแบบเชิงเส้นหรือการค้นหาตามลำดับ (Linear)
เป็นวิธีที่ใช้กับข้อมูลที่ยังไม่ได้เรียงลำดับ
หลักการคือ ให้นำข้อมุลที่จะหามาเปรียบเทียบกับข้อมูลตัวแรกในแถวลำดับ
1. ถ้าไม่เท่ากันให้เปรียบเทียบกับข้อมูลตัวถัดไป
2. ถ้าเท่ากันให้หยุดการค้นหา หรือการค้นหาจะหยุดเมื่อพบข้อมูลที่ต้องการหรือหาข้อมูลทุกจำนวนในแถวลำดับแล้วไม่พบ
การค้นหาแบบเซนทินัล (sentinel)
เป็นวิธีการค้นหาแบบเดียวกับวิธีการค้นหาแบบเชิงเส้นแต่ประสิทธิภาพดีกว่าตรงที่เปรียบเทียบน้อยครั้งกว่า พัฒนามาจากอัลกอริทึ่มแบบเชิงเส้น
หลักการ
1.เพิ่มขนาดของแถวลำดับ ที่ใช้เก็บข้อมูลอีกหนึ่งที่
2. นำข้อมูลที่จะใช้ค้นหาข้อมูลใน array ไปฝากที่ต้นหรือ ท้าย array
3. ตรวจสอบผลลัพธ์จากการหา
การค้นหาแบบไบนารี (Binary Search)
การค้นหาแบบไบนารีทรีใช้กับข้อมูลที่ ถูกจัดเรียงแล้วเท่านั้น
1. หาตัวแทนข้อมูลเพื่อนำมาเปรียบเทียบกับค้าที่ต้องการค้นหาตำแหน่งตัวแทนข้อมูลหาได้ขากสูตร
mid =(low+hing)/2
mid คือ ตำแหน่งกลาง,low คือ ตำแหน่งต้นแถวลำดับ
hing คือ ตำแหน่งท้ายของข้อมูล
2. การค้นหาแบบไบนารี (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 ในลิสต์

DTS11-22-09-2552

ตารางแฮช (Hash Table)
ตารางข้อมูลแบบตรง (Direct-address table)สมมติว่ามีการกำหนดให้คีย์มาจากเอกภพสัมพัทธ์ U = {0,1,…,m-1} การแก้ไขปัญหาคือใช้ตาราง T[0..m-1] การสร้างดัชนีโดยคีย์ เพื่อใช้ในการ เชื่อมโยงข้อมูล เข้าด้วยกันเพื่อเก็บข้อมูลเข้าในตำแหน่งที่ถูกต้อง
เมื่อขนาดของเอกภพสัมพัทธ์เพิ่มมากขึ้น ตามหลักการยังคง สามารถทำงานได้ แต่ขนาดของตาราง T จะมีผลกระทบทางแก้ปัญหาคือต้องหาวิธีการจับคู่คีย์ให้มีช่วงกว้างที่เล็กลงโดยเรียกวิธีการนี้ว่าฟังก์ชันแฮช (Hash Function)ผลลัพธ์ที่ได้เรียกว่าตารางแฮช (Hash Table)
การเข้าถึงข้อมูลโดยตรง กำหนด ให้ k เป็นคีย์ ถูกจัดเก็บอยู่ใน ช่อง k ด้วยการทำแฮชด้วยพื้นฐาน การจัดเก็บในช่องที่ h(k) โดยใช้ฟังก์ชัน h เพื่อคำนวณหาช่องของคีย์โดยการจับคู่กับเอกภพสัมพัทธ์U ในตาราง T h: U 􀃆 {0,1,…,m-1}
ฟังก์ชัน แฮช จะทำงานแบบสุ่ม ตัวอย่างเช่น h(k) = k mod m เมื่อ m เป็นค่าหลัก (prime number) จำนวนช่อง (Slot)แนวคิดการจัดเก็บ ค่าคีย์ของ k ในตำแหน่ง ที่ T[h(k)] เมื่อ k ∈ U , h(k) ∈ [0..m-1] แนวคิดหลัก คือ ลด ขนาดอะเรย์ของดัชนีการที่แทรกคีย์ในตาราง ที่จัดเก็บนั้นมีโอกาสที่คีย์ที่ถูกสร้างจากฟังก์ชัน ในช่องเดียวกันอย่างไรก็ตามการเกิดการชนกันก็ยังคงต้องมีอย่างน้อยหนึ่งครั้ง
การแก้ไขปัญหาชนกันของข้อมูล แบบห่วงโซ่(Chaining)
1. กรณีที่เลวร้ายที่สุด ในการแทรกข้อมูลคือ o(1)
2. การลบสมาชิก สามารถทำได้ด้วยเวลาที่น้อยที่สุดของ o(1)ทางปฏิบัติ ใช้เทคนิค ฮิวริสติก (Heuristic) ในการสร้างฟังก์ชันแฮช แนวทางหนึ่งที่ดีคือ การแปลงค่าของข้อมูลที่มีอยู่แล้วด้วยข้อมูลที่มีอยู่ (วิธีการหาร:Division method) ฟังก์ชันแฮช คือการกำหนดค่าคีย์ที่เกิดขึ้นในเอกภพสัมพัทธ์จากตัวเลขธรรมชาติ
วิธีการสร้างฟังก์ชันแฮช (Method for Creating Function)
1.วิธีการหาร (The Division Method)
2.วิธีการคูณ(The Multiplication Method)
3.วิธีทั่วไป (Universal hashing)
วิธีการหาร (The Division Method)Open Addressingฟังก์ชันแฮช คือh: ν{0, 1, . . . m -1 }--> {0, 1, . . . , m-1}ลำดับในการตรวจสอบ(probe sequence) คือ<>
เทคนิคลำดับของการตรวจสอบ
1. การตรวจสอบเชิงเส้น (Linear Probing)
2.การตรวจสอบด้วยสมการกำลังสอง(Quadratic Probing)
3. การสร้างฟังก์ชันแฮชแบบสองเท่า(Double Hashing)
เทคนิคลำดับของการตรวจสอบ
1.การตรวจสอบเชิงเส้น (Linear Probing)รูปแบบของ ฟังก์ชันคือh(k, i) = (h` (k) + i) mod m เมื่อ i = 0, 1, 2, . . . , m-1 h` คือ auxiliary ของฟังก์ชันแฮช
2. การตรวจสอบด้วยสมการกำลังสอง(Quadratic Probing)รูปแบบของ ฟังก์ชันคือh(k, i) = (h` (k) + c1i + c2i2) mod m เมื่อ i = 0, 1, 2, . . . , m-1h`คือ auxiliary ของฟังก์ชันแฮช c1 + c2 ≠ 0 เป็นค่าคงที่แบบ auxiliary
3. การสร้างฟังก์ชันแฮชแบบสองเท่า (Double Hashing)รูปแบบของ ฟังก์ชันคือh(k, i) = (h1, 9k) + ih2 (k)) mod m เมื่อ h1 และ h2 เป็น auxiliary ของฟังก์ชันค่า k เป็นค่าเริ่มต้นของ ตำแหน่งการตรวจสอบ และค่า offset

วันพฤหัสบดีที่ 24 กันยายน พ.ศ. 2552

DTS10-15-09-2552

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

การเรียงข้อมูล สามารถแบ่งได้เป็น 2 ประเภทด้วยกันคือ
1.การเรียงข้อมูลแบบภายใน (Internal Sorting) คือ การเรียงลำดับข้อมูล โดยทั้งหมดต้องจัดเก็บอยู่ในหน่วยความจำหลัก (main memory) ที่มีการเข้าถึงข้อมูลได้เร็ว โดยไม่จำเป็นต้องใช้หน่วยความจำสำรอง เช่น ดิสค์ หรือเทปสำหรับการจัดเก็บชั่วคราว ใช้ในกรณีที่ข้อมูลไม่มากเกินกว่าพื้นที่ความจำที่กำหนดให้กับผู้ใช้แต่ละราย
2.การเรียงข้อมูลแบบภายนอก (External Sorting) คือ การ เรียงลำดับข้อมูลที่มีขนาดใหญ่เกินกว่าที่จะสามารถเก็บไว้ใน พื้นที่ความจำหลักที่กำหนดให้ได้ในคราวเดียว ดังนั้นข้อมูล ส่วนมากต้องเก็บไว้ในไฟล์ข้อมูลที่อยู่บนดิสค์ เทป เป็นต้น สำหรับการเรียงข้อมูลแบบภายนอกจะต้องคิดถึงเวลาที่ใช้ใน การถ่ายเทข้อมูลจากหน่วยความจำชั่วคราวกับหน่วยความจำหลัก ด้วยเช่นกัน
การเรียงลำดับแบบตัวเลือก
หลักการดังนี้ คือ การเลือกข้อมูลที่มีค่าที่น้อยที่สุดในแถวลำดับ และนำค่านั้นไปเปลี่ยนที่กับข้อมูลที่บรรจุ อยู่ในแถวลำดับช่องแรก ต่อมามีการเลือกค่าที่มากกว่า และนำค่านั้นไปแลกกับข้อมูลในแถวลำดับช่องที่สอง ขั้นตอนนี้เหมือนกันกับขั้นตอนแรก ยกเว้นจะไม่มีการเปรียบเทียบกับ ข้อมูลในแถวลำดับช่องแรก เพราะรู้แล้วว่าเป็นค่าที่น้อยที่สุด ต่อจากนั้นจะมีการดำเนินงานแบบเดิม คือ เลือกตัวที่มีค่าน้อยที่สุดในบรรดา ข้อมูลที่เหลือแล้วมีการสลับที่ จนกระทั่งค่าทั้งหมดที่อยู่ในแถวลำดับมีการเรียงลำดับ และจะพบว่าที่ ส่วนแรกของแถวลำดับ ประกอบด้วยค่าน้อยที่สุด และที่ปลายสุดของแถวลำดับมีค่ามากที่สุด
การเรียงลำดับแบบฟอง
มีหลักการแตกต่างไปจาก การเรียงลำดับแบบเลือก โดยปกติวิธีการนี้จะมีการเปรียบเทียบน้อยกว่าวิธีที่กล่าวมาแล้ว แต่วิธีนี้จะมีการสลับที่มากกว่า การเรียงลำดับแบบเลือก และใช้เวลาในการทำงานมากกว่า
การเรียงลำดับวิธีนี้เริ่มโดย จะมีการเปรียบเทียบข้อมูลในแถวลำดับ ช่องแรกกับช่องถัดไป ถ้าช่องหลังมีข้อมูลขนาดใหญ่กว่า จึงเปลี่ยนที่ระหว่างช่องแรกและช่องที่สอง ต่อมามีการเปรียบเทียบระหว่างช่องที่สองกับช่องที่ 3 ถ้าช่องที่ 3 ข้อมูลมีค่ามากกว่าช่องที่ 2 มีการสลับที่ แล้วมีการเปรียบเทียบระหว่างช่องที่ 3 กับช่องที่ 4 และช่องที่ 4 กับช่องที่ 5 และมีการสลับที่นำตัวที่มีค่ามากกว่า ไว้ทางซ้ายมือ จนกระทั่งการเปรียบเทียบเกิดกับ ทุกตัวในแถวลำดับ ขั้นต่อไปมีการเปรียบเทียบอีก แล้วมีการสลับค่าจนครบทุกค่าของแถวลำดับ แต่อย่างไรก็ตามหลังจากที่มีการเปรียบเทียบ และสลับค่าครบรอบแล้วพบว่าค่าที่น้อยที่สุด จะไปอยู่ที่แถวลำดับช่อง ขวาสุด ดังนั้นจึงไม่จำเป็นต้องมีการเปรียบเทียบ กับแถวลำดับช่องนี้ในการเรียงลำดับค่ารอบต่อไป ต่อมาการเปรียบเทียบ และการเปลี่ยนค่าก็ดำเนินงานอีก โดยเว้นการเปรียบเทียบกับสองค่าสุดท้ายทาง ขวาสุดของแถวลำดับ แล้วมีการเปรียบเทียบและสลับที่เกิดขึ้นอีก โดยเว้นสามค่าสุดท้าย จะมีการเปรียบ เทียบและสลับที่ไปเรื่อย ๆ และท้ายที่สุดก็จะได้ข้อมูลในแถวลำดับ เรียงลำดับจากค่ามากสุดไปน้อยสุด
การเรียงลำดับแบบเร็ว
การเรียงลำดับแบบเร็ว (quick sort) เป็นวิธีการเรียงลำดับที่ใช้เวลาน้อยเหมาะสำหรับข้อมูลที่มีจำนวนมากที่ต้องการความรวดเร็วในการทำงาน วิธีนี้จะเลือกข้อมูลจากกลุ่มข้อมูลขึ้นมาหนึ่งค่าเป็นค่าหลัก แล้วหาตำแหน่งที่ถูกต้องให้กับค่าหลักนี้ เมื่อได้ตำแหน่งที่ถูกต้องแล้วใช้ค่าหลักนี้เป็นหลักในการแบ่งข้อมูลออกเป็น สองส่วน ถ้าเป็นการเรียงลำดับจากน้อยไปมาก ส่วนแรกอยู่ในตอนหน้าข้อมูลทั้งหมดจะมีค่าน้อยกว่าค่าหลักที่เป็นตัวแบ่งส่วน และอีกส่วนหนึ่งจะอยู่ในตำแหน่งตอนหลังข้อมูลทั้งหมดจะมีค่ามากกว่าค่าหลัก แล้วนำแต่ละส่วนย่อยไปแบ่งย่อยในลักษณะเดียวกันต่อไป จนกระทั่งแต่ละส่วนไม่สามารถแบ่งย่อยได้อีกต่อไปจะได้ข้อมูลที่มีการเรียงลำดับตามที่ต้องการ
การเรียงลำดับแบบแทรก
เป็นวิธีการเรียงลำดับที่ทำการเพิ่มสมาชิกเข้าไปใหม่ในเซต ที่มีสมาชิกทุกตังเรียงลำดับอยู่แล้ว และทำให้เซตใหม่ที่ได้นี้มีสมาชิกทุกตัวเรียงลำดับอยู่แล้วด้วย วิธีการเรียงลำดับ
1. เริ่มต้นเปรียบเทียบจากข้อมูลในตำแหน่งที่1 กับ 2 หรือข้อมูลในตำแหน่งสุดท้ายและรองสุดท้ายก็ได้ถ้าเป็นการเรียงลำดับจากน้อยไปหามาก
2. จะต้องจัดให้ข้อมูลที่มีค่าน้อยอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก และถ้าเรียงจากมากไปน้อยก็จะจัดให้ข้อมูลที่มีค่ามากอยู่ในตัวแหน่งก่อน
การเรียงลำดับแบบฐาน
การเรียงลำดับแบบฐาน (radix sort) เป็นการเรียงลำดับโดยการพิจารณาข้อมูลทีละหลัก เริ่มพิจารณาจากหลักที่มีค่าน้อยที่สุดก่อน นั่นคือถ้าข้อมูลเป็นเลขจำนวนเต็มจะพิจารณาหลักหน่วยก่อน การจัดเรียงจะนำข้อมูลเข้ามาทีละตัว แล้วนำไปเก็บไว้ที่ซึ่งจัดไว้สำหรับค่านั้น เป็นกลุ่ม ๆ ตามลำดับการเข้ามา ในแต่ละรอบเมื่อจัดกลุ่มเรียบร้อยแล้ว ให้รวบรวมข้อมูลจากทุกกลุ่มเข้าด้วยกัน โดยเริ่มเรียงจากกลุ่มที่มีค่าน้อยที่สุดก่อนแล้วเรียงไปเรื่อย ๆ จนหมดทุกกลุ่ม ในรอบต่อไปนำข้อมูลทั้งหมดที่ได้จัดเรียงในหลักหน่วยเรียบร้อยแล้วมาพิจารณาจัดเรียงในหลักสิบต่อไป ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งครบทุกหลักจะได้ข้อมูลที่เรียงลำดับจากน้อยไปมากตามต้องการ

DTS09-01-09-2552

Graph
กราฟ Graph เป็นโครงสร้างข้อมุลแบบไม่เชิงเส้น อีกชนิดหนี่ง กราฟเป็นดครงสร้างข้อมูลที่มีการนำไปใช้ในงานที่เกี่ยวข้องกับการแก้ไขปัญหาที่ค่อนข้างซับซ้อน เช่น การวางข่าย งานคอมพิวเตอร์ การวิเคราะห์เส้นทางวิกฤต และปัญหาเส้นทางที่สั้นที่สุด เป็นต้น
นิยามของกราฟ
กราฟ เป็นโครงสร้างข้อมูลแบบไม่เชิงเส้นที่ประกอบ ด้วยกลุ่มของสิ่งสองสิ่งคือ
1. โหนด (Nodes) หรือ เวอร์เทกซ์ (Vertexes)
2. เส้นเชื่อมระหว่างโหนด เรียก เอ็จ (Edger) การเชื่อมต่อ กราฟที่มีเอ็จเชื่อมต่อระหว่างโหนดสองโหนดถ้าเอ็จไม่มีลำดับ ความสัมพันธ์จะเรียกกราฟนั้นว่ากราฟแบบไม่มีทิศทาง (Undirected Garphs) และถ้ากราฟนั้นมีเอ็จที่มีลำดับความสัมพันธ์หรือมีทิศทางกำกับด้วยเรียกกราฟนั้นว่า การฟแบบมีทิศทาง
(Directed Deaphs) หรือมีลูกศร เป็นกราฟที่แสดงการเชื่อม ระหว่าง Vertex โดยแสดงทิศทางการเชื่อมต่อด้วย บางครั้งเรียกว่า ไดกราฟ (Digraph) ถ้าต้องการอ้างถึงเอ็จแต่ละเส้นสามารถเขียนชื่อเอ็จกำกับไว้ก็ได้
การเขียนกราฟแสดงโหนดและเส้นเชื่อมความสัมพันธ์ ระหว่างโหนดไม่มีรูปแบบที่ตายตัวการสากเส้นความสัมพันธ์เป็นเส้นลักษณะไหนก็ได้ที่สามารถแสดงความสัมพันธ์ระหว่างโหนดได้ถูกต้อง นอกจากนี้เอ็จจากโหนดใดๆ สามารถวนเข้ามาหาตัวมันเองได้
โดยทั่วๆไป การเขียนกราฟเพื่อแสดงให้เห็นด้วยความสัมพันธ์ ของสิ่งที่เราสนใจแทนโหนดด้วยจุด (Pointes) หรือวงกลม (circles) ที่มีชื่อหรือข้อมูลกำกับ เพื่อบอกความแตกต่างของแต่ละโหนดและเอ็จแทนด้วยเส้นหรือเส้นโค้งเชื่อมต่อระหว่างโหนดสองโหนดถ้าเป็นกราฟแบบมีทิศทางเส้นหรือเส้นโค้งต้องมีหัวลูกศรกำกับทิศทางของความสัมพันธ์ด้วย
กราฟแบบไม่มีทิศทางเป็นเซตแบบจำกัดของโหนดและเอ็จ โดยเซตอาจจะว่างไม่มีโหนดหรือเอ็จเลยเป็นกราฟว่าง(Empty Graph) แต่ละเอ็จชะเชื่อมระหว่างโหนดสองโหนด หรือเชื่อมตัวเอง อ็จไม่มีทิศทางกำกับ ลำดับของการเชื่อมต่อกันไม่สำคัญ นั่นคือไม่มีโหนดใดเป็นโหนดแรก (First Node)
หรือไม่มีโหนดเริ่มต้น และไม่มีโหนดใดเป็นโหนดสิ้นสุด
กราฟแบบมีทิศทาง เป็นเซตแบบจำกัดของโหนดและเอ็จ โดยเซตอาจว่างไม่มีโหนดหรือเอ็จเลยป็นกราฟว่าง(Empty Graph) แต่ละเอ็จจะเชื่อมระหว่างโหนดสองโหนด เอ็จมีทิศทางกำกับแสดงลำดับของการเชื่อมต่อกัน โดยมีโหนดเริ่มต้น (Source Node)และโหนดสิ้นสุด (Target Node)
รูปแบบต่างๆ ของกราฟแบบมีทิศทางเหมือนกับรูปแบบ ของกราฟแบบไม่มีทิศทาง ต่างกันตรงที่กราฟแบบนี้จะมีทิศทางกำกับด้วยเท่านั้น
การแทนที่กราฟในหน่วยความจำ
ในการปฎิบัติการกับโครงสร้างกราฟ สื่งที่ต้องการจัดเก็บ จากกราฟโดยทั่วไปก็คือ เอ็จ ซึ่งเป็นเส้นเชื่อมระหว่างดหนดสองโหนด มีวิธีการจัดเก็บหลายวิธี วิธีที่ง่ายและตรงไปตรงไปตรงมาที่สุดคือ การเก็บเอ็จในแถวลำดับ 2 มิติ
การแทนที่กราฟด้วยเมตริกซ์
โครงสร้างข้อมูลประเภทกราฟสามารถใช้เมตริกซ์มาแสดงแทนได้ โดยกราฟที่ประกอบด้วย vertex จำนวน N vertex สามารถแทนที่ด้วยเมตริกซ์ขนาด N x N โดยค่าในเมตริกซ์จะประกอบด้วย ค่า 0 และ 1
ค่า 0 จะใช้แทนไม่มี edge ความยาว 1 เชื่อมต่อจากต้นทางไปปลายทาง และ
ค่า 1 จะใช้แทนมี edge ความยาว 1 เชื่อมต่อจากต้นทางไปปลายทาง
ตัวอย่างจากรูปกราฟแบบ Direct Graph
สามารถแทนที่กราฟด้วยเมตริกซ์ดังนี้
หากเป็นกราฟแบบ Undirected Graph
การคำนวณเส้นทางระหว่าง vertex โดยใช้ Adjacency Matrix
จากการแทนที่กราฟด้วยเมตริกซ์ เราสามารถนำเมตริกซ์ที่ได้มาคำนวณหาจำนวนเส้นทางระหว่าง vertex ต้นทางและปลายทางที่มีจำนวน edge ต่างๆ ได้

DTS08-25-08-2552

Tree (ทรี)
ทรี หรือโครงสร้างข้อมูลแบบต้นไม้ ประกอบด้วยโหนด (node) ซึ่งเป็นส่วนที่เก็บข้อมูล ในทรีหนึ่งทรีจะประกอบไปด้วยรูทโหนด (root node) เพียงหนึ่งโหนด แล้วรูทโหนดสามารถแตกโหนดออกเป็นโหนดย่อยๆ ได้อีกหลายโหนดเรียกว่าโหนดลูก (Child node) เมื่อมีโหนดลูกแล้ว โหนดลูกก็ยังสามารถแสดงเป็นโหนดพ่อแม่ (Parent Node) โดยการแตกโหนดออกเป็นโหนดย่อยๆได้อีก โหนดที่มีโหนดแม่เป็นโหนดเดียวกันเรียกว่า โหนดพี่น้อง (Siblings) โหนดที่ไม่มีโหนดลูกเรียกว่า โหนดใบ (Leave Node) เส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดเรียกว่า กิ่ง (Beanch) คือ โหนดที่ไม่ใช่ Leaf Node
นิยามของทรี
1. นิยามทรีด้วยนิยามของกราฟ
ทรี คือ กราฟที่ต่อเนื่องโดยไม่มีวงจรปิด (loop) ในโครงสร้าง โหนดสองโหนดใดๆ ในทรีต้องมีทางติดต่อกัน ทางเดียวกันนั้น และทรีที่มี N โหนด ต้องมีกิ่งทั้งหมด N -1เส้น
การเขียนรูปแบบทรี อาจเขียนได้ 4 แบบ คือ
1. แบบที่มีรากอยู่ด้านบน
2. แบบที่มีรากอยู่ด้านล่าง
3. แบบที่มีรากอยู่ด้านซ้าย
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) หมายถึงจำนวนย่อยของโหนด นั้นๆ
6. ระดับของโหนด (Level of Node) คือระยะทางในแนวดิ่งของโหนดนั้นๆ ที่อยู่ห่างจากโหนดราก เมื่อกำหนดให้โหนดรากของทรีนั้นอยู่ระดับ 1 และกิ่งแต่ละกิ่งมีความเท่ากันหมด คือ ยาวเท่ากับ 1 หน่วย ซึ่งระดับของโหนดจะเท่ากับจำนวนกิ่งที่น้อยที่สุดและจำนวนเส้นทางตามแนวดิ่งของโหนดใดๆ ซึ่งห่างจากโหนดราก เรียกว่า ความสุง( Height) หรือความลึก (Depth)
การแทนที่ทรีในหน่วยความจำหลัก
การแทนที่โครงสร้างข้อมูลแบบทรีในความจำหลัก จะมีพอยเตอร์เชื่อมโยงจากโหนดแม่ไปยังโหนดลูก แต่ละโหนดต้องมีลิงค์ฟิลด์เพื่อเก็บที่อยู่ของโหนดลูกต่าง ๆ นั่นคือ จำนวนลิงค์ฟิลด์ของแต่ละโหนดขึ้นอยู่กับจำนวนของโหนดลูก การแทนที่ทรี ซึ่งแต่ละโหนดมีจำนวนลิงค์ฟิลด์ไม่เท่ากัน ทำให้ยากต่อการปฏิบัติการ วิธีการแทนที่ที่ง่ายที่สุด คือ ทำให้แต่ละโหนดมีจำนวนลิงค์ฟิลด์เท่ากัน โดยอาจใช้วิธีการต่อไปนี้
1. แต่ละโหนดเก็บพอยเตอร์ชี้ไปยังโหนดลูกทุกโหนด
2. แทนทรีด้วยไบนารีทรี เป็นวิธีแก้ปัญหาเพื่อลดการ สิ้นเปลืองเนื้อที่ในหน่วยความจำ
ไบนารีทรีที่ทุก ๆ โหนดมีทรีย่อยทางซ้ายและทรีย่อยทางขวา ยกเว้นโหนดใบและโหนดใบทุกโหนดจะต้องอยู่ที่ระดับเดียวกันเรียกว่า ไบนารีทรีแบบสมบูรณ์ (complete binary tree) สามารถคำนวณจำนวนโหนดทั้งหมดในไบนารีทรีแบบสมบูรณ์ได้ ถ้ากำหนดให้ L คือระดับของโหนดใด ๆ และ N คือจำนวนโหนดทั้งหมดในทรีจะได้ว่า
ระดับ 1 มีจำนวนโหนด 1 โหนด
ระดับ 2 มีจำนวนโหนด 3 โหนด
ระดับ 3 มีจำนวนโหนด 7 โหนด
ระดับ 4 มีจำนวนโหนด 15 โหนด
ระดับ L มีจำนวนโหนด 2L – 1 โหนด
นั่นคือ จำนวนโหนดทั้งหมดในทรีสมบูรณ์ที่มี L ระดับสามารถคำนวณได้จากสูตรดังนี้
การแปลงทรีทั่วไปให้เป็นไบนารีทรี
ขั้นตอนการแปลงทรีทั่วๆ ไปให้เป็นไบนารีทรี มีลำดับขั้นตอนการแปลงดังต่อไปนี้
1. ให้โหนดแม่ชี้ไปยังโหนดลูกคนโต แล้วลบความสัมพันธ์ระหว่างโหนดแม่และโหนดลูกอื่น ๆ
2. ให้เชื่อมความสัมพันธ์ระหว่างโหนดพี่น้อง
3. จับให้ทรีย่อยทางขวาเอียงลงมา 45 องศา
การท่องไปในทรี
การท่องไปในไบนารีทรี (Traversing Binary Tree) คือ การเข้าไปเยือนทุก ๆ โหนดในทรี วิธีการท่องเข้าไปต้องเป็นไปอย่างมีระบบแบบแผน สามารถเยือนโหนดทุก ๆ โหนด ๆ ละหนึ่งครั้ง วิธีการท่องไปนั้นมีด้วยกันหลายแบบ โหนดที่ถูกเยือนอาจเป็นโหนดแม่ (แทนด้วย N)ทรีย่อยทางซ้าย (แทนด้วย L) หรือทรีย่อยทางขวา (แทนด้วย R) วิธีการท่องเข้าไปในทรีมี 6 วิธี คือ NLR LNR LRN NRL RNL และ RLN แต่วิธีการท่องเข้าไปในทรีที่นิยมใช้กันมากเป็นการท่องจากซ้ายไปขวา 3 แบบแรก คือ NLR LNR และ LRN ซึ่งลักษณะการนิยามเป็นนิยามแบบ รีเคอร์ซีฟ (Recursive) ขั้นตอนการท่องไปในแต่ละแบบมีดังนี้
1. การท่องไปแบบพรีออร์เดอร์ (Preorder Traversal) เป็นการเดินเข้าไปเยือนโหนดต่าง ๆ ในทรีด้วยวิธี NLR
2. การท่องไปแบบอินออร์เดอร์ (Inorder Traversal) เป็นการเดินเข้าไปเยือนโหนดต่าง ๆ ในทรีด้วยวิธี LNR 3. การท่องไปแบบโพสออร์เดอร์ (Postorder Traversal) เป็นการเดินเข้าไปเยือนโหนดต่าง ๆ ในทรีด้วยวิธี LRN
เอ็กซ์เพรสชันทรี
เป็นการนำเอาโครงสร้างทรีไปใช้เก็บนิพจน์ทางคณิตศาสตร์โดยเป็นไบนารีทรี ซึ่งแต่ละโหนดเก็บตัวดำเนินการ (Operator) และและตัวถูกดำเนินการ (Operand) ของนิพจน์คณิตศาสตร์นั้น ๆ ไว้ หรืออาจจะเก็บค่านิพจน์ทางตรรกะ (Logical Expression) นิพจน์เหล่านี้เมื่อแทนในทรีต้องคำนึงลำดับขั้นตอนในการคำนวณตามความสำคัญของเครื่องหมายด้วย โดยมีความสำคัญตามลำดับดังนี้
1. ฟังก์ชัน
2. วงเล็บ
3. ยกกำลัง
4. ครื่องหมายหน้าเลขจำนวน (unary)
5. คูณ หรือ หาร
6. บวก หรือ ลบ
7. ถ้ามีเครื่องหมายที่ระดับเดียวกันให้ทำจากซ้ายไปขวา
การแทนนิพจน์ในเอ็กซ์เพรสชันทรี ตัวถูกดำเนินการจะเก็บอยู่ที่โหนดใบ ส่วนตัวดำเนินการจะเก็บในโหนดกิ่ง หรือโหนดที่ไม่ใช่โหนดใบ เช่น นิพจน์ A + B

ไบนารีเซิร์ชทรี (Binary Search Tree)
เป็นไบนารีทรีที่มีคุณสมบัติที่ว่าทุก ๆ โหนดในทรี ค่าของโหนดรากมีค่ามากกว่าค่าของทุกโหนดในทรีย่อยทางซ้าย และมีค่าน้อยกว่าหรือเท่ากับค่าของทุกโหนดในทรีย่อยทางขวา และในแต่ละทรีย่อยก็มีคุณสมบัติเช่นเดียวกัน ค่าข้อมูลในทรีย่อยทางซ้าย < ค่าข้อมูลที่โหนดราก < ค่าข้อมูลในทรีย่อยทางขวา ปฏิบัติการในไบนารีเซิร์ชทรี เพิ่มโหนดเข้าหรือดึงโหนดออกจากไบนารีเซิร์ชทรี ค่อนข้างยุ่งยาก เนื่องจากหลังปฏิบัติการเสร็จเรียบร้อยแล้ว ต้องคำนึงถึงความเป็นไบนารีเซิร์ชทรีทรีนั้นด้วย ซึ่งมีปฏิบัติการดังต่อไปนี้
1. การเพิ่มโหนดในไบนารีเซิร์ชทรี
2. การดึงโหนดในไบนารีเซิร์ชทรี
ขั้นตอนวิธีดึงโหนดออกอาจแยกพิจารณาได้ 3 กรณีดังต่อไปนี้
ก. กรณีโหนดที่จะดึงออกเป็นโหนดใบ
ข. กรณีโหนดที่ดึงออกมีเฉพาะทรีย่อยทางซ้ายหรือทรีย่อยทางขวาเพียงด้านใดด้านหนึ่ง
ค. กรณีโหนดที่ดึงออกมีทั้งทรีย่อยทางซ้ายและทรีย่อยทางขวา
- ถ้าโหนดที่มาแทนที่เป็นโหนดที่เลือกจากทรีย่อยทางซ้าย ต้องเลือกโหนดที่มีค่ามากที่สุดในทรีย่อยทางซ้ายนั้น
- ถ้าโหนดที่จะมาแทนที่เป็นโหนดที่เลือกมาจากทรีย่อยทางขวา ต้องเลือกโหนดที่มีค่าน้อยที่สุดในทรีย่อยทางขวานั้น

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

DTS07-11-08-2552

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

การดำเนินการพื้นฐานของ Queue ได้แก่
- การนำข้อมูลเข้าสู่ Queue เรียกว่า enqueue
- การนำข้อมูลออกจาก Queue เรียกว่า dequeue
- การนำข้อมูลที่อยู่ตอนต้นของ Queue มาแสดง เรียกว่า queue front
- การนำข้อมูลที่อยู่ตอนท้ายของ Queue มาแสดง เรียกว่า queue rear


การนำข้อมูลเข้าสู่โครงสร้างคิว (enqueue)
เป็นกระบวนการอ่านข้อมูลจากภายนอกเข้าสู่โครงสร้างคิวทางด้านปลายที่พอยน์เตอร์ R ชี้อยู่ โดยพอยน์เตอร์ R จะเปลี่ยนตำแหน่ง ชี้ไปยังตำแหน่งที่ว่างตำแหน่งถัดไป ก่อนนำข้อมูลเข้าสู่โครงสร้างคิว
ข้อควรคำนึงถึง คือ ในขณะที่คิวเต็ม (Full Queues) หรือไม่มีช่องว่างเหลืออยู่ จะไม่สามารถนำข้อมูลเข้าไปเก็บในโครงสร้างคิวได้อีก ซึ่งจะทำให้เกิดปัญหา “Overflow” ขึ้น

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

การนำข้อมูลออกจากโครงสร้างคิว (dequeue)
เป็นการลบข้อมูลออกจากโครงสร้างคิวทางด้านหน้า ของโครงสร้างคิว โดยมีพอยน์เตอร์ F เป็นพอยน์เตอร์ชี้บอกตำแหน่งที่ข้อมูลอยู่ เมื่อมีการลบข้อมูล ออกจากโครงสร้างคิวเรียบร้อยแล้ว พอยน์เตอร์ F จะเลื่อนตำแหน่ง ไปยังตำแหน่งถัดไป
ข้อควรคำนึงถึง คือ เมื่อคิวว่าง (Empty queue) หรือไม่มีข้อมูลเหลืออยู่ จะไม่สามารถนำข้อมูลออกจากคิวได้อีก ซึ่ง จะทำให้เกิดปัญหา “underflow” ขึ้น

"ขั้นตอนการนำข้อมูลออกจากโครงสร้างคิว" มีดังนี้
1. ตรวจสอบว่าเป็นคิวว่าง (Empty Queues) หรือไม่
2. ถ้าคิวไม่ว่างให้นำข้อข้อมูลออกจากคิว ณ ตำแหน่งที่ F ชี้อยู่ จากนั้นก็ทำการเลื่อนตำแหน่งพอยน์เตอร์ F ไปยังตำแหน่งถัดไป
3. ถ้ามีข้อมูลอยู่เพียงตัวเดียว ให้กำหนดให้พอยน์เตอร์ F และ R เป็นศูนย์ (0)

การแสดงข้อมูลตอนต้นของคิว (Queue Front)
เป็นการนำข้อมูลที่อยู่ตอนต้นของคิวมาแสดง แต่จะไม่มีการเอาข้อมูลออกจากคิว ซึ่งประโยชน์ของมันก็คือ สามารถทำให้เรารู้ว่า คิวถัดไป (next queue) คืออะไร


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

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


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


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

จากสาเหตุดังกล่าวมาแล้ว จึงได้มีการพัฒนาโครงสร้างคิวให้มีความยืดหยุ่นมากขึ้น สามารถใช้งานพื้นที่โครงสร้างคิวได้อย่างเต็มประสิทธิภาพ โดยการนำปลายทางของโครงสร้าง คือ ด้านหน้าของโครงสร้าง (Front) และด้านหลังของโครงสร้าง (Rear) มาเชื่อมต่อกันในลักษณะวงกลม เรียกว่า คิววงกลม (Circular Queue)

ลักษณะโครงสร้างของคิวแบบวงกลม
ในกรณีที่เป็นคิวแบบวงกลม คิวจะเต็มก็ต่อเมื่อมีการเพิ่มข้อมูลเข้าไปในคิวเรื่อยๆ จนกระทั่ง rear มีค่าน้อยกว่า front อยู่ 1 ค่า คือ rear = front - 1
การประยุกต์ใช้คิว
- ใช้ในระบบปฏิบัติการ เช่น การจัดคิวโปรเซสเข้าใช้ซีพียู การจัดคิวงานพิมพ์
- ใช้ในเราเตอร์ เช่น การจัดคิวให้กับแต่ละ packet ก่อนส่งเข้าสาย
- ใช้ในการให้บีการลูกค้า คืด ต้องวิเคราะห์จำนวนลูกค้าในคิวที่เหมาะสม ว่าควรเป็นเท่าใด เพื่อให้ลูกค้าเสียเวลาน้อยที่สุด
- การเขียนโปรแกรมเพื่อจำลองแบบของสนามบิน จะใช้โครงสร้างข้อมูลแบบคิว แทนคิวของเครื่องบิน ที่จะรอขึ้นหรือรอลง แต่ค่อนข้างเป็นโปรแกรมที่ซับซ้อน ดังสภาพความเป็นจริงที่ว่า " สนามบินมีขนาดเล็กแต่มีเครื่องบินขึ้นลงจนวนมาก มีทางวิ่ง(runway)เพียงทางเดียว ณ เวลาใดๆ เครื่องบิน จะขึ้นหรือจะลงสามารถเป็นไปได้กรณีเดียวเท่านั้น และเพียงครั้งละเครื่องเดียวด้วย เครื่องบินที่มาถึงสนามบิน พร้อมที่จะขึ้นหรือลง ณ เวลาใด ๆ ก็ได้ ดังนั้น ณ เวลาใด ๆ ทางวิ่งอาจจะว่างหรืออาจจะมีเครื่องบินกำลังขึ้น หรือลงอยู่ก็ได้ และอาจจะมีเครื่องบินหลายลำที่รอขึ้นและรอลง จึงมีคิว 2 คิวคือคิวขึ้น(takeoff ) และคิวลง(landing)เครื่องเหล่านั้น หากว่าการรอนั้นบนพื้นดินจะดีกว่าบนอากาศ สนามบินขนาดเล็กจึงต้อง มีการให้เครื่องบินขึ้นต่อเมื่อไม่มีเครื่องบินลง หลังจากได้รับสัญญาณร้องขอจากเครื่องบินลำใหม่เพื่อจะลงหรือขึ้น" โปรแกรมการจำลองแบบจะให้บริการเครื่องบินที่อยู่ในตำแหน่งหัวคิวของคิวรอลงก่อนและถ้าคิวที่รอลงว่าง จึงอนุญาตให้เครื่องบินรอขึ้นขึ้นได้ โปรแกรมจำลองแบบนี้สามารถจะทำงานได้ตลอดเวลา

DTS06-04-08-2552

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

ตัวดำเนินงานพื้นฐานของสแตก ประกอบไปด้วย กระบวนการ 3 กระบวนการคือ

1. Push เป็นฟังก์ชั่นมี 2 พารามิเตอร์คือ s กับ i คือการนำเข้าข้อมูลใส่ลงไปในสแตกเช่น สแตก s ต้องการใส่ข้อมูล i ในสแตก จะได้ push (s,i) คือใส่ข้อมูลi ลงไปในทอปของสแตก s ในการเพิ่มข้อมูลลงในสแตก จะต้องตรวจสอบว่าสแตก เต็มหรือไม่ ถ้าไม่เต็มก็สามารถเพิ่มข้อมูลลงไปในสแตกได้ แล้วปรับตัวชี้ที่ตำแหน่งข้อมูลใหม่ ถ้าสแตกเต็ม (Stack Overflow) ก็จะไม่ลสามารถเพิ่มข้อมูลเข้าไปในสแตกได้อีก
2.Pop หรือการดึงข้อมูลออก การดึงออกข้อมูล คือการนำเอาข้อมูลออกจากสแตก ซึ่งการดำเนินการก็จะต้องดำเนินการในตำแหน่ง top กรณีของการ pop ก็จะต้องตวรจสอบด้วยว่า หากไม่มีข้อมูลภายในสแตกแล้วยังมีการเรียก pop ข้อมูลอีกจะทำให้เกิดข้อผิพลาดที่เรียกว่า stack under flow
3. Top หรือตำแหน่งบนสุด ตำแหน่งบนสุดนั้นใช้ top เป็นตัวกำกับ ซึ่งบอกให้ทราบว่าหากต้องการ pop หรือ push ข้อมูลก็สามารถทำได้ ณ ตำแหน่งนี้ โดยลักษณะการดำเนินการของ top เป็นเพียงสิ่งที่บอกตำแหน่งของข้อมูลท่อยู่บนสุดเท่านั้น หากมีการ push ข้อมูลตำแหน่งของ top ก็จะชี้ไปค่าตำแหน่งสูงสุดใหม่ หรือ หากมีการ pop ข้อมูลออกไป top ก็ไม่ใช่ตัวลบค่า แต่จะเป็นการคืนค่าและลดตำแหน่งลงมา ซึ่งtop จะเกิดความผิดพลาดกรณีเดียวกันกับ pop คือ Underflow เมื่อ สแตกนั้นเกิดการว่าง

การแทนที่ข้อมูลของสแตก สามารถทำได้ 2 วิธี คือ

1. การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์

2. การแทนที่ข้อมูลของสแตกแบบอะเรย์

การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์จะประกอบไปด้วย 2 ส่วนคือ

1. Head Node จะประกอบไปด้วย 2 ส่วนคือ top pointer และจำนวนสมาชิกในสแตก

2. Data Node จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ ที่ชี้ไปยังข้อมูลตัวถัดไป

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

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 : เป็นการลบข้อมูลทั้งหมดที่อยู่ในสแตก

การประยุคต์ใช่สแตก

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

การคำนวนนิพจน์ทางคณิตศาสตร์

สามารถเขียนได้ 3 รูปแบบ คือ

1. นิพจน์ lnfix นิพจน์รูปแบบนี้ opeaor จะต้องอยู่ตรงกลางระหว่างตัวถูกดำเนินการ2 ตัว

2.นิพจน์ Postfix นิพจน์รูปแบบนี้ จะต้องเยนตัวถูกดำเนินการตัวที่ 1 และ 2 ก่อน แล้วตามด้วย operator

3.นิพจน์ Prefix นิพจน์รูปแบบนี้ จะต้องเขียน operator ก่อนแล้วตามด้วยตัวถูกดำเนินการตัวที่ 1 และ 2



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

1. อ่านอัขระในนิพจน์ lnfix เข้ามาทีละตัว

2. ถ้าเป็นตัวถูกดำเนินการจะถูกย้ายไปเป็นตัวอักษรในนิพจน์ Postfix

3. ถ้าเป็นตัวดำเนินการ จะนำค่าลำดับความสำคัญของตัวดำเนินการที่อ่านเข้ามาเทียบกับค่าลำดับความสำคัญของตัวดำเนินการที่อยู่บนสุดของสแตก

- ถ้ามีความสำคัญมากกว่า จะถูก push ลงในสแตก

- ถ้ามีความสำคัญน้อยกว่าหรือเท่ากัน จะต้อง pop ตัวดำเนินการที่อยู่ในสแตกขณะนั้นไปเรียงต่อกับตัวอักษรในนิพจน์ Postfix

4. ตัวดำเนินการที่เป็นวงเล็บปิด ")" จะไม่ push ลงในสแตกแต่มีผลให้ตัวดำเนินการอื่นๆ ถูก pop ออกจากสแตกนำไปเรียงต่อกันในนิพจน์ Postfix จนกว่าจะเจอ "(" จะ pop วงเล็บเปิดออกจากสแตกแต่ไม่นำไปเรียงต่อ

5. เมื่อทำการอ่านตัวอักษรในนิพจน์ lnfix หมดแล้ว ให้ทำการ pop ตัวดำเนินการทุกตัวในสแตกนำมาเรียงต่อในนิพจน์ Postfix



ในการคำนวนค่า Postfix ที่แปลงมาแล้ว ตัวแปลภาษาจะทำการคำนวนโดยใช้โครงสร้างสแตกช่วยอีกเช่นกัน

ขั้นตอนในการคำนวน

1. อ่านตัวอักษรในนิพจน์ Postfix จากซ้ายไปขวาทีละตัวอักษร

2. ถ้าเป็นตัวถูกดำเนินการ ให้เป็นการ push ตัวดำเนินการนั้นลงในสแตก แล้วกลับไปอ่านอักษรตัวใหม่เข้ามา

3. ถ้าเป็นตัวดำเนินการ ให้ทำการ pop ค่าจากสแตก 2 ค่าโดย ตัวแรกเป็นตัวดำเนินการตัวที่ 2 และตัวที่ 1 ตามลำดับ

4. การทำการคำนวน ตัวถูกดำเนินการตัวที่ 1 ด้วยตัวถูก ดำเนินการตัวที่ 2 โดยใช้ตัวดำเนินการในข้อ 3

5. ทำการ push ผลลัพธ์ที่ได้จากการคำนวนในข้อ 4 ลงสแตก

6. ถ้าตัวอักษรในนิพจน์ Postfix ยังอ่านไม่หมดให้กลับไปทำข้อ 1 ใหม่

วันอาทิตย์ที่ 2 สิงหาคม พ.ศ. 2552

DTS05-28-07-2552

Linked List

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

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

โครงสร้างข้อมูลแบบลิงค์ลิสต์จะแบ่งเป็น 2ประเภทคือ

1.Head Structrue จะประกอบไปด้วย3ส่วน ได้แก่ จำนวนโหนดในลิสต์(count) พอยเตอร์ที่ชี้ไปยังโหนดที่เข้าถึง(pos) คือ รายการเก็บข้อมูลปัจจุบันที่มีการท่องเข้าไปในลิสต์แทนด้วยpos และพอยเตอร์ที่ชี้ไปยังโหนดข้อมูลแรกของลิสต์(head)

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

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

1. กระบวนงาน Create List
หน้าที่ สร้างลิสต์ว่าง
ผลลัพธ์ ลิสต์ว่าง

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

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

4. กระบวนงาน Search Iist ในการ Search ต้องมี Condition
หน้าที่ ค้นหาข้อมูลในลิสต์ที่ต้องการข้อมูลนำเข้า
ผลลัพธ์ ค่าจริงถ้าพบข้อมูล ค่าเท็จถ้าไม่พบข้อมูล

5. กระบวนงาน Traverse
หน้าที่ ท่องไปในลิสต์เพื่อเข้าถึงและประมวลผลข้อมูลนำเข้าลิสต์
ผลลัพธ์ ขึ้นกับการประมวลผล เช่น เปลี่ยนแปลงค่าใน node , รวมฟิลด์ในลิสต์,คำนวนค่าเฉลี่ยของฟิลด์ เป็นต้น

6. กระบวนงาน Retrieve Node การแสดงขอมูลในโหนด
หน้าที่ หาตำแหน่งของข้อมูลจากลิสต์ข้อมูลนำข้าลิสต์
ผลลัพธ์ ตำแหน่งข้อมูลที่อยู่ในลิสต์ หากต้องการนำข้อมูลในโหนดขึ้นมาแสดง เพียงทราบถึงตำแหน่งของลิสต์ที่จัดเก็บข้อมูล ก็สามารถนำข้อมูลนั้นๆ มาแสดงได้

7. ฟังก์ชั่น Emptylist
หน้าที่ ทดสอบว่าลิสต์ว่างข้อมูลนำเข้าลิสต์
ผลลัพธ์ เป็นจริง ถ้าลิสต์ว่าง Count= ถ้าไม่เท่า Count# ตรวจสอบโดยการกำหนดวนลูบค่าหากตรวจสอบว่าไม่มีข้อมูลกำหนดค่าเป็นจริง

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

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

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

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

วันอาทิตย์ที่ 26 กรกฎาคม พ.ศ. 2552

DTS04-14-07-2552

โครงสร้างข้อมูลแบบเซ็ต คือ เป็นโครงสร้างข้อมูลที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กัน
ในภาษาซี แต่สามารถใช้หลักการของการดำเนินงานแบบเซ็ตมาใช้ได้ตัวดำเนินการของเซ็ต
(Set operators)
ประกอบด้วย
- set intersection
- set union
- set difference (ความแตกต่าง)
สตริง (String) หรือ สตริงของอักขระ (Character String)
เป็นข้อมูลที่ประกอบไปด้วย ตัวอักษร ตัวเลขหรือเครื่องหมายเรียงติดต่อกันไป รวมทั้งช่องว่างสติง
สตริง (String) เป็นข้อมูลที่ประกอบไปด้วย ตัวอักษร ตัวเลขหรือเครื่องหมายเรียงติดต่อกันไป
รวมทั้งช่องว่างการกำหนดสตริงเราทำได้หลายแบบ ดังนี้
1.กำหนดเป็นสตริงที่มีค่าคงตัว คือ กำหนดได้ทั้งนอกและในฟังก์ชั่นกำหนดไว้นอกฟังก์ชัน
ชื่อค่าคงตัวจะเป็นพอยเตอร์ชี้ไปยังหน่วยความจำที่เก็บสตริงนั้น เมื่อกำหนดไว้ในฟังก์ชัน
จะเป็นพอยเตอร์ไปยังหน่วยความจำที่เก็บตัวมันเอง
2.กำหนดโดยใช้ตัวแปรอะเรย์หรือพอยเตอร์การกำหนดค่าตัวแปรสตริง
ให้แก่ตัวแปรพอยเตอร์และอเรย์ คือ สามารถกำหนดค่าคงตัวสตริงให้พอยเตอร์หรืออเรย์
ได้ในฐานะค่าเริ่มต้นการกำหนดตัวแปรสตริง คือ ในการกำหนดตัวแปรของสตริง
อาศัยหลักการของอะเรย์ เพราะ สตริงก็คืออะเรย์ของอักขระที่ปิดท้ายด้วย
null character (\0) และมีฟังก์ชันพิเศษสำหรับทำงานกับสตริง
โดยเฉพาะอะเรย์ของสตริง คือ ถ้าหากมีสตริงจำนวนมาก ก็ควรจะทำให้เป็นอะเรย์ของสตริง
เพื่อที่จะเขียนโปรแกรมได้สะดวก การสร้างอะเรย์ของสตริง
สามารถสร้างได้ทั้งแบบที่ให้ค่าเริ่มต้นและแบบที่กำหนดเป็นตัวแปร
การดำเนินการเกี่ยวกับสตริง
ในการดำเนินการเกี่ยวกับสตริง จะมีฟังก์ชันที่อยู่ในแฟ้ม ข้อมูล stdio.h
เก็บอยู่ใน C Library อยู่แล้วสามารถนำมาใช้ได้
โดยการใช้คำสั่ง #include ในการเรียกใช้ เช่น
- ฟังก์ชัน strlen(str) ใช้หาความยาวของสตริง
- ฟังก์ชัน strcpy (str1,str2) ใช้คัดลอกข้อมูลจาก string หนึ่งไปยังอีก string หนึ่ง
- ฟังก์ชัน strcat(str1,str2) ใช้เชื่อมต่อข้อความ 2 ข้อความเข้าด้วยกัน

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

ฟังก์ชันอื่นที่ใช้กับสตริง การใช้สตริงนั้น จะมีฟังก์ชันในการกระทำกับสตริงอีกมาก จะช่วยให้การทำงานนั้นสะดวดมากยิ่งขึ้น ซึ่งการใช้ฟังก์ชันต่าง ๆ ที่เกี่ยวกับสตริงนั้นจะต้องนำเข้าไลบรารีไฟล์ strintg.h ด้วยเสมอ ซึ่งมีฟังก์ชันต่าง ๆ ดังนี้

วันพุธที่ 1 กรกฎาคม พ.ศ. 2552

DTS03-06-2552

ความหมายของอาร์เรย์
โครงสร้างข้อมูลแบบอาร์เรย์ (Array) หรือตัวแปรชุด มี 2 ความหมาย คือ
1. ความหมายโดยทั่วไปอาร์เรย์ หมายถึงโครงสร้างที่นำข้อมูลชนิดเดียว
กันมาจัดเรียงกันเป็น n มิติเป็นโครงสร้างตารางรูปสี่เหลี่ยมผืนผ้า
2. ความหมายทางคอมพิวเตอร์อาร์เรย์ หมายถึง กลุ่มของช่วงความจำ ในหน่วยความที่ใช้เก็บข้อมูลชนิดเดียวกันและ ทุกช่องต้องมีขนาดเท่ากัน ภายใต้ตัวแปรเดียวกัน
การสร้าง Array ขึ้นมาใช้งานนั้น ต้องคำนึงถึง
1. ชื่อของ Array
2. ขนาดของ Array แต่ละช่อง และมิติของ Array
3. ค่าสูงสุด ( Upper Bound) และค่าต่ำสุด (Lower Bound) ในแต่ละมิติ
อาร์เรย์ 1 มิติในการใช้โดยระบุถึงชื่อของอาร์เรย์นั้น และสามารถใช้ค่าใด ๆ
ในอาร์เรย์นั้นได้โดยใช้ชื่อกับตัวห้อยหรือ subscript อาร์เรย์ A(N)
หมายถึง อาร์เรย์ที่ชื่อ A ที่สามารถเก็บค่าได้ N ค่าหรือเป็นตารางแถวเดียวที่มีช่องอยู่ N ช่อง
แต่ละช่องมีชื่อ A(1),A(2),...,A(N) ตามลำดับ ในระดับที่ลึกเข้าไปในระบบคอมพิวเตอร์อีก 1 ระดับ
(ระดับ system programming)ชื่อ A จะเป็นแอดเดรสของอาร์เรย์ในพื้นที่ความจำ
ถ้าแต่ละช่องอาร์เรย์กินเนื้อที่ C เวิร์ด (word) ตำแหน่งหรือแอดเดรสของค่าตัวที่ i ในอาร์เรย์ [ หรือ A(i)] หาได้โดยการนำแอดเดรสตั้งต้นของอาร์เรย์นั้น (นั่นคือตำแหน่งของ A)
การเข้าถึงข้อมูล (Access) ข้อมูลใด ๆ ในโครงสร้าง สามารถกระทำได้โดยการระบุหมายเลขกำกับช่องข้อมูล ที่เรียกว่า ตัวดัชนี (Index) หรือบางครั้งเรียกว่า ตัวชี้ หรือ ซับสคริปต์ (Sub Script) การกำหนด Arrayการกำหนดอะเรย์จะต้องกำหนดชื่ออะเรย์ พร้อม subscript ซึ่งเป็น ตัวกำหนดขอบเขตของอะเรย์ มีได้มากกว่า 1 ตัว จำนวน subscript จะเป็นตัวบอกมิติของอะเรย์นั้น
อะเรย์ที่มี subscript มากกว่า 1 ตัวขึ้นไป จะเรียกว่า อะเรย์หลายมิติ
การกำหนด subscript แต่ละตัวจะประกอบไปด้วย ค่าสูงสุดและค่าต่ำสุดของ subscript
การประกาศค่าตัวแปรอะเรย์ในภาษาคอมพิวเตอร์บางภาษาลักษณะโครงสร้างข้อมูลอะเรย์ ข้อกำหนดของการกำหนดค่าต่ำสุดและค่าสูงสุดของ subscript คือค่าต่ำสุดต้องมีค่าน้อยกว่าหรือเท่ากับค่าสูงสุดเสมอ ค่าต่ำสุด เรียกว่า ขอบเขตล่าง (lower bound) ค่าสูงสุด เรียกว่า ขอบเขตบน (upper bound) ค่า subscript ที่ใช้อ้างอิงถึงสมาชิก จะต้องมีค่ามากกว่า หรือเท่ากับขอบเขตล่าง
record เป็นการกำหนดข้อมูลให้เป็นรูปแบบของ structurestructure
เป็นโครงสร้างที่สมาชิกมีประเภทของข้อมูลต่างกัน โดยอาจเป็นจำนวนเต็ม ทศนิยม อะเรย์ อักขระ พอยเตอร์ และ structure ด้วยกัน






วันศุกร์ที่ 26 มิถุนายน พ.ศ. 2552

DTS02-23-06-2552

ความหมายของ Structure หรือโครงสร้าง คือ
กลุ่มของข้อมูลที่มีชนิดเหมือนกัน หรือต่างกันก็ได้ซึ่งนำมารวมกลุ่มแล้วเรียกเป็นชื่อเดียวกัน
• Structure มีประโยชน์มากในการสร้างและจัดการโครงสร้างข้อมูลที่ซับซ้อน ประเภทของตัวแปร
• ตัวแปรเดี่ยว คือตัวแปรที่ขณะใดขณะหนึ่ง จะเก็บข้อมูลได้ค่าเดียว
เช่น – char ch1; – int x;
• ตัวแปรชุด คือตัวแปรที่เก็บข้อมูลประเภทเดียวกัน ได้หลายค่า
เช่น – int num[ ] = {5, 7, 1, 18, 20}; – float f[10];
• ตัวแปรชนิด Structure คือตัวแปรที่สามารถเก็บข้อมูลหลายประเภท ภายใต้ชื่อเดียวกัน
การประกาศชนิดข้อมูลแบบ Structure
รูปแบบของ structure
struct struct_name
{ type1 variable1;
type2 variable2;
... typeN variableN;
} ;

ตัวอย่างเช่น Structure
struct reserv_ticker{
char name[30];
char lastname[30];
int age;
char tele[12];
float price;
int seat_no;
char depart[50];
char reach[50];
}passenger;
strcpy(passenger.name,"kamoltip");
strcpy(passenger.lastname,"khangkn");
passenger.age=20;
strcpy(passenger.tele,"0854421408");
passenger.price=347;
passenger.seat_no=25;
strcpy(passenger.depart,"chumphon");
strcpy(passenger.reach,"bankkok");

}

จากตัวอย่างกำหนดตัวแปรได้ดังนี้char name[30], char lastname[30], int age,
char tele[12], float price, int seat_no, char depart[50], char reach[50],

การแสดงผล
name[30]= kamoltip
lastname[30]=kangkaew
age=20
tele=0854421408
price=347
seat_no=25
depart[50]=chumphon
reach[50]=bankkok

วันพุธที่ 24 มิถุนายน พ.ศ. 2552

ประวัติ

นางสาวกมลทิพย์ กางแก้ว รหัสประจำตัว 50172792019
Miss Kamoltip Kangkaew
หลักสูตร การบริหารธุรกิจ (คอมพิวเตอร์ธุรกิจ) คณะวิทยาการจัดการ
มหาวิทยาลัยราชภัฏสวนดุสิต
E-mail : u50172792019@gmail.com

แนะนำตัว