Lecture 2
เรื่องของ array and record
อะเรย์ เป็นโครงสร้างข้อมูลที่เรียกว่า Linear List มีลักษณะคล้ายเซ็ตในคณิตศาสตร์ คือ อะเรย์จะประกอบด้วยสมาชิกที่มีจำนวนคงที่ มีรูปแบบข้อมูลแบบเดียวกัน
การกำหนด Array
การกำหนดอะเรย์จะต้องรู้ชื่ออะเรย์ พร้อม subscript ซึ่งเป็นตัวกำหนดของขอบเขตอะเรย์ มีได้มากกว่า 1 จำนวน อะเรย์ ที่มี subscript มากกว่า 1 ตัว ขึ้นไปจะเรียกว่า อะเรย์หลายมิติ
ข้อกำหนดของการกำหนดค่าต่ำสุดและค่าสูงสุด subscript คือ
1.ค่าค่ำสุดต้องมีค่าน้อยกว่าหรือเท่ากับค่าสูงสุดเสมอ
2.ค่าต่ำสุด เรียกว่า ขอบเขตล่าง ( lower bound )
3.ค่าสูงสุด เรียกว่า ขอบเขตบน ( upper bound )
ค่า subscript ที่ใช้อ้างอิงถึงสมาชิก จะต้องมี ค่ามากกว่า หรือเท่ากับขอบล่าง และน้อยกว่า หรือเท่ากับขอบบน
Lower bound < subscript < upper bound ขนาดของ index แต่ตัวตัว ของ Array หาได้จาก
ขนาดของ subscript = upper bound - lower bound+ 1
จำนวนสมาชิกหรือขนาดของอะเรย์ n มิติ หาได้จาก
ขนาดของอะเรย์ = ผลคูณของขนาดของ subscript แต่ตังตัว เช่น ขนาดของอะเรย์ A = upperbound-lower bound + 1 10-1+1=10
การส่งอะเรย์ให้ฟังก์ชัน
สามารถกำหนดอะเรย์เป็นพารามิเตอร์ให้กับฟังก์ชัน ได้ 2 ลักษณะ
- กำหนด array element เป็นพารามิเตอร์ ส่งค่าให้กับฟังก์ชั่น ทำได้โดยอ้างชื่ออะเรย์ พร้อมกับระบุ subscript
- ส่งอะเรย์ทั้งชุดให้ฟังชั่น ทำได้โดยอ้างถึงชื่ออะเรย์ไม่มี subscript
การประกาศอาร์กิวเมนต์ ในฟังก์ชั่นเป็นอะเรย์
ถ้าเป็นอะเรย์มิติเดียว สามารถทำได้ทั้งหมด 3 วิธี
1. การประกาศขนาดของอะเรย์ที่ทำหน้าทีในการรับค่า
2. ไม่ต้องมีการประกาศ ขนาดของอะเรย์ มำหน้าที่ในการรับค่า
3. ตัวแปรที่ทำหน้าที่ รับค่าถูกกำหนดเป้นพอยน์เตอร์
อะเรย์ มี 1. อะเรย์ 1 มิติ 2. อะเรย์หลายมิติ เช่นอะเรย์ 2 มิติ
Lecture 3
โครงสร้างข้อมูลแบบเซ็ต
เป็นโครงสร้างข้อที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กัน ในภาษาซี จะไม่มีประเภทข้อมูลแบบเซ็ตนี้เหมือนกับในภาษาปาสคาล แต่สามารถใช้หลักการของการดำเนินงานแบบเซ็ตมาใช้ได้
ตัวดำเนินการของเซ็ต ( Set operators ) ประกอบด้วย
- set intersection
- set union
- set difference เป็นต้น
โครงสร้างข้อมูลแบบสตริง
สตริง ( String ) หรือ สตริงของอักขระ ( Character String ) เป็นข้อมูลที่ประกอบไปด้วย ตัวอักษร ตัวเลขหรือ เครื่องหมายเรียงติดต่อกันไป รวมทั้งช่องว่าง
โครงสร้างข้อมูลแบบสตริง
ความยาวของสตริง จะถูกกำหนดโดยขนาดของสตริง การกำหนดขนาดของสตริงนั้นต้องจองเนื้อที่ในหน่วยความจำให้กับ \ 0 ด้วย เช่น
“ This is String !” จะเป็นข้อมูลแบบสตริงยาว 16 อักขระ
โครงสร้างข้อมูลแบบสตริง
กำหนดสตริง
การกำหนดสตริงทำได้หลายแบบ คือ
1. กำหนดสตริงที่มีค่าคงตัว ( String Constants )
2. กำหนดโดยใช้ตัวแปรอะเรย์ หรือ พอยเตอร์
โครงสร้างข้อมูลแบบสตริง ( ต่อ )
การกำหนดตัวแปรสตริง
ในการกำหนดตัวแปรของสตริง อาศัยหลักการของอะเรย์ เพราะ สตริงก็คือ อะเรย์ของอักขระที่ปิดท้ายด้วย null character ( \0 ) และมีฟังก์ชันพิเศษสำหรับทำงานกับสตริงโดยเฉพาะ เช่น
ต้องการสตริงสำหรับเก็บชื่อบุคคลยาวไม่เกิน 30 อักขระ ต้องกำหนดเป็นอะเรย์ ขนาด 31 ช่อง เพื่อเก็บ null character อีก 1 ช่อง
โครงสร้างข้อมูลแบบสตริง
ฟังก์ชัน gets ()เป็นฟังก์ชันที่อ่านค่าจากแป้นพิมพ์มาเก็บไว้ในหน่วยความจำ ซึ่งก็คืออะเรย์ที่ตัวแปร name ชี้อยู่ รวมทั้งช่องว่าง จนกว่าผู้ใช้จะกด Enter จะเติม null character ให้
หากใช้ scanf ( ) จะถือว่า Jume เป็นค่าหนึ่ง และ Smith เป็นอีกค่าหนึ่ง เพราะมีช่องว่างคั่น และมี่เติม null character นั่นคือ จะได้อะเรย์ที่มีค่าเป็น Jame ไม่ใช่ String ที่มีค่าเป็น Jame Smith
โครงสร้างข้อมูลแบบสตริง
อะเรย์ของสตริง
ถ้าหากมีสตริงจำนวนมาก ก็ควรจะทำให้เป็นอะเรย์ของสตริง เพื่อที่จะเขียน โปรแกรมได้สะดวก การสร้างอะเรย์ของสตริง สามารถสร้างได้ทั้งแบบที่ให้ค่าเริ่มต้นและแบบที่กำหนดเป็นตัวแปร
คำถาม : อะเรย์มิติเดียว สามารถทำได้กี่วิธี มีอะไรบ้าง?