14.10.52

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

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

ด้านคุณธรรมจริยธรรม
- ทำให้ข้าพเจ้ามีควมประพฤติที่ดีขึ้น
- ทำให้ข้าพเจ้ารู้จักการข่มใจตนเอง และฝึกใจตนเอง
- ทำให้ข้าพเจ้ามัความอดทนอดกลั้น และอดออม
- ทำให้ข้าพเจ้าละเว้นการกระทำความชั่ว

ความรู้สอดคล้องกับวิชาชีพ
ซึ่งมีวิทยากรมาให้คำบรรยาย ให้ความรู้ในแต่ละสัปดาห์

มีความรู้เกี่ยวกับการบริหารการเงินที่ถูกต้อง
- ข้าพเจ้าได้รุ้จักการแบ่งเงินเป็นส่วนๆ
- แบ่งเพื่อไว้ยามฉุกเฉิน เพื่อการลงทุน เพื่อการออม

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

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

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

22.9.52

Sorting

DTS 10-09-09-2552

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

ประเภทของการเรียงลำดับข้อมูล
การเรียงลำดับข้อมูลสามารถแบ่งได้เป็น 2 ประเภทใหญ่ ๆ คือ
1. การเรียงลำดับข้อมูลแบบภายใน (Internal Sorting)
2. การเรียงลำดับข้อมูลแบบภายนอก (External Sorting)

การเรียงลำดับข้อมูลแบบภายใน (Internal Sorting)
การเรียงลำดับข้อมูลแบบภายใน หมายถึง กรรมวิธีในการเรียงลำดับที่เกิดขึ้นภายในหน่วยความจำหลัก (MainMemory) ของเครื่องคอมพิวเตอร์ ซึ่งเหมาะสำหรับข้อมูลที่มีจำนวนเพียงพอกับขนาดของหน่วยความจำ ข้อมูลมีขนาดไม่ใหญ่ไปกว่าหน่วยความจำที่กำหนดให้กับผู้ใช้แต่ละราย ดังนั้นข้อมูลทั้งหลายจึงจะเก็บอยู่ในหน่วยความจำหลัก และแบบการคำนวณสำหรับการเรียงข้อมูลสามารถอ่านข้อมูลแต่ละชิ้นจากหน่วยความจำหลักหรือเขียนข้อมูลเข้าสู่หน่วยความจำหลักได้เลย โดยไม่จำเป็นต้องใช้หน่วยความจำสำรอง (Secondary Storage) การเรียงลำดับข้อมูลแบบนี้ จำเป็นต้องคิดถึงเวลาที่เสียไปในการเปรียบเทียบและการเลื่อนข้อมูลในหน่วยความจำหลักเท่านั้นกรรมวิธีการเรียงลำดับข้อมูลแบบภายในแบ่งออกเป็นวิธีพื้นฐานได้ 3 วิธี ได้แก่ การเรียงลำดับแบบการเลือก(Selection Sort) การเรียงลำดับแบบการแลกเปลี่ยน (Exchange Sort) และการเรียงลำดับแบบการแทรก (Insertion Sort)ซึ่งแต่ละวิธีจะมีความเหมาะสมกับสถานการณ์ของข้อมูลไม่เหมือนกัน

การเรียงลำดับข้อมูลแบบภายนอก (External Sorting)
การเรียงลำดับข้อมูลแบบภายนอก หมายถึง กรรมวิธีในการเรียงลำดับข้อมูลที่เกิดขึ้นภายนอกหน่วยความจำหลักของเครื่องคอมพิวเตอร์ ซึ่งเหมาะสมสำหรับข้อมูลที่มีจำนวนมากและไม่สามารถนำข้อมูลผ่านขั้นตอนวิธีการเรียงลำดับข้อมูลแบบภายในได้พร้อมกันทั้งหมด ถ้าข้อมูลมีจำนวนมากเกินกว่าที่จะบรรจุลงในพื้นที่หน่วยความจำหลัก(Main Memory) ได้หมดในครั้งเดียวกัน จึงจำเป็นต้องแบ่งข้อมูลออกเป็นส่วนย่อย ๆ (Page) แต่ละส่วนมีขนาดพอใหญ่ที่จะบรรจุอยู่ในหน่วยความจำหลักได้ และจะได้รับการเรียงข้อมูลโดยใช้การคำนวณสำหรีบการเรียงข้อมูลแบบภายในตามแบบที่ผู้ใช้เห็นว่าเหมาะสม หลังจากนั้นก็ต้องมีการนำข้อมูลย่อยในส่วนที่เรียงแล้วเก็บลงไปยังหน่วยความจำสำรอง(Secondary Storage) เช่น เทป (Tape) หรือดิสก์ (Disk) ไว้สำหรับเก็บผลลัพธ์ชั่วคราวเพื่อรอที่จะรวมกับข้อมูลส่วน อื่น ๆ ที่เรียงลำดับแล้ว จากนั้นจึงไปนำข้อมูลในส่วนอื่น ๆ ที่ยังไม่ได้เรียงลำดับเข้ามายังหน่วยความจำหลัก และเรียงลำดับข้อมูลในลักษณะเดิมอีกจนหมดข้อมูล การเรียงลำดับข้อมูลแบบนี้ นอกจากจะต้องคิดถึงเวลาที่เสียไปในการเปรียบเทียบและการเลื่อนข้อมูลในหน่วยความจำหลักแล้ว ยังต้องคิดถึงเวลาในการถ่ายเทข้อมูลระหว่างหน่วยความจำหลักและหน่วยความจำสำรองอีกด้วย เวลาที่สูญเสียไปในระหว่างการถ่ายเทข้อมูลระหว่างหน่วยความจำหลักและหน่วยความจำสำรองจะเป็นตัวระบุประสิทธิภาพของวิธีการเรียงลำดับแบบภายนอกนี้ด้วย

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

12.9.52

Graph

DTS 09-02-09-2552
กราฟ

เนื้อหาเกี่ยวกับ
- โครงสร้างข้อมูลแบบกราฟ
- นิยามของกราฟ
- การแทนที่กราฟในหน่วยความจำ
- การท่องไปในกราฟ

กราฟ (Graph) เป็นโครงสร้างข้อมูลไม่เป็นเชิงเส้น (Nonlinear Data Structure) มีความแตกต่างจากโครงสร้างข้อมูลทรีในบทที่ผ่านมา แต่เป็นลักษณะพิเศษแบบหนี่งของกราฟโดยทรีเป็นกราฟอะไซคลิกที่ไม่มีการวนลูปและการวนถอยกลับ เป็นกราฟเชื่อมกันที่มีเพียงเอจเดียวระหว่างสองโหนด กราฟมีลักษณะเป็นเซ็ตของจุด (Point) และเซ็ตของเส้น (Line) ซึ่งแต่ละเส้นทำหน้าที่เชื่อมต่อจุดเข้าด้วยกัน แต่ละจุดเรียกว่าโหนด (Node) ของกราฟและเส้นเรียกว่าเอจ (Edge) บางครั้งเอจจะเรียกว่าอาร์ค (Arc) และโหนดเรียกว่าเวอร์ทิค (Vertice) โดยกำหนดให้กราฟ G มีเซ็ตของโหนดเป็น VG และเซ็ตของเอจเป็น EG เช่นในรูปที่ 10.1 VG ={a,b,c,d} และ EG = {1,2,3,4,5,6,7,8} จำนวนสมาชิกที่มีใน VG เรียกว่าออเดอร์ (Order) ของกราฟ ถ้าออเดอร์เท่ากับ 0 คือ กราฟไม่มีสมาชิกเรียกว่านัลกราฟ (Null Graph)

นิยามของกราฟ

•กราฟ เป็นโครงสร้างที่นำมาใช้เพื่อแสดงความสัมพันธ์ระหว่างวัตถุ โดยแทนวัตถุด้วยเวอร์เท็กซ์ และเชื่อมโยงความสัมพันธ์ด้วยเอดจ์
•เขียนในรูปของสัญลักษณ์ได้เป็น G = (V,E)

•ซึ่ง V(G) คือ เซตของเวอร์เทกซ์ที่ไม่ใช่เซ็ตว่าง และมีจำนวนจำกัด
•E(G) คือ เซตของเอดจ์ ซึ่งเขียนด้วยคู่ของเวอร์เท็กซ์


ลักษณะของกราฟ

-Direct Graph (กราฟแสดงทิศทาง) เป็นกราฟที่แสดงเส้นเชื่อมระหว่าง vertex โดแสดงทิศทางของการเชื่อมต่อด้วย

-Undirected Graph กราฟที่แสดงเส้นเชื่อมต่อระหว่าง vertex แต่ไม่แสดงทิศทางของการเชื่อมต่อ


ตัวอย่างของกราฟในชีวิตประจำวัน เช่น กราฟของการเดินทางระหว่างเมือง ซึ่ง vertex คือ กลุ่มของเมืองต่างๆ และ edge คือ เส้นทางเดินระหว่างเมือง หรือ ในเครือข่ายคอมพิวเตอร์ (Computer Network) vertex ก็คือ กลุ่มของเครื่องคอมพิวเตอร์ หรือโหนดต่างๆ และ edge ก็คือ เส้นทางการติดต่อสื่อสารระหว่างโหนดต่างๆ เป็นต้น

Tree

DTS 07-25-08-2552

ทรี

ได้เรียนเกี่ยวกับ
- การท่องไปในทรี
- เอ็กซ์เพรสชันทรี
- ไบนารีเซิร์ชทรี

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






ไบนารีทรี (Binary Tree)

-โหนดของทรี เป็น 0 หรือไม่มีโหนดที่เรียกว่า Empty tree

-กำหนดเรียกชื่อทรีย่อยด้านซ้าย และทรีย่อยด้านขวาว่า right subtree

-โหนดแต่ละโหนดสามารถมีโหนดย่อย (subtree) ได้ไม่เกิน 2 โหนด
ไบนารีทรีแบบสมบูรณ์


7.8.52

Queue

DTS 06-05-08-2552

คิว
เป็นข้อมูลหลายรายการอยู่ต่อเนื่องกัน การนำข้อมูลเข้าและออกจาก คิว มีเงื่อนไขว่าข้อมูล ที่มาก่อนจะออกก่อน(FIFO = First In First Out) ตัวอย่าง คิว ในชีวิตประจำวัน ได้แก่
- คิวของคนรอถอนเงินจากธนาคาร
- คิวของนักเรียนรอรับอาหารจากโรงเรียน
- คิวของคนรอจ่ายเงินในซุปเปอร์มาเก็ต

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

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

ในการปฏิบัติการบนระบบคอมพิวเตอร์สามารถใช้ อาร์เรย์ หนึ่งมิติ แทนข้อมูลชนิดคิวได้ดังนี้
Var Q : array[1..10] Of Char;
กำหนดให้ Q เป็นตัวแปรแบบอาร์เรย์ หนึ่งมิติมีสมาชิกได้ 10 ชุดข้อมูล นั่นหมายความว่าสามารถมีข้อมูลใน คิว ได้เพียง 10 ข้อมูลเท่านั้น

การปฏิบัติการกับคิว มี 2 รูปแบบ คือ
(ก) การเพิ่มโหนด(Append Queues)
(ข) การลบโหนด(Deleat Queues)

2. สแตก(Stack)สแตก(Stack) เป็นข้อมูลหลายรายการซึ่งอยู่ต่อเนื่องกัน การนำข้อมูลเข้าและออกจากสแตก มีเงื่อนไขว่า ข้อมูลที่เข้าทีหลังจะออกก่อน(LIFO = Last In First Out)
ตัวอย่างสแตก ได้แก่
- ถาดจานที่วางซ้อนกัน ใบที่อยู่บนสุดจะถูกหยิบออกไปใช้ก่อน
สแตก มีใช้กันมากใน System Software เช่น Dos รวมทั้งคอมไพล์เลอร์ และ อินเตอร์พรีเตอร์ ก็ใช้สแตกด้วย เช่นกัน
ในการปฏิบัติการบนระบบคอมพิวเตอร์สามารถใช้ อาร์เรย์ หนึ่งมิติ แทนข้อมูลชนิดแสตก ได้ดังนี้
Var St : array[1..10] Of Char;

3. ลิงค์ลิสต์(Linked Lists Type)ลิงค์ลิสต์(Linked List) เป็นข้อมูลที่ประกอบด้วยกลุ่ม(List) รายการ(Item) ข้อมูล แต่ละรายการข้อมูลมีส่วน ประกอบสองส่วนคือ ส่วนที่เป็นรายละเอียดข้อมูล(Information) และส่วนที่เป็นพอยน์เตอร์ของรายการ ข้อมูลแรกจะเชื่อมโยง(Link) ไปที่รายการข้อมูล

4. ทรี(Tree)ทรี(Tree - ต้นไม้) เป็นข้อมูลซึ่งประกอบด้วยข้อมูลรายการแรก เรียกว่า รูท(Root) จากรูทจะมีการเชื่อมโยงไปยังรายการข้อมูลอื่น ข้อมูลแต่ละรายการเรียกว่า โหนด(Node) หรือ ลีฟ(Leaf) ของทรี ทรีที่เป็นส่วนหนึ่งของทรีหนึ่งเรียกว่า สับทรี(Sub-tree) โหนดที่ไม่มีสับทรีเรียกว่าเทอร์มินอลโหนด(Terminal Node) จำนวนชั้นจากรูทถึงโหนดสุดท้าย เรียกว่า ความสูง(Height) ของทรี

24.7.52

Stack

DTS 05-22-07-2552

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

ตัวอย่างการทำงานแบบ LIFO ที่ข้าพเจ้าเห็นในชีวิตประจำวันของข้าพเจ้า


- ที่ร้านทำผม จะมีผ้าทำผมสำหรับ เช็ดผมให้ลูกค้าที่ทำผม ที่ร้านเขาจะพับผ้าทำผมซ้อนๆกันบนชั้นและเขาจะหยิบผ้าจากด้านบนมาใช้ก่อน การพับผ้านั้นจะพับเรียงหรือซ้อนๆกันก็จะเหมือนการทำงานแบบ LIFO แบบเข้าหลัง ออกก่อน .....
-เทปกาว , ด้ายหลอด , กระดาษเช็ดชู





การเพิ่มข้อมูลลงในสแตค

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


ปัญหาที่เกิดขึ้นกับสแตก
คือขอผิดพลาดที่เกิดขึ้นซึ่งมีผลมาจากการจัดการสแตกมีดังนี้
สแตกเต็ม (Full Stack)
สแตกว่าง (Empty Stack)


1 .สแตกเต็ม (Full Stack) การ push สแตกทุกครั้งจะมีการตรวจสอบที่ว่างในสแตกว่ามีที่ว่างเหลือหรือไม่ ถ้าไม่มีที่ว่างเหลืออยู่ เราก็จะไม่สามารถทำการ push สแตกได้ ในกรณีเช่นนี้เราเรียกว่าเกิดสถานะล้นเต็ม (Stack Overflow) โดย การตรวจสอบว่าสแตกเต็มหรือไม่ เราจะใช้ตัวชี้สแตก (Stack pointer) มาเปรียบเทียบกับค่าสูงสุดของ สแตก (Max stack) หากตัวชี้สแตกมีค่าเท่ากับค่าสูงสุดของสแตกแล้ว แสดงว่าไม่มีที่ว่างให้ข้อเก็บข้อมูล อีก

2. สแตกว่าง (Empty Stack)
นิยาม empty(S) ถ้า S เป็นสแตก ขบวนการ empty(S) จะส่งผลเป็นจริง (true) เมื่อสแตกว่าง และส่งผลเป็นเท็จ (false) เมื่อสแตกไม่ว่างหรือสแตกเต็ม การ pop สแตกทุกครั้งจะมีการตรวจสอบข้อมูลในสแตกว่ามีข้อมูลในสแตกหรือไม่ ถ้าไม่มีข้อมูลในสแตก เหลืออยู่ เราก็ไม่สามารถทำการ pop สแตกได้ ในกรณีเช่นนี้เรียกว่าเกิดสถานะ สแตกจม (Stack Underflow) โดยการตรวจสอบว่าสแตกว่างหรือไม่ เราจะตรวจสอบตัวชี้สแตกว่าเท่ากับ 0 หรือ null หรือไม่ถ้าเท่ากับ 0 แสดงว่า สแตกว่าง จึงไม่สามารถดึงข้อมูลออกจากสแตกได้

--------------------------------------------

การเขียนโปรแกรมแบบ iostream.h กับ stdio.h

โปรแกรมรับค่าตัวเลขถ้าน้อยกว่า 5หรือเท่ากับ แสดงข้อความ +++ Poor+++ ถ้ารับค่าตัวเลขน้อยกว่า 15 หรือเท่ากับแสดงข้อความ +++Have enough to get by+++ ถ้ารับค่าตัวเลขอื่นๆ แสดงข้อความ +++Rich+++

"iostream.h"




"stdio.h"




16.7.52

Linked List

DTS 04-15-07-2552

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




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

2. การเพิ่มข้อมูล

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


3.การลบข้อมูล การลบข้มูล หรือลบโหนด มีหลายวิธี ดังต่อไปนี้
ต่ำแหน่งต้นลิสต์
ต่ำแหน่งท้ายลิสต์
และต่ำแหน่งกลางลิสต์


รายการแบบวงกลม ( Circular list )

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







รายการโยงคู่ ( Doubly Linked List )





-แต่ละโหนดจะมีสมาชิกอย่างน้อย 3 ฟิลด์ โดยจะมีฟิลด์ llink และ rlink ทำหน้าที่ชี้ไปยังตำแหน่งของโหนดถัดไป และโหนดก่อนหน้า ดังรูป

-ลิสต์เชื่อมโยงสองทางจะมีตัวแปร head เก็บตำแหน่งของโหนดแรกของลิสต์ โดย llink ของโหนดแรกจะเป็น NULL และ rlink ของโหนดสุดท้าย ก็จะเป็น NULL ด้วยเช่นกัน


การเพิ่มข้อมูล



เป็นการสร้างโหนดใหม่ระหว่างโหนด 2 โหนด

การลบข้อมูล

การลบข้อมูล ควรตรวจสอบสมาชิกก่อน เพื่อให้วางแผนการเขียนค่ำสั่งได้ถูกต้อง การเขียนคำสั่งลบข้อมูล มี 3 แบบ คือ

-แบบไม่มีสมาชิก

-แบบมีสมาชิก 1 จำนวน

-แบบมีสมาชิกมากกว่า 1 จำนวน

14.7.52

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



1. ให้นักศึกษากำหนดค่าของ Array 1 มิติ และ Array 2 มิติ
ตอบ

อาเรย์ คือชุดของตัวแปร ที่มีชื่อตัวแปรและชนิดตัวแปรเดียวกัน มักใช้กับตัวแปรชนิดเดียวกันหลายๆ ตัว ที่มีการทำงานเหมือนกัน เช่นคะแนนนักศึกษา 20 คน ชื่อทุกกระบวนวิชาที่เปิดสอนภายในภาควิชา (เช่นอาจมี 30 กระบวนวิชา ก็จะมีข้อมูล 30 ชื่อ) เป็นต้น
รูปแบบการประกาศอาเรย์
ชนิดข้อมูล ชื่อตัวแปร [ขนาดข้อมูล];
ตัวอย่าง ต้องการเก็บข้อมูลคะแนนสอบของนักศึกษา 10 คนไว้ในตัวแปร array จะต้องการประกาศตัวแปรอาเรย์ ดังนี้
float score[10];
อาเรย์ 2 มิติ
ข้อมูลในอาเรย์ 2 มิติ จะเป็นลักษณะของตาราง
ซึ่งมีแถวและคอลัมน์
แถว (row)
คอลัมน์ (column)
score[row][column] เช่น score[0][4]
_____________________________


2. ให้นักศึกษาหาค่าของ A[2], A[6] จากค่า A={2,8,16,24,9,7,3,8}
ตอบ A[2] คือ 16A[6] คือ 3

_____________________________


3. จากค่าของ int a[2][3] = {{6,5,4},{3,2,1}};
ให้นักศึกษา หาค่าของ a[1][0] และ a[0][2]
char a[2][3];
col1 col2 col3
row1 a[0][0] =6 a[0][1] =5 a[0][2] =4
row 2 a[1][0] =3 a[1][1] =2 a[1][2] =1

ตอบ ค่าของ a[1][0] = 3
a[0][2] = 4
______________________________
4. ให้นักศึกษากำหนด Structure ที่มีค่าของข้อมูลจากน้อย 6 Records

ตอบ struct Emp

#include
int main() {
struct date {
int day;
int month;
int year;
};
struct person {
char name[30];
int age;
float salary;
struct date bday;
};

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


array m3[ ] จะเก็บข้อมูลอยู่ใน array มีพื้นที่เก็บข้อมูลเป็นของตัวแปรนี้และชื่อ m3 จะมี ค่า address คงที่ไม่สามารถเปลี่ยนค่าได้ใช้ m3 + 1 ได้ แต่ใช้ m3++ ไม่ได้

pointer *m3 จะชี้ไปที่ที่เก็บข้อมูล จากตัวอย่างข้างต้นจะมีพื้นที่ส่วนหนึ่งที่ใช้ในการเก็บ string ชุดนี้ไว้แล้ว m3 จะชี้ไปที่ address ของพื้นที่นั้น ๆ เราสามารถที่จะทำการเปลี่ยนค่าของ m3 ได้โดยใช้ m3++


______________________________

1.7.52

Pointer Set and String

DTS 03-01-07-2552

พอยเตอร์ เซต และสตริง
วันนี้ได้เรียน 3 เรื่อง
-Pointer
-Set and String

Pointer

Pointer คือ ตัวแปรชนิดหนึ่งที่อ้างอิงไปยังตำแหน่งของหน่วยความจำ (Address) เป็นการใช้ตัวชี้จะทำให้โปรแกรมรวดเร็วและ มีขนาดเล็ก
การประกาศตัวแปรPointer
ต้องมีระบุตัวดำเนินการ (Operator) เพื่อบอกว่าตัวแปรดังกล่าวเป็นตัวแปรแบบตัวชี้ โดยตัวดำเนินการที่ใช้คือ * และ & เช่น จะประกาศตัวแปรชนิดPointer คือ int *countPtr; ในที่นี้หมายถึง ตัวแปร countPtr ถูกประกาศให้เป็นตัวแปรชนิด Pointer และทำหน้าที่ชี้ (เก็บ Address) ไปยังตำแหน่งที่เก็บค่าจำนวนเต็ม(เป็นชนิดเดียวกับที่เราประกาศไว้ ในที่นี้คือ Integer)
ในการประกาศตัวแปร pointer จะต้องนำหน้าด้วยเครื่องหมาย * ดังเช่น
int y;
int *x; // เป็น pointer
char *z; // เป็น pointer

pointer มีประโยชน์หลายอย่างดังนี้
-ช่วยประหยัดหน่วยความจำ ไม่ต้องประกาศตัวแปรหลายๆ ครั้งเพื่อ ส่งค่าไปมา โดยเฉพาะการส่งค่าไปมาระหว่างฟังก์ชัน ถ้าเราใช้ pointer มาช่วยในการส่งค่าแบบอ้างอิง ทำให้ใน function ที่รับค่า ไม่จำเป็นต้องประกาศตัวแปรแบบเดียวกันซ้ำอีก จะเห็นได้ชัดเจนในตัวแปรแบบ array
-ช่วยประหยัดเวลา เพราะการส่งค่าไปมาแล้วเปลี่ยนแปลงค่าที่ส่งหากันระหว่างฟังก์ชันจะทำให้เสียเวลามากกว่า แต่ถ้าเราใช้ตัวแปร pointer เลย ก็จะทำให้เข้าถึงหน่วยความจำในตำแหน่งเดียวกันเลย ทำให้ไม่ต้อง copy ค่าดังกล่าวอีก


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

1.โครงสร้างแบบเชิงเส้น (linear) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์แบบหนึ่งต่อหนึ่ง (one-to-one relationship) นั่นคือเราสามารถระบุถึงข้อมูลตัวถัดไปของข้อมูลได้
2.โครงสร้างแบบต้นไม้หรือแบบลำดับขั้น (tree or hierarchical) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์กันแบบหนึ่งต่อหลาย (one-to-many relationship) นั่นคือ ข้อมูลตัวหนึ่งสามารถมีความสัมพันธ์กับข้อมูลในลำดับรองลงไปได้หลายตัว
3.โครงสร้างแบบกราฟหรือเครือข่าย (graph or network) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์กันแบบหลายต่อหลาย (many-to-many relationship) นั่นคือ ข้อมูลตัวหนึ่ง ๆ อาจจะมีความสัมพันธ์กับข้อมูลตัวอื่น ๆ กี่ตัวก็ได้


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

เช่น Char name[15]

อาจจะเป็นอะเรย์ขนาด 15 ช่องอักขระ หรือเป็นสตริงขนาด 15 อักขระก็ได้ โดยจุดสิ้นสุดขอบ สตริง จะจบด้วย \0 หรือ null character

เช่น char b[] = {'S' ,'A ','W', 'A' ,'S ','D' ,'E' ,'E' ,'\0'};

หรือ char b[] = "SAWASDEE";

การกำหนดตัวแปรสตริง อาศัยหลักการของอะเรย์ เพราะสตริงคืออะเรย์ของอักขระที่เปิดท้ายด้วย (\0) และมีฟังก์ชันพิเศษสำหรับการทำงานของสตริงโดยเฉพาะ

ฟังก์ชัน scanf ( )ใช้ในการรับค่าข้อมูลต่าง ๆ ที่ป้อนเข้ามาทางแป้นพิมพ์ รูปแบบการใช้ฟังก์ชัน scanf ( )scanf ( " รหัสรูปแบบ " , &ชื่อตัวแปร ) ;โดย รหัสรูปแบบ ใช้ชุดเดียวกันกับฟังก์ชัน printf ( )ชื่อตัวแปร จะต้องนำหน้าด้วยเครื่องหมาย & ยกเว้นตัวแปร สตริงที่ใช้ในการจัดเก็บข้อความไม่ต้องมีเครื่องหมาย &

ฟังก์ชัน getchar ( ) และ getch ( )getchar( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด getch( ) เป็น ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระเหมือนกับฟังก์ชัน getchar()

ฟังก์ชัน puts() ใช้ในการพิมพ์สริงออกทางจอภาพ โดยผ่านค่าแอดเรสของสริงไปให้เท่านั้น

อะเรย์ของสตริงที่ยาวเท่ากัน

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

Introduction

DST 01 -17-06-2552

Data Structure

โครงสร้างข้อมูล คือ หน่วยข้อมูลย่อยๆ (Data Elements)
เช่น การเลือกใช้ค่า n โดยชนิดของข้อมูล char ch; เป็นการกำหนดให้คอมพิวเตอร์จัดเตรียมหน่วยความจำขนาด 8 บิต int i; เป็นการกำหนดให้คอมพิวเตอร์จัดเตรียมหน่วยความจำขนาด16 บิต float average; เป็นการกำหนดให้คอมพิวเตอร์จัดเตรียมหน่วยความจำขนาด 32 บิต

ประเภทของโครงสร้างข้อมูล
1. โครงสร้างข้อมูลทางกายภาพ
(Physical Data Structure)
เป็นโครงสร้างข้อมูลทั่วไปที่มีใช้ในภาษาคอมพิวเตอร์ ซึ่งแบ่งออกเป็น 2 ประเภทตามลักษณะข้อมูล ดังนี้
1.2 ข้อมูลเบื้องต้น (primitive data types) เป็นข้อมูลพื้นฐานซึ่งมีโครงสร้างข้อมูลไม่ซับซ้อนจะต้องมีในภาษาคอมพิวเตอร์ทุกภาษา ตัวอย่างของข้อมูลประเภทนี้ เช่น
- จำนวนเต็ม (integer)
- จำนวนจริง (real)
- ตัวอักขระ (character)

2. โครงสร้างข้อมูลทางตรรกะ
(Logical Data Structure) เป็น โครงสร้างข้อมูลที่เกิดจากจินตนาการของผู้ใช้เพื่อใช้แก้ปัญหาในโปรแกรมที่สร้างขึ้น จำแนกได้เป็น 2 ประเภท ดังนี้
2.1 โครงสร้างข้อมูลแบบเชิงเส้น (linear data structures) เป็นชนิดข้อมูลที่ความสัมพันธ์ของข้อมูลเรียงต่อเนื่องกัน โดยข้อมูลตัวที่ 2 อยู่ต่อจาก ข้อมูลตัวที่ 1 ข้อมูลตัวที่ 3 อยู่ต่อจากข้อมูลตัวที่ 2 และข้อมูลตัวที่ n อยู่ต่อจากข้อมูลตัวที่ n - 1 ตัวอย่างโครงสร้างข้อมูลแบบเชิงเส้น เช่น
- ลิสต์ (list)
- สแตก (stack)
- คิว (queue)
- ดีคิว (deque)
- สตริง (string)
2.2 โครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น (non-linear data structures) เป็นชนิดข้อมูลที่ข้อมูลแต่ละตัวสามารถมีความสัมพันธ์กับข้อมูลอื่นได้หลายตัว (ดูรายละเอียดเพิ่มเติมได้ในบทที่ 7) ตัวอย่างโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น
- ทรี (tree)
- กราฟ (graph)

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

28.6.52

เขียน Structure

DTS 02 28-06-2552

#include
int main() {
struct date {
int day;
int month;
int year;
};
struct person {
char name[20];
int age;
float salary;
struct date bday;
};
struct person emp1={"samchai", 25, 7500,{25, 11, 28}}, emp2;
printf("Enter Data of Employee \n");
printf("Name :");
scanf("%[^\n]",emp2.name);
printf("Age :");
scanf("%d",&emp2.age);
printf("salary : ");
scanf("%f",&emp2.salary);
printf("Birthday (dd/mm/yy) :");
scanf("%d/%d/%d", &emp2.bday.day, &emp2.bday.month, &emp2.bday.year);
printf("\n\nList of Employ\n");
printf("---------------------------------------------------------------------\n");
printf(" Employ NO. Name Age salary Birthday\n");
printf("---------------------------------------------------------------------\n");
printf(" 1 %-20s %d %f %2d/%2d/%2d\n", emp1.name,emp1.age,emp1.salary,emp1.bday.day,emp1.bday.month,emp1.bday.year);
printf(" 2 %-20s %d %f %2d/%2d/%2d\n", emp2.name,emp2.age,emp2.salary,emp2.bday.day,emp2.bday.month,emp2.bday.year);
printf("---------------------------------------------------------------------\n");

return 0;
}

24.6.52

ARRAY AND RECORD

DTS 02-24-06-2552

อะเรย์ กับ เรคครอร์ด

อาร์เรย์ (Array) ความหมายของอาร์เรย์ คือแถวหรือลำดับ แถวหรือลำดับของข้อมูลชนิดเดียวกันที่มีจำนวนหลายตัวนำมาเก็บในตัวแปรชื่อเดียวกัน แต่ต่างกันที่ตัวบอกลำดับ ซึ่งเรียกว่าตัวห้อยหรือตัว Subscript ของตัวแปรนั้น ประเภทของอาร์เรย์ จะมี 2 ประเภท คือ อาร์เรย์ 1 มิติ , อาร์เรย์ หลายมิติ

อาร์เรย์ 1 มิติ
เช่น float Score[40]; มีความหมายว่า คะแนนสอบของนักเรียนที่เป็นเลขทศนิยม จำนวน 40 ตัว เก็บไว้ในตัวแปรชื่อ Score char name[100][20] ; มีความหมายว่า ข้อมูลรายชื่อพนักงาน 100 คน ที่ชื่อมีความยาวไม่เกิน 20 อักษร

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

char name[4][5]
col 1 col 2 col 3
row1 name[0][0] name[0][1] name[0][2]

row2 name[1][0] name[1][1] name[1][2]

Structure

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

สามารถทำได้โดยคำสั่ง struct มาช่วยในการประกาศข้อมูลแบบโครงสร้าง โดยมีรูปแบบการประกาศดังนี้

struct struct_name

{

type1 name1;type2

name2;

……..

typeN nameN;}

struct_var;

struct เป็นคำสั่งที่ใช้ประกาศข้อมูลแบบโครงสร้างstruct_name เป็นชื่อข้อมูลแบบโครงสร้าง ใช้สำหรับประกาศข้อมูลแบบโครงสร้างกลุ่มอื่นให้มีโครงสร้างเหมือนกลุ่มโครงสร้างที่เคยประกาศไว้แล้วstruct_var เป็นชื่อตัวแปรโครงสร้างใช้สำหรับอ้างอิงข้อมูลภายในโครงสร้างtype1 name1, type2 name2,…,typeN nameN เป็นชนิด และชื่อตัวแปรที่ 1, 2, 3, … , N ตามลำดับ บางครั้งอาจจะเรียก name1, name2,…,nameN ว่า element 1, element 2, … , element N ตามลำดับ

ประวัติ

DTS 01-24-06-09








ชื่อ นางสาวณัชนันท์ นามสกุล ศิลาพัด



MISS NUTCHANAN SILAPAT


รหัสนักศึกษา 50152792080


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


มหาลัยราชภัฏสวนดุสิต

E-MAIL : U50152792080@GMAIL.COM