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

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

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

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

วันอังคารที่ 25 สิงหาคม พ.ศ. 2552

DST 07 -25/8/52

สรุปบทเรียน ทรี

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

นิยามของทรี
1. นิยามทรีด้วยนิยามของกราฟทรี คือ กราฟที่ต่อเนื่องโดยไม่มีวงจรปิด (loop) ในโครงสร้าง โหนดสองโหนดใด ๆ ในทรีต้องมีทางติดต่อกันทางเดียวเท่านั้น และทรีที่มี N โหนด ต้องมีกิ่งทั้งหมด N-1 เส้น
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และกิ่งแต่ละกิ่งมีความเท่ากันหมด คือ ยาวเท่ากับ 1หน่วย ซึ่งระดับของโหนดจะเท่ากับจำนวนกิ่งที่น้อยที่สุดจากโหนดรากไปยังโหนดใด ๆ บวกด้วย 1และจำนวนเส้นทางตามแนวดิ่งของโหนดใด ๆ ซึ่งห่างจากโหนดราก เรียกว่า ความสูง (Height) หรือความลึก (Depth)

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

โครงสร้างทรีที่แต่ละโหนดมีลิงค์ฟิลด์แค่สองลิงค์ฟิลด์ ซึ่งช่วยให้ประหยัดเนื้อที่ในการจัดเก็บได้มาก เรียกโครงสร้างทรีที่แต่ละโหนดมีจำนวนโหนดลูกไม่เกินสองหรือแต่ละโหนดมีจำนวนทรีย่อยไม่เกินสองนี้ว่า ไบนารีทรี (Binary Tree)

ไบนารีทรีที่ทุก ๆ โหนดมีทรีย่อยทางซ้ายและทรีย่อยทางขวา ยกเว้นโหนดใบ และโหนดใบทุกโหนดจะต้องอยู่ที่ระดับเดียวกันเรียกว่า ไบนารีทรีแบบสมบูรณ์ (complete binary tree)สามารถคำนวณจำนวนโหนดทั้งหมดในไบนารีทรีแบบสมบูรณ์ได้ถ้ากำหนดให้ L คือระดับของโหนดใด ๆ และN คือจำนวนโหนดทั้งหมดในทรีจะได้ว่า
ระดับ 1 มีจำนวนโหนด 1 โหนด
ระดับ 2 มีจำนวนโหนด 3 โหนด
ระดับ 3 มีจำนวนโหนด 7 โหนด
ระดับ L มีจำนวนโหนด 2ยกกำลังL – 1 โหนด

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

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

1. การท่องไปแบบพรีออร์เดอร์(Preorder Traversal)
เป็นการเดินเข้าไปเยือนโหนดต่าง ๆ ในทรีด้วยวิธีNLR มีขั้นตอนการเดินดังต่อไปนี้
(1) เยือนโหนดราก
(2) ท่องไปในทรีย่อยทางซ้ายแบบพรีออร์เดอร์
(3) ท่องไปในทรีย่อยทางขวาแบบพรีออร์เดอร์
2.การท่องไปแบบอินออร์เดอร์(Inorder Traversal)
เป็นการเดินเข้าไปเยือนโหนดต่าง ๆในทรีด้วยวิธี LNRมีขั้นตอนการเดินดังต่อไปนี้
(1) ท่องไปในทรีย่อยทางซ้ายแบบอินออร์เดอร์
(2) เยือนโหนดราก
(3) ท่องไปในทรีย่อยทางขวาแบบอินออร์เดอร์
3. การท่องไปแบบโพสออร์เดอร์(Postorder Traversal)
เป็นการเดินเข้าไปเยือนโหนดต่าง ๆในทรีด้วยวิธี LRN มีขั้นตอนการเดินดังต่อไปนี้
(1) ท่องไปในทรีย่อยทางซ้ายแบบโพสต์ออร์เดอร์
(2) ท่องไปในทรีย่อยทางขวาแบบโพสต์ออร์เดอร์
(3) เยือนโหนดราก

DST 06 -25/8/52

สรุปบทเรียน คิว
คิว (Queue) เป็นโครงสร้างข้อมูลแบบเชิงเส้นหรือลิเนียร์ลิสต์ซึ่งการเพิ่มข้อมูลจะกระทำที่ปลายข้างหนึ่งซึ่งเรียกว่าส่วนท้ายหรือเรียร์ (rear) และการนำข้อมูลออกจะกระทำที่ปลายอีกข้างหนึ่งซึ่งเรียกว่า ส่วนหน้า หรือฟรอนต์(front)ลักษณะการทำงานของคิวเป็นลักษณะของการเข้าก่อนออกก่อนหรือที่เรียกว่า FIFO (First In First Out)

การทำงานของคิวจะประกอบด้วยกระบวนการ 3 กระบวนการที่สำคัญ คือ
1.enqueue (queue, newElement)หมายถึง การใส่ข้อมูลnewElement ลงไปที่ส่วนเรียร์(ส่วนหน้า)
2.dequeue (queue, element)หมายถึง การนำออกจากส่วนหน้าของคิวและให้ ข้อมูลนั้นกับ element
3.Queue Front หมายถึงการนำข้อมูลที่อยู่ตอนต้นของคิวมาแสดงแต่จะไม่ทำการเอาข้อมูลออกจากคิว
4.Queue Rear หมายถึงการนำข้อมูลที่อยู่ตอนท้ายของคิวมาแสดงแต่จะไม่ทำการเพิ่มข้อมูลเข้าไปในคิว

การแทนที่ข้อมูลของคิว
สามารถทำได้ 2 วิธี คือ
1. การแทนที่ข้อมูลของคิวแบบลิงค์ลิสต์
2. การแทนที่ข้อมูลของคิวแบบอะเรย์

การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์จะประกอบไปด้วย 2 ส่วน คือ
1. Head Nodeจะประกอบไปด้วย 3 ส่วนคือ
พอยเตอร์จำนวน 2 ตัว คือ Front และ rearกับจำนวนสมาชิกในคิว
2. Data Node จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป

การแทนที่ข้อมูลของคิวแบบอะเรย์มี 9 ขั้นตอนคือ
1. Create Queue 2. Enqueue 3. Dequeue 4. Queue Front 5. Queue Rear
6. Empty Queue 7. Full Queue 8. Queue Count 9. Destroy Queue

การประยุกต์ใช้คิว
คิวถูกประยุกต์ใช้มากในการจำลองระบบงานธุรกิจ เช่น
การให้บริการลูกค้า ต้องวิเคราะห์จำนวนลูกค้าในคิวที่เหมาะสมว่าควรเป็นจำนวนเท่าใด เพื่อให้ลูกค้าเสียเวลาน้อยที่สุด
ในด้านคอมพิวเตอร์ ได้นำคิวเข้ามาใช้ คือในระบบปฏิบัติการ (Operation System) ในเรื่องของคิวของงานที่เข้ามาทำงาน (ขอใช้ทรัพยากรระบบของ CPU) จะจัดให้งานที่เข้ามาได้ทำงานตามลำดับความสำคัญ

วันพุธที่ 22 กรกฎาคม พ.ศ. 2552

สแตก ในชีวิตประจำวัน

สแตก คือ การนำสิ่งที่ใส่เข้าไปทีหลังออกมาก่อน หรือที่เยกง่ายๆคือ "ใส่หลังออกก่อน"
สแตรก ในชีวิตประจำวัน มีดังนี้
1. การตักข้าวจากถังข้าวสาร และการตักข้าวจากหม้อหุงข้าว
2. ตั้งของหนังสือชนิดเดียวกัน
3. สินค้าในสต็อกเก็บของ
4. นามบัตรในตลับใส่นามบัตร
5. การแจกชีท ซีล็อก ให้นักศึกษา
6. ของที่ถูกเก็บในลังหรือกล่อง
7. ของในห้องเก็บของ
8. สินค้าในตู้โชว์หรือในชั้นวางสินค้า
9. กองเอกสาร
10. น้ำตาลที่ใส่ในขวกโหล
11. น้ำแข็งในกระติกหรือในแก้วหรือในลัง
12. ซีดีในกล่องใส่ซีดี
13. ถุงพลาสติกในซองใส่
14. ขยะในถังขยะเวลา กทม. มาเก็บ
15. พวงมาลัยของเด็กขายพวงมาลัย(แบบคล้องท่อแป๊ป)แถวสี่แยก
16.การหยิบผ้ามาตากจากเครื่องซักผ้า

DST 05 -22/7/52

สรุปบทเรียน สแตก

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

DST 04 -22/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) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป

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

ฟังก์ชัน < stdio.h > และ < iosteam.h > ในการเขียนสูตรคูณ

แบบใช้ "stdio.h"
#include "stdio.h"
main()
{
int a;
printf("Enter an intiger(0 to stop):");
scanf("%d",&a);
for(int i = 1;i<=12;i++) { printf("%d",a); printf(" X %d\t",i); printf(" = %d\n",a*i); } } แบบใช้ "iosteam.h"
#include "iosteam.h"
void Table (int);
int main ()
{
int a;
cout<<"Enter an intiger(0 to stop):"; cin>>a;
Table (a);
return 0;
}
void Table (int x)
{
for(int i=1;i<=12;i++)
cout<< x << " X " << i << "\t= " << (x*i) << endl;
return ;
}

DST 03 -21/07/52

สรุปบทเรียน เซ็ตและสตริง

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

โครงสร้างข้อมูลแบบสตริ
สตริง (String) หรือ สตริงของอักขระ (CharacterString)
เป็นข้อมูลที่ประกอบไปด้วย ตัวอักษร ตัวเลขหรือเครื่องหมายเรียงติดต่อกันไป
รวมทั้งช่องว่าง
สตริงกับอะเรย์ สตริง คือ อะเรย์ของอักขระเช่น char a[6]
ความยาวของสตริง จะถูกกำหนดโดยขนาดของสตริง การกำหนดขนาดของสตริงนั้น
ต้องจองเนื้อที่ในหน่วยความจำให้กับ \0ด้วย
ในการกำหนดตัวแปรของสตริง อาศัยหลักการของอะเรย์ เพราะ สตริงก็คืออะเรย์ของอักขระ
ที่ปิดท้ายด้วย null character (\0) และมีฟังก์ชันพิเศษสำหรับทำงานกับสตริงโดยเฉพาะ

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

แบบฝึกหัด

1. ให้นักศึกษากำหนดค่าของ Array 1 มิติ และ Array 2 มิติ
#include"stdio.h"
main()
{
int a[1];
int b[2][3];
}

2. ให้นักศึกษาหาค่าของ A[2], A[6] จากค่า A={2,8,16,24,9,7,3,8}
#include"stdio.h"
main()
{
int a[]={2,8,16,24,9,7,3,8};
printf("%d\n",a[2]);
printf("%d\n",a[6]);
}
จะได้ ค่าของ A[2] = 16
และ ค่าของ A[6] = 3

3. จากค่าของ int a[2][3] = {{6,5,4},{3,2,1}};ให้นักศึกษา หาค่าของ a[1][0] และ a[0][2]
#include"stdio.h"
main()
{
int a[2][3] = {{6,5,4},{3,2,1}};
printf("%d\n",a[1][0]);
printf("%d\n",a[0][2]);
}
จะได้ ค่าของ A [1][0] = 3
และ ค่าของ A [0][2] = 4

4. ให้นักศึกษากำหนด Structure ที่มีค่าของข้อมูลจากน้อย6 Records
#include"stdio.h"
main()
{
struct number
{
int i;
int a;
}num;
struct date
{
int day;
int month;
int year;
};
struct product
{
float price;
char type[40];
int many;
struct date buy;
float total;
}pn;
{
printf("\t\tbuyer Data\n",num.i+1);
printf("Date of buy : ");
scanf("%d",&pn.buy.day);
printf("month of buy : ");
scanf("%d",&pn.buy.month);
printf("Year of buy : ");
scanf("%d",&pn.buy.year);
printf("Buy date : %d-%d-%d\n",pn.buy.day,pn.buy.month,pn.buy.year);
printf("How many type you will buy : ");
scanf("%d",&num.a);
for(num.i=0;num.i{
printf("Enter type name : ");
scanf("%s",&pn.type);
printf("price = ");
scanf("%f",&pn.price);
printf("How many you buy : ");
scanf("%d",&pn.many);
printf(" \n");
pn.total = pn.price*pn.many;
printf("\t\t Data buyer \n");
printf("Buy date : %d-%d-%d\n",pn.buy.day,pn.buy.month,pn.buy.year);
printf("Name : %s\n",pn.type);
printf("price : %.0f\n",pn.price);
printf("Pieces : %d\n",pn.many);
printf("total : %.2f\n\n",pn.total);
}
}
}

5. ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวชนิด Array กับตัวแปร Pointer ในสภาพของการกำหนดที่อยู่ของข้อมูล
ตัวแปร Pointer คือตัวแปรที่เก็บตำแหน่งของหน่วยความจำซึ่งตำแหน่งของหน่วยความจำนี้จะเป็นที่อยู่ของสิ่งอื่น ๆ ในหน่วยความจำ
Array คือกลุ่มของข้อมูล ที่มีชนิดของข้อมูลเป็นชนิดเดียวกัน การอ้างถึงกลุ่มของชุดข้อมูลนี้จะอ้างด้วยชื่อของตัวแปรเดียวกัน
ความแตกต่างระหว่างตัวแปร Array และ Pointer คือตัวแปรตารางอาเรย์จะเก็บเฉพาะค่าต่างๆ ที่เป็นชนิดกันเดียวกับตัวแปรอาเรย์แต่ ตัวแปรพอยเตอร์จะเก็บเฉพาะค่าตำแหน่ง Address ตัวแปรเท่านั้น

วันอาทิตย์ที่ 28 มิถุนายน พ.ศ. 2552

DST 02 -24/6/52

สรุปบทเรียน อะเรย์และเรคคอร์ด
อะเรย์ (Array) เป็นโครงสร้างข้อมูลที่ประกอบด้วยสมาชิกจำนวนคงที่และมีรูปแบบเดียวกัน ใช้เนื้อที่จัดเก็บขนาดเท่ากัน
การกำหนดค่าอะเรย์ต้องกำหนดชื่อพร้อม ซับสคริบ ซึ่งมีได้มากกว่า1จำนวน และใช้บอกมิติของอะเรย์ ประกอบด้วย ค่าสูงสุด
และต่ำสุดของวับสคริบนั้นเรียกว่า ขอบเขตบนและขอบเขตล่างตามลำดับ โดยค่าซับสคริบที่ใช้อ้างถึงสมาชิกจะต้องมากกว่า
เรคคอร์ด หรือ สตรัคเจอร์ (record or Structure) เป็นโครงสร้างข้อมูลที่ประกอบด้วยข้อมูลพื้นฐานต่างประเภทกัน
สตรัคเจอร์ (Structure) คือโครงสร้าที่มีสมาชิกต่างประเภทกัน เช่นจำนวนเต็ม ทศนิยม อักขระ อะเรย์ หรือสตรัคเจอร์ด้วยกันก็ได้


ตัวอย่าง structure ที่ใช้ในการบันทักการซื้อสินค้าในหนึ่งวัน
#include"stdio.h"
main()
{
struct number
{
int i;
int a;
}num;
struct date
{
int day;
int month;
int year;
};struct product
{
float price;
char type[40];
int many;
struct date buy;
float total;
}pn;

{
printf("\t\tbuyer Data\n",num.i+1);
printf("Date of buy : ");
scanf("%d",&pn.buy.day);
printf("month of buy : ");
scanf("%d",&pn.buy.month);
printf("Year of buy : ");
scanf("%d",&pn.buy.year);
printf("Buy date : %d-%d-%d\n",pn.buy.day,pn.buy.month,pn.buy.year);

printf("How many type you will buy : ");
scanf("%d",&num.a);

for(num.i=0;num.i{
printf("Enter type name : ");
scanf("%s",&pn.type);
printf("price = ");
scanf("%f",&pn.price);
printf("How many you buy : ");
scanf("%d",&pn.many);
printf(" \n");

pn.total = pn.price*pn.many;

printf("\t\t Data buyer \n");
printf("Buy date : %d-%d-%d\n",pn.buy.day,pn.buy.month,pn.buy.year);
printf("Name : %s\n",pn.type);
printf("price : %.0f\n",pn.price);
printf("Pieces : %d\n",pn.many);
printf("total : %.2f\n\n",pn.total);
}
}
}

DTS 01-17/6/52

แนะนำเนื้อหารายวิชาและทบทวนการใช้โปรแกรมภาษาซี

วันเสาร์ที่ 27 มิถุนายน พ.ศ. 2552

ประวัติส่วนตัว


ชื่อ :: นายกตัญญู ศิวะยิ่งสุวรรณ ชื่อเล่น เก่ง
MR.Katanyu Sivayingsuwan
หัสนักศึกษา :: 50152792076
ปัจจุบันศึกษาอยู่ที่ :: มหาวิทยาลัยราชฎัชสวนดุสิต หลักสูตร การบริหารธุรกิจ (คอมพิวเตอร์ธุรกิจ) คณะวิทยาการจัดการ
Tel. :: 080-2567-671