วันอาทิตย์ที่ 30 สิงหาคม พ.ศ. 2552

DTS08-25/08/09

Tree

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

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


เอ็กซ์เพรสชันทรี (Expression Tree)



เป็นการนำเอาโครงสร้างทรีไปใช้เก็บนิพจน์ทางคณิตศาสตร์โดยเป็นไบนารีทรี ซึ่งแต่ละโหนดเก็บตัวดำเนินการ (Operator) และและตัวถูกดำเนินการ(Operand) ของนิพจน์คณิตศาสตร์นั้น ๆ ไว้ หรืออาจจะเก็บค่านิพจน์ทางตรรกะ (Logical Expression)นิพจน์เหล่านี้เมื่อแทนในทรีต้องคำนึงลำดับขั้นตอนในการคำนวณตามความสำคัญของเครื่องหมายด้วยโดยมีความสำคัญตามลำดับดังนี้


- ฟังก์ชัน


- วงเล็บ


- ยกกำลัง


- เครื่องหมายหน้าเลขจำนวน (unary)


- คูณ หรือ หาร


- บวก หรือ ลบ


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




วันพุธที่ 19 สิงหาคม พ.ศ. 2552

DTS07-11/08/2009

Queue

คิวเป็นโครงสร้างข้อมูลแบบลำดับ (Sequential) ลักษณะของคิวเราสามารถพบได้ในชีวิตประจำวัน เช่น การเข้าแถวตามคิวเพื่อรอรับบริการต่างๆ ลำดับการสั่งพิมพ์งาน เป็นต้น ซึ่งจะเห็นได้ว่าลักษณะของการทำงานจะเป็นแบบใครมาเข้าคิวก่อน จะได้รับบริการก่อน เรียกได้ว่าเป็นลักษณะการทำงานแบบ FIFO (First In , First Out) ลักษณะของคิว จะมีปลายสองข้าง ซึ่งข้างหนึ่งจะเป็นช่องทางสำหรับข้อมูลเข้าที่เรียกว่า REAR และอีกข้างหนึ่งซึ่งจะเป็นช่องทางสำหรับข้อมูลออก เรียกว่า FRONT



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

การกระทำกับคิว

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

วันอาทิตย์ที่ 9 สิงหาคม พ.ศ. 2552

DTS06-04/08/2009

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

การใช้ สแตค เพื่อแปลรูปนิพจน์ทางคณิตศาสตร์
รูปแบบนิพจน์ทางคณิตศาสตร์
• นิพจน์ Infix คือ นิพจน์ที่เครื่องหมายดำเนินการ (Operator) อยู่ระหว่างตัวดำเนินการ (Operands) เช่น A+B-C
• นิพจน์ Prefix คือ นิพจน์ที่เครื่องหมายดำเนินการ (Operator) อยู่หน้าตัวดำเนินการ (Operands) เช่น +-AB
• นิพจน์ Postfix คือ นิพจน์ที่เครื่องหมายดำเนินการ (Operator) อยู่หลังตัวดำเนินการ (Operands) เช่น AC*+

ลำดับการทำงานของตัวดำเนินการทางคณิตศาสตร์ (Operator Priority)

มีการลำดับความสำคัญของตัวดำเนินการจากลำดับสำคัญมากสุดไปน้อยสุด คือ ลำดับที่มีความสำคัญมากที่ต้องทำก่อน ไปจนถึงลำดับที่มีความสำคัญน้อยสุดที่ไว้ทำทีหลัง ดังนี้
ทำในเครื่องหมายวงเล็บ
เครื่องหมายยกกำลัง ( ^ )
เครื่องหมายคูณ ( * ) , หาร ( / )
เครื่องหมายบวก ( + ) , ลบ ( - )

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

DTS05-28/07/2009

สิ่งที่ได้จากการเรียน

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


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

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

DTS04-15/07/2009

สรุป
set และ string มีอยู่ 2 รูปแบบ คือ โครงสร้างข้อมูลแบบเซ็ตและโครงสร้างข้อมูลแบบสตริงโครงสร้างข้อมูลแบบเซ็ต เป็นโครงสร้างข้อมูลที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันในภาษาซีจะไม่มีประเภทข้อมูลแบบเซ็ตนี้เหมือนกับในภาษาปาสคาลแต่สามารถใช้หลักการของการดำเนินงานแบบเซ็ตมาใช้ได้โครงสร้างข้อมูลแบบสตริง
สตริง (String) หรือ สตริงของอักขระ (Character String) เป็นข้อมูลที่ประกอบไปด้วยตัวอักษร ตัวเลขหรือเครื่องหมายเรียงติดต่อกันไป รวมทั้งช่องว่างการประยุกต์ใช้คอมพิวเตอร์ที่เกี่ยวกับข้อมูลที่เป็นสตริงมีการนำไปใช้สร้างโปรแกรมประเภทบรรณาการข้อความหรือโปรแกรมประเภทประมวลผลการกำหนดสตริงการกำหนดสตริงทำได้หลายแบบ
1. กำหนดเป็นสตริงที่มีค่าคงตัว
2. กำหนดโดยใช้ตัวแปรอะเรย์หรือพอยเตอร์การกำหนดตัวแปรสตริงในการกำหนดตัวแปรของสตริง
อาศัยหลักการของอะเรย์เพราะสตริงคืออะเรยืของอักขระที่ปิดท้ายด้วย null character (\0)และมีฟังชันพิเศษสำหรับทำงานกับสตริงโดยเฉพาะอะเรย์ของสตริงถ้าหากมีสตริงจำนวนมาก ก็ควรจะทำให้เป็นอะเรย์ของสตริง เพื่อที่จะเขียนโปรแกรมได้สะดวกการสร้างอะเรย์ของสตริง สามารถสร้างได้ทั้งแบบที่ให้ค่าเริ่มต้นและแบบที่กำหนดเป็นตัวแปรฟังก์ชัน puts () ใช้ในการพิมพ์สตริงออกทางจอภาพโดยการผ่านค่าแอดเดรสของสตริงไปให้เท่านั้น ข้อสังเกต การกำหนดอะเรย์ของสตริงในลักษณะอย่างนี้ ไม่ใช่อะเรย์ที่แท้จริงตามหลักการของอะเรย์ เนื่องจากขนาดของช่องในอะเรย์ไม่เท่ากัน แต่อนุโลมให้ถือว่าเป็นอะเรย์การดำเนินการเกี่ยวกับสตริงในการดำเนินการเกี่ยวกับสตริง จะมีฟังก์ชันที่อยู่ในแฟ้ม ข้อมูล stdio.hเก็บอยู่ใน C Libraly อยู่แล้วสามารถนำมาใช้ได้ โดยการใช้คำสั่ง #include ในการเรียกใช้ เช่น- ฟังก์ชัน strlen(str) ใช้หาความยาวของสตริง- ฟังก์ชัน strcpy(str1,str2) ใช้คัดลอกข้อมูลจาก string หนึ่งไปยังอีก string หนึ่ง- ฟังก์ชัน strcat(str1,str2) ใช้เชื่อมต่อข้อความ 2 ข้อความเข้าด้วยกัน- ฟังก์ชัน strcmp(str1,str2) ใช้เปรียบเทียบข้อความ 2 ข้อความว่ามีค่าเท่ากันหรือไม่ถือหลักการเปรียบเทียบแบบพจนานุกรม



#include
#include
void main ()
{
cout<<"Phase of age \n";
int age;
while((cin>>age)){
if(age<=3)
cout <<"Baby \n";
else if(age<=12)
cout <<"Student\n";
else if(age<=25)
cout <<"Young\n";
else if(age<=50)
cout <<"Aduath \n";
else
cout <<"Old Man\n";
}
}

วันเสาร์ที่ 4 กรกฎาคม พ.ศ. 2552

DTS03-30/06/2009

สิ่งที่ได้จากการเรียน
รู้ความหมายของ Array มีลักษณะคล้ายกับเซ็ตทางคณิตศาสตร์ สมาชิกมีจำนวนคงที่ มีข้อมูลแบบเดียวกัน มีขนาดเท่ากัน ต่อเนื่องกันในหน่วยความจำหลัก การกำหนด อะเรย์ มีชื่อ อะเรย์ พร้อม subscript ถ้ามากกว่า 1 เรียกว่า อะเรย์หลายมิติ subscript แต่ละตัวจะประกอบไปด้วย ค่าสูงสุดและ ค่าต่ำสุด
float A[10]; (อะเรย์ 1 มิติ) int K[5] [10]; (อะเรย์ 2 มิติ) เข้าใจเรื่องของ Structure มากขึ้นว่าควรจะเริ่มต้นจากการกำหนดชื่อStructure ประกาศตัวแปร ชื่อของตัวแปรในกลุ่ม และตัวแปรโครงสร้างที่เหมือนกับในที่ประกาศ Structure เรื่องPointer เป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่งที่อยู่ (Address) ของตัวแปรที่อยู่ในหน่วยความจำ *ptr ให้นำค่าที่เก็บไว้มาตอบ ส่วน ptr คือค่าของptr โดยตรง ค่ะ

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

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

DTS02-23/06/2009

#include
#include
void main()
{
struct Journey {
char university [50];
char apartment[50];
char province [20];
char road [20];
int soi ;
int travel ;
float price ;
char nearly [20] ;
} tourist;
clrscr();
printf("\t\t\t\tHow go to university\n");
printf("\t\t===========================================\n") ;
printf("\t\t\tMy University name is : "); scanf ("%s",&tourist.university);
printf("\t\t\tMy Apartment name is : "); scanf ("%s",&tourist.apartment);
printf("\t\t\tEnter Provice :"); scanf("%s",&tourist.province);
printf("\t\t\tEnter Road : " ) ; scanf("%s",&tourist.road) ;
printf("\t\t\tEnter Soi : "); scanf("%d",&tourist.soi);
printf("\t\t\tEnter Travel number by bus : "); scanf("%d",&tourist.travel);
printf ("\t\t\tEnter Price : "); scanf("%f",&tourist.price);
printf("\t\t\tEnter Nearly : "); scanf("%s",&tourist.nearly);
printf("\t\t==========================================\n") ;
printf("\t\t\tMy University name is %s\n",tourist.university);
printf("\t\t\tMy Apartment name is %s\n",tourist.apartment);
printf("\t\t\tEnter Provice %s\n",tourist.provice);
printf("\t\t\tEnter Road %s\n",tourist.road);
printf("\t\t\tEnter Soi %d\n",tourist.soi);
printf("\t\t\tEnter Travel number by bus %d\n",tourist.travel);
printf("\t\t\tEnter Price %.2f\n",tourist.price);
printf("\t\t\tEnter Nearly %s\n",tourist.nearly);
printf("\t\t==========================================\n") ;
}



สิ่งที่ได้จากการเรียน
รู้ความหมายของโครงสร้างข้อมูล[ Data Structure ] คือ ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้าง รวมกระบวนการจัดการในโครงสร้าง ประเภทโครงสร้างข้อมูลมีแบบกายภาพ กายภาพเบื้องต้นมี int,char,float แบบโครงสร้าง Array คือแถวลำดับ Recordคือระเบียนข้อมูลต่างกัน Algorithm เป็นวิธีการแก้ปัญหา ต้องมีความถูกต้อง สั่น กระชับ ง่ายต่อการทำความเข้าใจ การคำนวณให้ทำในวงเล็บก่อน ยกกำลัง คูณ หาร บวก ลบ จสกซ้ายไปขวา loop ต้องเป็นค่าเริ่มต้น มีเงื่อนไข มีค่าสิ้นสุด condition ตัวแปรภาษาเป็นเงื่อนไข

สิ่งที่อยากรู้เพิ่มเติม
การใช้ If...eles การวน loop do...while การคิดผลลัพธ์ที่ออกมาว่าได้มาอย่างไร แล้วจะหยุดการทำงานเมื่อไร ต้องทำซ้ำกี่ครั้ง เริ่มวนตั้งแต่จุดไหน ค่ะ

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

ประวัติ

นางสาวศุทธินี เกรอด

Miss.Sutthinee Kaerod

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

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

Email:
u50132792003@gmail.com