19/7/52

DTS04-14-07-2552

#Set and String #

-ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันเลย

#ตัวดำเนินการของเซ็ต#

-Set intersection การซ้ำกัน
-Set union การรวมกัน
-Set difference ความแตกต่าง
-สตริงของอักขระ ข้อมูลที่ประกอบด้วยตัวอักษร ตัวเลข หรือเครื่องหมาย
-สตริงในภาษา C คือ อาร์เรย์ของตัวอักษร ที่มีข้อมูลชนิดตัวอักษรเรียงกันไป แต่จะต้องมีจุดสิ้นสุดด้วย
-Null Character เป็นจุดสิ้นสุดของสตริง ต่างจากอาร์เรย์ปกติที่ไม่ต้องมีจุดสิ้นสุดของอาร์เรย์ ซึ่งจุสิ้นสุดของสตริงจะใช้ Null Characterหรือ ‘\0’

#การเก็บข้อมูลของสตริง#

มีการเก็บอยู่ 2 ส่วน
-ส่วนแรกเป็นข้อมูลตัวอักษร เก็บเรียงกัน
-ส่วนที่ 2 จะเก็บจุดสิ้นสุดของสตริง
-ข้อมูลชนิดตัวอักษร ต้องการหน่วยความจำเพียง 1 ส่วน
-ข้อมูลชนิดสตริงตัวอักษร 1 ตัว ต้องการหน่วยความจำ 2 ส่วน ส่วนแรกใช้เก็บข้อมูล และส่วนที่สองใช้เก็บจุดสิ้นสุดของสตริง
-การดู Character การดู String ดูได้จาก Single quote กับ double quote
-double quote ฟันหนู หรืออัญประกาศ หรือเขาคู่ หรือเครื่องหมายคำพูด
-single quote apostrophe หรือฝนทอง หรือเขาเดี่ยว
-ความยาวของสตริงจพถูกกำหนดโดยขนาดของสตริง
-การกำหนดตัวแปรสตริงในการกำหนดตัวแปรของสตริง อาศัยหลักการของอะเรย์
-สตริงก็คืออะเรย์ของอักขระที่ปิดท้ายด้วย null character (\0)

#ฟังก์ชันพิเศษสำหรับทำงานกับสตริงโดยเฉพาะ#

-getch() ใช้รับตัวอักขระ 1 ตัวจากแป้นพิมพ์ แต่ขณะรับไม่แสดงทางจอภาพฟังก์ชัน
-gets() เป็นฟังก์ชันใช้สำหรับรับข้อมูลชนิด String หรือ ข้อความ ซึ่งป้อนทางแป้นพิมพ์รับข้อมูลที่เป็นข้อความจากเป็นฟังก์ชันที่ใช้ในการแป้นพิมพ์เข้ามาเก็บไว้ในตัวแปรแบบอาเรย์ การใช้ต้องมีการประกาศตัวแปรแบบอาเรย์ และกำหนดจำนวนตัวอักษรที่ต้องการป้อน
-ถ้าหากมีสตริงจำนวนมาก ควรทำให้เป็นอะเรย์ของสตริง เพื่อเขียนโปรแกรมได้สะดวก
-การสร้างอะเรย์ของสตริง สามารถสร้างได้ทั้งแบบที่ให้ค่าเริ่มต้น และแบบที่กำหนดเป็นตัวแปร
-การใช้ฟังก์ชันต่าง ๆ ต้องนำเข้าไลบรารีไฟล์ strintg.h เสมอ
-Strlen ใช้ในการหาขนาดความยาวของข้อความ ว่ามีความยาวของข้อมูลกี่ตัวอักษร
-strcpy, strncpy 2 ฟังก์ชันนี้ จะเป็นฟังก์ชันในการคัดลอกสตริง ฟังก์ชันที่ 2 สามารถกำหนดความยาวของสตริงที่ต้องการจะคัดลอกได้
-strcpy การคัดลอกสตริงพื้นฐาน ทำการคัดลอกสตริงต้นทั้งหมด รวม Null Character ด้วย ใส่ในสตริงปลายทาง
-strcmp,strncmp ทำการเปรียบเทียบ
-strncmp จะกำหนดความยาวในการเปรียบเทียบได้
-strcat, strncat ใช้ในการต่อสตริง การทำงานของฟังก์ชัน จะจับสตริงชุดหนึ่งไปต่อท้ายกับสตริงอีกชุดหนึ่ง

#ข้อแนะนำการใช้ฟังก์ชันรับข้อมูล#

-การรับค่าข้อมูล string ใช้ฟังก์ชัน gets( ) หรือ scanf( )
-การรับตัวเลข หรือตัวอักษรเพียง 1 ตัว ที่ไม่ต้องการเห็นบนจอภาพ และไม่ต้องกดแป้น enter ใช้ getch( ) ถ้าต้องการเห็นบนจอภาพควรใช้ getche( )
-การรับข้อมูลตัวเลขที่มากกว่า 1 ตัว ใช้ฟังก์ชัน scanf( )
-การใช้ฟังก์ชัน scanf( ) รับข้อมูลติดต่อกันมากกว่า 2 ครั้ง อาจเกิดความผิดพลาดในการรับข้อมูล ควรใช้คำสั่ง ch = getchar( ); ก่อนที่จะรับข้อมูลครั้งที่ 3 ต้องมีคำสั่งประกาศตัวแปร char ch; ด้วย

6/7/52

DTS03-23-06-2552

#Array and Record#

-อะเรย์ เป็นโครงสร้างข้อมูลที่พบมากในการเขียนโปรแกรมภาษาคอมพิวเตอร์ทุกภาษา
-อะเรย์ เป็นพื้นฐานในการทำความเข้าใจกับโครงสร้างข้อมูลตัวอื่น ๆ
-อะเรย์ เป็นโครงสร้างข้อมูลที่มีลักษณะคล้ายเซ็ตในคณิตศาสตร์ ประกอบด้วยสมาชิก มีจำนวนคงที่ มีรูปแบบข้อมูลเป็นแบบเดียวกัน สมาชิกแต่ละตัวใช้เนื้อที่จัดเก็บที่มีขนาดเท่ากัน เรียงต่อเนื่องในหน่วยความจำหลัก
-อะเรย์ ถือเป็นโครงสร้างข้อมูลแบบ Static data structure
-อะเรย์จะมีขนาดคงที่ เป็นแถวลำดับแบบอันดับ (Ordered list ) ประกอบด้วยชุดของตัวแปร มีลักษณะเป็นช่องหลาย ๆ ช่องที่มีชื่อเดียวกัน ใช้เก็บข้อมูลชนิดเดียวกัน ข้อมูลในช่องแต่ละช่อง เรียกว่า สมาชิกของอะเรย์
-อะเรย์ คุณสมบัติหลัก ๆ คือ มีขนาดคงที่ ข้อมูลแสดงผลออกมาแบบเรียงลำดับ (inorder)
-สามารถดึงสมาชิกออกมาได้
-สามารถแทนที่สมาชิกได้
-สามารถเพิ่มสมาชิกใหม่เข้าไปในแถวลำดับได้
-สามารถลบสมาชิกที่มีอยู่ออกจากแถวลำดับได้
-อะเรย์ มีการจองพื้นที่หน่วยความจำเป็นชุด ๆ ประกอบด้วยจำนวนช่องข้อมูลหลายช่อง พื้นที่แต่ละช่องข้อมูลอยู่ในตำแหน่งที่ต่อเนื่องกันไป
-การเข้าถึงข้อมูลใด ๆ ทำโดยระบุหมายเลขกำกับช่องข้อมูล เรียกว่า ตัวดัชนี หรือ ตัวชี้ หรือ ซับสคริปต์
-การกำหนดอะเรย์ ต้องกำหนดชื่ออะเรย์ พร้อม subscript ซึ่งเป็น ตัวกำหนดขอบเขต มีมากกว่า 1 ตัว จำนวน subscript เป็นตัวบอกมิติของอะเรย์
-อะเรย์ที่มี subscript มากกว่า 1 ตัวขึ้นไป เรียกว่า อะเรย์หลายมิติ
-การกำหนด subscript ประกอบไปด้วย ค่าสูงสุด และ ค่าต่ำสุดของ subscript
-ค่าต่ำสุดต้องมีค่าน้อยกว่า หรือเท่ากับค่าสูงสุดเสมอ
-ค่าต่ำสุด เรียกว่า ขอบเขตล่าง
-ค่าสูงสุด เรียกว่า ขอบเขตบน
-ค่า subscript ที่ใช้อ้างอิงถึงสมาชิก ต้องมีค่ามากกว่า หรือเท่ากับขอบเขตล่าง และน้อยกว่าหรือเท่ากับขอบเขตบน
-ขนาดของ index แต่ละตัว ของ Array หาได้จาก ขนาดของ subscript = upper bound – lower bound + 1
-อะเรย์ใช้ index บ่งชี้ตำแหน่ง การดึงข้อมูล และการจัดเก็บข้อมูลลงในอะเรย์ สิ่งที่ต้องคำนึง คือ ค่าต่ำสุด ในแต่ละมิติ แทนด้วย Lค่าสูงสุด ในแต่ละมิติ แทนด้วย U
-จำนวนหรือขนาดของอะเรย์ Range = ( U -L ) + 1
-จำนวนสมาชิก หรือ ขนาดของอะเรย์ n มิติ หาได้จาก ขนาดของอะเรย์ = ผลคูณของขนาดของ subscript แต่ละตัว

#การจัดเก็บอะเรย์ในหน่วยความจำหลัก#

ใช้เนื้อที่ขนาดเท่ากัน เพื่อเก็บสมาชิกแต่ละตัว โดยเนื้อที่จะเรียงต่อเนื่องกัน พิจารณาตามประเภทในมิติต่าง ๆ ดังนี้
1]โครงสร้างข้อมูลอะเรย์หนึ่งมิติ คือ มีการจัดเก็บข้อมูลต่อเนื่องกันไปเป็นแถวต่อเนื่องกันตลอด เหมือนกับตารางแถวเดียว มีดัชนีอ้างเพียง 1 ตัว
-data-type array-name[expression]
-data-type คือ ประเภทของข้อมูลอะเรย์
-array-name คือ ชื่อของอะเรย์
-expression คือ จำนวนเต็ม ระบุจำนวนสมาชิกของอะเรย์
-ถ้าเป็นอะเรย์มิติเดียว สามารถทำได้ทั้งหมด 3 วิธี


[1] มีการประกาศขนาดของอะเรย์ที่ทำหน้าที่ในการรับค่า
[2]ไม่ต้องมีการประกาศขนาดของอะเรย์ที่ทำหน้าที่ในการรับค่า
[3]ตัวแปรที่ทำหน้าที่รับค่าถูกกำหนดเป็นพอยน์เตอร์


-การส่งผ่านอะเรย์ให้ฟังก์ชัน เป็นการส่งผ่านโดยการอ้างอิง เรียกว่า Pass by reference ค่าของสมาชิกแต่ละตัวจะไม่ได้ถูกส่งไปให้ฟังก์ชัน แต่ชื่อของอะเรย์จะถูกมองเป็นตำแหน่งในหน่วยความจำที่ใช้เก็บสมาชิกตัวแรกซึ่ง address นี้จะถูกส่งให้กับอาร์กิวเมนต์ที่ตรงกัน
-อาร์กิวเมนต์เป็น pointer ชี้ไปยังสมาชิกตัวแรกของอะเรย์
-Pass by value การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้ โดยส่งค่าของตัวแปรหรือค่าคงที่ไปโดยตรง ค่าของอาร์กิวเมนต์ที่ผ่านให้กับฟังก์ชันจะถูกคัดลอกส่งให้กับฟังก์ชัน และจะถูกเปลี่ยนแปลงเฉพาะภายในฟังก์ชันโดยค่าของอาร์กิวเมนต์ในโปรแกรมที่เรียกใช้จะไม่เปลี่ยนแปลง
-Pass by reference การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งเป็นค่าตำแหน่งที่อยู่ของตัวแปรไปซึ่งหากภายในฟังก์ชันมีการเปลี่ยนแปลงค่าของอาร์กิวเมนต์ที่ส่งไป ก็จะมีผลทำให้ค่าของอาร์กิวเมนต์นั้นในโปรแกรมที่เรียกใช้เปลี่ยนไปด้วย


2]โครงสร้างข้อมูลอะเรย์สองมิติ มีการจัดเก็บข้อมูลแบบตารางสองทาง ข้อมูลมีการจัดเรียงกันตามแนวแถว และ แนวหลัก การอ้างถึงข้อมูลต้องระบุตำแหน่งแถว และตำแหน่งหลักที่ข้อมูลนั้นอยู่
-การเข้าถึงสมาชิกตัวใด ใช้ตัวบอกลำดับ 2 ตัว
-โครงสร้างสามารถมองได้ในลักษณะ Matrix หรือ Table สมาชิกถูกจัดเรียงอยู่ในลักษณะแถว และคอลัมน์
-Structure โครงสร้างที่สมาชิกแต่ละตัวมีประเภทข้อมูลแตกต่างกัน อาจมีสมาชิกเป็นจำนวนเต็ม ทศนิยม อักขระ อะเรย์ หรือพอยเตอร์ หรือแม้แต่ structure ด้วยกันก็ได้
-Structure กับ pointer
-เราสามารถที่จะอ้างถึงที่อยู่เริ่มต้นของ structure ได้เหมือนกับตัวแปรอื่น ๆ โดยใช้ตัวดำเนินการ &
-ถ้า variable เป็นตัวแปรประเภท structure &variable จะเป็นเลขที่อยุ่เริ่มต้นของตัวแปร
-Pointer เป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่งที่อยู่ (Address) ของตัวแปรที่อยู่ในหน่วยความจำ