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

DTS 06-04/08/2009

STACK

สแตก (stack) เป็นโครงสร้างข้อมูลที่ ข้อมูลแบบลิเนียร์ลิสต์ ที่มีคุณสมบัติที่ว่า
เพิ่มหรือลบข้อมูลในสแตก จะกระทำที่ปลายข้างเดียว ซึ่งเรียกว่า Top ของสแตก
(Top of Stack)และลักษณะที่สำคัญของสแตก คือ ข้อมูลที่ใส่หลังสุดจะถูกออกมา
จากสแตกเป็นลำดับสุดแรกสุด เรียกว่าคุณสมบัตินี้ว่า LIFO (Last First Out)
การดำเนินงานพื้นฐานของสแตก
การทำงานต่างๆของสแตกจะกระทำที่ปลายข้างหนึ่งของสแตกเท่านั้น
ดังนั้นจะต้องมีตัวชี้(pointer)
ตำแหน่งข้อมูลบนสุดจะประกอบด้วยกระบวนการ 3 กระบวนการที่สำคัญคือ
1.Push คือ การนำข้อมูลใส่ลงไปในสแตก เช่น สแตก s ต้องใส่ข้อมูล i ในสแตกจะได้ push (s,i) คือ ใส่ข้อมูล i ลงไปที่ทอปสแตก s ในการเพิ่มสแตก จะต้องทำการตรวจสอบว่าสแตก
เต็มหรือไม่ ถ้ไม่เต็มก็สามารถเพิ่มข้อมูลลงในสแตกได้ แล้วปรับตัวชี้ตำแหน่งให้ไปชี้ที่ตำแหน่ง
ข้อมูลใหม่ ถ้าสแตกเต็ม ก็จะไม่สามารถเพิ่มข้อมูลเข้าไปในสแตกได้อีก
2.Pop คือ การนำข้อมูลออกจากส่วนบนสุดของสแตก เช่น ต้องการนำข้อมูลออกจากสแตก s ไปไว้ที่ตัวแปร i จะได้ i = pop(s)
3.Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตกแต่ไม่ได้นำเอาข้อมูลนั้นออกจา
การแทนที่ข้อมูลของสแตก
สามารทำได้ 2 วิธี คือ
1.การแทนที่ข้อมูลของสแตกแบบลิงลิสต์
2.การแทนที่ข้อมูลของสแตกแบบอะเลย์
การแทนที่ข้อมูลของสแตกแบบลิงลิสต์จะประกอบไปด้วย 2 ส่วน คือ
1.Head Node จะประกอบด้วย 2 ส่วน top pointer และจำนวนสมาชิกในสแตก
2.Daya Node จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ ที่ชี้ไปยังข้อมูลตัวถัดไป
การดำเนินงานเกี่ยวกับสแตก ได้แก่
1.Create Stack
2.Push Stack
3.Pop Stack
4.Stack Top
5.Empty Stack
6.Full Stack
7.Stack
8.Destroy
การประยุกต์ใช้สแตก
การประยุกต์ใช้สแตกจะใช้ในงานด้านปฏบัติการของเครื่องคอมพิวเตอร์ที่ขั้นตอนการทำงานต้องการเก็บข่าวสารอันดับแรกสุดไว้ใช้หลังสุด

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

DTS 05-28/07/2009

Linked List

ลิงค์ลิสต์ (Linked List) เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่าง ๆ
โดยมีพอยเตอร์เป็นตัวเชื่อมต่อแต่ละอิลิเมนท์ เรียกว่าโนด (Node)
ซึ่งในแต่ละโนดจะประกอบไปด้วย 2 ส่วน คือData จะเก็บข้อมูลของอิลิเมนท์ และส่วนที่สอง คือ Link Field จะทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์
ในลิงค์ลิสต์จะมีตัวแปรสำหรับชี้ตำแหน่งลิสต์ (List pointer variable)ซึ่งเป็นที่เก็บตำแหน่งเริ่มต้นของลิสต์ ซึ่งก็คือโหนดแรกของลิสต์นั่นเอง ถ้าลิสต์ไม่มีข้อมูล ข้อมูลในโหนดแรกของลิสต์จะเป็นNull

โครงสร้างข้อมูลแบบลิงค์ลิสต์โครงสร้างข้อมูลแบบลิงค์ลิสต์จะแบ่งเป็น 2 ส่วน

1. Head Structure จะประกอบไปด้วย 3 ส่วนได้แก่ จำนวนโหนดในลิสต์ (Count)

พอยเตอร์ที่ชี้ไปยัง
โหนดที่เข้าถึง (Pos) และพอยเตอร์ที่ชี้ไปยังโหนดข้อมูลแรกของลิสต์ (Head)
2. Data Node Structure จะประกอบไปด้วยข้อมูล(Data)

และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป
กระบวนงานและฟังก์ชั่นที่ใช้ดำเนินงานพื้นฐาน
1. กระบวนงาน Create Listหน้าที่ สร้างลิสต์ว่างผลลัพธ์ ลิสต์ว่าง
2. กระบวนงาน Insert Nodeหน้าที่เพิ่มข้อมูลลงไปในลิสต์บริเวณตำแหน่งที่ต้องการข้อมูลนำเข้า ลิสต์ ข้อมูล และตำแหน่งผลลัพธ์ ลิสต์ที่มีการเปลี่ยนแปลง
3. กระบวนงาน Delete Nodeหน้าที่ ลบสมาชิกในลิสต์บริเวณตำแหน่งที่ต้องการข้อมูลนำเข้า ข้อมูลและตำแหน่งผลลัพธ์ ลิสต์ที่มีการเปลี่ยนแปลง
4. กระบวนงาน Search listหน้าที่ ค้นหาข้อมูลในลิสต์ที่ต้องการข้อมูลนำเข้าลิสต์ผลลัพธ์ ค่าจริงถ้าพบข้อมูล ค่าเท็จถ้าไม่พบข้อมูล
5. กระบวนงาน Traverseหน้าที่ ท่องไปในลิสต์เพื่อเข้าถึงและประมวลผลข้อมูลนำเข้าลิสต์ผลลัพธ์ ขึ้นกับการประมวลผล เช่นเปลี่ยนแปลงค่าใน node , รวมฟิลด์ในลิสต์ ,คำนวณค่าเฉลี่ยของฟิลด์ เป็นต้น
6. กระบวนงาน Retrieve Nodeหน้าที่ หาตำแหน่งข้อมูลจากลิสต์ข้อมูลนำเข้าลิสต์ผลลัพธ์ ตำแหน่งข้อมูลที่อยู่ในลิสต์
7. ฟังก์ชั่น EmptyListหน้าที่ ทดสอบว่าลิสต์ว่างข้อมูลนำเข้า ลิสต์ผลลัพธ์ เป็นจริง ถ้าลิสต์ว่างเป็นเท็จ ถ้าลิสต์ไม่ว่าง
8. ฟังก์ชั่น FullListหน้าที่ ทดสอบว่าลิสต์เต็มหรือไม่ข้อมูลนำเข้าลิสต์ผลลัพธ์ เป็นจริง ถ้าหน่วยความจำเต็มเป็นเท็จ ถ้าสามารถมีโหนดอื่น
9. ฟังก์ชั่น list countหน้าที่ นับจำนวนข้อมูลที่อยู่ในลิสต์ข้อมูลนำเข้าลิสต์ผลลัพธ์ จำนวนข้อมูลที่อยู่ในลิสต์
10. กระบวนงาน destroy listหน้าที่ ทำลายลิสต์ข้อมูลนำเข้า ลิสต์ผลลัพธ์ ไม่มีลิสต์
Linked List แบบซับซ้อน
1. Circular Linked List เป็นลิงค์ลิสต์ที่สมาชิกตัวสุดท้ายมีตัวชี้ (list) ชี้ไปที่สมาชิกตัวแรกของลิงค์ลิสต์ จะมีการทำงานไปในทิศทางเดียวเท่านั้นคือเป็นแบบวงกลม2. Double Linked List เป็นลิงค์ลิสต์ที่มีทิศทางการทำงานแบบ 2 ทิศทาง ในลิงค์ลิสต์แบบ 2ทิศทาง ส่วนข้อมูลจะมีตัวชี้ไปที่ข้อมูลก่อนหน้า (backward pointer) และตัวชี้ข้อมูลถัดไป(forward pointer)

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

DTS 04-14/07/2009

Set and String

โครงสร้างข้อมูลแบบเซ็ต

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

ตัวดำเนินการของเซ็ต ประกอบด้วย
-set intersection แบบซ้ำกัน
-set union แบบรวมกัน
-ste difference แบบแตกแต่กัน

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

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

การกำหนดสตริงทำได้หลายแบบ คือ
1. กำหนดเป็นสตริงที่มีค่าคงตัว
(String Constants)
2. กำหนดโดยใช้ตัวแปรอะเรย์หรือพอยเตอร์

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

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

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

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

อะเรย์ของสตริงที่ยาวเท่ากัน
อะเรย์ในลักษณะนี้จะถือว่าเป็นอะเรย์ที่แท้จริง
และสามารถกำหนดได้ทั้งเมื่อมีการให้ค่าเริ่มต้น และเมื่อ
กำหนดเป็นตัวแปร โดยดำเนินการตามแบบการ
กำหนดอะเรย์ 2 มิติ
เช่น char fruit [3][7]={“Apple”, “Orange”, “Mango”};
กำหนดตัวแปร fruit เป็นแบบ 3 แถว 7 คอลัมน์ ใน
แต่ละช่องจะเก็บข้อมูลแบบอักขระ

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

การดำเนินการเกี่ยวกับสตริงในการดำเนินการเกี่ยวกับสตริง
จะมีฟังก์ชันที่อยู่ในแฟ้ม ข้อมูล stdio.h เก็บอยู่ใน C Library อยู่แล้ว
สามารถนำมาใช้ได้ โดยการใช้คำสั่ง #include ในการ
เรียกใช้ เช่น
- ฟังก์ชัน strlen(str) ใช้หาความยาวของสตริง
- ฟังก์ชัน strcpy (str1,str2) ใช้คัดลอกข้อมูล
จาก string หนึ่งไปยังอีก string หนึ่ง
- ฟังก์ชัน strcat(str1,str2) ใช้เชื่อมต่อข้อความ
2 ข้อความเข้าด้วยกัน
- ฟังก์ชัน strcmp(str1,str2 ) ใช้เปรียบเทียบ
ข้อความ 2 ข้อความว่ามีค่าเท่ากันหรือไม่ ถือหลักการ
เปรียบเทียบแบบพจนานุกรม เช่น abcda จะมีค่าน้อย
กว่า abcde และ abcdf จะมีค่ามากกว่า abcde ค่าที่
เท่ากัน คือ ค่าที่เหมือนกัน เช่น abcd กับ abcd สำหรับ
อักษรตัวเล็กตัวใหญ่ จะถือว่าอักษรตัวใหญ่มีค่าน้อยกว่า

อักษรตัวเล็ก ตามลำดับรหัส ASCII
เผยแพร่บทความ บันทึกเป็นฉบับร่าง

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

DTS 03-30/06/2009

Array and Record
Array เป็นแบบหนึ่งของโครงสร้างที่เรียกว่า
Linear List มีลักษณะคล้ายเซ็ต
และข้อมูลที่เก็บอยู่ในอาร์เรย์แต่ละช่องจะต้องเป็น
ข้อมูลชนิดเดียวกัน อยู่ภายใต้ตัวแปรชื่อเดียวกัน
โดยขนาดของแต่ละช่องต้องเท่ากันหมด
การอ้างถึงข้อมูลในแต่ละช่องของของอาร์เรย์
ต้องอาศัยตัวห้อย Subscript
เช่น กำหนดให้ Array A มีขนาด 100รายการ A[5]
จะหมายถึง ค่าของอาร์เรย์ตำแหน่งที่ 5
ในอาร์เรย์นั้น ซึ่ง Subscript ก็
คือ เลข 5จำนวน Subscript
ที่ต้องการใช้เวลาเรียกใช้ค่าใน Arraเรียกว่า
มิติไดเมนชั่น( Dimention)ของ Arra
นั้นจะเห็นได้ว่าตัวแปรอาร์เรย์ก็เหมือนกับ
การนำตัวแปรชนิดเดียวกันหลายๆตัว
มาเรียงต่อกันโดยใช้ชื่อเดียวกัน วิธีการแยกความแตกต่าง
ของข้อมูลแต่ละตัว จะใช้ตังเลขเขียนต่อท้าย
ชื่อขอตัวแปรอาร์เรย์ภายในเครื่องหมาย[ ]
โดยเริ่มจากตัวแปรแรกเป็น 0 นับเพิ่มไปเรื่อยๆ
จนถึงตัวสุดท้าย ซึงตัวเลขนี้จะเรียกว่า อินเด็กซ์
การประกาศอาร์กิวเมนต์ในฟังก์ชั่นเป็นอะเรย์
ถ้าเป็นอะเรย์มิติเดียว สามารถทำได้มั้งหมด 3 วิธี
1. มีการประกาศขนาดของอะเรย์ที่นำหน้าที่ในการรับค่า
2.ไม่ต้องมีการประกาศขนาดของอะเรย์ที่ทำหน้าที่ในการรับค่า
3.ตัวแปรที่ทำหน้าที่รับค่าถูกกำหนดเป็นพอยน์เตอร์
Record or Structure
เป็นโครงสร้างข้อมูลที่ประกอบขึ้นมาจากข้อมูลพื้นฐานต่างประเภทกัน
รวมเป็น 1 ชุดข้อมูล คือ
จะประกอบด้วย data element หรือ field ต่างประเภทกันอยู่รวมกัน
ในภาษา c ก็คือการกำหนดข้อมูลเป็นรูปแบบของ Structure
Structure คือโครงสร้างที่สมาชิกแต่ละตัวมีประเภทข้อมูลแตกต่างได้
โดยที่ใน Structure อาจมีสมาชิกเป็นจำนวนเต็ม ทศนิยม อักขระ อะเรย์
หรือพอยเตอร์ หรือแม้แต่ Structure ด้วยกันก็ได้
การกำหนดค่าเริ่มต้นให้กับสมาชิกของ Structure
สามารถค่าเริ่มต้นให้กับสมาชิกของ Structure ๆได้โดยค่าเริ่มต้น
ที่จะกำหนดให้กับสมาชิกตัวใด จะต้องอยู่ในตำแหน่งที่
ตรงกับสมาชิกตัวนั้นค่าเริ่มต้นจะต้องอยู่ในวงเล็บปีกกาปิด
ละข้อมูลค่าเริ่มต้นแต่ละตัวแยกกันด้วยเครื่องหมาย ,
การผ่าน Structure ให้ฟังก์ชั่น
ประเภทของการส่งผ่าน Structure ให้ฟังก์ชั่น มี 2 ประเภท คือ
1.ส่งสมาชิกแต่ละตัวของ Structure
2.ส่งทั้ง Structure

Pointer
เป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่งที่อยู่ของตัวแปรที่อยู่ในหน่วยความจำ

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

DTS 02-23/06/2009

#include "stdio.h"
#include "string.h"
void main()
{
struct pocket
{
char name[20];
char surname[30];
int member_code;
char color[15];
char group[10];
char size[10] ;
float price;
char type[10];

}sale;
strcpy(sale.name,"Rujira");
strcpy(sale.surname,"Jankeaw");
sale.member_code=1234;
strcpy(sale.color,"pink");
strcpy(sale.group,"female");
sale.price=45;
strcpy(sale.size,"s");
strcpy(sale.type,"handbag");


printf("POCKET\n");
printf("Name:%s\n",sale.name);

printf("Surname:%s\n",sale.surname);
printf("Color:%s\n",sale.color);
printf("Group:%s\n",sale.group);
printf("Size:%s\n",sale.size);
printf("Price:%.2f\n",sale.price);
printf("Type:%s\n",sale.type);
printf("Code_Member:%d\n",sale.code_member);
}



ความรู้ที่ได้จากการเรียน
จากที่ได้เรียนวิชาโครงสร้างข้อมูลดิฉันมีความเข้าใจมากขึ้นเกี่ยวกับวิชานี้ และทราบว่าโครงสร้างข้อมูลประกอบด้วยอะไรบ้าง และใช้ทะอะไรได้บ้างในวิชานี้
จุดประสงค์การเรียนรู้
1. เพื่อให้นักศึกษาทราบวิธีการของอะเรย์
2. เพื่อให้นักศึกษาทราบวิธีการส่งค่าของอะเรย์
ในโปรแกรม และฟังก์ชัน
3. เพื่อให้นักศึกษาทราบวิธีการดำเนินการที่
เกี่ยวข้องกับเรคคอร์ด ข้อมูล
4. เพื่อให้นักศึกษาทราบความสัมพันธ์ของข้อมูล
ที่เกิดขึ้นของเรคคอร์ดกับอะเรย์ข้อมูล
อะเรย์เป็นโครงสร้างข้อมูลที่เรียกว่า Linear List มีลักษณะ
คล้ายเซ็ตในคณิตศาสตร์ คือ อะเรย์จะประกอบด้วยสมาชิกที่มีจำนวน
คงที่ มีรูปแบบข้อมูลเป็นแบบเดียวกัน สมาชิกแต่ละตัวใช้เนื้อที่จัดเก็บ
ที่มีขนาดเท่ากัน เรียงต่อเนื่องในหน่วยความจำหลัก




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

DTS 01-23/06/2009


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




ชื่อ นางสาว รุจิรา จันทร์แก้ว

Miss. RUJIRA JANKAEW

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

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

e-mail
u50132792027@gmail.com