Tree
ทรี (Tree) เป็นโครงสร้างข้อมูลที่ความสัมพันธ์ระหว่าง โหนดจะมีความสัมพันธ์ลดหลั่นกันเป็นลำดับชั้น (Hierarchical Relationship)ไ ด้มีการนำรูปแบบทรีไปประยุกต์ใช้ในงานต่าง ๆ อย่างแพร่หลาย ส่วนมากจะใช้สำหรับแสดงความสัมพันธ์ระหว่างข้อมูล เช่น แผนผังองค์ประกอบของหน่วยงานต่าง ๆโครงสร้างสารบัญหนังสือ เป็นต้น
แต่ละโหนดจะมีความสัมพันธ์กับโหนดในระดับที่ต่ำลงมา หนึ่งระดับได้หลาย ๆ โหนดเรียกโหนดดังกล่าวว่า โหนดแม่ (Parent or Mother Node)โหนดที่อยู่ต่ำกว่าโหนดแม่อยู่หนึ่งระดับเรียกว่า โหนดลูก (Child or Son Node)โหนดที่อยู่ในระดับสูงสุดและไม่มีโหนดแม่เรียกว่า โหนดราก (Root Node)โหนดที่มีโหนดแม่เป็นโหนดเดียวกันเรียกว่า โหนดพี่น้อง (Siblings)โหนดที่ไม่มีโหนดลูก เรียกว่าโหนดใบ (Leave Node)เส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดสองโหนดเรียกว่า กิ่ง (Branch)
เกี่ยวกับฉัน
วันอาทิตย์ที่ 30 สิงหาคม พ.ศ. 2552
วันพุธที่ 19 สิงหาคม พ.ศ. 2552
DTS07-11/08/09
Queue
คิวเป็นโครงสร้างข้อมูลแบบลำดับ (Sequential) ลักษณะของคิวเราสามารถพบได้ในชีวิตประจำวัน เช่น การเข้าแถวตามคิวเพื่อรอรับบริการต่างๆ ลำดับการสั่งพิมพ์งาน เป็นต้น ซึ่งจะเห็นได้ว่าลักษณะของการทำงานจะเป็นแบบใครมาเข้าคิวก่อน จะได้รับบริการก่อน เรียกได้ว่าเป็นลักษณะการทำงานแบบ FIFO (First In , First Out) ลักษณะของคิว จะมีปลายสองข้าง ซึ่งข้างหนึ่งจะเป็นช่องทางสำหรับข้อมูลเข้าที่เรียกว่า REAR และอีกข้างหนึ่งซึ่งจะเป็นช่องทางสำหรับข้อมูลออก เรียกว่า FRONT

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

ในการทำงานกับคิวที่ต้องมีการนำข้อมูลเข้าและออกนั้น จะต้องมีการตรวจสอบว่าคิวว่างหรือไม่ เมื่อต้องการนำข้อมูลเข้า เพราะหากคิวเต็มก็จะไม่สามารถทำการนำข้อมูลเข้าได้ เช่นเดียวกัน เมื่อต้องการนำข้อมูลออกก็ต้องตรวจสอบด้วยเช่นกัน ว่าในคิวมีข้อมูลอยู่หรือไม่ หากคิวไม่มีข้อมูลก็จะไม่สามารถนำข้อมูลออกได้เช่นกัน
การกระทำกับคิว
-การเพิ่มข้อมูลเข้าไปในคิวการจะเพิ่มข้อมูลเข้าไปในคิว จะกระทำที่ตำแหน่ง REAR หรือท้ายคิว และก่อนที่จะเพิ่มข้อมูลจะต้องตรวจสอบก่อนว่าคิวเต็มหรือไม่ โดยการเปรียบเทียบค่า REAR ว่า เท่ากับค่า MAX QUEUE หรือไม่ หากว่าค่า REAR = MAX QUEUE แสดงว่าคิวเต็มไม่สามารถเพิ่มข้อมูลได้ แต่หากไม่เท่า แสดงว่าคิวยังมีที่ว่างสามารถเพิ่มข้อมูลได้ เมื่อเพิ่มข้อมูลเข้าไปแล้ว ค่า REAR ก็จะเป็นค่าตำแหน่งท้ายคิวใหม่
-การนำข้อมูลออกจากคิวการนำข้อมูลออกจากคิวจะกระทำที่ตำแหน่ง FRONT หรือส่วนที่เป็นหัวของคิว โดยก่อนที่จะนำข้อมูลออกจากคิวจะต้องมีการตรวจสอบก่อนว่ามีข้อมูลอยู่ในคิวหรือไม่ หากไม่มีข้อมูลในคิวหรือว่าคิวว่าง ก็จะไม่สามารถนำข้อมูลออกจากคิวได้
วันอังคารที่ 11 สิงหาคม พ.ศ. 2552
DTS06-04/08/09
สแตค (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)
มีการลำดับความสำคัญของตัวดำเนินการจากลำดับสำคัญมากสุดไปน้อยสุด คือ ลำดับที่มีความสำคัญมากที่ต้องทำก่อน ไปจนถึงลำดับที่มีความสำคัญน้อยสุดที่ไว้ทำทีหลัง ดังนี้
ทำในเครื่องหมายวงเล็บ
เครื่องหมายยกกำลัง ( ^ )
เครื่องหมายคูณ ( * ) , หาร ( / )
เครื่องหมายบวก ( + ) , ลบ ( - )
การใช้ สแตค เพื่อแปลรูปนิพจน์ทางคณิตศาสตร์รูปแบบนิพจน์ทางคณิตศาสตร์
• นิพจน์ Infix คือ นิพจน์ที่เครื่องหมายดำเนินการ (Operator) อยู่ระหว่างตัวดำเนินการ (Operands) เช่น A+B-C
• นิพจน์ Prefix คือ นิพจน์ที่เครื่องหมายดำเนินการ (Operator) อยู่หน้าตัวดำเนินการ (Operands) เช่น +-AB
• นิพจน์ Postfix คือ นิพจน์ที่เครื่องหมายดำเนินการ (Operator) อยู่หลังตัวดำเนินการ (Operands) เช่น AC*+
ลำดับการทำงานของตัวดำเนินการทางคณิตศาสตร์ (Operator Priority)
มีการลำดับความสำคัญของตัวดำเนินการจากลำดับสำคัญมากสุดไปน้อยสุด คือ ลำดับที่มีความสำคัญมากที่ต้องทำก่อน ไปจนถึงลำดับที่มีความสำคัญน้อยสุดที่ไว้ทำทีหลัง ดังนี้
ทำในเครื่องหมายวงเล็บ
เครื่องหมายยกกำลัง ( ^ )
เครื่องหมายคูณ ( * ) , หาร ( / )
เครื่องหมายบวก ( + ) , ลบ ( - )
วันอังคารที่ 4 สิงหาคม พ.ศ. 2552
iostream.h
#include "iostream.h"
#include "coino.h"
#include "stdio.h"
void main(){
clrscr();
int age;
float weight,hight;
cout<<"Please insert your's age : "; cin>>"%d",&age;
cout<<"\nPlease insert your's weight : "; cin>>"%f",&weight;
cout<<"\nPlease insert your's Hight : "; cin>>"%f",&hight;
if (age >= 18 && age <= 23) { if((weight >= 60 && weight <= 70) (hight >= 165 && hight<= 175 )){ } } cout<<"\n\n\n\n\t\t\tPress anykey to Exit!!! "; getch(); }
#include
#include
void main(){
clrscr();
int age;
float weight,hight;
cout<<"Please insert your's age : "; cin>>"%d",&age;
cout<<"\nPlease insert your's weight : "; cin>>"%f",&weight;
cout<<"\nPlease insert your's Hight : "; cin>>"%f",&hight;
if (age >= 18 && age <= 23) { if((weight >= 60 && weight <= 70) (hight >= 165 && hight<= 175 )){ } } cout<<"\n\n\n\n\t\t\tPress anykey to Exit!!! "; getch(); }
วันจันทร์ที่ 3 สิงหาคม พ.ศ. 2552
DTS05 28/07/2009
เรื่อง Linked Listลิงค์ลิสต์ (Linked List)
เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่างๆ โดยมีพอยเตอร์เป็นตัวเชื่อมต่อ แต่ละอิลิเมนท์ เรียกว่าโนด (Node) ซึ่งในแต่ละโนดประกอบไปด้วย 2 ส่วน คือ
1. Data จะเก็บข้อมูลของอิลิเมนท์
2. Link Field ทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์ในส่วนของ data จะเป็นรายการเดี่ยวหรือเรคคอร์ดก็ได้ ส่วนของ link เป็นส่วนที่เก็บตำแหน่งของโหนดถัดไป ถ้าในโหนดสุดท้ายจะเก็บค่า 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)
เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่างๆ โดยมีพอยเตอร์เป็นตัวเชื่อมต่อ แต่ละอิลิเมนท์ เรียกว่าโนด (Node) ซึ่งในแต่ละโนดประกอบไปด้วย 2 ส่วน คือ
1. Data จะเก็บข้อมูลของอิลิเมนท์
2. Link Field ทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์ในส่วนของ data จะเป็นรายการเดี่ยวหรือเรคคอร์ดก็ได้ ส่วนของ link เป็นส่วนที่เก็บตำแหน่งของโหนดถัดไป ถ้าในโหนดสุดท้ายจะเก็บค่า 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)
วันจันทร์ที่ 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 ข้อความว่ามีค่าเท่ากันหรือไม่ถือหลักการเปรียบเทียบแบบพจนานุกรม
มีอยู่ 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 ข้อความว่ามีค่าเท่ากันหรือไม่ถือหลักการเปรียบเทียบแบบพจนานุกรม
วันอังคารที่ 30 มิถุนายน พ.ศ. 2552
DTS03-30/06/2009
สิ่งที่ได้จากการเรียนอาทิตย์นี้
.....คือได้รู้จักการเขียนโปรแกรมแบบยาก บ้างคนคิดว่าเป็นเรื่องง่ายแต่สำหรับหนู หนูคิดว่ามันยากค่ะ
เราต้องทำความเข้าใจกับมัน จะมาเล่นเหมือนแต่ก่อนไม่ได้แล้ว เพราะเราโตขึ้นเรียนก็ยากขึ้น
เราต้องมีความรับผิดชอบให้มากขึ้นกว่านี้ ขยันทบทวนบทเรียน การเรียน structure ในครั้งนี้ ยากมากค่ะยอมรับแต่หนูก็ต้องทำความเข้าใจกับมัน วันนี้อาจารย์ได้ทบทวนเรื่อง array ,loop, loopfor เพื่อนทุกคนส่วนมากจะลืมกันหมดแต่ทุกคนก็พยายามทีจะทำความเข้าใจกับมัน ตอนที่อาจารย์เรียกตอบกลัวมากๆๆเลยค่ะ เพราะเราไม่ได้อ่านเนื่อหามาก่อนที่จะเรียน อาจารย์สอนเลยทำใหเรียนไม่รู้เรื่อง หนูเลยทำความเข้าใจว่าต่อไปนี้จะอ่านทบทวนบทที่จะเรียนต่อไปมาก่อนเพื่อจะได้เข้าใจในการเรียนมากขึ้น
สิ่งที่ไม่เข้าใจในอาทิตย์นี้
.....ส่วนมากก็จะเป็นเรื่อง loop การวนซ้ำของ loop และการนับจำนวน การเก็บค่าและก็การรับค่า
.....คือได้รู้จักการเขียนโปรแกรมแบบยาก บ้างคนคิดว่าเป็นเรื่องง่ายแต่สำหรับหนู หนูคิดว่ามันยากค่ะ
เราต้องทำความเข้าใจกับมัน จะมาเล่นเหมือนแต่ก่อนไม่ได้แล้ว เพราะเราโตขึ้นเรียนก็ยากขึ้น
เราต้องมีความรับผิดชอบให้มากขึ้นกว่านี้ ขยันทบทวนบทเรียน การเรียน structure ในครั้งนี้ ยากมากค่ะยอมรับแต่หนูก็ต้องทำความเข้าใจกับมัน วันนี้อาจารย์ได้ทบทวนเรื่อง array ,loop, loopfor เพื่อนทุกคนส่วนมากจะลืมกันหมดแต่ทุกคนก็พยายามทีจะทำความเข้าใจกับมัน ตอนที่อาจารย์เรียกตอบกลัวมากๆๆเลยค่ะ เพราะเราไม่ได้อ่านเนื่อหามาก่อนที่จะเรียน อาจารย์สอนเลยทำใหเรียนไม่รู้เรื่อง หนูเลยทำความเข้าใจว่าต่อไปนี้จะอ่านทบทวนบทที่จะเรียนต่อไปมาก่อนเพื่อจะได้เข้าใจในการเรียนมากขึ้น
สิ่งที่ไม่เข้าใจในอาทิตย์นี้
.....ส่วนมากก็จะเป็นเรื่อง loop การวนซ้ำของ loop และการนับจำนวน การเก็บค่าและก็การรับค่า
วันอาทิตย์ที่ 28 มิถุนายน พ.ศ. 2552
DTS02-23/06/2009
#include"stdio.h"
#include"string.h"
void main()
{
struct recommend {
char name[15];
char surname[15];
char nickname[15];
int age;
char gender[10];
char subject [10];
char live[10];
char code[6];
};
struct recommend myself;
strcpy(myself.name,"Tisirat");
strcpy(myself.surname,"Anantapak");
strcpy(myself.nickname,"Pang");
myself.age=20;strcpy(myself.gender,"Female");
strcpy(myself.subject ,"structer");
strcpy(myself.live,"Banpong");
strcpy(myself.code,"70110") ;
printf("\t\t\t\trecommend myself\t\t\t\t");
printf(" Name:%s\n",myself.name);
printf(" Surname:%s\n",myself.surname);
printf(" nickname:%s\n",myself.nickname);
printf(" Age:%d\n",myself.age);
printf(" Gender:%s\n",myself.gender);
printf(" Subject:%s\n",myself.subject );
printf("Live:%s\n",myself.live);printf("Code:%s\n\t\t",myself.code);
printf("show+++++++++++++++Exit ka\n") ;
}
#include"string.h"
void main()
{
struct recommend {
char name[15];
char surname[15];
char nickname[15];
int age;
char gender[10];
char subject [10];
char live[10];
char code[6];
};
struct recommend myself;
strcpy(myself.name,"Tisirat");
strcpy(myself.surname,"Anantapak");
strcpy(myself.nickname,"Pang");
myself.age=20;strcpy(myself.gender,"Female");
strcpy(myself.subject ,"structer");
strcpy(myself.live,"Banpong");
strcpy(myself.code,"70110") ;
printf("\t\t\t\trecommend myself\t\t\t\t");
printf(" Name:%s\n",myself.name);
printf(" Surname:%s\n",myself.surname);
printf(" nickname:%s\n",myself.nickname);
printf(" Age:%d\n",myself.age);
printf(" Gender:%s\n",myself.gender);
printf(" Subject:%s\n",myself.subject );
printf("Live:%s\n",myself.live);printf("Code:%s\n\t\t",myself.code);
printf("show+++++++++++++++Exit ka\n") ;
}
วันอังคารที่ 23 มิถุนายน พ.ศ. 2552
ประวัติ
นางสาว ฐิศิรัตน์ อนันตภักดิ์
Miss. Tisirat Anantapak
หลักสูตร บริหารธุรกิจ(คอมพิวเตอร์ธุรกิจ)
คณะ วิทยาการจัดการ
มหาวิทยาลัยราชภัฏสวนดุสิต
Email:U50132792009@gmail.com
Miss. Tisirat Anantapak
หลักสูตร บริหารธุรกิจ(คอมพิวเตอร์ธุรกิจ)
คณะ วิทยาการจัดการ
มหาวิทยาลัยราชภัฏสวนดุสิต
Email:U50132792009@gmail.com
สมัครสมาชิก:
บทความ (Atom)