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

DTS 04-15/072552

โครงสร้างข้อมูลแบบเซ็ต
เป็นโครงสร้างข้อมูลที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันในภาษาซี
จะไม่มีประเภทข้อมูลแบบเซ็ตนี้เหมือนกับในภาษาปาสคาล
แต่สามารถใช้หลักการของการดำเนินงานแบบเช็ตมาใช้ได้
วิธีการแก้ปัญหาเบื้องต้น
- จะต้องกำหนดเซ็ตของผู้เรียนที่ลงทะเบียนเรียนในแต่ละวิชา
- นำเซ็ตดังกล่าวที่ได้มาทำการ 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

วันอาทิตย์ที่ 5 กรกฎาคม พ.ศ. 2552

DTS03 5/072552

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

อาร์เรย์ 1 มิติเป็นตัวแปรที่เก็บข้อมูลเพียงแถวเดียวหรือชั้นเดียวเช่นในการคำนวณหาสมาชิกของอาร์เรย์ 1 มิติทำได้ดังนี้จำนวนสมาชิกของอาร์เรย์ = (u-l)+1u คือค่าสูงสุด หรือ Upper boundl คือค่าต่ำสุด หรือ Lower bound ส่วน 2 มิติสามารถหาได้ดังนี้จำนวนสมาชิก = M x N
รูปแบบของการประกาศตัวแปรอาร์เรย์มิติเดียวtype array-name[n];type คือ ชนิดของตัวแปรอาร์เรย์ที่จะสร้างขึ้น เช่น int,float,char เป็นต้นarray-name คือ ชื่อของตัวแปรอาร์เรย์ที่ต้องตั้งให้สื่อและเข้ากับชนิดของตัวแปรและจะต้องไม่ไปตรงกับคำสงวนของภาษาซีด้วยn คือขนาดของตัวแปรอาร์เรย์ที่จะสร้างขึ้น

อาร์เรย์ 2 มิติมีลักษณะการกำหนดตำแหน่งแบบแถวและคอลัมน์รูปแบบของการประกาศตัวแปรอาร์เรย์ 2 มิติtype array-name[n][m];type คือ ชนิดของตัวแปรอาร์เรย์ที่จะสร้างขึ้น เช่น int,float,char เป็นต้นarray-name คือ ชื่อของตัวแปรอาร์เรย์ที่ต้องตั้งให้สื่อและเข้ากับชนิดของตัวแปรและจะต้องไม่ไปตรงกับคำสงวนของภาษาซีด้วยn คือ จำนวนแถวของตัวแปรอาร์เรย์m คือ จำนวนคอลัมน์ของตัวแปรอาร์เรย์เช่น int num[3][5];
Structure โครงสร้างข้อมูลหมายถึง การที่นำข้อมูลที่มีความเกี่ยวข้องกัน เช่น ข้อมูลของนักศึกษาที่อาจประกอบด้วยชื่อ,นามสกุล,อายุ,เพศ,ชั้นเรียน มารวมกันและจัดทำเป็นโครงสร้างข้อมูล

struct คือ คำที่ใช้กำหนดโครงสร้างข้อมูล(ต้องมีเสมอ)name คือ ชื่อของโครงสร้างข้อมูลที่จะสร้างขึ้นtype var-1,type var-2 คือชื่อตัวแปรในกลุ่มโครงสร้างข้อมูลstruct-variable คือชื่อของตัวแปรชนิดโครงสร้างที่ต้องการสร้างขึ้นจะมีลักษณะโครงสร้างภายในเหมือนกับโครงสร้างข้อมูลที่กำหนดตัวอย่าง struct student student1;

การอ้างถึงสมาชิกในตัวแปรชนิดโครงสร้าง
struct-name.variable-namestruct-name คือ ชื่อของตัวแปรชนิดโครงสร้าง (ไม่ใช่ชื่อโครงสร้าง). คือเครื่องหมายขั้นระหว่างชื่อตัวแปรชนิดโครงสร้างกับตัวแปรที่เป็นสมาชิก

variable-name คือชื่อของตัวแปรที่เป็นสมาชิกการกำหนดข้อมูลให้ตัวแปรชนิดโครงสร้างเราสามารถกำหนดได้เหมือนตัวแปรทั่วไปแต่ต้องอ้างอิงถึงสมาชิกให้ถูกต้อง เช่น student1.age = 15;student1.sex = 'M'; กรณีถ้าเป็นอาร์เรย์ของตัวแปรชนิดโครงสร้างสามารถเขียนได้ดังนี้ student1[0].age = 15;

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

DTS01 16/06/2552

ปฐมนิเทศ
โครงสร้างข้อมูล (DATA STRUCTURE)

ผู้สอน : อาจารย์ปรมัตถ์ปัญปรัชญ์ ต้องประสงค์
E-mail : phorramatpanyaprat@hotmail.com

การเก็บคะแนน 100 แบ่งออกเป็น 60:40

- การนำเสนองานและมีส่วนร่วมในกิจกรรมเรียน 10

- จัดทำรายงาน/แบบฝึกหัด 30

- mid 20 - Final 40

*ความสำคัญของวิชาโครงสร้างข้อมูล

*โครงสร้างข้อมูล หมายถึง ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น ๆ เช่น การสร้างบ้าน ก็ต้องมีส่วนประกอบในการสร้าง ได้แก่ หิน ทราย ปูน เป็นต้น

ให้ไปสมัคร E-mail ของ gmail ก่อน โดยการตั้ง ชื่อ E-mail คือ u ตามด้วยรหัสประจำตัว