วันเสาร์ที่ 23 กรกฎาคม พ.ศ. 2554

สรุปบทเรียนวิชา โครงสร้างข้อมูลและขั้นตอนวิธี ครั้งที่ 4 วันที 14 กรกฎาคม 2554

Linked List

ลิงค์ลิสต์ (Linked List) เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่าง ๆ โดยมีพอยเตอร์เป็นตัวเชื่อมต่อแต่ละอิลิเมนท์ เรียกว่าโนด (Node) ซึ่งในแต่ละโนดจะประกอบไปด้วย 2 ส่วน คือ Data จะเก็บข้อมูลของอิลิเมนท์ และส่วนที่สอง คือ Link Field จะทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์

ในส่วนของ data อาจจะเป็นรายการเดี่ยวหรือเป็นเรคคอร์ดก็ได้ในส่วนของ link จะเป็นส่วนที่เก็บตำแหน่งของโหนดถัดไป ในโหนดสุดท้ายจะเก็บค่า Null ซึ่งไม่ได้ชี้ไปยังตำแหน่งใด ๆ เป็นตัวบอกการ
สิ้นสุดของลิสต์


ในลิงค์ลิสต์จะมีตัวแปรสำหรับชี้ตำแหน่งลิสต์ (List pointer variable)ซึ่งเป็นที่เก็บตำแหน่งเริ่มต้นของลิสต์ ซึ่งก็คือโหนดแรกของลิสต์นั่นเอง ถ้าลิสต์ไม่มีข้อมูล ข้อมูลในโหนดแรกของลิสต์จะเป็นNull

         โครงสร้างข้อมูลแบบลิงค์ลิสต์
โครงสร้างข้อมูลแบบลิงค์ลิสต์จะแบ่งเป็น 2 ส่วน คือ
1. Head Structure จะประกอบไปด้วย 3 ส่วน
ได้แก่ จำนวนโหนดในลิสต์ (Count) พอยเตอร์ที่ชี้ไปยัง
โหนดที่เข้าถึง (Pos) และพอยเตอร์ที่ชี้ไปยังโหนดข้อมูล
แรกของลิสต์ (Head)
2. Data Node Structure จะประกอบไปด้วยข้อมูล
(Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป

วันอังคารที่ 5 กรกฎาคม พ.ศ. 2554

สรุปบทเรียนวิชา โครงสร้างข้อมูลและขั้นตอนวิธี ครั้งที่ 3 วันที 27 มิถุนายน 2554

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 ลักษณะ
  1. กำหนด array element เป็นพารามิเตอร์ ส่งค่าให้กับฟังก์ชั่น ทำได้โดยอ้างชื่ออะเรย์ พร้อมกับระบุ subscript
  2. ส่งอะเรย์ทั้งชุดให้ฟังชั่น ทำได้โดยอ้างถึงชื่ออะเรย์ไม่มี  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


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


คำถาม : อะเรย์มิติเดียว สามารถทำได้กี่วิธี มีอะไรบ้าง?

วันพฤหัสบดีที่ 23 มิถุนายน พ.ศ. 2554

สรุปครั้งที่ 2 วิชา โครงสร้างข้อมูลและขั้นตอนวิธี ตอนเรียน C1 วันที่ 21/06/2011

4. ขั้นตอนวิธี (Algorithm)
เป็นวิธีการแก้ปัญหาต่างๆ อย่างมีระบบมีลำดับขั้นตอนตั้งแต่ต้นจนกระทั่งได้ผลลัพธ์ สามารถเขียนได้หลายแบบ การเลือกใช้ต้องเลือกใช้ขั้นตอนวิธีที่เหมาะสม กระชับและรัดกุม
ขั้นตอนวิธีที่ดีควรมีคุณสมบัติ ดังนี้
1. มีความถูกต้อง
2. ใช้เวลาในการปฏิบัติงานน้อยที่สุด
3. สั้น กระชับ มีเฉพาะขั้นตอนที่จำเป็นเท่านั้น
4. ใช้หน่วยความจำน้อยที่สุด
5. มีความยืดหยุ่นในการใช้งาน
6. ใช้เวลาในการพัฒนาน้อยที่สุด
7. ง่ายต่อการทำความเข้าใจ


การแสดงขั้นตอนวิธี เช่น การเขียนด้วยผังงาน (Flowchart)
ภาษาขั้นตอนวิธี (Algorithm Language)และภาษาธรรมชาติ(Natural Language) ผังงาน (Flowchart) เป็นการใช้สัญลักษณ์บอกขั้นตอนการทำงาน

ตัวอย่าง สัญลักษณ์ที่ใช้ในการเขียนผังงาน เช่น


 
ภาษาขั้นตอนวิธี (Algorithm Language) เป็นภาษา
สำหรับเขียนขั้นตอนวิธี มีรูปแบบที่สั้น กระชับและรัดกุม
และมีข้อกำหนด ดังต่อไปนี้
1. ตัวแปรจะต้องเขียนแทนด้วยตัวอักษร หรือตัวอักษรผสมตัวเลข
2. การกำหนดค่าให้ตัวแปร ใช้เครื่องหมาย
3. นิพจน์ที่เป็นการคำนวณจะมีลำดับขั้นของการคำนวณตามลำดับ คือวงเล็บ, ยกกำลัง , คูณหรือหาร, บวกหรือลบเครื่องหมายระดับความสำคัญเท่ากัน คำนวณจากซ้ายไปขวา

นิพจน์ที่เป็นตรรกศาสตร์ จะใช้เครื่องหมายในการเปรียบเทียบ คือ
= เท่ากับ = ไม่เท่ากับ
< น้อยกว่า > มากกว่า
น้อยกว่าหรือเท่ากับ มากกว่าหรือเท่ากับ

4. ข้อความไปยังขั้นตอน ใช้รูปแบบ คือ goto เลขที่ขั้นตอน
5. การเลือกทำตามเงื่อนไข จะต้องตรวจสอบเงื่อนไขก่อนทำงาน มีรูปแบบดังนี้
- แบบทางเลือกเดียว ใช้รูปแบบ คือ
if (condition) then statement 1
- แบบสองทางเลือก ใช้รูปแบบ คือ
if (condition) then statement 1
else statement 2

คำถาม
ภาษาขั้นตอนวิธีสามารถนำมาประยุกต์ใช่ในเชิงธุระกิจได้หรือไม่ (ตอบมาพอเข้าใจ)

วันพฤหัสบดีที่ 16 มิถุนายน พ.ศ. 2554

สรุปครั้งที่ 1 วิชา โครงสร้างข้อมูลและขั้นตอนวิธี ตอนเรียน C1 วันที่ 14 /06/2011

ความหมายของโครงสร้างข้อมูล
ข้อมูล  (DATA)  คือ ข้อเท็จจริงต่างๆ ซึ่งอาจจะเป็นตัวเลข หรือไม่เป็นตัวเลขก็ได้
โครงสร้าง (STRUCTURE)  คือความสัมพันธ์ของสมาชิกในกลุ่ม

โครงสร้างข้อมูล Data Structure คือ ความสัมพันธ์ ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้นๆ รวมทั้งกระบวนการในการจัดการข้อมูลโครงสร้าง เช่น เพิ่ม แก้ไข ลบ

ตัวอย่างโครงสร้างขอมูลประเภทต่างๆ ได้แก่ แถวลำดับ สตริง ลิสต์ สแตก คิว ทรี และ กราฟ

ประเภทโครงสร้างข้อมูล
โครงสร้างข้อมูลในภาษาคอมพิวเตอร์ ที่ใช้กันอยู่ ในปัจจุบัน แบ่งออกเป็น 2 ประเภท คือ
1.โครงสร้างข้อมูลทากายภาพ (Physical Data Structure)
2.โครงสร้างข้อมูลทางตรรกะ (Logical Data Structure)

ในการเลือกใช้ข้อโครงสร้างข้อมูลแบบใดนั้นจะต้องคำนึงถึง
1.โครงสร้างข้อมูลนั้น สามารถสร้างความสัมพันธ์ให้กับข้อมูลชุดนั้น ได้อย่างสมบูรณ์ที่สุด
2.โครงสร้างนั้นต้องง่ายต่อการดำเนินงานในระบบงาน

คำถาม
โครงสร้างฐานข้อมูลสามารถนำมาประยุกต์ใช้ กับชิวิตประจำวันได้หรือไม่ พร้อมหมายเหตุ

วันอาทิตย์ที่ 16 มกราคม พ.ศ. 2554

สรุปวิชาสำนักงานอัตโนมัติ วันที่ 4 มกราคม 2554

   ฐานข้อมูล คือ แหล่งรวมข้อมูลที่สัมพันธ์กันในด้านใดด้านหนึ่งซึ่งถูกจัดเก็บอย่างเป็นระเบียบ
ประโยชน์
       -
ลดความซ้ำซ้อนในการเก็บรักษา
       -
ลดความขัดแย้งหรือความต่างกันของข้อมูล
       -
พัฒนาระบบงานใหม่ทำได้สะดวกรวดเร็ว ใช้เวลาสั้น  และค่าใช้จ่ายต่ำลง
เครื่องมือการจัดการฐานข้อมูล
  
เป็นโปรแกรม DBMS มีระบบความปลอดภัยในการเข้าถึงข้อมูล
โครงสร้างฐานข้อมูล
  
โครงสร้างเชิงกายภาพ-การกำหนดจากวิธีการจัดเก็บข้อมูลในสื่อต่างๆ เช่น เนื้อที่,ตำแหน่ง
  
โครงสร้างเชิงตรรกะ-ความสัมพันธ์ของข้อมูล
การศึกษาเบื้องต้นเพื่อจัดทำฐานข้อมูล
        -
วิเคราะห์องค์กร
        -
กำหนดปัญหาและเงื่อนไข
        -
กำหนดวัตถุประสงค์
        -
กำหนดขอบเขต
การออกแบบฐานข้อมูล
    1.
การออกแบบระดับแนวคิด (Conceptual Design)
          -
วิเคราะห์ข้อมูลและความต้องการใช้ข้อมูล
          -
สร้างความสัมพันธ์โดยใช้แบบจำลอง ER*
          -
การนอร์มัลไลเซชั่น (การตรวจสอบความซ้ำซ้อน)
    2.
การเลือกโปรแกรมจัดการฐานข้อมูล (DBMS)
    3.
การออกแบบระดับตรรกะ
    4.
การออกแบบระดับกายภาพ
การเลือกโปรแกรมระบบจัดการฐานข้อมูล (DBMS Software Selection)
        -
ค่าใช้จ่าย
        -
คุณสมบัติของโปรแกรมจัดการฐานข้อมูล
        -
โครงสร้างฐานข้อมูล
        -
ความสามารถใช้กับหลายแพลตฟอร์ม
        -
การใช้ทรัพยากรของโปรแกรมระบบจัดการฐานข้อมูล
การจัดทำและนำข้อมูลเข้าสู่ฐานข้อมูล
        -
กำหนดเนื้อที่ที่จัดเก็บ
        -
นำข้อมูลไปจัดเก็บในตารางต่างๆในฐานข้อมูล
        -
กำหนดความปลอดภัยของการเข้าใช้ฐานข้อมูล
การทดสอบประเมินผล
 
การใช้งานฐานข้อมูล - เป็นการนำฐานข้อมูลมาใช้งาน ได้แก่ การสอบถามข้อมูลผ่านภาษาสอบถาม
ประเภทของไวรัส
        -Boot sector virus
        -Memory resident virus (
อยู่ในหน่วยความจำหลัก)
        -Macro virus
        -File virus
        -Multipartite virus
        -
โปรแกรมอื่นๆ (ลอจิกบอมบ์)
ลักษณะการแทรกตัวของไวรัส
        -
การแทรกตัวมากับโปรแกรมที่ดาวน์โหลด
การรักษาความปลอดภัยของข้อมูล
       -
การกำหนดการเข้าถึงข้อมูล
       -
การเข้ารหัส
       -
การควบคุมด้านต่่างๆ
       -
การมีโปรแกรมไว้เพื่อตรวจสอบ