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

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

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

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

สรุปการเรียนเรื่องกราฟ

กราฟ (Graph) เป็นโครงสร้างข้อมูลไม่เป็นเชิงเส้น (Nonlinear Data Structure) มีความแตกต่างจากโครงสร้างข้อมูลทรีในบทที่ผ่านมา แต่เป็นลักษณะพิเศษแบบหนี่งของกราฟโดยทรีเป็นกราฟอะไซคลิกที่ไม่มีการวนลูปและการวนถอยกลับ เป็นกราฟเชื่อมกันที่มีเพียงเอจเดียวระหว่างสองโหนด กราฟมีลักษณะเป็นเซ็ตของจุด (Point) และเซ็ตของเส้น (Line) ซึ่งแต่ละเส้นทำหน้าที่เชื่อมต่อจุดเข้าด้วยกัน แต่ละจุดเรียกว่าโหนด (Node) ของกราฟและเส้นเรียกว่าเอจ (Edge) บางครั้งเอจจะเรียกว่าอาร์ค (Arc) และโหนดเรียกว่าเวอร์ทิค (Vertice) โดยกำหนดให้กราฟ G มีเซ็ตของโหนดเป็น VG และเซ็ตของเอจเป็น EG



การสร้างกราฟใช้งาน โดยปกติภาษาเขียนโปรแกรมมีการสร้างโครงสร้างข้อมูลให้ใช้งานได้ทันที (Build-in Type) แต่ไม่มีกราฟรวมอยู่ด้วย ดังนั้น ผู้เขียนโปรแกรมที่ต้องการสร้างกราฟขึ้นมาใช้งานจะมีการนำโครงสร้างข้อมูลอื่นมาใช้เป็นกราฟ โดยมีอยู่ 3 แนวทางที่นำมาใช้ คือใช้แมตทริกติดกัน (Adjacency Matrix) หรืออาร์เรย์สองมิติกำหนดเป็นกราฟใช้ลิสต์แบบไดเร็กทอรี่โหนด (Node Directory) กำหนดเป็นกราฟใช้มัลติลิสต์ (Multi-List) กำหนดเป็นกราฟ



Sorting
การเรียงลำดับในลักษณะนี้ เป็นการปรับปรุงมาจากการเรียงลำดับแบบ Bubble เพื่อให้การเรียงลำดับเร็วขึ้น วีธีนี้เหมาะกับการเรียงข้อมูลที่มีจำนวนมาก หรือมีขนาดใหญ่ และเป็นวิธีการเรียงข้อมูลที่ให้ค่าเฉลี่ยของเวลาน้อยที่สุดเท่าที่ค้นพบวิธีหนึ่งการเรียงลำดับแบบ Quick Sortจะเป็นการเปรียบเทียบสมาชิกที่ไม่อยู่ติดกัน โดยกำหนดข้อมูลค่าหนึ่ง เพื่อแบ่งชุดข้อมูลที่ต้องการเรียงลำดับออกเป้น 2 ส่วน จากนั้นก็จะทำการแบ่งย่อยชุดข้อมูล 2 ส่วนนั้นลงไปอีก ทำแบบนี้ไปเรื่อยๆจนข้อมูลแต่ละชุดมีสมาชิกเหลือเพียงตัวเดียวและทำให้ชุดข้อมูลทั้งหมดมีการเรียงลำดับ

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

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

Searching

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

DTS 11-16-09-2552
สรุปการเรียน เรื่อง Sorting

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

วิธีการเรียงลำดับสามารถแบ่งออกเป็น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. ในรอบต่อไปนำข้อมูลทั้งหมดที่ได้จัดเรียงในหลักหน่วยเรียบร้อยแล้วมาพิจารณาจัดเรียงในหลักสิบ ต่อไป ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งครบทุกหลักจะได้ข้อมูลที่เรียงลำดับจากน้อยไปมากตามต้องการ
การเรียงลำดับแบบฐานมีวิธีการที่ไม่ซับซ้อน แต่ค่อนข้างใช้เนื้อที่ในหน่วยความจำมาก เนื่อง จากการจัดเรียงแต่ละรอบจะต้องเตรียมเนื้อที่ สำหรับสร้างที่เก็บข้อมูลในแต่ละกลุ่ม

DTS 10-09-09-2552
สรุปการเรียน Lecture 8 เรื่อง 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 มิติ

วิธีแทนกราฟในความจำหลัก
อีกวิธีหนึ่งซึ่งเป็นที่นิยมใช้ กันมากที่สุดคือ การแทนด้วยแอดจาเซนซีเมทริกซ์(Adjacency Matrix) โดยที่ถ้ากราฟ G มีทั้งหมด nโหนด แอดจาเซนซีเมทริกซ์เป็นเมทริกซ์จัตุรัสขนาด n x n สมมติว่าคือเมทริกซ์ M แต่ละ M(i,j) เมื่อ i, j = 1, 2, 3, . . ., n จะมีค่าเป็น 1 ถ้ามีเอ็จเชื่อมความสัมพันธ์ระหว่างโหนด iไปยังโหนด j และมีค่าเป็น 0 ถ้าไม่มีเอ็จเชื่อมความสัมพันธ์จากโหนด i ไปยังโหนด j หรืออาจจะกำหนดด้วย ค่าตรรกะ (Boolean Value) ก็ได้

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

DTS 09-02-09-2552
สรุปการเรียนเรื่อง ทรี

โครงสร้างทรี
ทรีเป็นกราฟแบบมีทิศทาง ที่มีโครงสร้างแบบลำดับชั้น ทิศทางของกราฟที่แทนทรีจะมีทิศทางจากบนลงล่าง ดังนั้นการกวาดทรี เราจึงไม่นิยมแสดงทิศทางของเส้นเชื่อม

นิยามทรี
เราให้นิยามทรีในรูปแบบอื่นๆได้อีก เช่น การให้นิยามในรูปของการเรียกซ้ำซึ่งสอดคล้องกับลักษณะธรรมชาติของทรี ดังนี้คือทรีประกอบด้วยโหนด R ซึ่งเรียกว่า โหนดราก (root) และ ทรีย่อย (subtree) จำนวนศูนย์ หรือมากกว่าศูนย์ ได้แก่ T1,T2,...,Tk ซึ่งแต่ละทรีย่อยจะเชื่อมกับโหนดราก (R)โดยตรงด้วยเส้นเชื่อม

การเรียกชื่อองค์ประกอบของทรี
โหนดที่อยู่ระดับบนสุดของทรี เรียกว่า โหนด R ,โหนดราก, พ่อ (father)โหนดรากของทรีย่อยของ R เรียกว่าลูก (child) ของ R โหนดที่ไม่มีโหนดลูก เรียกว่า โหนดใบ (leaf node)เส้นเชื่อมโหนดทรี เรียกว่า กิ่ง (branch)โหนดที่มีทั้งพ่อทั้งลูก เรียกว่า โหนดกิ่ง (branch node)โหนดที่มีพ่อเดียวกัน เรียกว่า โหนดพี่น้อง (sibling) และยังอาจนิยามโหนดว่าเป็น โหนดปู่ (grandfather) หรือ โหนดหลาน (gtrandchild) ได้ในลักษณะเดียวกันเส้นทาง (path) จากโหนด n1 ไปยังโหนด nk ใดๆ จะเป็นลำดับของโหนด n1,n2,...,nkความยาว (length) ของเส้นทางจะเป็นจำนวนของเส้นเชื่อมที่อยู่ในเส้นทาง ซึ่งเท่ากับ k-1 เส้นทาง จากโหนดใดๆ ไปยังตัวเองจะมีความยาวเป็ยศูนย์ และในทรีแต่ละทรี จะมีเส้นทางหนึ่งเส้นเท่านั้นจากโหนดรากไปยัง โหนดใดๆ ความลึก (depth) เป็น ความยาวของเส้นทางจากโหนดรากไปยังโหนด n โซึ่งมีเส้นทางเดียวที่ไม่ซ้ำกัน) ความสูง (height) เป็น เส้นทางทีสุดจากโหนด n ไปยังโหนดใบถ้ามีเส้นทางจาดโหนด n1 ไปยังโหนด n2 จะเป็น บรรพบุรุษ (ancestor) ของ n2 และ n2 จะเป็น ลูกหลาน (descendant) ของ n1 ถ้า n1 != n2 ดังนั้น n1 จะเป็น บรรพบุรุษที่แท้จริง (proper ascestor) ของ n1 และ n2 ลูกหลานที่แท้จริง (proper descendant)

ทรีแบบลำดับ
ทรีแบบราก (rooted tree ) เป็นทรีที่สามารถวาดได้อิสระ โดยเชื่อมโหนดในระดับต่ำลงไป และมีโหนด ใบอยู่ในระดับล่าง มีโครงสร้างไม่เหมาะสมก่การใช้งาน เนื่องจากวิธีการเรียกชื่อโหนดจากลำดับซ้ายไปขวา "ทรีแบบลำดับ (ordered tree)" คือ ทรีแบบรากที่โหนดลูกของแต่ละโหนดถูกกำหนดลำดับดังรูป ถ้าต้องการจะใช้ทรีแบบลำดับเป็นโครงสร้างข้อมูล ในแต่ละโหนดจะต้องมีจำนวนเขตข้อมูลมากพอๆ กับจำนวน ของโหนดนั้น ดังนั้นถ้ามีบางโหนดในทรีมีจำนวนทรีมากกว่า 10 ทรีย่อย จะต้องมีเขตข้อมูลสำหรับลิงค์ของ แต่ละโหนดถึง 10 เขต ซึ่งแต่ละเขตลิงค์ต่างๆ เหล่านี้ส่วนใหญ่จะมีค่าเป็น NULL ซึ่งทำให้เนื้อที่จำนวนมากไม่ได้ใช้งาน

DTH 08-26-08-2552
สรุป การเรียนเรื่อง คิว
Queue เป็น List แบบเชิงเส้น (Linear Data Structure) เช่นเดียวกับ Stack แต่มีความแตกต่างกันคือ Queue มีตัวชี้ 2 ตัว คือ
1. หัว (Head)
2. ท้าย (Tail)

- สำหรับในการนำข้อมูลเข้าและนำข้อมูลออกคือ เข้าท้าย (Tail) ของQueue และออกตรงหัว (Head) ของ Queue ซึ่ง Queue จึงมีลักษณะที่เรียกว่า เข้าก่อน ออกก่อน (First-In First-Out : FIFO)
คิว(queue) หรือแถวคอย เป็นประเภทข้อมูลอย่างย่อที่มีลักษณะการเรียงลำดับข้อมูล ในการเข้า-ออกในลักษณะเข้าก่อนออกก่อน FIFO (First In First Out) กล่าวคือข้อมูลที่เข้าแรกๆจะได้ออกก่อน คล้ายคนต่อคิวที่มาก่อนจะได้ซื้อของก่อน จึงเรียกว่า แถวคอย หรือ คิวแถวคอย หรือ คิว จึงจัดเป็นวิธีการจัดการเข้า-ออกของข้อมูลอีกแบบหนึ่ง เป็นโครงสร้างข้อมูลที่นำมาใช้ในการทำงานของโปรแกรมคอมพิวเตอร์หลายประการ อาทิการเข้าคิวในการทำงานของเครือข่าย การออกแบบการทำงานระบบท่อ (pipeline) เป็นต้น
จุดเด่นของคิว
คิวสามารถจัดการการเข้า-ออกของข้อมูล ใช้เก็บข้อมูลที่ต้องการจัดเรียงเป็นระบบ โดยพิจารณาข้อมูลตามลำดับ ในทำนอง ใครถึงก่อนมีสิทธิ์ได้ใช้ก่อน จึงใช้ในการเรียงลำดับในการแบ่งปันทรัพยากรที่มีอยู่จำกัดในการทำงาน เช่น การรอคิวการทำงานของเครื่องพิมพ์ในสำนักงาน เป็นต้น
วิธีการสร้างคิว
การสร้างคิวทำได้โดยแถวลำดับประกอบกับจำนวนเต็ม ที่เก็บดัชนีของหัวคิวและท้ายคิว สองตัว หรือใช้ รายการโยงสองชั้นวน(circular doubly linked list)

คิวแถวลำดับ
สำหรับการใช้แถวลำดับในการทำคิวนั้น (array queue) ตอนเริ่มต้นเราจะให้ดัชนีของหัวคิวและท้ายคิวชี้ที่ศูนย์ เมื่อเข้าคิว (enqueue) ก็จะเก็บข้อมูลตรงดัชนีท้าย พร้อมทั้งเพิ่มค่าดัชนีท้ายคิวจะไปอีกหนึ่ง (increament) ในทางตรงกันข้ามหากเอาข้อมูลตัวแรกออกจากคิว (dequeue) ก็คืนค่าสมาชิกตัวที่ดัชนีหัวคิวชี้อยู่พร้อมทั้งเพิ่มค่าดัชนีหัวคิวไปอีกหนึ่ง (decrement) หากดัชนีหัวคิววิ่งไล่ทับดัชนีท้ายคิวแสดงว่า คิวนั้นเป็นคิวว่าง (empty queue) ไม่ควร dequeue อีกเพราะจะทำให้การทำงานรวนได้ (ควรตรวจสอบก่อน dequeue)เนื่องจากแถวลำดับมีขนาดจำกัดในบางครั้งอาจมีการทำคิววนรอบ (circular array queue) กล่าวคือบางครั้งคิวอาจมีการ enqueue และ dequeue สลับกันทำให้ดัชนีหัวคิวเลื่อนๆออกไปจนจะตกขอบขวาของแถวลำดับ ทำให้มีเนื้อที่ของแถวลำดับด้านหน้าเหลือไม่ได้ใช้จึงมีการวนเอาหางคิว มาแทนส่วนหน้าของแถวลำดับ กล่าวคือเมื่อท้ายคิวตกขอบขวาของแถวลำดับ ก็จะมีการเริ่มดัชนีท้ายคิวที่ศูนย์ใหม่และต่อท้ายคิวมาเรื่อยๆ ข้อด้อยของวิธีนี้คือ เมื่อท้ายคิวมาทับหัวคิวอีกครั้งจะตีความไม่ได้ว่าคิวเต็มแถวลำดับ หรือคิวว่างกันแน่ จึงอาจใช้ตัวแปรขนาด (size) หรือตัวแปรอื่นๆช่วยในการบอกว่าคิวว่างหรือไม่

คิวรายการโยงสองชั้นวน
สำหรับการใช้รายการโยงสองชั้นวน(circular doubly linked list) ในการทำนั้น โดยหัวคิวจะอยู่ที่ปมสุดท้ายนี้ (กล่าวคือเป็นปมก่อนที่จะชี้ปมหัว เพราะว่าเป็นรายการวน) ส่วนท้ายคิวอยู่ที่ปมแรก เมื่อเข้าคิว (enqueue) ก็เพิ่มปมใหม่หลังปมหัว เมื่อจะเอาข้อมูลแรกออกจากคิว (dequeue) ก็จะเอาข้อมูลก่อนปมหัวออก ก็คือข้อมูลที่เข้าแรกๆสุด เมื่อใดที่รายการหรือคิวว่าง ก็คือตอนที่ปมหัวชี้มาที่ตัวเองนั่นเอง

Queue Operation
การดำเนินการพื้นฐานของคิวมี 4 ขั้นตอน
1. Enqueue การนำข้อมูลเก็บเข้าไปในคิว
2. Dequeue การนำข้อมูลออกจากคิว
3. Queue Front ข้อมูลที่ตรียมจะออกจากคิว (สมาชิกตัวแรกที่จะออกจากคิว)
4. Queue Rear ข้อมูลที่เพิ่งจะเข้ามาในคิว (สมาชิกที่เข้ามาในคิวตัวสุดท้าย)

DTH 07-05-08-2552

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

ลำดับการทำงานของตัวดำเนินการทางคณิตศาสตร์ (Operator Priority)

มีการลำดับความสำคัญของตัวดำเนินการจากลำดับสำคัญมากสุดไปน้อยสุด คือ

ลำดับที่มีความสำคัญมากที่ต้องทำก่อน ไปจนถึงลำดับที่มีความสำคัญน้อยสุดที่ไว้ทำทีหลัง

ดังนี้1.ทำในเครื่องหมายวงเล็บ

2.เครื่องหมายยกกำลัง ( ^ )

3.เครื่องหมายคูณ ( * ) , หาร ( / )

4.เครื่องหมายบวก ( + ) , ลบ ( - )



อัลกอริทึมการแปลงนิพจน์ Infix เป็น นิพจน์

Postfixเราสามารถแปลงนิพจน์ Infix ให้เป็น Postfix ได้โดยอาศัยสแตคที่มีคุณสมบัติการเข้าหลังออกก่อนหรือ LIFO โดยมีอัลกอริทึมในการแปลงนิพจน์ ดังนี้

1. ถ้าข้อมูลเข้า (input) เป็นตัวถูกดำเนินการ (operand) ให้นำออกไปเป็นผลลัพธ์ (output)

2. ถ้าข้อมูลเข้าเป็นตัวดำเนินการ (operator) ให้ดำเนินการดังนี้2.1 ถ้าสแตคว่าง ให้ push operator ลงในสแตค

2.2 ถ้าสแตคไม่ว่าง ให้เปรียบเทียบ operator ที่เข้ามากับ operator ที่อยู่ในตำแหน่ง TOP ของสแตค

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

3. ถ้าข้อมูลเข้าเป็นวงเล็บเปิด ให้ push ลงสแตค

4. ถ้าข้อมูลเข้าเป็นวงเล็บปิด ให้ pop ข้อมูลออกจากสแตคไปเป็นผลลัพธ์จนกว่าจะถึงวงเล็บ เปิด จากนั้นทิ้งวงเล็บเปิดและปิดทิ้งไป

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

DTS 06-29-07-2552
สรุปบทเรียน สแตก

สแตก (Stack) เป็นโครงสร้างข้อมูลที่ข้อมูลแบบ ลิเนียร์ลิสต์
ที่มีคุณสมบัติที่ว่า การเพิ่มหรือลบข้อมูลในสแตก จะกระทำที่ ปลายข้างเดียวกัน ซึ่งเรียกว่า Top ของสแตก (TopOf Stack) และ ลักษณะที่สำคัญของสแตก คือ ข้อมูลที่ใส่หลังสุดจะถูกนำออกมา จากสแตกเป็นลำดับแรกสุด เรียกคุณสมบัตินี้ว่า LIFO (Last In First Out)
การทำงานของสแตกจะประกอบด้วยกระบวนการ 3 กระบวนการที่สำคัญ คือ
1.Push คือ การนำข้อมูลใส่ลงไปในสแตก โดยการเพิ่มข้อมูลลงในสแตก จะต้องทำการตรวจสอบว่าสแตก เต็มหรือไม่ ถ้าไม่เต็มก็สามารถเพิ่มข้อมูลลงไปในสแตกได้ แล้วปรับตัวชี้ตำแหน่งให้ไปชี้ที่ตำแหน่งข้อมูลใหม่ ถ้าสแตกเต็ม (Stack Overflow) ก็จะไม่สามารถเพิ่มข้อมูลเข้าไปในสแตกได้อีก
2. Pop คือ การนำข้อมูลออกจากส่วนบนสุดของสแตก โดยการนำข้อมูลออกจากสแตก ถ้าสแตกมีสมาชิก เพียง 1ตัว แล้วนำสมาชิกออกจากสแตก จะเกิดสภาวะสแตกว่าง (Stack Empty)คือ ไม่มีสมาชิก อยู่ในสแตกเลย แต่ถ้าไม่มีสมาชิกในสแตก แล้วทำการ pop สแตก จะทำให้ เกิดความผิดพลาดที่เรียกว่า Stack Underflowเพราะฉะนั้นก่อนนำข้อมูลออกจากสแตกจะต้องตรวจสอบ ก่อนว่าสแตกว่างหรือเปล่า จึงจะนำข้อมูลออกจากสแตกได้และ ปรับตัวชี้ตำแหน่งให้ไปชี้ตำแหน่งของข้อมูลที่ต่อจากข้อมูลที่ถูกนำ ออกไป
3. Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก แต่ไม่ได้นำเอาข้อมูลนั้นออกจากสแตก
การดำเนินการเกี่ยวกับสแตก ได้แก่

1. Create Stack
2. Push Stack
3. Pop Stack
4. Stack Top
5. Empty Stack
6. Full Stack
7. Stack Count
8. Destroy Stack

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

DTS 05-22-07-2552

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

สรุปเรื่อง Linked List
ลิงค์ลิสต์ (Linked List) เป็นวิธีการเก็บ
ข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่าง ๆ โดยมี
พอยเตอร์เป็นตัวเชื่อมต่อ
และเรียนเกี่ยวกับ อิลิเมนท์หรือเรียกอีกอย่างว่าโนด( node )
เรียนเกี่ยวกับ Linked List(cont)
ในส่วนของ link จะเป็นส่วนที่เก็บตำแหน่ง
ของโหนดถัดไป ในโหนดสุดท้ายจะเก็บค่า Null
ซึ่งไม่ได้ชี้ไปยังตำแหน่งใด ๆ
กระบวนงาน Search list
หน้าที่ ค้นหาข้อมูลในลิสต์ที่ต้องการข้อมูลนำเข้าลิสต์
ผลลัพธ์ ค่าจริงถ้าพบข้อมูล ค่าเท็จถ้าไม่พบข้อมูล

DTS 04-24-07-2552

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











DTS 01-17-06-2552

สรุป พอยน์เตอร์ (pointer)
พอยน์เตอร์เป็นตัวแปรที่ใช้เก็บตำแหน่ง (แทนที่จะเก็บค่า) ของข้อมูลเช่น ตัวแปรหรือสมาชิกของอะเรย์ พอยเตอร์ในภาษาซีมีประโยชน์มากมาย เช่น เราสามารถใช้พอยน์เตอร์ในการ ส่งข้อมูลไปมาระหว่างฟังก์ชันกับจุดที่เรียกใช้ ฟังก์ชัน พอยน์เตอร์ทำให้ฟังก์ชันสามารถส่งค่ากลับคืนมาได้หลายค่าโดยผ่านอาร์กิวเมนต์ของฟังก์ชัน นอกจากนั้นเรายังใช้พอยน์เตอร์ในการเรียกใช้ฟังก์ชันที่ถูกส่งมาเป็นอาร์กิวเมนต์ของอีกฟังก์ชันหนึ่งนั่นคือ เราสามารถส่งฟังก์ชันหนึ่งเป็นอาร์กิวเมนต์ให้อีกฟังก์ชันหนึ่งได้พอยน์เตอร์มีความใกล้เคียงกับอะเรย์ และเป็นวิธีหนึ่งที่เราจะอ้างถึงสมาชิกของอะเรย์ได้ยิ่งไปว่านั้น พอยต์เตอร์ยังจัดเตรียมวิธีการที่สะดวกสบาย ในการใช้อะเรย์หลายมิติ โดยแทนที่อะเรย์หลายมิติ 1 ตัวด้วยอะเรย์ของพอยน์เตอร์ที่มีมิติน้อยลง คุณลักษณะนี้ทำให้เราเก็บสตริงหลายๆ ตัวไว้ในอะเรย์เพียงตัวเดียวได้แม้ว่าสตริงเหล่านั้นจะมีความยาวไม่เท่ากันเครื่องหมายที่ใช้ในการทำงานกับตัวแปรพอยน์เตอร์-เครื่องหมาย & เป็นเครื่องหมายที่ใช้เมื่อต้องการให้เอาค่าตำแหน่งที่อยู่ (address) ของตัวแปรที่เก็บไว้ในหน่วยความจำออกมาใช้-เครื่องหมาย * เป็นเครื่องหมายที่จะใช้เมื่อต้องการให้นำค่าที่อยู่ในตำแหน่งที่ตัวแปรพอยน์เตอร์นั้นชี้อยู่ออกมาแสดงให้ดู

แบบฝึกหัด
1.ให้นักศึกษากำหนดค่าของ Array 1 มิติ และ Array 2 มิติ
ตอบ Array 1 มิติ คือ float nettotal[9];
และ Array 2 มิติ คือ int name[4][5];

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 telephone
{
int date;
int month;
int year;
char name[20];
char sex[6];
int age;
char series[20];
float price;
}tel;
void main()
{

5. ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวชนิด Array กับตัวแปร Pointer ในสภาพของการกำหนดที่อยู่ของข้อมูล
ตอบ array หมายถึง ตัวแปรชุดที่ใช้เก็บตัวแปรชนิดเดียวกันไว้ด้วยกัน เช่น เก็บ ข้อมูล char ไว้กับ char เก็บ int ไว้กับ int ไม่สามารถเก็บข้อมูลต่างชนิดกันได้ เช่น char กับ int เรียก array อีกอย่างว่าหน่วยความจำแบ่งเป็นช่อง การกำหนดสมาชิกชิกของ array จะเขียนภายในเครื่องหมาย [ ]pointer หมายถึง ตัวเก็บตำแหน่งที่อยู่ของหน่วยความจำ (Address) หรือเรียกว่า ตัวชี้ ตำแหน่งที่อยู่ สัญลักษณ์ของ pointer จะแทนด้วยเครื่องหมาย *

DTS 03-01-07-2552

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

Stucture1

#include"stdio.h"
struct telephone
{
int date;
int month;
int year;
char name[20];
char sex[6];
int age;
char series[20];
float price;
}tel;
void main()
{
printf("Customer in mobile shop");
printf("date is (dd/mm/yy):");
scanf("%d/%d/%d",&tel.date,&tel.month,&tel.year);
printf("name:");
scanf("%s",&tel.name);
printf("sex:");
scanf("%s",&tel.sex);
printf("age:");
scanf("%d",&tel.age);
printf("series:");
scanf("%s",&tel.series);
printf("price:");
scanf("%f",&tel.price);
{
printf("\n\nDisplay your data is\n");
printf("date:%d/%d/%d\n",tel.date,tel.month,tel.year);
printf("name:%s\n",tel.name);
printf("sex:%s\n",tel.sex);
printf("age:%d\n",tel.age);
printf("series:%s\n",tel.series);
printf("price:%f",tel.price);
}
}

DTS 02-01-07-2552

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

สรุปการเรียน Lecture 1 เรื่อง Introduction

1. ทราบถึงความหมายของโครงสร้างข้อมูล

2. ทราบถึงประเภทของโครงสร้างข้อมูลว่าโครงสร้างข้อมูลในคอมพิวเตอร์ที่ใช้กันอยู่ในปัจจุบัน แบ่งออก เป็น 2 ระเภท คือ
2.1 โครงสร้างข้อมูลทางกายภาพ (Physical Data Structure)
2.2 โครงสร้างข้อมูลทางตรรกะ(Logical Data Structure)

3.ทราบถึงการแทนที่ข้อมูลในหน่วความจำหลักว่าในการเขียนโปรแกรมคอมพิวเตอร์ จะมีการแทนที่ข้อมูลในหน่วยความจำหลักอยู่ 2 วิธี คือ
3.1การแทนที่ข้อมูลแบบ สแตติก คือ แถวลำดับ(Array)
3.2การแทนที่ข้อมูลแบบไดนามิกคือตัวชี้หรือพอยน์เตอร์(pointer)

4.ได้ทบทวนเกี่ยวกับสัญญาลักษณ์ที่ใช้ในการเขียนผ้งงาน

DTS 01-17-06-2552
สรุปการเรียน Lactrue 2 เรื่อง Array and Record

1.เรียนเกี่ยวกับความหมายของ Array ซึ่งหมายถึง โครงสร้างข้อมูลที่เรียกว่า Linear List คล้ายกับเซตในคณิตศาสตร์ที่มีสมาชิกเป็นจำนวนคงที่มีรูปแบบข้อมูลเดียวกันใช้เนื้อที่ขนาดเดียวกัน เรียงต่อเนื่องในหน่วยความจำหลัก

2.การกำหนด subscript แต่ละตัวประกอบไปด้วยค่าสูงสุดและค่าต่ำสุดประกาศค่า Array

3.การกำหนดชื่อของ Array พร้อม subscript ซึ่งเป็นตัวกำหนดขอบเขตของ Array subscript เป็นตัวบอก มิติของ Array เช่น 1 มิติ ไม่มากกว่า 1 ตัว ซึ่งเรียกว่า Array หลายตัว

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

5. มีลักษณะเหมือนกับการจัดข้อมูลแบบ record ในภาษาปาสคา

6.การประกาศตัวแปรแบบ Structure เช่น

แบบที่ 1
{
char name[30];

float score;

float grade;

};

struct student st1,st2;

แบบที่ 2
{

char name[30];

float score;

float grade;


}st1,st2;สอง

- การประกาศทั้งสองแบบ จะได้ตัวแปร st1 และ st2 เป็นตัวแปรโครงสร้างชนิด student

- การประกาศชนิดองตัวแปรพอยน์เตอร์ (Pointer)

รูปแบบ เช่น

type *variable-name

type เป็นชนิดของตัวแปร

* เป็นเครื่องหมายที่แสดงว่า ตัวแปรที่ตามหลังเครื่องหมายนี้เป็นตัวแปรพอยน์เตอร์ Variable-name เป็นชื่อของตัวแปรที่ต้องการประกาศว่าเป็นชนิดพอยน์เตอร์

ตัวอย่าง
char *prt; หมายความว่าประกาศว่าตัวแปร prt เป็นตัวแปรพอยน์เตอร๋ที่ใช้เก็บตำแหน่งเริ่มต้นที่จะเก็บcharacter
int *a; หมายความว่า ประกาศค่าตัวแปร a เป็นตัวแปรพอยน์เตอร์ที่ใช้เก็บตำแหน่งเริ่มต้นที่จะใช้เก็บinteger


DTS 02-24-06-2552



















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

ประวัติ

นางสาว วิภาวดี กองสอน

MISS. WIPAWADEE KONGSON

รหัส 50152792079

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

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

E-mail address:u50152792079@gmail.com

DTS 01-24-06-2552