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

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

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

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

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


วันอังคารที่ 6 ตุลาคม พ.ศ. 2552

DTS 10 09/9/52


Sorting

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

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

DTS 09 02/9/52


Graph

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

Abstract Data Type ของกราฟAbstract Data Type ของกราฟ
รูปแบบข้อมูล (Element): ข้อมูลที่จัดเก็บต้องเป็นชนิดเดียวกัน เนื่องจากใช้อธิบายรูปแบบความสัมพันธ์ของโหนดกับการเชื่อมต่อ
รูปแบบโครงสร้าง (Srtucture): ความสัมพันธ์ระหว่างโหนดและการเชื่อมต่อ เป็นลักษณะ หนึ่งต่อหนึ่ง (one to one) คือ หนึ่งคู่ของการเชื่อมต่อจะต้องเชื่อมต่อด้วยเส้นเชื่อมต่อเพียงหนึ่งเส้น
การดำเนินงาน (Operation): มีการดำเนินการพื้นฐานที่ใช้กับโหนดและการเชื่อมต่อพร้อมทั้งการค้นหาโหนดที่ต้องการ 5 การดำเนินการดังนี้
การดำเนินการเพิ่มโหนด
การดำเนินการลบโหนด
การดำเนินการเพิ่มเส้นเชื่อมต่อ
การดำเนินการลบเส้นเชื่อมต่อ
การดำเนินการค้นหาโหนด
รูปแบบข้อมูล (Element): ข้อมูลที่จัดเก็บต้องเป็นชนิดเดียวกัน เนื่องจากใช้อธิบายรูปแบบความสัมพันธ์ของโหนดกับการเชื่อมต่อ
รูปแบบโครงสร้าง (Srtucture): ความสัมพันธ์ระหว่างโหนดและการเชื่อมต่อ เป็นลักษณะ หนึ่งต่อหนึ่ง (one to one) คือ หนึ่งคู่ของการเชื่อมต่อจะต้องเชื่อมต่อด้วยเส้นเชื่อมต่อเพียงหนึ่งเส้น
การดำเนินงาน (Operation): มีการดำเนินการพื้นฐานที่ใช้กับโหนดและการเชื่อมต่อพร้อมทั้งการค้นหาโหนดที่ต้องการ 5 การดำเนินการดังนี้
-การดำเนินการเพิ่มโหนด
-การดำเนินการลบโหนด
-การดำเนินการเพิ่มเส้นเชื่อมต่อ
-การดำเนินการลบเส้นเชื่อมต่อ
-การดำเนินการค้นหาโหนด

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

DTS 08 26/8/52

Tree

นิยามทรี
นิยามทรีด้วยนิยามของกราฟทรี คือ กราฟที่ต่อเนื่องโดยไม่มีวงจรปิด (loop) ในโครงสร้าง โหนดสองโหนดใด ๆ ในทรีต้องมีทางติดต่อกันทางเดียวเท่านั้น และทรีที่มี N โหนด ต้องมีกิ่งทั้งหมด N-1 เส้น

การเรียกชื่อองค์ประกอบของทรี
แต่ละโหนดจะมีความสัมพันธ์กับโหนดในระดับที่ต่ำลงมา หนึ่งระดับได้หลาย ๆ โหนด
เรียกโหนดดังกล่าวว่า โหนดแม่ (Parent orMother Node)
โหนดที่อยู่ต่ำกว่าโหนดแม่อยู่หนึ่งระดับเรียกว่า โหนดลูก (Child or Son Node)
โหนดที่อยู่ในระดับสูงสุดและไม่มีโหนดแม่เรียกว่า โหนดราก (Root Node)
โหนดที่มีโหนดแม่เป็นโหนดเดียวกันเรียกว่า โหนดพี่น้อง (Siblings)
โหนดที่ไม่มีโหนดลูก เรียกว่าโหนดใบ (Leave Node)
เส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดสองโหนดเรียกว่า กิ่ง (Branch)

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

DTS 07 05/8/52


Queue

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

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

DTS 06 29/7/52

การแปลงนิพจน์ Infix ให้เป็น Postfix

ผู้เขียนโปรแกรมสั่งให้เครื่องคำนวณต้องเขียนนิพจน์ที่ต้องการไปในตัวโปรแกรม ซึ่งนิพจน์เหล่านี้เรียกว่า นิพจน์ Infix คือนิพจน์ที่มีโอเปอร์เรเตอร์ (Operator) อยู่ระหว่างโอเปอร์แรนด์ (Operand) ทั้งสอง เช่น A+B เครื่องหมาย + เป็นโอเปอร์เรเตอร์ระหว่างโอเปอร์แรนด์ A และ B ซึ่งเห็นว่าเป็นนิพจน์ที่มนุษย์คุ้นเคย ข้อเสียของนิพจน์ infix ทีททำให้คอมไพเลอร์ยุ่งยาก คือลำดับความสำคัญของโอเปอร์เรเตอร์ (Precedence) ที่ต่างกัน เช่นเครื่องหมายยกกำลัง (ใช้ ^ ในการเขียนโปรแกรม) มีความสำคัญมากกว่าเครื่องหมายคูณ และหาร และเครื่องหมายคูณและหารมีความสำคัญมากกว่าเครื่องหมายบวกและลบ
Operator คือเครื่องหมายกระทำ + - * / ^
Operand คือตัวแปรต่าง ๆ A,B,C,D,E เช่น A+B*C,(A*B)-C

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

แปลงนิพจน์ Infix ให้เป็นนิพจน์ Postfix
เนื่องจากนิพจน์ infix มีลำดับความสำคัญของเครื่องหมายโอเปอร์เรเตอร์ซึ่งหมายความว่าโอเปอร์เรเตอร์ที่มาก่อนอาจจะไม่ใช่โอเปอร์เรเตอร์ที่ถูกประมวลผลก่อน ดังนั้น สแตกซึ่งมีคุณสมบัติเป็น LIFO List จึงมีส่วนช่วยในการแปลงนิพจน์ infix ให้เป็นนิพจน์ postfix ในการนี้มีสิ่งที่เกี่ยวข้อง 3 อย่างคือหนึ่งข้อมูลเข้ามาซึ่งเป็นนิพจน์ infix สองข้อมูลออกหรือผลลัพธ์คือนิพจน์ Postfix โดยอัลกอริทึมมีดังนี้ถ้าข้อมูลเข้า (input character) เป็นโอเปอร์แรนด์ให้พิมพ์ออกเป็นผลลัพธ์ (postfix string)ถ้าข้อมูลเข้าเป็นโอเปอร์เรเตอร์ ทำดังนี้
1. อ่านอักขระในนิพจน์ Infix เข้ามาทีละตัว
2. ถ้าเป็นตัวถูกดำเนินการจะถูกย้ายไปเป็นตัวอักษรในนิพจน์ Postfix
3. ถ้าเป็นตัวดำเนินการ จะนำค่าลำดับความสำคัญของตัว ดำเนินการที่อ่านเข้ามาเทียบกับค่าลำดับความสำคัญของตัวดำเนินการที่อยู่บนสุดของสแตก

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

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

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

Stack ในชีวิตประจำวัน

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

DTS 05 22/7/52

STACK
สแตก(stack) เป็นโครงสร้างข้อมูลที่ข้อมูลแบบลิเนียร์ลิสต์ ที่มีคุณสมบัติที่ว่า การเพิ่มลบข้อมูลในสแตก จะกระทำที่ ปลายข้างเดียวกัน ซึ่งเรียกว่า top ของสแตก และลักษณะที่สำคัญของสแตก คือข้อมูลที่ใส่หลังสุดจะนำออกมาจะออกมาจากสแตกเป็นลำดันแรกสุด เรียกคุณสมบัตินี้ว่า lifo(last in first out) ตัวอย่างคือ ขายของที่เก็บไว้ ก่อนที่จะขายของที่เพิ่งซื้อมาในตอนนี้
การทำงานของสเแตกประกอบด้วยกระบวนการ 3 กระบวการ คือ 1.push คือ การนำข้อมูลใส่ลงไปในสแตกเช่น สแตก s ต้องการใส่ข้อมูล i ในสแตก
จะได้ push (s,i) ในการเพิ่มข้อมูลในสแตกจะต้องทำการว่าสแตกเต็มหรือไม่ ถ้าไม่เต็มก็สามารถเพิ่มได้ ถ้าสแตกเต็ม(stack overflow)ก็ไม่สามารถเพิ่มข้อมูลไปในแสตกได้อีก 2.pop คือ การนำข้อมูลออกจาส่วนบนสุดของสแตก การนำข้อมูลออกจากสแตก ถ้าสแตกมีสมาชิคเพี่ยง 1 ตัวแล้วนำสมาชชิคออกจากสแตก จะเกิดสภาวะว่าง (stack empty) คือ ไม่มีสมาชิคอยู่ในสแตกเลย แต่ถ้ามีสมาชิคแล้วทำการ pop สแตก จะทำให้เกิดความผิดพลาดเรียกว่า stack underflow 3. stack top เป็นการคัดลกข้อมูลอยู่บนสุดของสแตก แต่ไม่ได้นำข็อมูลนั้นออกจาสแตก

DTS04 15/7/52

ลิงค์ลิสต์ (Linked List) เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่าง ๆโดยมีพอยเตอร์เป็นตัวเชื่อมต่อ แต่ละอิลิเมนท์ เรียกว่าโนด (Node)ซึ่งในแต่ละโนดจะประกอบไปด้วย 2 ส่วน คือส่วนที่หนึ่ง คือ Data จะเก็บข้อมูลของอิลิเมนท์และส่วนที่สอง คือ Link Field จะทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์ในส่วนของ data อาจจะเป็นรายการเดี่ยวหรือเป็นเรคคอร์ดก็ได้ในส่วนของ link จะเป็นส่วนที่เก็บตำแหน่งของโหนดถัดไป ในโหนดสุดท้ายจะเก็บค่า Nullซึ่งไม่ได้ชี้ไปยังตำแหน่งใด ๆ เป็นตัวบอกการสิ้นสุดของลิสต์โครงสร้างข้อมูลแบบลิงค์ลิสต์จะแบ่งเป็น 2 ส่วน คือ1. Head Structure จะประกอบไปด้วย 3 ส่วนได้แก่ จำนวนโหนดในลิสต์ (Count)พอยเตอร์ที่ชี้ไปยังโหนดที่เข้าถึง (Pos) และพอยเตอร์ที่ชี้ไปยังโหนดข้อมูลแรกของลิสต์ (Head)2. Data Node Structure จะประกอบไปด้วยข้อมูล(Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป

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

DTS03 01/07/52

สรุปการเรียน
pointer เป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่งที่อยู่(Address)ของตัวแปรที่อยู่ในหน่อยความจำ
การประกาศชนิดของตัวแปรพอยน์เตอร์
รูปแบบของ pointer type *variable-name
type หมายถึง ชนิดของตัวแปร
* หมายถึง เป็นเครื่องหมายที่แสดงว่า ตัวแปรที่
ตามหลังเครื่องหมายนี้เป็นตัวแปรพอยน์เตอร์
ได้รู้ถึงเครื่องหมายที่ใช้งานกับตัวแปรพอยเตอร์
1.เครื่องหมาย& เป็นเครื่องหมายที่ใช้เมื่อต้องการให้เอาค่าตำแหน่งที่อยู่ของตัวแปรที่
เก็บไว้ในหน่วยความจำออกมาใช้
2. เครื่องหมาย *
มีการใช้งาน 2 ลักษณะ คือ
􀂾 ใช้ในการประกาศ peremeter ว่าเป็นตัวแปรแบบพอยน์เตอร์
ใช้เป็น dereferencing operater จะใช้เมื่อต้องการนำค่าที่อยู่ใน
ตำแหน่งที่ตัวแปรพอยน์เตอร์นั้นชี้อยู่
ออกมาแสดง

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

1.ให้นักศึกษากำหนดค่าของ Array 1 มิติ และ Array 2 มิติ
Array 1 มิติ
int name[10]; กำหนดค่าให้ใส่ตัวอักษร 10 หลัก
ตัวอย่าง
#include "stdio.h"
void main()
{
char name[10];
printf ("What is your name?\n");
scanf ("%s", name);
printf ("You are %s. \n", name);
}
Array 2 มิติ
int table[4][4];
เราก็จะได้อาเรย์ชื่อ table มี 4 แถว แถวละ 4 ตัว(เรียกว่า"แถวละ 4 คอลัมน์")
#include "stdio.h"
main()
{
int table[4][4];
table[0][0] = 0;
table[0][1] = 0;
table[0][2] = 0;
table[0][3] = 0;
table[1][0] = 0;
table[1][1] = 1;
table[1][2] = 2;
table[1][3] = 3;
table[2][0] = 0;
table[2][1] = 2;
table[2][2] = 4;
table[2][3] = 6;
table[3][0] = 0;
table[3][1] = 3;
table[3][2] = 6;
table[3][3] = 8;
printf("%d"table[3][2]);
scanf(" ");
return 0;
}
2.ให้นักศึกษา หาค่าของ A[2],A[6] จากค่า A={2,8,16,24,9,7,3,8}
ค่าของ A[2]= 16
ค่าของ A[6]=3
3. จากค่าของ int a[2][3]={{6,5,4},{3,2,1}}; ให้นักศึกษาหาค่าของ a[1][0] และ a[0][2]
ค่าของ a[1][0]=3
ค่าของ a[0][2]=4
4. ให้นักศึกษากำหนด structure ที่มีค่าของข้อมูลจากน้อย 6 Records
#include"stdio.h"
struct student
{
char name[20];
char lastname[20];
int id;
char faculty[30];
char section[5];
char university[30];
}student;
void input_data()
{
printf("resume\n");
printf("name: ");
scanf("%s",&student.name);
printf("lastname: ");
scanf("%s",&student.lastname);
printf("id: ");
scanf("%d",&student.id);
printf("faculty: ");
scanf("%s",&student.faculty);
printf("section: ");
scanf("%s",&student.section);
printf ("university: ");
scanf("%s",&student.university);

}
void show_data()
{
printf("name: ");
printf("%s\n",student.name);
printf("lastname: ");
printf("%s\n",student.lastname);
printf("id: ");
printf("%d\n",student.id);
printf("faculty: ");
printf("%s\n",student.faculty);
printf("section: ");
printf("%s\n",student.section);
printf("university: ");
printf("%s\n",student.university);

}
main()
{
input_data();
show_data();
}
5. ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวชนิด Array กับตัวแปร Pointer ในสภาพของการกำหนดที่อยู่ของข้อมูล
pointer จะใช้พื้นที่มากกว่า array เพราะต้องเพิ่มพื้นที่ส่วนหนึ่งสำหรับเก็บตำแหน่งที่อยู่ของข้อมูลตัวถัดไป
array เป็นตัวแปรชุดที่ใช้เก็บตัวแปรชนิดเดียวกันไว้ด้วยกัน
pointer เป็นตัวเก็บตำแหน่งที่อยู่ของหน่วยความจำ (Address) หรือเรียกว่า ตัวชี้

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

การบ้าน

#include"stdio.h"
struct student
{
int date;
int month;
int year;
char name[20];
char lastname[20];
int id;
char faculty[30];
char section[5];
}student;
void input_data()
{
printf("resume\n");
printf("date: ");
scanf("%d",&student.date);
printf("month: ");
scanf("%d",&student.month);
printf("year: ");
scanf("%d",&student.year);
printf("name: ");
scanf("%s",&student.name);
printf("lastname: ");
scanf("%s",&student.lastname);
printf("id: ");
scanf("%d",&student.id);
printf("faculty: ");
scanf("%s",&student.faculty);
printf("section: ");
scanf("%s",&student.section);

}
void show_data()
{
printf("\n\nDate-month-year : %d-%d-%d\n",student.date,student.month,student.year);
printf("name: ");
printf("%s\n",student.name);
printf("lastname: ");
printf("%s\n",student.lastname);
printf("id: ");
printf("%d\n",student.id);
printf("faculty: ");
printf("%s\n",student.faculty);
printf("section: ");
printf("%s\n",student.section);
}
main()
{
input_data();
show_data();

}

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

DTS02 24/6/52

Lecture 2
เรื่อง Array and Record
ทำให้เราได้รู้ว่า อะเรย์ แบ่งออกเป็น 2 ประเภท ได้แก่ อะเรย์ 1 มิติ กับ อะเรย์หลายมิติ
อะเรย์ 1 มิติ มีแถวเดียว
อะเรย์ 2 มิติ มี2 แถว
สามารถกำหนดอะเรย์เป็นพารามิเตอร์ส่ง
ให้กับฟังก์ชันได้
ทำให้เราเขียนและเข้าใจในการทำงานของอะเรย์
Structure
ได้รู้ถึงรูปแบบการเขียน structure
สามารถกำหนดค่าของ structure
สามารถที่จะประกาศ structure หนึ่งเป็นสมาชิกของอีก structure หนึ่งได้

DTS01 17/6/52

การเรียนการสอนครั้งนี้เกี่ยวกับการที่อาจารย์ได้พูดถึงเรื่องโครงสร้างข้อมูล

โคยคราวๆ

เป็นความรู้เบื้องต้นเกี่ยวกับวิชาโครงสร้างข้อมูล ชนิดของข้อมูล

และทบทวนภาษาซี

ประวัติ


ชื่อ: นาย วรพงษ์ การินไชย

name: mr. Worapong Karinchai

ชื่อเล่น: บูม

รหัสนักศึกษา: 50152792065

หลักสูตร: การบริหารธุรกิจ(คอมพิวเตอร์ธุรกิจ)

คณะ: วิทยาการจัดการ มหาวิทยาลัยราชภัฏสวนดุสิต

email : u50152792065@gmail.com

เบอร์โทร: 0806257784

DTS : 01-17-06-2552