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

สรุปผลการปฏิบัติงานการฝึกประสบการณืวิชาชีพ

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

สัปดาห์ที่ 18 (วันที่ 28 กุมภาพันธ์ 2554 )

งานที่ปฏิบัติ
-รับ-ส่งเอกสารที่ NN
-ประทับตราหน่วยงานในเอกสาร
-แยกเอกสารออกจากซอง

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

สัปดาห์ที่ 17(วันที่ 21 - 25 กุมภาพันธ์ 2554)

งานที่ปฏิบัติ
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-ถ่ายเอกสารโปรโมชั่นต่างๆ
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ
-ส่งเอกสารที่ NN, HA, AG
-รับกระดาษ A4, แฟ้มใส 4 รู ที่ AO
-เช็ครายละเอียดของ TG LH STOPOVER, PNH FARE 2011
-ส่งเอกสารการออกตั๋ว ที่ HW
-ประทับตราของหน่วยงานในเอกสาร
-โรเนียวโปรโมชั่น เที่ยวทั่วไทย ไปทั่วโลก
-แก้ไขข้อมูลของโปรโมชั่นเที่ยวทั่วไทย ไปทั่วโลก
-เช็ครายละเอียดของ HAN FARE 2011

สัปดาห์ที่ 16(วันที่ 14 - 17 กุมภาพันธ์ 2554)

งานที่ปฏิบัติ
-รับ-ส่งเอกสารที่ NN, AO, AC
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2011
-เรียงเอกสารเก็บเข้าแฟ้ม
-กรอกข้อมูลและหาข้อมูลของ TG/COMPETITORS’S INFORMATION
-เช็ครายละเอียดของ TG/COMPETITORS’S INFORMATION
-ถ่ายเอกสารการประชุม, โปรโมชั่นต่างๆ
-ขนย้ายเสื้อของงาน TITF และแยกแจกตามหน่วยงานต่างๆ
-เช็ครายละเอียดของ HAN FARE 2011
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ

สัปดาห์ที่ 15(วันที่ 7 - 11 กุมภาพันธ์ 2554)

งานที่ปฏิบัติ
-ถ่ายเอกสาร TG/PG CODESHARE FLIGHTS TO MALDIVES, การขอราคาพิเศษ, ข่าวประชาสัมพันธ์ต่างๆ
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ
-กรอกข้อมูลของ TOUR CODE ในแบบฟอร์ม
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2011
-เรียงเอกสารเก็บเข้าแฟ้ม
-ส่งเอกสารที่ NN, AW, AO
-รับหมึกปริ้นเตอร์ ที่ AO

สัปดาห์ที่ 14(วันที่ 31 มกราคม – 4 กุมภาพันธ์ 2554)

งานที่ปฏิบัติ
-รับ-ส่งเอกสารที่ AC, NN, AD, HA, AV, AY, AG, AS, HW
-รับถ่ายไฟฉายAA ที่AO
-ปริ้นเอกสารของ SGN FARE, RULE
-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2011
-ถ่ายเอกสาร FARE SGN, HAN, RGN, VTE
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ
-แยกเอกสารออกจากแฟ้มเอกสาร
-เปลี่ยนหมึก Printer
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2011
-ส่งเอกสารการออกตั๋ว ที่ HW
-เช็ครายละเอียดของ FARE SGN, FARE VTE, FARE PNH ในระบบ

สัปดาห์ที่ 13(วันที่ 24-28 มกราคม 2554)

งานที่ปฏิบัติ
-รับ-ส่งเอกสารที่ AG, NN, AD
-แก้ไขข้อมูลใน CD INTERNET PROMOTION FARE ของ JOHANNESBURG ONE WAY BIG SURPRISE, NEW DELHI ONEWAY BIG SURPRISE, NAGOYA ONE WAY BIG SURPRISE
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-ถ่ายเอกสาร FARE VTE 2011
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ
-สืบค้นข้อมูลเกี่ยวกับมัลดีฟส์ เรื่องฤดูกาลการท่องเที่ยวของเกาะมัลดีฟส์
-กรอกข้อมูลใน CD INTERNET PROMOTION FARE ของ PERTH ONE WAY BIG SURPRISE, BKK – UBP (TG020) ONE WAY BIG SURPRISE
-เช็ครายละเอียดของ PNH RULES, SGN INTERLINE FARE 06 JAN 11 – 14 MAR 11
-กรอกรายละเอียดของ TOUR CODE PROMOTION INTER FOR TG OFC AND BSP AGTS 2010
-รับแฟ้มใส, แฟ้มใส 4 รู, เทปใส ที่ AO
-ถ่ายเอกสารโปรโมชั่นต่างๆ

สัปดาห์ที่ 12(วันที่ 17-21 มกราคม 2554)

งานที่ปฏิบัติ
-เช็ครายละเอียดของ TOUR CODE ของ VTE, SGN, PNH, RGN, HAN
-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2010
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-รับ – ส่งเอกสาร ที่ NN, AD, AO, AV, HA
-ถ่ายเอกสาร FARE PROPOSAL EFFECTIVE 06 JAN 11, FARE PROPOSAL EX-BKK EFF 06 JAN 11, DOMESTIC ONE WAY BIG SURPRISE, JOHANNESBURG ONE WAY BIG SURPRISE, HO CHI MINH CITY ONE WAY BIG SURPRISE, MANILA ONE WAY BIG SURPRISE, MANILA ONE WAY BIG SURPRISE EX-CNX/HKT, NEW DELHI ONEWAY BIG SURPRISE, ATHENS ONEWAY BIG SURPRISE, ONE WAY BIG SURPRISE TO HONGKONG AND FUKUOKA
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ
-เรียงเอกสารเก็บเข้าแฟ้ม FARE VTE 2011
-รับหมึก Printer ที่ AO
-เปลี่ยนหมึก Printer
-กรอกข้อมูลใน CD INTERNET PROMOTION FARE ของ HO CHI MINH CITY ONE WAY BIG SURPRISE, DOMESTIC ONE WAY BIG SURPRISE
-แก้ไขข้อมูลใน CD INTERNET PROMOTION FARE ของ DOMESTIC ONE WAY BIG SURPRISE

สัปดาห์ที่ 11(วันที่ 10-14 มกราคม 2554)

งานที่ปฏิบัติ
-กรอกข้อมูลใน CD INTERNET PROMOTION FARE ของ ATHENS ONEWAY BIG SURPRISE,ONE WAY BIG SURPRISE TO HONGKONG AND FUKUOKA, JOHANNESBURG ONE WAY BIG SURPRISE, MANILA ONE WAY BIG SURPRISE, NAGOYA ONE WAY BIG SURPRISE
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-ถ่ายเอกสาร SPECIAL FARES AREA THAILAND 06 JAN 11 – 31 MAR 11, SPECIAL GROUP FARES AREA THAILAND 06 JAN 11 – 31 MAR 11,
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ
-รับกระดาษ A4 และกระดาษต่อเนื่อง ที่ AO
-เรียงเอกสารเก็บเข้าแฟ้ม RBD GUIDE LINE INDOCHINA& MYANMAR, CORPORATE FARE TIER 1 – TIER4 (2010 - 2011)
-รับเอกสาร ที่ NN
-ประทับตราของหน่วยงานในเอกสาร
-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2010

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

สัปดาห์ที่ 10(วันที่ 4-7 มกราคม 2554)

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

-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร

-กรอกข้อมูลใน CD INTERNET PROMOTION FARE ของ KUALA LUMPUR ONEWAY BIG SURPRISE, NEW DELHI ONEWAY BIG SURPRISE

-เช็ครายละเอียดของ RGN TG’S FARE PROPOSAL EFF 06 JAN 11 – 30 SEP 11

-รับกระดาษ A4 และ หมึก Printer ที่ AO

-เปลี่ยนหมึก Printer

-เช็ครายละเอียดของ TG-QV FARE PROPOSAL WITH EFF 06 JAN 11 – 30 SEP 11

สัปดาห์ที่ 9(วันที่ 27-30 ธันวาคม 2553)

งานที่ปฏิบัติ
-ถ่ายเอกสาร โปรโมชั่นต่างๆ
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2010

สัปดาห์ที่ 8(วันที่ 20-24 ธันวาคม 2553)

งานที่ปฏิบัติ
-กรอกข้อมูลใน CD INTERNET PROMOTION FARE ของ NEW DELHI ONEWAY BIG SURPRISE
-เช็ครายละเอียดของ RGN GROUP เช็ค RBD
-เช็ครายละเอียด ของ SPECAIL FARE FOR LABOR RGN
-เช็ครายละเอียด ของ SPECAIL FARE FOR STUDENT RGN
-ส่งการ์ดอวยพรปีใหม่ให้กับหน่วยงานต่างๆ
-รับโทรเลข ที่ NN
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2010
-เช็ครายละเอียดและดูส่วนต่างของ VTE TG-QV FARE PROPOSAL EFF 06 JAN 11 – 30 SEP 11 ในส่วนของ RBD ใน ECONOMY ONEWAY และ ECONOMY ROUNDTIP
-ถ่ายเอกสาร โครงการรวมใจไทยถวายในหลวง สมทบทุนสร้างสถาบันการแพทย์โรงพยาบาลศิริราช และ PROMOTION HANOI ONEWAY BIG SURPRISE
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ
-เช็ครายละเอียดของ FARE PROPOSAL EFF 06 JAN 11 - 30 SEP 11 ของ VTE
-รับกระดาษ A4 และแฟ้มใส ที่ AO
-เช็ครายละเอียดของ SGN FARE SHEET 06 JAN 11

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

สัปดาห์ที่ 7(วันที่ 13-17 ธันวาคม 2553)

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

-ตรวจเช็คราคาของ PROPOSAL PNH WINTER FARE WZ YQ EFF 01 OCT 2010 – 30 SEP 2011 – REVISED

-รับเอกสาร ที่ NN

-รับแฟ้มเอกสาร ที่AD

-เรียงเอกสารเก็บเข้าแฟ้มเอกสาร

-ถ่ายเอกสาร CIVIL SERVICE COMMISSIONS FARES EX-KKC, CIVIL SERVICE COMMISSIONS FARES EX-CEI

-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ

-ถ่ายเอกสาร PROPOSAL PNH FARE INCLUDE YQ WITH EFF 06 JAN 2011 – 30 SEP 2011

- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ

-แยกเอกสารออกจากแฟ้มเอกสาร

-เช็ครายละเอียดของ SGN FARE SHEET 06 JAN 11 (LOW)

-เช็ครายละเอียดของ SGN FARE SHEET 02 FEB 11 (HIGH)

-เช็ครายละเอียดของ VTE FARE SHEET 06 JAN 11

-เช็ครายละเอียดของ PNH FARE SHEET 06 JAN 11

สัปดาห์ที่ 6(วันที่ 7-9 ธันวาคม 2553)

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

-กรอกข้อมูลใน CD INTERNET PROMOTION FARE ของ PROMOTION DUBAI ONEWAY BIG SURPRISE, PROMOTION KUALA LUMPUR ONEWAY BIG SURPRISE, PROMOTION MELBORNE ONEWAY BIG SURPRISE

- ม้วนปฏิทิน ของปี 2554

-รับเอกสาร ที่ NN

-รับกระดาษ A4 และหนังยาง ที่ AO

-เช็คเที่ยวบินภายในประเทศและต่างประเทศ

-ส่งเอกสาร ที่ NN

-ตรวจเช็คราคาของ SGN FARE SHEET 01 OCT 2010 – 30 SEP 2011 – PROPOSAL – REVISED

-เช็ครายละเอียดของ VN STANDARD RULES YEARLY TEMPLATE FOR SRNN

-เช็ครายละเอียดของ VN PROMOTION RULES YEARLY TEMPLATE FOR SRNN

-เช็ครายละเอียดของ SGN PROPOSAL – GIT FARE

-ตรวจเช็คราคาของ PROPOSAL PNH FARE YQ AND ETHNIC EFF 06 JAN 2011 – 30 SEP 2011

-ตรวจเช็คราคาของ PROPOSAL PNH WINTER FARE WZ YQ EFF 01 OCT 2010 – 30 SEP 2011 – REVISED

สัปดาห์ที่ 5(วันที่ 29 พฤศจิกายน – 3 ธันวาคม 2553)

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

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

-นำเอกสารไปส่งที่ AO และ AC

-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2010

-รับเอกสาร ที่ NN

-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร

-แยกเอกสารโปรโมชั่นต่างๆที่ไม่ใช้แล้วนำกลับมาใช้ใหม่

-กรอกข้อมูลใน CD INTERNET PROMOTION FARE ของ PROMOTION TRAVEL WITH DAD 2010, PROMOTION ONEWAY SURPRISE, PROMOTION ONEWAY BIG SURPRISE

- เช็คราคาของ PROMOTION TRAVEL WITH DAD 2010, PROMOTION ONEWAY SURPRISE, PROMOTION ONEWAY BIG SURPRISE

-เช็คและกรอกราคาของ SPECIAL FARE FOR RGN ของ ECONOMY ONEWAY, ECONOMY ROUNDTIP, FIRST&BUSINESS ONEWAY, FIRST&BUSINESS ROUNDTIP

-คำนวณส่วนต่างของแต่ละโปรโมชั่น

วันอังคารที่ 30 พฤศจิกายน พ.ศ. 2553

สัปดาห์ที่ 4(วันที่ 22–26 พฤศจิกายน 2553)
งานที่ปฏิบัติ
-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร
-นำเอกสารไปส่งที่ AD และ AC
-แก้ไขและตรวจเช็คราคาของ FLY THAI SMOOTH AS SILK (FIT FARES) EFF 06 JAN 11 – 31 MAR 11 (NET AG & CTO)
-แก้ไขและตรวจเช็คราคาของ FLY THAI SMOOTH AS SILK (FIT FARES) EFF 06 JAN 11 – 31 MAR 11 (NET ROH AGT)
-รับหมึก Printer และกระดาษ A4 ที่AO
-ตรวจเช็คราคาของ TG FIT FARES (EFF 06 JAN 11 – 31 MAR 11) FOR INTERNET ONLY
-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2010
-รับเอกสาร ที่ AC
-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ
-แยกเอกสารที่เตรียมจะส่งไปยังหน่วยงานต่างๆ
-จัดเก็บเอกสารที่เตรียมจะส่งใส่ซองของหน่วยงานต่างๆ
- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ
-ตรวจเช็คราคาของ FARE PROPOSAL EFF 06 JAN 11 – 31 MAR 11 (ECONOMY ONEWAY, ROUNDTRIP, FIRST&BUSINESS ONEWAY, ROUNDTRIP)
-รับเอกสารที่หน้าห้อง NN

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

สัปดาห์ที่ 3(วันที่ 15–19 พฤศจิกายน 2553)

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

- ตรวจเช็คราคาของ SPECIAL FARES AREA THAILAND

-ตรวจเช็คราคาของ TG FIT FARES (EFF 06 JAN 11 – 31 MAR 11) FOR AGT

-แยกเอกสาร CO-MAIL IN ออกจากซองเอกสาร

-เก็บเอกสาร ACKNOWLEDGE เข้าแฟ้ม ACKNOWLEDGE ALL FARE AREA THAILAND INDOCHINA & MYANMAR 2010

-ตรวจเช็คราคาของ TG FIT FARES (EFF 06 JAN 11 – 31 MAR 11) FOR CORP TIER 1

-ตรวจเช็คราคาของ TG FIT FARES (EFF 06 JAN 11 – 31 MAR 11) FOR CORP TIER 2

-ตรวจเช็คราคาของ TG FIT FARES (EFF 06 JAN 11 – 31 MAR 11) FOR CORP TIER 3

-ตรวจเช็คราคาของ TG FIT FARES (EFF 06 JAN 11 – 31 MAR 11) FOR GOVERNMENT

-พิมพ์เอกสาร TICKET ISSUED UNDER FARE SHEET OF AREA THAILAD

-จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ

-แยกเอกสารที่เตรียมจะส่งไปยังหน่วยงานต่างๆ

-จัดเก็บเอกสารที่เตรียมจะส่งใส่ซองของหน่วยงานต่างๆ

- ส่งเอกสาร CO-MAIL OUT ไปยังหน่วยงานต่างๆ

-แก้ไขราคาของ TERMS & CONDITIONS GENERAL GROUP FARES (GIT) EFF 06 JAN 11 – 31 MAR 11) FOR TG OPERATING FLIGHTS ONLY

-พิมพ์เอกสารการปรับเปลี่ยนตารางการบินเส้นทางภายในประเทศ ช่วงเทศกาล เชียงใหม่ เชียงราย

-ตรวจเช็คราคาของ TERMS & CONDITIONS GENERAL GROUP FARES (GIT) EFF 06 JAN 11 – 31 MAR 11) FOR TG OPERATING FLIGHTS ONLY

-นำเอกสารไปส่งที่ AO และ AC

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

สัปดาห์ที่ 2(วันที่ 8-12 พฤศจิกายน 2553)

สัปดาห์ที่ 2(วันที่ 8-12 พฤศจิกายน 2553)

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

- พิมพ์เอกสารการเปลี่ยนแปลงระยะเวลาการขอ VISA

- ทำสันแฟ้ม CODESHARE AREA A-Z (BKKNN-S)

- ตรวจเช็คราคาของ TG FIT FARES (EFF 06 JAN 11-31 MAR 11) FOR

- ถ่ายเอกสารของแต่ละโปรโมชั่นของเที่ยวบินต่างๆ

- เรียงเอกสารของแต่ละโปรโมชั่นของแต่ละเที่ยวบิน เตรียมส่งไปยังแผนกต่างๆ ในบริษัท

- ประทับตราหน่วยงานในเอกสารที่จะส่งไปยังหน่วยงานต่างๆ

- จัดทำใบ ACKNOWLEDGE ของหน่วยงานต่างๆ

- จัดเก็บเอกสารที่เตรียมจะส่งใส่ซอง CO-MAIL OUT

- จัดเก็บเอกสารราคาใส่แฟ้มต่างๆ

- ตรวจเช็คราคาของ ECONOMY CLASS ONE WAY AND ROUNDTRIP (11 NOV 10 – 31 MAR 11)

สภาพปัญหา

- หาแฟ้มที่เก็บเอกสารไม่เจอ

- ไม่รู้วิธีการตรวจสอบราคาของแต่ละโปรโมชั่น

การแก้ปัญหา

- ถามจากพี่ๆที่รู้ที่เก็บแฟ้มเอกสารนั้นๆ

- ถามพี่ๆที่ให้ช่วยตรวจสอบราคาของแต่ละโปรโมชั่น

สัปดาห์ที่ 1(วันที่ 1–5 พฤศจิกายน 2553)

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

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

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

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

วันเสาร์ที่ 26 กันยายน พ.ศ. 2552

DTS10-08/09/52

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

DTS09-02/09/52

สรุปเรื่อง Graph
กราฟ (Graph) เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น อีกชนิดหนึ่ง กราฟเป็นโครงสร้างข้อมูลที่มีการนำไปใช้ในงานที่เกี่ยวข้องกับการแก้ปัญหาที่ค่อนข้างซับซ้อน
นิยามของกราฟ
กราฟ เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้นที่ประกอบ ด้วยกลุ่มของสิ่งสองสิ่งคือ
(1) โหนด (Nodes) หรือ เวอร์เทกซ์(Vertexes)
(2) เส้นเชื่อมระหว่างโหนด เรียก เอ็จ (Edges)กราฟที่มีเอ็จเชื่อมระหว่างโหนดสองโหนด
ถ้าเอ็จไม่มีลำดับ ความสัมพันธ์จะเรียกกราฟนั้นว่ากราฟแบบไม่มีทิศทาง (Undirected Graphs)และถ้ากราฟนั้นมีเอ็จที่มีลำดับความสัมพันธ์หรือมีทิศทางกำกับด้วยเรียกกราฟ
นั้นว่า กราฟแบบมีทิศทาง(Directed Graphs)บางครั้งเรียกว่า ไดกราฟ (Digraph)ถ้าต้องการอ้างถึงเอ็จแต่ละเส้นสามารถเขียนชื่อเอ็จกำกับไว้ก็ได้
การเขียนกราฟแสดงโหนดและเส้นเชื่อมความสัมพันธ์ ระหว่างโหนดไม่มีรูปแบบที่ตายตัวการลากเส้นความสัมพันธ์เป็นเส้นลักษณะไหนก็ได้ที่สามารถแสดงความสัมพันธ์ระหว่างโหนดได้ถูกต้อง นอกจากนี้เอ็จจากโหนดใด ๆ สามารถวนเข้าหาตัวมันเองได้
กราฟแบบไม่มีทิศทางเป็นเซตแบบจำกัดของโหนดและเอ็จ โดยเซตอาจจะว่างไม่มีโหนดหรือเอ็จเลยเป็นกราฟว่าง (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 ครั้ง และ Mk
ij เป็นสมาชิกในแถวที่ 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) ตามแนววิถีเดิมนั้น จนกระทั่งสามารถดำเนินการต่อเนื่องเข้าสู่แนววิถีอื่น ๆ เพื่อเยือนโหนดอื่น ๆ ต่อไปจนครบทุกโหนด

วันศุกร์ที่ 11 กันยายน พ.ศ. 2552

DTS08-25/08/52

สรุปเรื่อง Tree
ทรี เป็นโครงสร้างข้อมูลที่ความสัมพันธ์ระหว่าง โหนดจะมีความสัมพันธ์ลดหลั่นกันเป็นลำดับชั้น แต่ละโหนดจะมีความสัมพันธ์กับโหนดในระดับที่ต่ำลงมา หนึ่งระดับได้หลาย ๆ โหนดเรียกโหนดดังกล่าวว่า โหนดแม่ (Parent or Mother Node)
โหนดที่อยู่ต่ำกว่าโหนดแม่อยู่หนึ่งระดับเรียกว่า โหนดลูก (Child or Son Node)
โหนดที่อยู่ในระดับสูงสุดและไม่มีโหนดแม่เรียกว่า โหนดราก (Root Node)
โหนดที่มีโหนดแม่เป็นโหนดเดียวกันเรียกว่า โหนดพี่น้อง (Siblings)
โหนดที่ไม่มีโหนดลูก เรียกว่าโหนดใบ (Leave Node)
เส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดสองโหนดเรียกว่า กิ่ง (Branch)
นิยามของทรี
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. โหนดแต่ละโหนดเก็บพอยเตอร์ชี้ไปยังโหนดลูกทุกโหนด การแทนที่ทรีด้วยวิธีนี้ จะให้จำนวนฟิลด์ในแต่ละโหนดเท่ากันโดยกำหนดให้มีขนาดเท่ากับจำนวนโหนดลูกของโหนดที่มีลูกมากที่สุด โหนดใดไม่มีโหลดลูกก็ให้ค่าพอยเตอร์ในลิงค์ฟิลด์นั้นมีค่าเป็น Nullและให้ลิงค์ฟิลด์แรกเก็บค่าพอยเตอร์ชี้ไปยังโหนด ลูกลำดับที่หนึ่ง ลิงค์ฟิลด์ที่สองเก็บค่าพอยเตอร์ชี้ไปยังโหนดลูกลำดับที่สอง และลิงค์ฟิลด์อื่นเก็บค่าพอยเตอร์ของโหนดลูกลำดับ ถัดไปเรื่อย ๆ
การแทนทรีด้วยโหนดขนาดเท่ากันค่อนข้างใช้เนื้อที่จำนวนมาก เนื่องจากแต่ละโหนดมีจำนวนโหนดลูกไม่เท่ากันหรือบางโหนดไม่มีโหนดลูกเลยถ้าเป็นทรีที่แต่ละโหนดมีจำนวนโหนดลูกที่แตกต่างกันมาก จะเป็นการสิ้นเปลืองเนื้อที่ในหน่วยความจำโดยเปล่าประโยชน์
2. แทนทรีด้วยไบนารีทรี
เป็นวิธีแก้ปัญหาเพื่อลดการ สิ้นเปลืองเนื้อที่ในหน่วยความจำก็คือกำหนดลิงค์ฟิลด์ให้มีจำนวนน้อยที่สุดเท่าที่จำเป็นเท่านั้นโดยกำหนดให้แต่ละโหนดมีจำนวนลิงค์ฟิลด์สองลิงค์ฟิลด์
-ลิงค์ฟิลด์แรกเก็บที่อยู่ของโหนดลูกคนโต
-ลิงค์ฟิลด์ที่สองเก็บที่อยู่ของโหนดพี่น้องที่เป็นโหนดถัดไปโหนดใดไม่มีโหนดลูกหรือไม่มีโหนดพี่น้องให้ค่าพอยน์เตอร์ในลิงค์ฟิลด์มีค่าเป็น Null
โครงสร้างทรีที่แต่ละโหนดมีลิงค์ฟิลด์แค่สองลิงค์ฟิลด์ ซึ่งช่วยให้ประหยัดเนื้อที่ในการจัดเก็บได้มาก เรียกโครงสร้างทรีที่แต่ละโหนดมีจำนวนโหนดลูกไม่เกินสองหรือแต่ละโหนดมีจำนวน
ทรีย่อยไม่เกินสองนี้ว่า ไบนารีทรี (Binary Tree)ไบนารีทรีที่ทุก ๆ โหนดมีทรีย่อยทางซ้ายและ
ทรีย่อยทางขวา ยกเว้นโหนดใบ และโหนดใบทุกโหนดจะต้องอยู่ที่ระดับเดียวกันเรียกว่า ไบนารีทรีแบบสมบูรณ์ (complete binary tree)สามารถคำนวณจำนวนโหนดทั้งหมดในไบนารีทรีแบบสมบูรณ์ได้ถ้ากำหนดให้ L คือระดับของโหนดใด ๆ และN คือจำนวนโหนดทั้งหมดในทรีจะได้ว่า
ระดับ 1 มีจำนวนโหนด 1 โหนด
ระดับ 2 มีจำนวนโหนด 3 โหนด
ระดับ 3 มีจำนวนโหนด 7 โหนด
การแปลงทรีทั่วไปให้เป็นไบนารีทรี
ขั้นตอนการแปลงทรีทั่วๆ ไปให้เป็นไบนารีทรี มีลำดับขั้นตอนการแปลง ดังต่อไปนี้
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 มีขั้นตอนการเดินดังต่อไปนี้
(1) เยือนโหนดราก
(2) ท่องไปในทรีย่อยทางซ้ายแบบพรีออร์เดอร์
(3) ท่องไปในทรีย่อยทางขวาแบบพรีออร์เดอร์
2.การท่องไปแบบอินออร์เดอร์(Inorder Traversal)เป็นการเดินเข้าไปเยือนโหนดต่าง ๆในทรีด้วยวิธี LNRมีขั้นตอนการเดินดังต่อไปนี้
(1) ท่องไปในทรีย่อยทางซ้ายแบบอินออร์เดอร์
(2) เยือนโหนดราก
(3) ท่องไปในทรีย่อยทางขวาแบบอินออร์เดอร์
3. การท่องไปแบบโพสออร์เดอร์(Postorder Traversal)เป็นการเดินเข้าไปเยือนโหนดต่าง ๆ
ในทรีด้วยวิธี LRN มีขั้นตอนการเดินดังต่อไปนี้
(1) ท่องไปในทรีย่อยทางซ้ายแบบโพสต์ออร์เดอร์
(2) ท่องไปในทรีย่อยทางขวาแบบโพสต์ออร์เดอร์
(3) เยือนโหนดราก
เอ็กซ์เพรสชันทรี (Expression Tree)เป็นการนำเอาโครงสร้างทรีไปใช้เก็บนิพจน์ทางคณิตศาสตร์โดยเป็นไบนารีทรี
ความสำคัญของเครื่องหมายด้วยโดยมีความสำคัญตามลำดับดังนี้
- ฟังก์ชัน
- วงเล็บ
- ยกกำลัง
- เครื่องหมายหน้าเลขจำนวน (unary)
- คูณ หรือ หาร
- บวก หรือ ลบ
- ถ้ามีเครื่องหมายที่ระดับเดียวกันให้ทำจากซ้ายไปขวา

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

วันเสาร์ที่ 29 สิงหาคม พ.ศ. 2552

DTS07 -11/08/52

สรุปเรื่อง Queue
คิว เป็นโครงสร้างข้อมูลแบบเชิงเส้นหรือลิเนียร์ลิสต์ การเพิ่มข้อมูลจะทำที่ปลายข้างหนึ่งเรียกว่าส่วนท้ายหรือเรียร์ (rear) และการนำข้อมูลออกจะกระทำที่ปลายอีกข้างหนึ่งเรียกว่า ส่วนหน้า หรือฟรอนต์(front) ลักษณะการทำงานของคิวเป็นลักษณะของการเข้าก่อนออกก่อนหรือเรียกว่า FIFO (First In First Out)
การทำงานของคิว
การใส่สมาชิกตัวใหม่ลงในคิวเรียกว่า Enqueue ซึ่งมีรูปแบบคือ
enqueue (queue, newElement)
หมายถึง การใส่ข้อมูลnewElement ลงไปที่ส่วนเรียร์
การนำสมาชิกออกจากคิว เรียกว่าDequeue ซึ่งมีรูปแบบคือdequeue (queue, element) หมายถึง การนำออกจากส่วนหน้าของคิวและให้ ข้อมูลนั้นกับ element
การนำข้อมูลที่อยู่ตอนต้นของคิวมาแสดงจะเรียกว่า Queue Frontแต่จะไม่ทำการเอาข้อมูลออกจากคิว
การนำข้อมูลที่อยู่ตอนท้ายของคิวมาแสดงจะ เรียกว่าQueue Rear แต่จะไม่ทำการเพิ่มข้อมูลเข้าไปในคิว
การแทนที่ข้อมูลของคิวสามารถทำได้ 2 วิธี คือ
1. การแทนที่ข้อมูลของคิวแบบลิงค์ลิสต์
2. การแทนที่ข้อมูลของคิวแบบอะเรย์
การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์จะประกอบไปด้วย 2 ส่วน คือ
1. Head Nodeจะประกอบไปด้วย 3 ส่วนคือพอยเตอร์จำนวน 2 ตัว คือ Front และ rearกับจำนวนสมาชิกในคิว
2. Data Node จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป
การดำเนินการเกี่ยวกับคิว
1. Create Queue จัดสรรหน่วยความจำให้แก่ Head Node และให้ค่า pointer ทั้ง 2 ตัวมีค่าเป็น null และจำนวนสมาชิกเป็น 0
2. Enqueue การเพิ่มข้อมูลเข้าไปในคิว
3. Dequeue การนำข้อมูลออกจากคิว
4. Queue Front เป็นการนำข้อมูลที่อยู่ส่วนต้นของคิวมาแสดง
5. Queue Rear เป็นการนำข้อมูลที่อยู่ส่วนท้ายของคิวมาแสดง
6. Empty Queue เป็นการตรวจสอบว่าคิวว่างหรือไม่
7. Full Queue เป็นการตรวจสอบว่าคิวเต็มหรือไม่
8. Queue Count เป็นการนับจำนวนสมาชิกที่อยู่ในคิว
9. Destroy Queueเป็นการลบข้อมูลทั้งหมดที่อยู่ในคิว

การนำข้อมูลเข้าสู่คิว จะไม่สามารถนำเข้าในขณะที่คิวเต็ม หรือไม่มีที่ว่าง ถ้าพยายามนำเข้าจะทำให้เกิดความผิดพลาดที่เรียกว่า overflow
การนำข้อมูลออกจากคิว จะไม่สามารถนำอะไรออกจากคิวที่ว่างเปล่าได้ ถ้าพยายามจะทำให้เกิดความผิดพลาดที่เรียกว่าUnderflow

วันจันทร์ที่ 10 สิงหาคม พ.ศ. 2552

DTS06 -04/08/52

สรุปเรื่อง Stack
สแตก(Stack) เป็นโครงสร้างข้อมูลที่ข้อมูลแบบลิเนียร์ลิสต์ ที่มีคุณสมบัติคือ การเพิ่มหรือลบข้อมูลในสแตก จะทำที่ปลายข้างเดียวกัน เรียกว่า Top ของสแตก (Top of Stack) และลักษณะที่สำคัญของสแตก คือ ข้อมูลใส่หลังสุดจะนำออกมา จากสแตกเป็นลำดับแรกสุด เรียกคุณสมบัตินี้ว่า LIFO (last in first out)
การทำงานของสแตกมี3กระบวนการคือ
1.Push คือ การนำข้อมูลใส่ลงไปในสแตก
2.Pop คือ การนำข้อมูลออกจากส่วนบนสุดของสแตก
3.Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก แต่ไม่ได้นำเอาข้อมูลนั้นออกจากสแตก
การแทนที่ข้อมูลของสแตก สามารถทำได้ 2 วิธี คือ
การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์ จะประกอบไปด้วย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 เป็นการลบข้อมูลทั้งหมดที่อยู่ในสแตก
การคำนวณนิพจน์ทางคณิตศาสตร์
ในการเขียนนิพจน์ทางคณิตศาสตร์เพื่อการคำนวณ จะต้องคำนึงถึงลำดับความสำคัญของเครื่องหมายสำหรับการคำนวณด้วยโดยทั่วไปนิพจน์ทางคณิตศาสตร์สามารถเขียนได้ 3 รูปแบบ คือ
1. นิพจน์ Infix นิพจน์รูปแบบนี้ operatorจะอยู่ตรงกลางระหว่างตัวถูกดำเนินการ 2 ตัว
2. นิพจน์ Postfix นิพจน์รูปแบบนี้ จะต้องเขียนตัวถูกดำเนินการตัวที่ 1 และ 2 ก่อน แล้วตามด้วย operator
3. นิพจน์ Prefix นิพจน์รูปแบบนี้ จะต้องเขียน operatorก่อนแล้วตามด้วยตัวถูกดำเนินการตัวที่ 1 และ 2
ในการเขียนโปรแกรมคอมพิวเตอร์ด้วยภาษาระดับสูง คำสั่งที่เป็นนิพจน์ทางคณิตศาสตร์จะเขียนอยู่ในรูปแบบของนิพจน์Infix การคำนวณค่านิพจน์ในรูปแบบนี้ ตัวแปลภาษาต้องทำการ ตรวจสอบนิพจน์จากซ้ายไปขวา เพื่อหาเครื่องหมาย
ที่ต้องคำนวณ ก่อน จึงจะเริ่มคำนวณให้ แล้วทำแบบนี้ซ้ำ ๆกันจนกว่าจะ คำนวณเครื่องหมายครบทุกตัว ทำให้การทำงานช้าและไม่สะดวก ต่อการคำนวณ
การแก้ปัญหานี้ ตัวแปลภาษาจะทำงานแปลง
นิพจน์ Infix ให้ อยู่ในรูปแบบที่ช่วยให้การคำนวณสะดวกและรวดเร็วขึ้น โดยแปลงให้อยู่ในรูปของนิพจน์ Postfix ในการแปลงจากนิพจน์ Infixไปเป็นนิพจน์ Postfix จะใช้ เทคนิคของการจัดเก็บข้อมูลใน โครงสร้างสแตกเข้ามาช่วย โดยพิจารณานิพจน์ Infix ทีละตัวอักษรจากซ้ายไปขวาและย้าย ตัวอักษรเหล่านั้นไปเป็นนิพจน์ Postfixทีละตัว ส่วนตัวดำเนินการหรือ operator จะถูกนำไปเก็บไว้ในสแตก
ขั้นตอนการแปลงจากนิพจน์ Infix เป็นนิพจน์Postfix
1. อ่านอักขระในนิพจน์ Infix เข้ามาทีละตัว
2. ถ้าเป็นตัวถูกดำเนินการจะถูกย้ายไปเป็นตัวอักษรในนิพจน์ Postfix
3. ถ้าเป็นตัวดำเนินการ จะนำค่าลำดับความสำคัญของตัว ดำเนินการที่อ่านเข้ามาเทียบกับค่าลำดับความสำคัญของตัวดำเนินการที่อยู่บนสุดของสแตก
- ถ้ามีความสำคัญมากกว่า จะถูก push ลงในสแตก
- ถ้ามีความสำคัญน้อยกว่าหรือเท่ากัน จะต้อง pop ตัวดำเนินการที่อยู่ในสแตกขณะนั้นไปเรียงต่อกับตัวอักษรในนิพจน์ Postfix
4. ตัวดำเนินการที่เป็นวงเล็บปิด “)” จะไม่ push ลงในสแตกแต่มีผลให้ตัวดำเนินการอื่น ๆ ถูก pop ออกจากสแตก นำไป เรียงต่อกันในนิพจน์ Postfix จนกว่าจะเจอ “(” จะ popวงเล็บเปิดออกจากสแตกแต่ไม่นำไปเรียงต่อ
5. เมื่อทำการอ่านตัวอักษรในนิพจน์ Infixหมดแล้ว ให้ทำการ Pop ตัวดำเนินการทุกตัวในสแตกนำมาเรียงต่อในนิพจน์Postfix
ในการคำนวณค่า Postfix ที่แปลงมาแล้ว ตัวแปลภาษาจะทำการคำนวณโดยใช้โครงสร้างสแตกช่วยอีกเช่นกันขั้นตอนในการคำนวณ
1. อ่านตัวอักษรในนิพจน์ Postfix จากซานไปขวาทีละตัวอักษร
2. ถ้าเป็นตัวถูกดำเนินการ ให้ทำการ push ตัวถูกดำเนินการนั้นลงในสแตก แล้วกลับไปอ่านอักษรตัวใหม่เข้ามา
3. ถ้าเป็นตัวดำเนินการ ให้ทำการ pop ค่าจากสแตก 2 ค่าโดย ตัวแรกเป็นตัวถูกดำเนินการตัวที่ 2 และตัวที่ 1
4. ทำการคำนวณ ตัวถูกดำเนินการตัวที่ 1ด้วยตัวถูก ดำเนินการตัวที่ 2 โดยใช้ตัวดำเนินการในข้อ 3
5. ทำการ push ผลลัพธ์ที่ได้จากการคำนวณในข้อ 4 ลงสแตก
6. ถ้าตัวอักษรในนิพจน์ Postfix ยังอ่านไม่หมดให้กลับไปทำข้อ 1 ใหม่

ฟังก์ชั่น iostream

#include
#include
int main () {
long int num;
cout<<"========== Count Back to one =========="<<'\n'<<'\n'; cout<<"Please enter number (0 to STOP):"; cin>>num;
while(num!=0){
while (num>0) {
cout<< num <<'\n';>>num;
}
clrscr();
cout<<"+++++++++++++++++++++++++++++\n"; cout<<"++++++++++ Good Bye++++++++++\n"; cout<<"+++++++++++++++++++++++++++++\n"; return 0; }

วันจันทร์ที่ 3 สิงหาคม พ.ศ. 2552

DTS05 -28/07/52

สรุปเรื่อง Linked list
ลิงค์ลิสต์(Linked list) เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่างๆโดยมีพอยเตอร์เป็นตัวเชื่อมต่อ
แต่ละอิลิเมนต์ เรียกว่าโนด(Node) ในแต่ละโนดประกอบด้วย2ส่วน คือ
1. Data จะเก็บข้อมูลของอิลิเมนต์
2. Linked Field ทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์
ในลิงค์ลิสต์จะมีตัวแปรสำหรับชี้ตำแหน่งลิสต์(List pointer variable) เป็นการเก็บตำแหน่งเริ่มต้นของลิสต์ คือโหนดแรกของลิสต์นั่นเอง ถ้าลิสต์ไม่มีข้อมูล ข้อมูลในโหนดแรกของลิสต์จะเป็น Null
โครงสร้างของข้อมูลแบบลิงค์ลิสต์
แบ่งเป็น 2ส่วน คือ
1. Heard Structure ประกอบไปด้วย3 ส่วน ได้แก่ จำนวนโหนดในลิสต์ (Count) พอยเตอร์ที่ชี้ไปยังโหนดที่เข้าถึง(Pos) และพอยเตอร์ที่ชี้ไปยังโหนดข้อมูลแรกของลิสต์(Head)
2. Data Node Structure ประกอบด้วยข้อมูล (Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป
กระบวนการงานและฟังก์ชั่นที่ใช้ดำเนินงานพื้นฐาน
1. กระบวนการงาน Create List
หน้าที่ สร้างลิสต์ว่าง
ผลลัพธ์ ลิสต์ว่าง
2. กระบวนงาน Insert Node
หน้าที่เพิ่มข้อมูลลงไปในลิสต์บริเวณตำแหน่งที่ต้องการ
ข้อมูลนำเข้า ลิสต์ ข้อมูล และตำแหน่ง
ผลลัพธ์ ลิสต์ที่มีการเปลี่ยนแปลง
3. กระบวนงาน Delete Node
หน้าที่ ลบสมาชิกในลิสต์บริเวณตำแหน่งที่ต้องการ
ข้อมูลนำเข้า ข้อมูลและตำแหน่ง
ผลลัพธ์ ลิสต์ที่มีการเปลี่ยนแปลง
4. กระบวนงาน Search list
หน้าที่ ค้นหาข้อมูลในลิสต์ที่ต้องการข้อมูลนำเข้าลิสต์
ผลลัพธ์ ค่าจริงถ้าพบข้อมูล ค่าเท็จถ้าไม่พบข้อมูล
5. กระบวนงาน Traverse
หน้าที่ ท่องไปในลิสต์เพื่อเข้าถึงและประมวลผลข้อมูลนำเข้าลิสต์
ผลลัพธ์ ขึ้นกับการประมวลผล
6. กระบวนงาน Retrieve Node
หน้าที่ หาตำแหน่งข้อมูลจากลิสต์ข้อมูลนำเข้าลิสต์
ผลลัพธ์ ตำแหน่งข้อมูลที่อยู่ในลิสต์
7. กระบวนงาน Empty list
หน้าที่ ทดสอบว่าลิสต์ว่างข้อมูลนำเข้าลิสต์
ผลลัพธ์ เป็นจริง ถ้าลิสต์ว่าง เป็นเท็จ ถ้าลิสต์ไม่ว่าง
8. ฟังก์ชั่น Full List
หน้าที่ ทดสอบว่าลิสต์เต็มหรือไม่ข้อมูลนำเข้าลิสต์
ผลลัพธ์ เป็นจริง ถ้าหน่วยความจำเต็ม เป็นเท็จ ถ้าสามารถมีโหนดอื่น
9. ฟังก์ชั่น List count
หน้าที่ นับจำนวนข้อมูลที่อยู่ในลิสต์ข้อมูลนำเข้าลิสต์
ผลลัพธ์ จำนวนข้อมูลที่อยู่ในลิสต์
10. กระบวนงาน destroy list
หน้าที่ ทำลายลิสต์ข้อมูลนำเข้า ลิสต์
ผลลัพธ์ ไม่มีลิสต์
Linked List แบบซับซ้อน
1. Circular Linked List เป็นลิงค์ลิสต์ที่สมาชิกตัวสุดท้ายมีตัวชี้ (list) ชี้ไปที่สมาชิกตัวแรกของลิงค์ลิสต์ จะมีการทำงานไปในทิศทางเดียวเท่านั้นคือเป็นแบบวงกลม
2. Double Linked List เป็นลิงค์ลิสต์ที่มีทิศทางการทำงานแบบ 2 ทิศทาง ในลิงค์ลิสต์แบบ 2ทิศทาง ส่วนข้อมูลจะมีตัวชี้ไปที่ข้อมูล

วันจันทร์ที่ 27 กรกฎาคม พ.ศ. 2552

DTS04 -14/07/52

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

วันอังคารที่ 30 มิถุนายน พ.ศ. 2552

DTS03 -30/06/52

สรุป
อะเรย์(Array)
อะเรย์เป็นโครงสร้างข้อมูลที่เรียกว่า Linear List มีลักษณะคล้ายเซ็ตในคณิตศาสตร์ คือ อะเรย์จะประกอบด้วยสมาชิกที่มีจำนวนคงที่ มีรูปแบบข้อมูลเป็นแบบเดียวกัน
การกำหนดอะเรย์(Array)
ต้องกำหนดชื่ออะเรย์ พร้อมSubscript ซึ่งเป็นตัวกำหนดขอบเขตของอะเรย์ มีได้มากกว่า1ตัวจำนวน subscript จะเป็นตัวบอกมิติของอะเรย์นั้น
การกำหนด Subscript แต่ละตัวจะประกอบด้วย ค่าสูงสุด และค่าต่ำสุดของsubscript
ข้อกำหนดของการกำหนดค่าต่ำสุดและค่าสูงสุดของ Subscript คือ
1. ค่าต่ำสุดต้องมีค่าน้อยกว่าหรือเท่ากับค่าสูงสุดเสมอ
2. ค่าต่ำสุด เรียกว่า ขอบเขตล่าง (lower bound)
3. ค่าสูงสุด เรียกว่า ขอบเขตบน (upper bound)
ประเภทของอะเรย์ในมิติต่าง ๆ
- อะเรย์ 1 มิติ
รูปแบบ
data-type array-name[expression]
data-type คือ ประเภทของข้อมูลอะเรย์ เช่น int
char float
array-name คือ ชื่อของอะเรย์
expression คือ นิพจน์จำนวนเต็มซึ่งระบุจำนวน
สมาชิกของอะเรย์
ตัวอย่าง char a[4]; int num[10];

Initialization
คือ การกำหนดค่าเริ่มต้นให้กับอะเรย์การกำหนดค่าให้กับตัวแปรชุดที่มีค่าเป็นตัวเลข
การส่งอะเรย์ให้ฟังก์ชัน
สามารถกำหนดอะเรย์เป็นพารามิเตอร์ส่งให้กับฟังก์ชันได้ 2 ลักษณะ
1. การกำหนด array element เป็นพารามิเตอร์ส่งค่าให้กับฟังก์ชัน ทำได้โดยอ้างถึงชื่ออะเรย์พร้อมระบุSubscript
2. ส่งอะเรย์ทั้งชุดให้ฟังก์ชัน ทำได้โดยอ้างถึงชื่ออะเรย์โดยไม่มีSubscript
การประกาศอาร์กิวเมนต์ในฟังก์ชันเป็นอะเรย์
ถ้าเป็นอะเรย์มิติเดียว สามารถทำได้ทั้งหมด 3 วิธี
1. มีการประกาศขนาดของอะเรย์ที่ทำหน้าที่ในการรับค่า
2. ไม่ต้องมีการประกาศขนาดของอะเรย์ที่ทำหน้าที่ในการรับค่า
3. ตัวแปรที่ทำหน้าที่รับค่าถูกกำหนดเป็นพอยน์เตอร์
- อะเรย์ 2มิติ
รูปแบบ
type array-name[n] [m];
type หมายถึง ชนิดของตัวแปรที่ต้องการประกาศเป็นอะเรย์
array-name หมายถึง ชื่อของตัวแปรที่ต้องการประกาศเป็นอะเรย์
n หมายถึง ตัวเลขที่แสดงตำแหน่งของแถว
m หมายถึง ตัวเลขที่แสดงตำแหน่งของคอลัมน์

Record or Structure
Structure คือ โครงสร้างที่สมาชิกแต่ละตัวมีประเภทข้อมูลแตกต่างกันได้ โดยที่ใน structureอาจมีสมาชิกเป็นจำนวนเต็ม ทศนิยม อักขระ อะเรย์หรือพอยเตอร์ หรือแม้แต่ structure ด้วยกันก็ได้
Structure กับ pointer
เราสามารถที่จะอ้างถึงที่อยู่เริ่มต้นของ structure ได้เหมือนกับตัวแปรอื่น ๆ โดยใช้ตัวดำเนินการ &ดังนั้น ถ้าvariable เป็นตัวแปรประเภท structure&variable จะเป็นเลขที่อยู่เริ่มต้นของตัวแปร นอกจากนี้ยังสามารถประกาศตัวแปรพอยน์เตอร์สำหรับ structure ดังนี้
type *ptvar
type คือ ประเภทข้อมูลที่เป็น structure
ptvar คือ ชื่อของตัวแปรพอยน์เตอร์
เราสามารถที่จะเรียกใช้สมาชิกแต่ละตัวใน
structure ได้จากตัวแปรพอยน์เตอร์ ดังนี้
รูปแบบ
ptvar -> member-name
ptvarคือ ตัวแปรพอยน์เตอร์ที่ชี้ไปยัง structure
-> คือ ตัวดำเนินการที่เทียบได้กับตัวดำเนินการ .
member-name คือ สมาชิกของ structureหรือ (*ptvar).member-name
ข้อสังเกต ที่ต้องใส่ ( ) ที่ตัวแปรพอยน์เตอร์เพราะเครื่องหมาย .
จะมีลำดับการทำงานสูงกว่าเครื่องหมาย *
ตัวอย่าง
struct account {
int acct_no;
char name[30];
int age;
}customer;
struct account *p = &customer;
ถ้าต้องการเรียกใช้ acct_no ของตัวแปรstructure ชื่อ customer จะเขียนได้ ดังนี้
customer.acct_no
หรือ p->acct_no
หรือ (*p).acct_no
การผ่าน structure ให้ฟังก์ชัน
ประเภทของการส่งผ่าน structureให้ฟังก์ชันนั้น มี 2 ประเภท คือ
1. ส่งสมาชิกแต่ละตัวของ structureสมาชิกแต่ละตัวของ structure สามารถส่ง
เป็นอาร์กิวเมนต์ ของฟังก์ชันและส่งกลับจากฟังก์ชันได้โดยใช้คำสั่ง return ซึ่งมีทั้งการส่ง
ค่าของตัวแปรที่อยู่ในตัวแปรstructure และก็ส่งตำแหน่งที่อยู่ของตัวแปรนั้น ๆ ไปยังฟังก์ชัน
2. ส่งผ่านทั้ง structure ให้กับฟังก์ชันจะส่งผ่านในลักษณะของพอยน์เตอร์ไปยัง structure โดยหลักการจะเหมือนกับการส่งผ่านอะเรย์ไปให้ฟังก์ชัน ซึ่งเป็นลักษณะที่เรียกว่าPass by reference
#include
#include
void main(void)
{
struct detail_book
{
char name[50];
char author[50];
float price;
int year;
int print_time_at;
char press[15];
char mail[50];
char distributor[50];
}
book;
strcpy(book.name,"The Sea");
strcpy(book.author,"JohnBanville");
book.price=580;
book.year=2552;
book.print_time_at=10;
strcpy(book.press,"vintage books");
strcpy(book.mail,"e-commerce@se-ed.com");
strcpy(book.distributor,"SE-EDUCATION Public Company Limited ");
printf("*************************************************************\n\n");
printf("************************ TOTAIL_BOOK ************************\n\n");
printf("************************ name:%s ***********************\n\n",book.name);
printf("******************** author:%s *******************\n\n",book.author);
printf("********************* price:%f **********************\n\n",book.price);
printf("************************* year:%d *************************\n\n",book.year);
printf("********************* print time at:%d**********************\n\n",book.print_time_at);
printf("******************* press:%s *********************\n\n",book.press);
printf("***************** mail:%s *****************\n\n",book.mail);
printf("****** distributor:%s *****\n\n",book.distributor);
printf("*************************************************************\n\n");
printf("*************************************************************\n\n");
}

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