โครงสร้างข้อมูลแบบเซ็ต
เป็นโครงสร้างข้อมูลที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันในภาษาซี
จะไม่มีประเภทข้อมูลแบบเซ็ตนี้เหมือนกับในภาษาปาสคาล
แต่สามารถใช้หลักการของการดำเนินงานแบบเช็ตมาใช้ได้
วิธีการแก้ปัญหาเบื้องต้น
- จะต้องกำหนดเซ็ตของผู้เรียนที่ลงทะเบียนเรียนในแต่ละวิชา
- นำเซ็ตดังกล่าวที่ได้มาทำการ intersection กัน หากมีเซ็ตใดที่
ทำการ intersect กันแล้ว มีข้อมูลสมาชิกในเซ็ตที่ซ้ำกันอยู่จะ
ไม่สามารถจัดให้วิชาดังกล่าวอยู่ในวันเวลาเดียวกันได้ตัวอย่างดังกล่าว
เป็นการนำแนวความคิดเรื่องการจัดการแบบเช็ตมาประยุกใช้
งานโครงสร้างข้อมูลแบบสตริงสตริง (String) หรือ สตริงของอักขระ
(CharacterString) เป็นข้อมูลที่ประกอบไปด้วยตัวอักษร
ตัวเลขหรือเครื่องหมายเรียงติดต่อกันไปรวมทั้งช่องว่างการประยุกต์ใช้คอมพิวเตอร์
ที่เกี่ยวกับข้อมูลที่เป็นสตริงมีการนำไปใช้สร้างโปรแกรมประเภทบรรณาธิการ
ข้อความ(text editor) หรือโปรแกรมประเภทประมวลผลคำ (wordprocessing)
ซึ่งมีการทำงานที่อำนวยความสะดวกหลายอย่างเช่น การตรวจสอบข้อความ
การจัดแนวข้อความในแต่ละย่อหน้า และการค้นหาคำ เป็นต้น
การกำหนดค่าคงตัวสตริงสามารถกำหนดได้ทั้งนอกและในฟังก์ชัน
เมื่อกำหนดไว้นอกฟังก์ชัน ชื่อค่าคงตัวจะเป็นพอยเตอร์ชี้ไปยังหน่วยความจำ
ที่เก็บสตริงนั้น เมื่อกำหนดไว้ในฟังก์ชัน จะเป็นพอยเตอร์ไปยังหน่วยความจำ
ที่เก็บตัวมันเองการกำหนดค่าให้กับสตริงนั้น เราจะใช้เครื่องหมาย doublequote (“ ”)
เช่น “abc” คือ ชุดของอักขระที่มีขนาด 4 (รวม \0 ด้วย)
ข้อสังเกต
string constant are different from character constant
#define NME “Semi”
main ( ){
char *cpntr;cpntr=NME;
printf(“con\n”);printf(“%s, %u, %c\n”, “con”, “duc”,*“tor”);
printf(““%s, %u, %c\n”, NME, NME,*NME);
printf(““%s, %u, %c\n”, cpntr, cpntr,*cpntr);
}
ผลการรันโปรแกรม
concon, 37,t
Semi, 16,s
Semi, 16, S
การกำหนดค่าคงตัวสตริงให้แก่ตัวแปรพอยต์เตอร์และอะเรย์สามารถกำหนด
ค่าคงตัวสตริงให้พอยเตอร์หรืออะเรย์ได้ในฐานะค่าเริ่มต้น
เช่น main ( ){
char ary[ ] = “This is the house. ”;
char *cpntr=“This is the door.”;
printf(“%s %s”,ary,cpntr);
ผลการรันโปรแกรมจะเห็นได้ว่าการใช้งานดูไม่แตกต่างกันแต่ aryเป็นตัวแปรอะเรย์
ค่าที่ให้จะต้องเป็นค่าข้อมูลในอะเรย์ส่วน cpntrเป็นพอยเตอร์ ค่าที่ให้นั้นไม่ใช่ค่าข้อมูล
แต่เป็นค่าแอดเดรสเริ่มต้นของสตริง(ค่าคงตัวสตริงเป็นทั้งข้อมูลสตริงและพอยเตอร์)
นอกจากนี้ยังสามารถเพิ่มลดค่าตัวแปรพอยเตอร์ได้ แต่สำหรับอะเรย์ทำไม่ได้
การกำหนดตัวแปรสตริงในการกำหนดตัวแปรของสตริงอาศัยหลักการของอะเรย์
เพราะ สตริงก็คืออะเรย์ของอักขระที่ปิดท้ายด้วยnull character (\0)
และมีฟังก์ชันพิเศษสำหรับทำงานกับสตริงโดยเฉพาะเช่นต้องการสตริงสำหรับเก็บชื่อบุคคลยาว
ไม่เกิน 30อักขระต้องกำหนดเป็นอะเรย์ขนาด 31 ช่อง เพื่อเก็บ null character อีก 1 ช่อง
main ( ) {
char name[31];
printf(“Hi, What’s your name?\n”);
gets(name);
printf(“Nice to meet you, %s\n”);
}
ผลการรันโปรแกรม
Hi, What’s your name?
Jame Smith
Nice to meet you, Jame Smith
การดำเนินการเกี่ยวกับสตริง
ในการดำเนินการเกี่ยวกับสตริง จะมีฟังก์ชันที่อยู่
ในแฟ้ม ข้อมูล 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
วันพุธที่ 15 กรกฎาคม พ.ศ. 2552
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น