วันพฤหัสบดีที่ 15 ตุลาคม พ.ศ. 2552
ลูกแรดเตรียมพร้อมล่าเหยื่อ
ประโยชน์ที่ได้จากเรื่องนี้คือ ประวัติความเป็นมาต่างๆของมหาวิทยาลัยราชภัฎสวนดุสิต
ครั้งที่ 2 การประกันคุณภาพ
ในเรื่องของการประกันุคุณภาพได้ทราบความหมายของการประกันคุณภาพ สาระสำคัญต่างๆ ในการประกันคุณภาพ
ครั้งที่ 3 คุณธรรมจริยะธรรมและธนาคารความดี
ประโยชน์ที่ได้รับจากการเรียนการสอน คือ ความหมายของคุณธรรมในยุคต่างๆ เช่น โสเคติสได้กล่าวไว้ว่า คุณธรรมที่แท้จริงมีค่าอยู่ในตัวมันเอง คือ ทำให้ผู้ครอบครองความดีเป็นมนุษย์ที่สมบรูณ์ หรือ ยุคของ เพลโต คุณธรรมต้องตั้งอยู่บนความรู สิ่งที่ยึดถือว่าเป็นคุณธรรม เช่น ความกล้าหาญ ความดี ความยุติธรรม
ครั้งที่ 4 การเงินส่วนบุคคล
ได้ทราบถึงขั้นตอนและแบบแผนการบริหารการเงินและ แบบแผนในการดำเนินชีวิตในแง่มมุมต่างๆ เช่น เมื่ออายุ 0-25 ปี คนเราจะมีช่วงชีวิตที่ถูกรองรับด้วย บิดา มารดา 25-60 ปี จะอยู่ด้วยรายได้ของตนเอง 60 ขึ้นไปจะได้รับการเลี้ยงดูจากลูกหลาน และคำกล่าวที่ทำให้ผมสะเทือนใจ “พ่อ แม่ หนึ่งคนเลี้ยงลูกหลายคนได้ แต่ ลูกหลายคนเลี้ยงพ่อแม่คนเดียวไม่ได้”
ครั้งที่ 5 การพัฒนาบุคคลิกภาพ
ทราบถึงคุณลักษณะของนักศึกษาว่าประกอบไปด้วย บุคคลิกดี มีน้ำใจ ใฝ่หาความรู้ เชิดชูองค์กร สมานสามัคคี และคุณลักษณะของนักศึกษา / บัณฑิต ที่พึงประสงค์
ครั้งที่ 6 ธุรกิจอัจฉริยะ Business Intelligence
สอนให้เรารู้การเคลื่อนและการเปลี่ยนแปลงของการเทคโนโลยีต่างๆ การประยุก์เทคโนโลยีให้ชีวิประจำวันและองค์ประกอบของ Business Intelligence คือ ขั้นตอนที่ 1 ดาต้า เฮาล์ ขั้นตอนที่ 2 ดาต้ามาร์ท ขั้นตอนที่ 3 การทำ
ครั้งที่ 7 วัฒนธรรมข้ามชาติ
วัฒนธรรมข้ามชาติคือ การแพร่วัฒนธรรมต่างๆไปสู่ชาติอื่นๆ ศาสนาอื่นๆ จึงทำให้เกิดการแลกเปลี่ยนวัฒนธรรมข้ามชาติเกิดขึ้น ระดับของวัฒนธรรม เริ่มจากวัฒนธรรมระดับชาติ >>>> วัฒนธรรมทางธุรกิจ >>>> วัฒนธรรมการค้าและวิชาชีพเป็นต้น
ครั้งที่ 8 กิจกรรมแขนงธุรกิจระหว่างประเทศ
วิทยากรได้นำประสบการต่างๆมาบอกเล่าเป็นแนวทางในการดำเนินชีวิต ไม่ว่าจะเป็นโอกาสที่ได้รับข้าราชการทหาร หรือ การได้ก้าวเข้ามาสู่ธุรกิจขายตรงของ บริษัทแอมเวย์ ซึ่งเรื่องราวต่างๆที่ได้รับมานี้เป็นประโยชน์อย่างยิ่งต่อการการดำเนินชีวิตในยุคปัจจุบันที่ต้อง ไขว่คว้าโอกาส อย่ารอให้โอกาส มาหาเรา
ครั้งที่ 9 ภาษาไทย
ภาษา คือ เสียงหรือ กิริยาท่าทางที่ทำความเข้าใจกันได้ หรือ คำพูดท่ใช้พูดจากัน
ประเภทของภาษา วัจนภาษา คือ ภาษาพูดหรือ ภาษาเขียน
อวัจนภาษา คือ ภาษากาย สัญลักษณ์ การแสดงออกทางสีหน้า
ระดับภาษา ระดับพิธีการ ระดับราชการ ระดับกึ่งราชการ ระดับสนทนา ระดับกันเอง
ทั้งหมดนี้คือความรู้ที่ผมได้รับในการเรียนคร้งที่ 9
ครั้งที่ 10 ปัจฉิมนิเทศ
พระอาจารย์ให้การเทศนา ในเรื่องการดำเนินชีวิตที่ดีมีสุข สอดแทรกคติธรรมต่างๆ และบทกลอนสุดประทับใจ
อย่า >> ทำเมื่อพลาดพลั้ง
ทำ >> ความหวังใหม่
นม >> นานซักเพียงใด
หก >> ล้มเพียงชั่วคราว
วันศุกร์ที่ 9 ตุลาคม พ.ศ. 2552
DTS 8-19/8/52
ทรี หรือโครงสร้างข้อมูลแบบต้นไม้ ประกอบด้วยโหนด (node) ซึ่งเป็นส่วนที่เก็บข้อมูล ในทรีหนึ่งทรีจะประกอบไปด้วยรูทโหนด (root node) เพียงหนึ่งโหนด แล้วรูทโหนดสามารถแตกโหนดออกเป็นโหนดย่อยๆ ได้อีกหลายโหนดเรียกว่าโหนดลูก (Child node) เมื่อมีโหนดลูกแล้ว โหนดลูกก็ยังสามารถแสดงเป็นโหนดพ่อแม่ (Parent Node) โดยการแตกโหนดออกเป็นโหนดย่อยๆได้อีก
Root Node จากรูป คือ โหนด A
Child Node หรือ โหนดลูก จากรูป B , C , D และ E เป็น โหนดลูกของ A
Parent Node หรือโหนดพ่อแม่ โหนด B ที่เป็นโหนดลูกของโหนด A ก็สามารถแตกออกเป็นโหนดย่อยๆ ได้แก่ F และ G ดังนั้น B จึงเป็นโหนดพ่อแม่ของ F และ G ในทำนองเดียวกัน A ก็เป็นโหนด พ่อแม่ของ B , C , D และ E
กิ่ง (Branch or Edge) เป็นเส้นที่เชื่อมต่อระหว่างโหนดพ่อแม่กับโหนดลูก
Brother Node หรือโหนดพี่น้อง คือ โหนดที่มีพ่อแม่เดียวกัน เช่น B , C , D , E เป็นโหนดพี่น้องกันเพราะมีโหนดพ่อแม่เดียวกัน คือ โหนด A และ F และ G เป็นโหนดพี่น้องกันโดยมี B เป็นโหนดพ่อแม่
Leaf Node คือ โหนดที่ไม่มีโหนดลูก จากรูปโหนดที่ไม่มีโหนดลูก ได้แก่ F G H I J K L M
Branch Node คือ โหนดที่ไม่ใช่ Leaf Node เช่น โหนด B C D E เรียกว่า Branch Node
Degree คือ จำนวนลูกของโหนด x เช่น degree ของ โหนด A = 4 ได้แก่ B C D E จำนวน degree ของโหนด B = 2 จำนวนdegree ของโหนด F = 0 เนื่องจากโหนด F ไม่มีโหนดลูก
Direct Descendant Node คือโหนดที่มาทีหลังทันที จากรูป B C D E เป็น direct descendant node ของโหนด A เพราะเป็นโหนดที่มาทีหลังทันที
Descendant Node คือ โหนดลูกของโหนด x และโหนดที่ทุกโหนดที่แตกจากโหนดลูกของโหนด x ตัวอย่าง descendant ของโหนด A คือ ทุกโหนดที่เหลือในทรี
Direct Ancestor Node หรือโหนดที่มาก่อนทันที ตัวอย่าง Direct Ancestor ของโหนด H คือ โหนด C , Direct Ancestor ของโหนด C คือ โหนด A
Level หรือระดับ คือ หมายเลขแสดงระดับของโหนดในทรี ซึ่งรูทโหนดจะมีค่า Level = 0 ส่วนโหนดลูกของรูทโหนดก็จะมีค่า = 1 หากค่าโหนด x อยู่ในระดับ L โหนดลูกของ x ก็จะอยู่ในระดับ L+1
Binary Tree มีลักษณะเหมือนกับ Tree ปกติแต่มีคุณสมบัติพิเศษ คือ “แต่ละโหนดจะมีโหนดลูกได้ไม่เกิน 2 โหนด” หรือพูดอีกนัยหนึ่งก็คือ แต่ละโหนดใน binary tree จะมีดีกรีได้ไม่เกิน 2
Complete Binary Tree หรือต้นไม้ไบนารีแบบสมบูรณ์ มีลักษณะคล้ายกับ Binary Tree แต่มีข้อพิเศษ คือ
1. ทุกโหนดที่ไม่ใช่ Leaf Node จะต้องมีโหนดลูก 2 โหนด
2. Leaf Node จะต้องอยู่ในระดับเดียวกัน
Binary Search Tree มีลักษณะคล้ายกับ Binary Tree แต่มีลักษณะพิเศษเพิ่มเติม คือ
1. ค่าของรูทโหนดมีค่ามากกว่าค่าในต้นไม้ย่อยซ้าย ( TL <>
2. ค่าของรูทโหนดมีค่าน้อยกว่าหรือเท่ากับค่าในต้นไม้ย่อยขวา ( R <= TR ) ตัวอย่าง Binary Search Tree การสร้างและเพิ่มข้อมูลใน Binary Search Tree วิธีการสร้างและเพิ่มข้อมูลเริ่มจาก
1. ถ้า Binary Search Tree ยังไม่มีข้อมูล ให้โหนดที่เข้ามาใหม่เป็นรูทโหนดของ Binary Search Tree
2. ถ้า Binary Search Tree มีข้อมูลอยู่ ให้เพิ่มโหนดที่เข้ามาดังนี้
2.1 ถ้าค่าของโหนดใหม่ที่เข้ามา มากกว่า ค่าของรูทโหนด ให้เพิ่มโหนดใหม่ลงในต้นไม้ย่อยด้านขวา
2.2 ถ้าค่าของโหนดใหม่ที่เข้ามา น้อยกว่า ค่าของรูทโหนด ให้เพิ่มโหนดใหม่ลงในต้นไม้ย่อยด้านซ้าย ตัวอย่างการสร้างและเพิ่มข้อมูล Binary Search Tree มีค่าข้อมูลดังนี้ 12 , 9 , 2 , 18 , 23, 11 , 14 การลบข้อมูลใน Binary Search Tree กรณีที่ 1 หากโหนดที่ต้องการลบเป็น Leaf Node สามารถลบได้ทันที กรณีที่2 ถ้าโหนดที่ต้องการลบมีต้นไม้ย่อยเพียงด้านเดียว เมื่อลบโหนดที่ไม่ต้องการทิ้งแล้ว ให้นำค่ารูทโหนดของต้นไม้ย่อยไปแทนที่โหนดที่ลบทิ้งไป กรณีที่3 ถ้าโหนดที่ต้องการลบมีต้นไม้ย่อยทั้งสองด้าน เมื่อลบโหนดที่ไม่ต้องการแล้ว มีวิธีให้เลือกทำอยู่ 3 วิธี คือ
1. นำค่าที่น้อยที่สุดของต้นไม้ย่อยขวาไปแทนที่โหนดที่ลบทิ้งไป
2. นำค่าที่มากที่สุดของต้นไม้ย่อยซ้ายไปแทนที่โหนดที่ลบทิ้งไป
3. นำค่ารูทโหนดของต้นไม้ย่อยขวาไปแทนที่โหนดที่ลบทิ้งไป แล้วนำค่ารูทโหนดของต้นไม้ย่อยซ้ายไปเป็นโหนดลูกทางซ้ายของโหนดที่มีค่าน้อยที่สุดของต้นไม้ย่อยขวา ตัวอย่างการลบโหนดใน Binary Search Tree
กรณีที่ 1 ต้องการลบโหนด 8
กรณีที่ 2 ต้องการลบโหนด 3
กรณีที่3 ต้องการลบโหนด 2 การท่องไปในทรี (Tree Traversal) สามารถท่องเข้าไปในทรีเพื่อดูข้อมูล ได้ 3 วิธีด้วยกันคือ
1. Preorder
2. Inorder
3. Postorder ในการท่องเข้าไปในทรีแต่ละแบบจะใช้สัญลักษณ์ดังนี้ Root = root node Left = ต้นไม้ย่อยซ้ายของ Root Right = ต้นไม้ย่อยขวาของ Root วิธีในการท่องเข้าไปในทรีแต่ละแบบจะมีลักษณะดังนี้
1. Preorder = Root Left Right
2. Inorder = Left Root Right
3. Postorder = Left Right Root
DTS-07 05/08/52
โครงสร้างข้อมูลแบบคิว (Queue)
โครงสร้างข้อมูลแบบนี้เป็นโครงสร้างที่ปรากฏอยู่โดยทั่วๆ ไป โดยเฉพาะอย่างยิ่งในระบบปฏิบัติการคอมพิวเตอร์ ในระบบคมนาคม รวมทั้งในระบบการทดลองดาวเทียมด้วย ลักษณะของโครงสร้างแบบคิวจะเหมือนกับการเข้าแถวรอคอย ไม่ว่าจะเป็นการรอคอยอะไรก็ตาม หรือจะเรียกสั้นๆ ว่า เข้าคิวก็ได้ ด้วยคุณสมบัติที่เด่นชัดของการทำงานของโครงสร้างข้อมูลแบบคิวนี้ ว่าสิ่งใดที่เข้าก่อนย่อมต้องได้รับการทำงานก่อน เช่น การสั่งพิมพ์งานพร้อมกันหลายๆ คน โดยใช้เครื่องพิมพ์เครื่องเดียวกัน ทำให้ระบบจะต้องมีการจัดระบบให้มีการเข้าคิวรอคอยการทำงาน ถ้าใครสั่งพิมพ์ก่อนก็จะเข้าคิวไปรอการพิมพ์ในลำดับแรก ใครสั่งเป็นคนต่อไปก็จะต้องเข้าคิวรอจนกว่างานแรกจะทำการพิมพ์เสร็จ จึงจะมาทำงานกับคิวที่รออยู่ต่อไป
กระบวนการทำงานของ queue จะแบ่งเป็น 9 ขั้นตอนได้แก่
1. Create
2. Enqueue
3. Dequeue
4. Queue front
5. Queue rear
6. Empty queue
7. Full queue
8. Queue count
9. Destroy queue
ต่อไปเราจะมาดูว่ากระบวนการแต่ละขั้นตอนมีการทำงานอย่างไร
Create queue: สร้าง queue คือจัดสรรหน่วยความจำเพื่อทำการสร้าง Queue ขึ้นมา
สำหรับการใส่ข้อมูลลงไป
Enqueue: คือการเพิ่มข้อมูลลงไปใน Queue แต่ข้อควรระวังในการ เพิ่มข้อมูลลงไปใน Queue
เราควรเช็ค ใน Queue ว่าข้อมูลนั้นเต็มหรือไม่ ถ้า ไม่เราก็สามารถ Enqueue ได้ แต่
ถ้าข้อมูลเต็มแล้วเรายังใส่ข้อมูลลงไปจะทำให้เกิด การ ล้นของข้อมูลเกิดขึ้นหรือเรียก
กันว่าการ Overflow
Dequeue: คือการลบรายการออกจาก Queue แต่ข้อควรระวังในการ ลบขอมูลออกจาก Queue
เราควรเช็ค ใน Queue ว่ามีข้อมูลอยู่หรือไม่ ถ้า มีเราก็สามารถ Dequeue ได้ แต่
ถ้าไม่มีข้อมูลอยู่ใน Queue จะทำให้เกิด การ Under Flow เกิดขึ้น
Queue front: เป็นการเรียกข้อมูลตัวหน้าหรือ front มาออกมา Show
Queue rear: เป็นการเรียกข้อมูลตัวหลังหรือ rear มาออกมา Show
Empty queue: ตรวจสอบว่าข้อมูล queue ว่างหรือไม่
Full queue: ตรวจสอบว่าข้อมูลใน queue เต็มหรือไม่
Queue count: จะทำการนับข้อมูล และบอกจำนวนรายการใน queue
Destroy queue: เป็นการลบข้อมูลทั้งหมดใน queue
วันอังคารที่ 4 สิงหาคม พ.ศ. 2552
DST 06-29/07/09
ผู้เขียนโปรแกรมสั่งให้เครื่องคำนวณต้องเขียนนิพจน์ที่ต้องการไปในตัวโปรแกรม ซึ่งนิพจน์เหล่านี้เรียกว่า นิพจน์ 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.1 ถ้าสแตกยังว่างอยู่ในpush โอเปอร์เรเตอร์ลงสแตก
1.2 ถ้าสแตกไม่ว่างให้เปรียบเทียบ โอเปอร์เรเตอร์ที่เข้ามากับโอเปอร์เรเตอร์ที่ท๊อปของสแตก
2.2.1ถ้าโอเปอร์เรเตอร์ที่เข้ามามี precedence น้อยกว่าหรือเท่ากับโอเปอร์เรเตอร์ที่ท๊อปของสแตก ให้ pop สแตกไปเป็นผลลัพธ์และเปรียบเทียบกับโอเปอร์เรเตอร์ที่ท๊อปของสแตกต่อไป หยุดเมื่อโอเปอร์เรเตอร์ทีเป็นข้อมูลเข้ามี precedence มากกว่าโอเปอร์เรเตอร์ ที่ท๊อปของสแตก หลังจากนั้นให้ push ข้อมูลลงสแตก
2.2.2 ถ้าโอเปอร์เรเตอร์เข้ามีค่ามากกว่า โอเปอร์เรเตอร์ที่ท๊อปของสแตก ให้ push ลงสแตก
3. ถ้าข้อมูลเข้าเป็นวงเล็บเปิด ให้ push ลงสแตก
4.ถ้าข้อมูลเข้าเป็นวงเล็บปิดให้ pop สแตกจนกว่าจะถึงวงเล็บเปิดและนำผลที่ pop ออกไปเป็นผลลัพธ์ โดยทิ้งวงเล็บปิดและเปิดไป
5. ถ้าข้อมูล หมด ให้ pop สแตกไปไว้เป็นผลลัพธ์จนสแตกว่าง
ที่ได้จาก อ.ปรมัตถ์ปัญปรัชญ์
วันอังคารที่ 28 กรกฎาคม พ.ศ. 2552
Stack ที่เราเจอในชีวติประจำวัน
เพราะ การฉีกตั๋วรถเมล์นั้นจะ ฉีกจากด้านนอกเข้าสู่ศูนย์กลางซึ่งเป็นคุณสมบัติของ Stack นั้นเอง
DST 05-22/07/09
การนำสแตกไปใช้งานนั้นไม่ว่าจะเป็นโครงสร้างสแตกแบบแถวลำดับ(array)หรือ แบบลิงค์ลิสต์ (link list) เราจะมีตัวแปรตัวหนึ่งที่ใช้เป็นตัวชี้สแตก(stack pointer ) เพื่อเป็นตัวชี้ข้อมูลที่อยู่บนสุดของสแตก ซึ่งจะทำให้สามารถจัดการข้อมูล ที่จะเก็บในสแตกได้ง่าย ดังนั้นโครงสร้างข้อมูลแบบสแตกจะแบ่งออกเป็น 2 ส่วนที่สำคัญ คือ
1. ตัวชี้สแตก ( Stack Pointer ) ซึ่งมีหน้าที่ชี้ไปยังข้อมูลที่อยู่บนสุดของ สแตก ( Top stack )
2. สมาชิกของสแตก ( Stack Element ) เป็นข้อมูลที่จะเก็บลงไปในสแตก ซึ่งจะต้องเป็นข้อมูลชนิดเดียวกัน เช่น ข้อมูลชนิดจำนวนเต็ม เป็นต้น
วันอังคารที่ 21 กรกฎาคม พ.ศ. 2552
การเขียนโปรแกรมแบบ iostream.h กับ stdio.h
1."stdio.h"
2."iostream.h"
"stdio.h"
#include"stdio.h"
void main()
{
int hight;
int width;
int sum;
printf(",.:'*':. :Parallelogram area calculating progaram: .:'*':. \n\n");
printf("Hight is : ");
scanf ("%d",&hight);
printf("\nWidth is : ");
scanf ("%d",&width);
sum = hight*width;
printf("\nThe Circle Area :%d",sum);
}
"iostream.h"
#include "iostream.h"
void main()
{
float hight;
float width;
float all;
cout << ",.:'*':. :Parallelogram area calculating progaram: .:'*':. \n \n";
cout << "Hight is : ";
cin >> hight;
cout << "\nWidth is : ";
cin >> width;
all = hight*width;
cout <<"\nThe Circle Area :";
cout << all;
}
Dts 4-15/07/2552
โครงสร้างข้อมูล Linked List เป็นวิธีแก้ปัญหา ข้อมูลที่พบในการจัดเก็บที่มีรูปแบบ เรียงตามลำดับ (Sequential) เปลี่ยนมาใชรูปแบบใหม่แบบไม่เรียงลำดับ (Non-Sequential) ซึ่งรูปแบบในการเก็บข้อมูลนั้นสมาชิกจะต้องเรียงต่อเนื่องกันติดๆกันในทางตรรกะ (Logical) และทางกายภาพ (Physical)เป็นแบบเดียวกันแต่ รูปแบบไม่เรียงตามลำดับ สมาชิกจะเรียงต่อเนื่องกันในส่วนของ ตรรกะ ส่วนทางกายภาพไม่จำเป็นต้องเหมือนกัน
วันอังคารที่ 14 กรกฎาคม พ.ศ. 2552
DTS 3-1/07/2552
รูปแบบของ Pointer type *variable-name
type หมายถึง ชนิดตัวแปร
* หมายถึง เป็นเครื่องที่แสดงว่า ตัวแปรที่ตามหลังเครื่องหมายนี้เป็นตัว Pointer
Variable-name หมายถึง ชื่อของตัวแปรที่ถูกประกาศให้เป็น Pointer
การประกาศตัวแปร Pointer
ต้องมีระบุตัวดำเนินการ (Operator) เพื่อบอกว่าตัวแปรดังกล่าวเป็นตัวแปรแบบตัวชี้ โดยตัวดำเนินการที่ใช้คือ * และ & เช่น จะประกาศตัวแปรชนิดPointer คือ int *countPtr; ในที่นี้หมายถึง ตัวแปร countPtr ถูกประกาศให้เป็นตัวแปรชนิด Pointer และทำหน้าที่ชี้ (เก็บ Address) ไปยังตำแหน่งที่เก็บค่าจำนวนเต็ม (เป็นชนิดเดียวกับที่เราประกาศไว้ ในที่นี้คือ Integer)
ตัวอย่าง
Char *prt;
หมายความว่าประกาศตัวแปร prt เป็นตัวแปร Pointer ที่ใช้เก็บตำแหน่งเริ่มต้นที่จะเก็บ Character
Int *a;
หมายความว่า ประกาศว่าตัวแปร a เป็นตัวแปร Pointer ที่ใช้เก็บตำแหน่งเริ่มต้นที่จะใช้เก็บ integer
เครื่องหมายที่ใช้ใน Pointer
1. เครื่องหมาย & เป็นเครื่องหมายที่ใช้เมื่อต้องการให้เอาค่าตำแหน่งที่อยู่ของตัวแปรที่เก็บไว้ในหน่วยความจำออกมาใช้
2. เครื่องหมาย * มีการใช้งานเป็น 2 ลักษณะ คือ ประการแรก ใช้ประกาศตัวแปร Parameter ว่าเป็นตัวแปร Pointer ประการที่สอง ใช้เป็น dereferencing operator จะใช้งานเมื่อต้องการนำค่าที่อยู่ในต่ำแหน่งที่ตัวแปร Pointer นั้นชี้อยู่ออกมาแสดง
แบบฝึกหัดท้ายบท บทที่ 2
ตอบ Array คือกลุ่มของข้อมูล ที่มีชนิดของข้อมูลเป็นชนิดเดียวกัน การอ้างถึงกลุ่มของชุดข้อมูลนี้จะอ้างด้วยชื่อของตัวแปรเดียวกัน ในการกำหนดค่าของ Array จะต้องกำหนอชื่อ Array พร้อม Subscript ซึ่งเป็นตัวกำหนดขอบเขตของ Array มีได้มากกว่า 1 จำนวน Subscript จะเป็นตัวบอกมิติของ Array นั้นๆว่ามีกี่ มิติ
ตัวอย่างการเขียนโปรแกรม Array 1 มิติ
เป็นการเขียนโปรแกรมรับตัว เลขที่เป็นจำนวนเต็ม 5 จำนวนจากผู้ใช้ และแสดงผล
#include
#include
void main()
{int i, j, array1Record[5];
clrscr();
for (i=0; i<5;> ",i);
scanf("%d",&array1Record[i]);
}
printf("\n");
for (j=0; j<5;> %d ", j, array1Record[j]);
}
getch();
}
ตัวอย่างการเขียนโปรแกรม Array 2 มิติ
เป็นการเขียนโปรแกรมรับตัวรับค่าอักขระ แล้วนำไปเก็บในตัวแปรชุดแบบ 2 มิติ มีขนาด 3 แถว 2 คอลัมน์ และแสดงผล
#include
#include
void main()
{ int i, j, k, l;
char array2Record[3][2];
clrscr();
for (i=0; i<3; j="0;"> ", i, j);
flushall();
scanf("%c",&array2Record[i][j]);
}
}
printf("\n");
for (k=0; k<4; l="0;">%c ", k, l, array_2dim[k][l]);
}
}
getch();
}
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 Record
ตอบ เป็นโครงสร้างของร้านขายกางเกง ยีนต์ ยี้ห้อ Nudie ที่ต้องกรอกรายละเอียดสินค้าและรหัสบัตรเครดิต ชื่อ นามสกุล เบอร์โทรศัพท์มือถือ E-mail เพื่อใช้ยืนยันตัวตนในการซื้อสินค้า
#include"stdio.h"
struct data
{
int day;
int month;
int year;
};
struct nudie
{
int id;
int nudie2;
char name[40];
char last[40];
char nudie[100];
char tel[12];
char mail[100];
char nudie1[100];
struct data shop;
}nu;
void input_data()
{
printf("Wellcome to Nudie Jeans Co Shop\n\n");
printf(".:'*':. Product in Shop .:'*':.\n\n");
printf("1. Tight Long John Price 5800 ß\n");
printf("2. Thin Finn Price 5400 ß\n");
printf("3. Slim Jim Price 5800 ß\n");
printf("4. Grim Tim Price 6000 ß\n");
printf("5. Super Slim Kim Price 5000 ß\n");
printf("\nProduct is your select:");
scanf("%s",&nu.nudie1);
printf("Price of jeans:");
scanf("%d",&nu.nudie2);
printf("\n----Data customer----\n");
printf("\nID Credit card :");
scanf("%d",&nu.id);
printf("name of customer:");
scanf("%s",&nu.name);
printf("lastname of customer:");
scanf("%s",&nu.last);
printf("Number cell phone of customer:");
scanf("%s",&nu.tel);
printf("E-Mail of customer:");
scanf("%s",&nu.mail);
printf("\ndate:");
scanf("%d-%d-%d",&nu.shop.day,&nu.shop.month,&nu.shop.year);
}
void show_data()
{
printf("\n+++Data customer+++\n");
printf("\nDisplay Date : %d-%d-%d\n",nu.shop.day,nu.shop.month,nu.shop.year);
printf("ID of credit card :%d\n",nu.id);
printf("Name and Lastname of Member:%s %s\n",nu.name,nu.last);
printf("cell phone Number of Customer :%s\n",nu.tel);
printf("E-mail of Customer :%s\n",nu.mail);
printf("Jeans is your coice :%s %d ß\n",nu.nudie1,nu.nudie2);
}
main()
{
input_data();
show_data();
return 0;
}
5. ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวแปรชนิด Array กับตัวแปร Pointer ในสภาพของการกำที่อยู่ของข้อมูล
ตอบ ตัวแปร Pointer คือตัวแปรที่เก็บตำแหน่งของหน่วยความจำซึ่งตำแหน่งของหน่วยความจำนี้จะเป็นที่อยู่ของสิ่งอื่น ๆ ในหน่วยความจำ
Array คือกลุ่มของข้อมูล ที่มีชนิดของข้อมูลเป็นชนิดเดียวกัน การอ้างถึงกลุ่มของชุดข้อมูลนี้จะอ้างด้วยชื่อของตัวแปรเดียวกัน
ความแตกต่างระหว่างตัวแปร Array และ Pointer คือตัวแปรตารางอาเรย์จะเก็บเฉพาะค่าต่างๆ ที่เป็นชนิดกันเดียวกับตัวแปรอาเรย์แต่ ตัวแปรพอยเตอร์จะเก็บเฉพาะค่าตำแหน่ง Address ตัวแปรเท่านั้น
วันจันทร์ที่ 29 มิถุนายน พ.ศ. 2552
การบ้าน Structure
นี่เป็นตัวอย่างการเขียน Structure ของร้านให้เช่า DVD แห่งหนึ่ง
ซึ้งก่อนเช่านั้นก็จำเป็นต้อง ระบุ วัน เดือน ปี ปัจจุบัน รหัส สมาชิก
ชื่อ นามสกุล สมาชิก ชื่อหนัง วันที่ยืม และ วันที่คืน หนัง
#include"stdio.h"
struct data
{
int day;
int month;
int year;
};
struct member
{
int id;
char name[40];
char last[40];
char movie[100];
char tel[12];
char mail[100];
int rent;
int returnError;
struct data dvd;
}sm;
void input_data()
{
printf(".:'*':. Wellcome to NooM DVD SHOP.:'*':. \n:");
printf("date data:");
scanf("%d-%d-%d",&sm.dvd.day,&sm.dvd.month,&sm.dvd.year);
printf("\n.:'*':. Data member.:'*':. \n");
printf("\nID member : ");
scanf("%d",&sm.id);
printf("name of customer:");
scanf("%s",&sm.name);
printf("lastname of customer:");
scanf("%s",&sm.last);
printf("Telephone Number of customer:");
scanf("%s",&sm.tel);
printf("E-Mail of customer:");
scanf("%s",&sm.mail);
printf("\nname movie:");
scanf("%s",&sm.movie);
printf("day of rent:");
scanf("%d",&sm.rent);
}
void show_data()
{
printf("\n.:'*':. Data of member.:'*':. \n");
printf("\nDisplay Date : %d-%d-%d\n",sm.dvd.day,sm.dvd.month,sm.dvd.year);
printf("ID of Member :%d\n",sm.id);
printf("Name and Lastname of Member:%s %s\n",sm.name,sm.last);
printf("Telephone Number of Customer :%s\n",sm.tel);
printf("E-mail of Customer :%s\n",sm.mail);
printf("\nRent Data\n");
printf("\nName movie :%s\n",sm.movie);
printf("Day of rent :%d-%d-%d\n",sm.rent,sm.dvd.month,sm.dvd.year);
printf("Day of return %d-%d-%d\n",sm.rent+3,sm.dvd.month,sm.dvd.year);
}
main()
{
input_data();
show_data();
return 0;
}
DTS 02- 24/06/2009
DTS 01- 10/06/2009
การสอนได้ว่าการแนะนำเนื้อหารายวิชา และ ทบทวน ในเรื่องของภาษา C
วันอาทิตย์ที่ 28 มิถุนายน พ.ศ. 2552
ประวัติ
ชื่อ :: นาย ทศพล
นามสกุล :: ทองย้อย
ชื่อเล่น :: หนุ่ม
Name :: MR. Tossapon
Lastname :: Thongyoy
รหัสนักศึกษา :: 50152792074
ปัจจุบันศึกษาอยู่ที่ :: มหาวิทยาลัยราชภัฏสวนดุสิต หลักสูตร การบริหารธุรกิจ
คณะ วิทยาการจัดการ สาขา คอมพิวเตอร์ธุรกิจ
E-mail :: u50152792074@gmail.com , G-ztring@hotmail.com
Telephone :: 083-541-5238