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

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

สิ่งที่ได้เรียนรู้ จากการเรียนวิชา ประสบการวิชาชีพบริหารธุรกิจ


ได้ทราบถึงระบบสารสนเทศที่ปัจจุบัน มีการเปลื่ยนแปลงของอปุกรณ์ การเชื่อมต่อทั่วโลก และการเชื่อม ต่อ ด้วย SDU

องค์ประกอบ BI (busineess inlellgene)


การเงินการธนาคาร ได้ทราบว่ามีวัตถุประสงค์การบริหารเงิน ว่าอย่างไร

อาชีพ 4ประเภท

1. E = Employee ลูกจ้าง พนักงาน
2. B = Business owner เจ้าของระบบ
3. S = Self employ อาชีพอิสระ หม ทนาย
4. L = Lnoestor ผู้ลงทุน

ทราบถึง อัตตราภาษี ประเภทค่าลดหย่อน

และได้มีการปฏิบัติ ในการบริหารเงิน 1 เดือน

จัดทำเป็นรายรับ-รายจ่าย

การเรียนรู้ถึงวัฒนธรรมต่างชาติ ที่มีรูปแบบที่แตกต่างกับ ชาติ ไทย

การจัดการบุคลิกภาพ ให้เป็นในลักษณะ บัณฑิตที่พึงประสงค์

กริยาท่าทาง การแต่งกายให้เหมาะสมกับสถานที่ น้ำเสียงและการพูด

มารยาททางกาย การเข้าสมาคม และการปรับปรุงบุคลิกภายใน

ได้รุ้จักความเป็นมา ของ มหาลัยราชภัฤสวนดุสิต และ ตราสัญลักาณ์ที่ได้

รับพระราชทาน

มีการศึกษา ที่ใช้เวป์ในการเรียนรู้สาระต่างๆ และประสบการณ์จากบุคคลภายนอกที่

นำมาเป็นตัวอย่างในการทำงานภายภาคหน้าได้

DTS10-15-09-52

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

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

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

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

การค้นหาข้อมูลแบบ Searching วิธีการค้นหามี 2 วิธีคือ

1.การค้นหาแบบเรียงลำดับ Sequential Searchหากข้อมูลที่ต้องการค้นหาไม่ได้ถูกเรียงลำดับมาก่อน เทคนิคที่ใช้การค้นหาข้อมูลจะมีไม่มากนักซึ่งหนึ่งในวิธีนั้นก็คือการค้นหาแบบเรียงลำดับ ซึ่งเป็นการค้นหาแบบลิเนียร์ โดยการเปรียบเทียบข้อมูลทีละตัวจนกว่าจะเจอข้อมูลที่ต้องการ ทำให้ Big-O ของวิธีการนี้มีค่าเท่ากับ O( N ) โดยมีวิธีที่ใช้ในการค้นหาแบบเรียงลำดับคือ1.เริ่มต้นกำหนดข้อมูลที่ต้องการจะค้นหา2.ทำการค้นหาข้อมูลที่ต้องการโดยเริ่มตั้งแต่ข้อมูลแรกสุด3.ทำการเปรียบเทียบข้อมูลว่าตรงกับที่ต้องการหรือไม่4.หากข้อมูลไม่ตรงกับที่ต้องการ ให้เลื่อนไปยังตำแหน่งถัดไปเพื่อเปรียบเทียบ จนกว่าจะเจอข้อมูลที่ต้องการ

2.การค้นหาแบบไบนารีเสิร์ช Binary Searchข้อมูลที่เราต้องการค้นหาถูกเรียงลำดับมาก่อนแล้ว เราสามารถใช้เทคนิคการค้นหาที่มีประสิทธิภาพสูงขึ้นมาได้โดยใช้วิธีการค้นหาแบบไบนารีเสิร์ช โดยการเริ่มต้นค้นหาที่ตรงกลางข้อมูล แทนที่จะเป็นต้น หรือท้ายข้อมูลแบบการค้นหาแบบเรียงลำดับ โดยใช้หลักการของไบนารีเสิร์ชทรี เมื่อเทียบกับข้อมูลในตำแหน่งตรงกลางแล้ว หากข้อมูลที่ต้องการค้นหามีค่าน้อยกว่า จะเริ่มทำการค้นหาข้อมูลอีกครั้งในช่วง low ถึง mid-1 หากข้อมูลที่ต้องการค้นหามีค่ามากกว่า จะทำการเริ่มต้นค้นหาข้อมูลอีกครั้งในช่วง mid-1 ถึง high จากนั้นทำการค้นหาแบบเดิมไปจนกว่าจะเจอกับค่าที่ต้องการ

DTS07-11-08-52

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

การทำงานของคิว การใส่สมาชิกใหม่ลงในคิวเรียกว่า Enqueue ซึ่งมีรูปแบบคือenqueue หมายถึง การใส่ข้อมูล newElementลงไปที่ส่วนเรียร์ของคิวการนำสมาชิกออกจากคิว เรียกว่า Dequeue หมายถึง การนำข้อมูลออกจากส่วนหน้าของคิวและให้ ข้อมุลนั้นกับ elementการนำข้อมูลที่อยู่ตอนท้ายของคิวมาแสดงจะเรียกว่า Queue Rear แต่จะไม่ทำการเพิ่มข้อมูลเข้าไปในคิว

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

การดำเนินการเกี่ยวกับคิว ได้แก่1.Create Queue คือ จัดสรรหน่อยความจำให้แก่ Head Node และให้ค่า ponter ทั้ง 2 ตัวมีค่าเป็น nullและจำนวนสมาชิกเป็น 02.Enqueue คือ การเพื่มข้อมูลเข้าไปในคิว3.Dequeue คือ การนำข้อมุลออกจากคิว4.Queue Front คือ เป็นการนำข้อมูลที่อยู่ส่วนต้นของคิวมาแสดง5.Queue Rear คือ เป็นการนำข้อมุลที่อยุ่ส่วนท้ายของคิวมาแสดง6.Empty Queue คือ เป็นการตรวจสอบว่าคิวว่างหรือไม่7.Full Queue คือ เป็นการตรวจสอบว่าคิวเต็มหรือไม่8.Queue Count คือ เป็นการนับจำนวนสมาชิกที่อยู่ในคิว9.Destroy Queue คือ เป็นการลบข้อมุลทั้งหมดที่อยู่ในคิวการนำข้อมูลเข้าสู่คิว จะไม่สามารถนำเข้าในขณะที่คิวเต็ม หรือไม่มีที่ว่าง

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

DTS06-04-08-2552

สแตก (Stack) เป็นโครงสร้างข้อมูลที่ข้อมูลแบบลิเนียร์ลิสต์ ที่มีคุณสมบัติที่ว่า การ
เพิ่มหรือลบข้อมูลในสแตก จะกระทำที่ ปลายข้างเดียวกัน ซึ่งเรียกว่า Top ของสแตก (Top Of Stack) และ ลักษณะที่สำคัญของสแตกคือ ข้อมูลที่ใส่หลังสุดจะถูกนำออกมา จากสแตกเป็นลำดับแรกสุด เรียกคุณสมบัตินี้ว่า LIFO (Last In First Out)



การทำงานของสแตกจะประกอบด้วยกระบวนการ 3
กระบวนการที่สำคัญ คือ

1.Push คือ การนำข้อมูลใส่ลงไปในสแตก
เช่น สแตก s ต้องการใส่ข้อมูล i ในสแตก จะได้
push (s,i) คือ ใส่ข้อมูล i ลงไปที่ทอปของสแตก s
ในการเพิ่มข้อมูลลงในสแตก จะต้องทำการ
ตรวจสอบว่าสแตก เต็มหรือไม่ ถ้าไม่เต็มก็
สามารถเพิ่มข้อมูลลงไปในสแตกได้ แล้วปรับ
ตัวชี้ตำแหน่งให้ไปชี้ที่ตำแหน่งข้อมูลใหม่ ถ้าส
แตกเต็ม (Stack Overflow) ก็จะไม่สามารถ
เพิ่มข้อมูลเข้าไปในสแตกได้อีก


2. Pop คือ การนำข้อมูลออกจากส่วนบนสุดของสแตก
เช่น ต้องการนำข้อมูลออกจากสแตก sไปไว้ที่ตัวแปร i
จะได้ i = pop (s)การนำข้อมูลออกจากสแตก ถ้าสแตกมีสมาชิก
เพียง 1ตัว แล้วนำสมาชิกออกจากสแตก จะเกิดสภาวะสแตกว่าง
(Stack Empty) คือ ไม่มีสมาชิกอยู่ในสแตกเลย
แต่ถ้าไม่มีสมาชิกในสแตก แล้วทำ
การ pop สแตก จะทำให้ เกิดความ
ผิดพลาดที่เรียกว่า Stack Underflow
เพราะฉะนั้นก่อนนำข้อมูลออกจากส
แตกจะต้องตรวจสอบ ก่อนว่าสแตกว่าง
หรือเปล่า จึงจะนำข้อมูลออกจากสแตกได้
และ ปรับตัวชี้ตำแหน่งให้ไปชี้ตำแหน่งของ
ข้อมูลที่ต่อจากข้อมูลที่ถูกนำ ออกไป

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


การดำเนินการเกี่ยวกับสแตก ได้แก่
1. Create Stack 5. Empty Stack
2. Push Stack 6. Full Stack
3. Pop Stack 7. Stack Count
4. Stack Top 8. Destroy Stack


1. Create Stack
จัดสรรหน่วยความจำให้แก่ Head Node
และส่งค่าตำแหน่งที่ชี้ไปยัง Head ของสแตกกลับมา

2. Push Stack
การเพิ่มข้อมูลลงไปในสแตก

3. Pop Stack
การนำข้อมูลบนสุดออกจากสแตก

4. Stack Top
เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก โดยไม่มีการ
ลบข้อมูลออกจากสแตก

5.Empty Stack
เป็นการตรวจสอบการว่างของสแตก เพื่อไม่ให้เกิดความผิดพลาด
ในการนำข้อมูลออกจากสแตกที่เรียกว่า Stack Underflow

6. Full Stack
เป็นการตรวจสอบว่าสแตกเต็มหรือไม่ เพื่อไม่ให้เกิดความ
ผิดพลาดในการนำข้อมูลเข้าสแตกที่เรียกว่า Stack Overflow

7. Stack Count
เป็นการนับจำนวนสมาชิกในสแตก

8. Destroy Stack
เป็นการลบข้อมูลทั้งหมดที่อยู่ในสแตก

การคำนวณนิพจน์ทางคณิตศาสตร์
ในการเขียนนิพจน์ทางคณิตศาสตร์เพื่อการคำนวณ จะต้องคำนึงถึงลำดับความสำคัญของเครื่องหมายสำหรับการคำนวณด้วยโดยทั่วไปนิพจน์ทางคณิตศาสตร์สามารถเขียนได้ 3 รูปแบบ คือ
1. นิพจน์ Infix นิพจน์รูปแบบนี้ operatorจะอยู่ตรงกลางระหว่างตัวถูกดำเนินการ 2 ตัว
2. นิพจน์ Postfix นิพจน์รูปแบบนี้ จะต้องเขียนตัวถูกดำเนินการตัวที่ 1 และ 2 ก่อน แล้วตามด้วย operator
3. นิพจน์ Prefix นิพจน์รูปแบบนี้ จะต้องเขียน operatorก่อนแล้วตามด้วยตัวถูกดำเนินการตัวที่ 1 และ 2


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

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

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

DTS05-28-07-2552

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

1.Head Structrue จะประกอบไปด้วย3ส่วน ได้แก่ จำนวนโหนดในลิสต์(count) พอยเตอร์ที่ชี้ไปยังโหนดที่เข้าถึง(pos) คือ รายการเก็บข้อมูลปัจจุบันที่มีการท่องเข้าไปในลิสต์แทนด้วยpos และพอยเตอร์ที่ชี้ไปยังโหนดข้อมูลแรกของลิสต์(head)
2.Data Node Structure จะประกอบไปด้วยข้อมูล(Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป ประกอบไปด้วย 2 ฟิลด์ ฟิลด์แรกเก็บในส่วนของข็อมูล ฟิลด์ที่ 2 เก็บส่วนของการเชื่อโยง ก็จะใช้พอยเตอร์เป็นตัวเชื่อมไปยังโหนดอื่นๆ

กระบวนงานและฟังชั่นที่ใช้ดำเนินงานพื้นฐาน

1. กระบวนงาน Create Listหน้าที่ สร้างลิสต์ว่างผลลัพธ์ ลิสต์ว่าง

2. กระบวนงาน Insert Note การแทรกโหนดคือการเพิ่มสมาชิกใหม่ลงในรายการ เพิ่มข้อมูลลงไปในลิสต์บริเวณตำแหน่งที่ต้องการกระบวนนำเข้า ลิสต์ ข้อมูล และตำแหน่งผลลัพธ์ ลิสต์ที่มีการเปลี่ยนแปลง

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

4. กระบวนงาน Search Iist ในการ Search ต้องมี Conditionหน้าที่ ค้นหาข้อมูลในลิสต์ที่ต้องการข้อมูลนำเข้าผลลัพธ์ ค่าจริงถ้าพบข้อมูล ค่าเท็จถ้าไม่พบข้อมูล

5. กระบวนงาน Traverseหน้าที่ ท่องไปในลิสต์เพื่อเข้าถึงและประมวลผลข้อมูลนำเข้าลิสต์ผลลัพธ์ ขึ้นกับการประมวลผล เช่น เปลี่ยนแปลงค่าใน node , รวมฟิลด์ในลิสต์,คำนวนค่าเฉลี่ยของฟิลด์ เป็นต้น

6. กระบวนงาน Retrieve Nodeการแสดงขอมูลในโหนดหน้าที่ หาตำแหน่งของข้อมูลจากลิสต์ข้อมูลนำข้าลิสต์ผลลัพธ์ ตำแหน่งข้อมูลที่อยู่ในลิสต์ หากต้องการนำข้อมูลในโหนดขึ้นมาแสดง เพียงทราบถึงตำแหน่งของลิสต์ที่จัดเก็บข้อมูล ก็สามารถนำข้อมูลนั้นๆ มาแสดงได้

7. ฟังก์ชั่น Emptylistหน้าที่ ทดสอบว่าลิสต์ว่างข้อมูลนำเข้าลิสต์ผลลัพธ์ เป็นจริง ถ้าลิสต์ว่าง Count= ถ้าไม่เท่า Count# ตรวจสอบโดยการกำหนดวนลูบค่าหากตรวจสอบว่าไม่มีข้อมูลกำหนดค่าเป็นจริง

8. ฟังก์ชั่น Fulllist การตรวจสอบลิสต์เต็มหน้าที่ ทดสอบว่าลิสต์เต็มหรือไม่ข้อมูลนำเข้าลิสต์ ตรวจสอบว่าลิสต์นั้นเต็มหรือไม่ มีพื้นที่ว่างในหน่วยความจำสำหรับลิสต์หรือไม่ผลลัพธ์ เป็นจริง ถ้าหน่วยความจำเต็ม เป็นเท็จ ถ้าสามารถมีโหนดอื่น

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

10. กระบวนงาน Destroy listการยกเลิกลิสต์ลบแล้วก็ต้องคืนค่าให้หน่วยความจำเพื่อไปใช้งานอื่นต่อไปหน้าที่ ทำลายลิสต์ข้อมูลนำเข้า ลิสต์ผลลัพธ์ ไม่มีลิสต์

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

DTS03-14-07-52

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


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


สตริงกับอะเรย์
สตริง คือ อะเรย์ของอักขระ
เช่น char a[6]
อาจจะเป็นอะเรย์ขนาด 6 ช่องอักขระ หรือ
เป็นสตริงขนาด 5 อักขระก็ได้ โดยจุดสิ้นสุดของ
string จะจบด้วย \0 หรือ null character เช่น
char a[ ]={‘H’, ‘E’, ‘L’, ‘L’, ‘O’, ‘\0’};
char a[ ]=“HELLO”;


ความยาวของสตริง จะถูกกำหนดโดย
ขนาดของสตริง การกำหนดขนาดของสตริงนั้นต้องจองเนื้อที่ในหน่วยความจำให้กับ \0 ด้วย
เช่น
“This is String !”
จะเป็นข้อมูลแบบสตริงยาว 16 อักขระ


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

วันพฤหัสบดีที่ 2 กรกฎาคม พ.ศ. 2552

DTS03-30-06-2552

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



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

ข้อกำหนดของการกำหนดค่าต่ำสุดและ
ค่าสูงสุดของ subscript คือ
1. ค่าต่ำสุดต้องมีค่าน้อยกว่าหรือเท่ากับค่าสูงสุดเสมอ
2. ค่าต่ำสุด เรียกว่า ขอบเขตล่าง (lower bound)
3. ค่าสูงสุด เรียกว่า ขอบเขตบน (upper bound)

ค่า subscript ที่ใช้อ้างอิงถึงสมาชิก จะต้องมี
ค่ามากกว่า หรือเท่ากับขอบเขตล่าง และน้อยกว่า
หรือเท่ากับขอบเขตบน
lower bound ≤ subscript ≤ upper bound
ขนาดของ index แต่ละตัว ของ Array หา
ได้จาก
ขนาดของ subscript = upper bound – lower bound + 1

จำนวนสมาชิกหรือขนาดของอะเรย์ n มิติ หาได้จาก
ขนาดของอะเรย์ = ผลคูณของขนาดของsubscript แต่ละตัว เช่น
ขนาดของอะเรย์
A = Upper bound – lowerbound+1= 10-1+1 = 10

การจัดเก็บอะเรย์ในหน่วยความจำหลักจะใช้
เนื้อที่ขนาด เท่ากันเพื่อเก็บสมาชิกแต่ละตัว โดยเนื้อ
ที่จะเรียงต่อเนื่องกัน การจัดเก็บอะเรย์ใน
หน่วยความจำหลัก จะพิจารณาตาม ประเภท
ของอะเรย์ในมิติต่าง ๆ ดังนี้
- อะเรย์ 1 มิติ
- อะเรย์ หลายมิติ
อะเรย์ 1 มิติ รูปแบบ
data-type array-name[expression]
data-type คือ ประเภทของข้อมูลอะเรย์ เช่น int char float
array-name คือ ชื่อของอะเรย์
expression คือ นิพจน์จำนวนเต็มซึ่งระบุจำนวนสมาชิกของอะเรย์

- Initialization คือ การกำหนดค่าเริ่มต้นให้อะเรย์ เช่นEx1. int sum[5] = {1,2,3,4,5}; หรือ int sum[] = 1,2,3,4,5}; (เป็นการประกาศตัวแปร sum ที่มีชนิดของข้อมูลเป็นจำนวนเต็มที่เป็นอะเรย์ 1มิติเก็บข้อมูลได้ 5 ตัว)Ex2. char ch[7] = “string”; หรือ char ch[7] = {‘S’,‘T’,‘R’,‘I’,‘N’,‘G’,‘\0’}; (เป็นการประกาศตัวแปร ch ที่มีชนิดของข้อมูลเป็นตัวอักษร เรียกว่า"สตริง" ที่เป็นอะเรย์ 1มิติเก็บข้อมูลได้ 7 ตัวและ ch[7] จะเก็บค่า \0โดยอัตโนมัติ เพื่อแสดงการสิ้นสุดของข้อความ)
- อะเรย์ 2มิติ มีรูปแบบ ดังนี้
type array-name[n] [m];
type หมายถึง ชนิดของตัวแปรที่ต้องการประกาศเป็นอะเรย์array-name หมายถึง ชื่อของตัวแปรที่ต้องการประกาศเป็นอะเรย์
n หมายถึง ตัวเลขที่แสดงตำแหน่งของแถวm หมายถึง ตัวเลขที่แสดงตำแหน่งของคอลัมน์
char a[2][3]; (เป็นการจองเนื้อที่ในหน่วยความจำจำนวน 6 ที่ให้กับตัวแปร)
col1 col2 col3
row1 a[0][0] a[0][1] a[0][2]
row 2 a[1][0] a[1][1] a[1][2]

Initialization คือ การกำหนดค่าเริ่มต้นให้อะเรย์ เช่น
int amount[2][3] }; (เป็นการประกาศตัวแปร amount ที่มีชนิดของข้อมูลเป็นจำนวนเต็มที่เป็นอะเรย์ 2มิติเก็บข้อมูลได้ 6 ตัว)
int amount[2][3] }; int a[2][3] = {1,2,3,4,5,6}; หรือ
int a[2][3] = {{1,2,3},{4,5,6}};