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

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

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

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

ได้เรียนรู้ถึงเทคโนโลยีว่าในปัจจุบันล้ำหน้ามากเพียงใดเพื่อทำให้เราได้เป็นคนเตรียมพร้อมตลอดเวลาในด้านIT

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

ได้ทำรายรับรายจ่าย เพื่อให้ทราบถึงจำนวนและปริมาณในการใช้เงินของเราพร้อมยังช่วยบริหารเงินไปในตัวและยังทำให้เราทราบถึงรายการจ่ายไปในแต่ละวัน

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

ได้ฝึกตนเองถึงความเป็นระเบียบและตรงต่อเวลา

DTS10-15-09-2552

สรุป Sorting

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

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

วิธีการเรียงลำดับแบ่งออกเป็น 2 ประเภท
1.การเรียงลำดับภายใน (internal sorting) เป็นการเรียงลำดับที่ข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำหลัก
2.การเรียงลำดับแบบภายนอก (external sorting) เป็นการเรียนลำดับข้อมูลที่เก็บอยู่ในหน่วยความจำสำรอง เป็นการเรียงลำดับข้อมูลในแฟ้มข้อมูล (file)

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

1.ในรอบแรกจะทำการค้นหาข้อมูลตัวที่มีค่าน้อยที่สุดมาเก็บไว้ที่ตำแหน่งที่ 1
2.ในรอบที่สองนำข้อมูลตัวที่มีค่าน้อยรองลงมาไปเก็บไว้ที่ตำแหน่งที่สอง
3.ทำแบบนี้ไปเรื่อยๆ จนครบทุกค่า ในที่สุดจะได้ข้อมูลเรียงลำดับจากน้อยไปมากตามที่ต้องการ

การเรียงลำดับแบบฟอง (Bubble Sort)
เป็นวิธีการเรียงลำดับที่มีการเปรียบเทียบข้อมูลในตำแหน่งที่อยู่ติดกัน
1.ถ้าข้อมูลทั้งสองไม่อยู่ในลำดับที่ถูกต้องให้สลับตำแหน่งที่อยู่กัน
2.ถ้าเป็นการเรียงลำดับจากน้อยไปมากให้นำข้อมูลตัวที่มีค่าน้อยกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก ถ้าเป็นการเรียงลำดับจากมากไปน้อยให้นำข้อมูล ตัวที่มีค่ามากกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่าน้อยการจัดเรียงลำดับแบบฟองเป็นวิธีที่ไม่ซับซ้อนมาก เป็นวิธีการเรียงลำดับที่นิยมใช้กันมากเพราะมีรูปแบบที่เข้าใจง่าย

DTS09-08-09-2552

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

นิยามของกราฟกราฟ เป็นโครงสร้างข้อมูลแบบไม่เชิงเส้นที่ประกอบ ด้วยกลุ่มของสิ่งสองสิ่งคือ
1. โหนด (Nodes) หรือ เวอร์เทกซ์ (Vertexes)
2. เส้นเชื่อมระหว่างโหนด เรียก เอ็จ (Edger)

การเชื่อมต่อ กราฟที่มีเอ็จเชื่อมต่อระหว่างโหนดสองโหนดถ้าเอ็จไม่มีลำดับ ความสัมพันธ์จะเรียกกราฟนั้นว่ากราฟแบบไม่มีทิศทาง (Undirected Garphs) และถ้ากราฟนั้นมีเอ็จที่มีลำดับความสัมพันธ์หรือมีทิศทางกำกับด้วยเรียกกราฟนั้นว่า การฟแบบมีทิศทาง(Directed Deaphs) หรือมีลูกศร เป็นกราฟที่แสดงการเชื่อม ระหว่าง Vertex โดยแสดงทิศทางการเชื่อมต่อด้วย บางครั้งเรียกว่า ไดกราฟ (Digraph) ถ้าต้องการอ้างถึงเอ็จแต่ละเส้นสามารถเขียนชื่อเอ็จกำกับไว้ก็ได้การเขียนกราฟแสดงโหนดและเส้นเชื่อมความสัมพันธ์ ระหว่างโหนดไม่มีรูปแบบที่ตายตัวการสากเส้นความสัมพันธ์เป็นเส้นลักษณะไหนก็ได้ที่สามารถแสดงความสัมพันธ์ระหว่างโหนดได้ถูกต้อง

การท่องไปในกราฟ (Graph traversal)
คือ การเข้าไปเยือนโหนดในกราฟ หลักการทำงาน คือ แต่ละโหนดจะถูกเยือนเพียงครั้งเดียวเทคนิคการท่องไปในกราฟมี 2 แบบ
1.การท่องแบบกว้าง (Breadth First Traversal) โดยเลือกโหนดที่เป็นจุดเริ่มต้น ต่อมาให้เยือนโหนดอื่นที่ใกล้กันกับโหนดเริ่มต้นที่ละระดับ จนเยือนหมดทุกโหนดในกราฟ (แบบคิว)
2.การท่องแบบลึก (Depth First Traversal) คล้ายกับการท่องทีละระดับของทรี กำหนดเริ่มต้นที่โหนดแรกและเยือนโหนดถัดไปตามแนววิถีจนไปสู่ปลายวิถี จากนั้นย้อนกลับ (backtrack) ตามแนววิถีเดิม จนสามารถดำเนินการต่อเนื่องเข้าสู่แนววิถีอื่นๆ เพื่อเยือนโหนดอื่นๆ ต่อไปจนครบทุกโหนด (แบบสแตก)

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. แบบที่มีรากอยู่ด้านขวา

การท่องไปในไบนารีทรี (Traversing Binary Tree)
คือ การเข้าไปเยือนทุก ๆ โหนดในทรี วิธีการท่องเข้าไปต้องเป็นไปอย่างมีระบบแบบแผน สามารถเยือนโหนดทุก ๆ โหนด ๆ ละหนึ่งครั้ง วิธีการท่องไปนั้นมีด้วยกันหลายแบบ โหนดที่ถูกเยือนอาจเป็นโหนดแม่ (แทนด้วย N)ทรีย่อยทางซ้าย (แทนด้วย L) หรือทรีย่อยทางขวา (แทนด้วย R)

วิธีการท่องเข้าไปในทรีมี 6 วิธี
คือ NLR LNR LRN NRL RNL และ RLN แต่วิธีการท่องเข้าไปในทรีที่นิยมใช้กันมากเป็นการท่องจากซ้ายไปขวา 3 แบบแรก คือ NLRLNR LRN ซึ่งลักษณะการนิยามเป็นนิยามแบบ รีเคอร์ซีฟ (Recursive)

ขั้นตอนวิธีดึงโหนดออกอาจแยกพิจารณาได้ 3 กรณีดังต่อไปนี้
1. กรณีโหนดที่จะดึงออกเป็นโหนดใบ
2. กรณีโหนดที่ดึงออกมีเฉพาะทรีย่อยทางซ้ายหรือทรีย่อยทางขวาเพียงด้านใดด้านหนึ่ง
3. กรณีโหนดที่ดึงออกมีทั้งทรีย่อยทางซ้ายและทรีย่อยทางขวา - ถ้าโหนดที่มาแทนที่เป็นโหนดที่เลือกจากทรีย่อยทางซ้าย ต้องเลือกโหนดที่มีค่ามากที่สุดในทรีย่อยทางซ้ายนั้น - ถ้าโหนดที่จะมาแทนที่เป็นโหนดที่เลือกมาจากทรีย่อยทางขวา ต้องเลือกโหนดที่มีค่าน้อยที่สุดในทรีย่อยทางขวานั้น

DTS07-11-08-2552

เรื่อง Queue
คิว Queue เป็นโครงสร้างข้อมูลแบบเชิงเส้นซึ่งการเพิ่มข้อมุลจะกระทำที่ปลายข้างหนึ่งซึ่งเรียกว่าส่วนท้ายหรือเรียร์ (rear)และการนำข้อมูลออกจะกระทำที่ปลายอีกข้างหนึ่งซึ่งเรียกว่า ส่วนหน้าลักษณะการทำงานของคิวเป็นลักษณะของการเข้าก่อนออกก่อนหรือที่เรียกว่า FIFO (First In First Out)
การทำงานของคิวการใส่สมาชิกใหม่ลงในคิวเรียกว่า Enqueue ซึ่งมีรูปแบบคือenqueue หมายถึง การใส่ข้อมูล newElementลงไปที่ส่วนเรียร์ของคิวการนำสมาชิกออกจากคิว เรียกว่า Dequeue หมายถึง การนำข้อมูลออกจากส่วนหน้าของคิวและให้ ข้อมุลนั้นกับ elementการนำข้อมูลที่อยู่ตอนท้ายของคิวมาแสดงจะเรียกว่า Queue Rear แต่จะไม่ทำการเพิ่มข้อมูลเข้าไปในคิวการแทนที่ข้อมูลของคิวการแทนที่ข้อมูลของคิวสามารถทำได้ 2 วิธี
คือ
1.การแทนที่ข้อมุลของสแตกแบบลิงค์ลิสต์จะประกอบไปด้วย 2ส่วน
คือ1.Head Nodeจะประกอบไปด้วย 3 ส่วนคือพอยเตอร์จำนวน 2 ตัว คือ Front และ rear กับจำนวนสมาชิกในคิว

2.Data Node จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไปการดำเนินการเกี่ยวกับคิวการดำเนินการเกี่ยวกับคิว ได้แก่1.Create Queue คือ จัดสรรหน่อยความจำให้แก่ Head Node และให้ค่า ponter ทั้ง 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

DTS06-04-08-2552

(Stack)
โครงสร้างสแตก (stack structure)สแตก เป็นโครงสร้างข้อมูลอีกรูปแบบหนึ่งที่มีลักษณะของการจัดเก็บข้อมูลที่สามารถจัดเก็บได้แบบทั้งเรคอร์ด อาร์เรย์ หรือการจัดเก็บในลักษณะลิงค์ลิสต์ แต่โดยรูปแบบของการทำงานนั้นจะเป็นเหมือนการจัดเก็บหรือบันทึกสมาชิกในลักษณะของการพักไว้ สแตก เป็นโครงสร้างที่ถูกออกแบบมาให้มีลักษณะเป็นเชิงเส้น (linear list) สามารถที่จะทำการลบหรือเพิ่มจำนวนสมาชิกเข้ามาในโครงสร้างได้Last In First Out : LIFO หมายถึงข้อมูลที่เข้ามาในลิสต์เป็นลำดับสุดท้าย จะถูกนำออกจากลิสต์เป็นอันดับแรก ตัวอย่างได้แก่การนำชั้นของปิ่นโตเข้าและออกจากเถาปิ่นโต
พื้นฐานการดำเนินการกับสแตก

1.Push หรือการนำเข้าข้อมูล เป็นการดำเนินการในลักษณะของการเพิ่มข้อมูลในสแตกกรณีที่ไม่มีข้อมูลใดอยู่ก็จะ push เข้าไปตำแหน่งแรก ซึ่งถือว่าเป็นตำแหน่ง top แต่ถ้าหากนำข้อมูล push เข้ามาอีกก็จะดำเนินการจัดลงในตำแหน่งต่อจาก top และปรับค่า top มาอยู่ที่ตำแหน่งข้อมูลที่ push เข้ามาใหม่ จะต้องระวังปัญหา stack over flow คือไม่มีพื้นที่ว่างสำหรับการเพิ่มข้อมูลเข้าไปใน สแตก หรือ สแตก เต็ม

2.Pop หรือการดึงข้อมูลออก การดึงออกข้อมูล คือการนำเอาข้อมูลออกจากสแตก ซึ่งการดำเนินการก็จะต้องดำเนินการในตำแหน่ง top กรณีของการ pop ก็จะต้องตวรจสอบด้วยว่า หากไม่มีข้อมูลภายในสแตกแล้วยังมีการเรียก pop ข้อมูลอีกจะทำให้เกิดข้อผิพลาดที่เรียกว่า stack under flow

3. Top หรือตำแหน่งบนสุด ตำแหน่งบนสุดนั้นใช้ top เป็นตัวกำกับ ซึ่งบอกให้ทราบว่าหากต้องการ pop หรือ push ข้อมูลก็สามารถทำได้ ณ ตำแหน่งนี้ โดยลักษณะการดำเนินการของ top เป็นเพียงสิ่งที่บอกตำแหน่งของข้อมูลท่อยู่บนสุดเท่านั้น หากมีการ push ข้อมูลตำแหน่งของ top ก็จะชี้ไปค่าตำแหน่งสูงสุดใหม่ หรือ หากมีการ pop ข้อมูลออกไป top ก็ไม่ใช่ตัวลบค่า แต่จะเป็นการคืนค่าและลดตำแหน่งลงมา ซึ่งtop จะเกิดความผิดพลาดกรณีเดียวกันกับ pop คือ Underflow เมื่อ สแตกนั้นเกิดการว่าง

เครื่องหมายดำเนินการ (operand) ได้แก่เครื่องหมาย + - * ^
ตัวถูกดำเนินการ ได้แก่ สัญลักษณ์แทนค่าตัวเลข เช่น A B C D ….. หรือตัวแปรอื่นรูปแบบนิพจน์ของ infix จะเป็นลักษณะของนิพจน์ที่ใช้งานกันทั่วไป เช่น a + b, A*B ซึ่งมีการนำเครื่องหมายการดำเนินการไว้ตรงกลาง นิพจน์ posfix เป็นนิพจน์ที่มีการจัดรูปแบบของการคำนวณโดยเอาเครื่องหมายดำเนินการไว้หลังตัวถูกดำเนินการเพื่อให้ระบบอ่านตัวถูกดำเนินการก่อนแล้วจึงทราบวิธีการคำนวณ เช่น AB + และนิพจน์ prefix เป็นนิพจน์ที่นำเครื่องหมายสำหรับการดำเนินการ วางไว้ด้านหน้าก่อนตัวถูกดำเนินการ เช่น + ABPrefix : +ABInfix : A+BPosfix : AB+

วิธีการเปลี่ยน Infix เป็น Postfix•Algorithm
การเปลี่ยน Infix เป็น Postfix• ให้ EXP เป็นสมการคณิตศาสตร์ที่เป็น Infix และ Stack เป็น stack ใด ๆ NEXP เป็นสมการที่เป็น Postfix•
1. ใส่ “(“ เข้าไปใน Stack•

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

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