7/15/2552
RECORD DTS 03 14/07/2552
เป็นโครงสร้างข้อมูลที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กัน
ในภาษาซีจะไม่มีประเภทข้อมูลแบบเซ็ตนี้เหมือนกับในภาษาปาสคาล
แต่สามารถใช้หลักการของการดำเนินงานแบบเช็ตมาใช้ได้
วิธีการแก้ปัญหาเบื้องต้น
- จะต้องกำหนดเซ็ตของผู้เรียนที่ลงทะเบียนเรียนในแต่ละวิชา
- นำเซ็ตดังกล่าวที่ได้มาทำการ 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);
}
ผลการรันโปรแกรม
con
con, 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
6/30/2552
RECORD DTS 03 30/06/2552
ใน การเรียนครั้งนี้ได้รู้ถึงความหมายของอะเรย์ที่เป็นโครงสร้างที่เรียกว่า Linear List
มีลักษณะคล้ายเซ็ตในคณิตศาสตร์ คือ อะเรย์จะประกอบด้วยสมาชิกที่มีจำนวนคงที่
มีรูปแบบข้อมูลเป็นแบบเดียวกัน สมาชิกแต่ละตัวใช้เนื้อที่จัดเก็บที่มีขนาดเท่ากัน
เรียงต่อเนื่องในหน่วยความจำหลัก
เรื่องแถวลำดับและระเบียนข้อมูล
- ได้รู้ถึงการดำเนินการเกี่ยวกับอะเรย์ 1 มิติ และหลายมิติ
- การกำหนดค่าสูงสุดและค่าต่ำสุด
- การส่งค่าของอะเรย์ในโปรแกรม และฟังก์ชัน
- การประกาศอาร์กิวเมนต์ในฟังก์ชันเป็นอะเรย์
- การดำเนินการที่เกี่ยวข้องกับเรคคอร์ด
- ความสัมพันธ์ระหว่างเรคคอร์ดกับอะเรย์ และชนิดโครงสร้าง
และทำให้เข้าใจมากขึ้นเกี่ยวกับArray กับ Structure
Structure โครงสร้างข้อมูลหมายถึง การที่นำข้อมูลที่มีความเกี่ยวข้องกัน เช่น
ข้อมูลของนักศึกษาที่อาจประกอบด้วยชื่อ,นามสกุล,อายุ,เพศ,ชั้นเรียน
มารวมกันและจัดทำเป็นโครงสร้างข้อมูล แต่ในการเรียนใช้งานจริง ๆ
เราจะต้องสร้างตัวแปรชนิดโครงสร้างขึ้นมาใช้งานจริง ๆไม่สามารถใช้โครงสร้าง
student ได้การประกาศตัวแปรชนิดโครงสร้าง
struct name {
type var-1;
type var-2;
.....
type var-n;
} struct-variable;
6/29/2552
RECORD DTS 02 23/06/2552
สรุปบทเรียน
ประเภทของโครงสร้างข้อมูล
มี 1.ข้อมูลเบื้องต้น ได้แก่ จำนวนเต็ม( Integer )จำนวนจริง
(Real)และอักขระ( Character ) และ 2. ข้อมูลโครงสร้าง
ได้แก่ แถวลำดับ (Array)ระเบียนข้อมูล(Record)และแฟ้มข้อมูล
(Flie)2.โครงสร้างทางตรรกะ (Logial Data Struture)มี
1.โครงสร้างข้อมูลแบบเชิงเส้น(Linear Data Struture)
เป็นความสัมพันธ์ของข้อมูลจะเรียงต่อเนื่องกัน ได้แก่
ลิสต์(List)สแตก(Stack)คิว(Queue) สตริง (String)
เป็นต้น2.โครงสร้างข้อมูลแบบไม่เชิงเส้น( Non-Linear
Data Struture )ข้อมูลแต่ละตัวมีความสัมพันธ์กับข้อมูล
อื่นได้หลายตัวได้แก่ทรี(Tree)และกราฟ (Graph)และ
ทั้ง 2 แบบ มีลักษณะโครงสร้างที่แตกต่างกันขึ้นอยู่ที่
การเลือกใช้กัน 3.การแทนที่ข้อมูลด้วยหน่วยความจำหลักมี
ทั้งแบบสแตติกกับแบบไดนามิกแบบสแตติกจะมีการจอง
เนื้อที่แบบคงที่แน่นอน ทำให้เปลืองเนี้อที่แต่สำหรับ
แบบไดนามิกนั้นสามารถแบ่งเนื้อที่ได้ เมื่อไม่ได้
ใช้เนี้อที่นั้นจะสามารถแบ่งเนื้อที่เพื่อใช้ในงานอื่นๆได้
4.ขั้นตอนวิธีเป็นการแก้ปัญหาอย่างมีระบบมีการลำดับ
ขั้นตอนตั้งแต่ต้ยจนได้ผลลัพธ์ขั้นตอนวิธีที่ใช้ต้องสั้น
กระชับ และรัดกุม ง่ายต่อการเข้าใจ
ภาษาขั้นตอนวิธี(Algorithm Language)เป็นภาษาสำหรับเขียน
ขั้นตอนวิธีมีรุปแบบที่สั้น กระชับและรัดกุมและมีข้อกำหนด
1.การรับค่าที่ต่างกัน แทนด้วยต้วอักษรหรือผสมกับตัวเลข
2.กำหนดค่าให้ตัวแปร ใช้เครื่องหมาย
3.นิพจน์ที่เป้นตรรกศาตร์ จะใช้เครื่องหมมายเปรียบเทียบลำดับขั้น
ของการคำนวณ
การบ้าน
#include <stdio.h>
#include <string.h>
void main()
{
struct clock {
char name[30];
char serie[30];
char collection[20];
char gender[10];
char style[15];
int born;
int case_width ;
float case_thick;
int case_dimension;
char buy[10];
}
funny ;
strcpy(funny.name,"CARTIER");
strcpy(funny.serie,"Santos Dumont");
strcpy(funny.collection,"Santos");
strcpy(funny.gender,"women's");
strcpy(funny.style,"dress");
funny.born=1904;
funny.case_width=20;
funny.case_thick=5.7;
funny.case_dimension=20;
strcpy(funny.buy,"115,894");
printf("*****Clock_Santos*****\n\n");
printf(" Name : %s\n\n",funny.name);
printf(" Serie : %s\n\n",funny.serie);
printf(" Collection : %s\n\n",funny.collection);
printf(" Gender : %s\n\n",funny.gender);
printf(" Style : %s\n\n",funny.style);
printf(" Born : %d\n\n",funny.born);
printf(" Case_Width : %d\n\n",funny.case_width);
printf(" Case_Thick : %.1f\n\n",funny.case_thick);
printf(" Case_Dimension: %d\n\n",funny.case_dimension);
printf(" Buy : %s\n\n",funny.buy);