ครูวราดา ขันตี
แผนกวิชาคอมพิวเตอร์ ธุรกิจ
วิทยาลัยเทคนิคศรีสะเกษ
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูล
และ
อัลกอริทึม
ความหมายของข้อมูล
 ข้อมูล คือ ข้อเท็จจริงที่มีอยู่ในชีวิตประจาวันเกี่ยวกับบุคคล
สิ่งของ หรือ เหตุการณ์ที่สนใจศึกษา ข้อมูลอาจเป็นตัวเลข
(numeric) หรืออาจเป็นตัวอักษรหรือข้อความ (alphabetic)
และข้อความที่เป็นตัวเลขผสมข้อความ (alphanumeric) นอกจาก
นี้ ข้อมูลอาจเป็นภาพ (image) หรือ เสียง(sound) ก็ได้
โครงสร้างข้อมูล
 โครงสร้างข้อมูล (data structures) เกิดจากคาสองคา คือ โครงสร้าง และ
ข้อมูล
 โครงสร้าง เป็นความสัมพันธ์ระหว่างสมาชิกในกลุ่ม
 โครงสร้างข้อมูล หมายถึง ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้าง
นั้น
การศึกษาโครงสร้างข้อมูลประเภทต่างๆ จะต้องศึกษาสิ่งต่อไปนี้
1. นิยาม (definition) เป็นการศึกษาความหมาย ความสัมพันธ์
ระหว่างข้อมูล และการดาเนินการในโครงสร้างข้อมูลประเภทนั้น
2. การนาไปใช้จริงในเครื่องคอมพิวเตอร์ (implement)
โครงสร้างข้อมูลในภาษาคอมพิวเตอร์
แบ่งเป็น 2 ประเภท คือ
 โครงสร้างข้อมูลทางกายภาพ (physical data structures)
 โครงสร้างข้อมูลทางตรรกะ (logical data structures)
โครงสร้างข้อมูลทางกายภาพ
เป็นโครงสร้างข้อมูลทั่วไปที่มีใช้ในภาษาคอมพิวเตอร์ ซึ่งแบ่งออกเป็น 2
ประเภทตามลักษณะข้อมูล ดังนี้
1. ข้อมูลเบื้องต้น (primitive data types)
2. ข้อมูลโครงสร้าง (structured data types)
โครงสร้างข้อมูลทางตรรกะ
เป็นโครงสร้างข้อมูลที่เกิดจากจินตนาการของผู้ใช้เพื่อใช้แก้ปัญหาในโปรแกรมที่สร้าง
ขึ้น จาแนกได้เป็น 2 ประเภท ดังนี้
1. โครงสร้างข้อมูลแบบเชิงเส้น (linear data structures)
2. โครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น (non-linear data
structures)
การแทนที่ข้อมูลในหน่วยความจาหลัก
ข้อมูลที่ต้องการประมวลผลจะถูกนาไปเก็บในหน่วยความจาหลัก ดังนั้นเมื่อเราต้องใช้
โครงสร้างข้อมูล จึงต้องมีการแทนที่ข้อมูลในหน่วยความจาหลักด้วย โดยทั่วไปการ
เขียนโปรแกรมคอมพิวเตอร์มีการแทนที่ข้อมูลในหน่วยความจาหลักอยู่ 2 วิธี คือ
1. การแทนที่ข้อมูลแบบสแตติก (static memory representation)
2. การแทนที่ข้อมูลแบบไดนามิก (dynamic memory representation)
การแทนที่ข้อมูลแบบสแตติก
 เป็นการแทนที่ข้อมูลที่มีการจองเนื้ อที่แบบคงที่แน่นอน การแทนที่แบบนี้ ต้อง
มีการกาหนดขนาดก่อนการใช้งาน
 ข้อเสีย คือไม่สามารถปรับขนาดให้เพิ่มขึ้นหรือลดลงได้ ไม่สามารถเก็บข้อมูล
เกินขนาดเนื้ อที่ที่กาหนดไว้ ถ้ากาหนดขนาดเนื้ อที่ไว้มากเกินจาเป็นทั้งๆ ที่มี
ข้อมูลอยู่จานวนน้อยจะทาให้สูญเสียเนื้ อที่โดยเปล่าประโยชน์
การแทนที่ข้อมูลแบบไดนามิก
 เป็นการแทนที่ข้อมูลที่ไม่ต้องจองเนื้ อที่และขนาดของเนื้ อที่ก่อนการใช้
งาน สามารถยืดหยุ่นได้ตามความต้องการของผู้ใช้ ถ้าข้อมูลมีน้อยก็ใช้
เนื้ อที่น้อย และถ้าข้อมูลมีมากก็สามารถใช้เนื้ อที่มากตามที่ใช้จริงได้
นอกจากนั้นส่วนเนื้ อที่ในหน่วยความจาหลักที่ไม่ใช้แล้วสามารถส่งคืน
เพื่อกลับมาใช้ใหม่ได้อีก
ขั้นตอนการพัฒนาโปรแกรม (Steps in program development)
มีขั้นตอนหลักๆ ดังนี้
1. นิยามปัญหา
2. เขียนอัลกอริทึม
3. ทดสอบความถูกต้องของอัลกอริทึม
4. แปลงอัลกอริทึมเป็นภาษาคอมพิวเตอร์
5. ติดตั้งโปรแกรม
6. จัดทาคู่มือ
อัลกอริทึม
 ขั้นตอนการทางานที่มีลาดับ มีความชัดเจน สามารถทางานได้จริง และมีจุดเริ่มต้น
และจุดสิ้นสุดการทางาน
 อัลกอริทึมหนึ่งๆ สามารถสื่อออกมาด้วยภาษาใดๆ ก็ได้ เช่น
 ภาษาพูด (Natural Language) เช่น ภาษาไทย อังกฤษ จีน ญี่ปุ่น เกาหลีฯลฯ
 ภาษาโปรแกรม (Programming Language) เช่น C/C++, Java ฯลฯ
การเขียนอัลกอริทึม
ทำได้2 วิธี
1. รหัสเทียม (Pseudo Code)
2. ผังงำน (Flowchart)
คอมพิวเตอร์ทาอะไรได้บ้าง
1. A computer can receive information
RAED and GET are used in pseudo code.
READ ใช้กรณีที่มีการอ่านข้อมูลจากแฟ้ มข้อมูล
GET ใช้กรณีรับข้อมูลจากแป้ นพิมพ์
2. A computer can put out information
PRINT , WRITE , PUT , OUTPUT or DISPLAY
are used in pseudo code.
PRINT ใช้กรณีแสดงผลลัพธ์ทำงแป้นพิมพ์
WRITE ใช้กรณีแสดงผลลัพธ์โดยเขียนลงแฟ้มข้อมูล
PUT , OUTPUT , DISPLAY ใช้กรณีแสดงผลลัพธ์ทำงหน้ำจอ
3. A computer can perform arithmetic
the following symbols can be written in pseudo code.
+ for Add
- for Subtract
* for Multiply
/ for Divide
() for Parentheses
COMPUTE หรือ CALCULATE ใช้หน้ำสูตร หรือคำสั่งคำนวณ
4. A computer can assign a value to a variable or memory
location.
กรณีกาหนดค่าเริ่มต้นให้ตัวแปร ให้ใช้คาว่า INITIALISE หรือ SET
กรณีกาหนดค่าที่เป็นผลจากการประมวลผลให้ตัวแปร ใช้สัญลักษณ์ = หรือ 
5. A computer can compare two variables and select one of
two alternate action.
keyword IF , THEN and ELSE are used
IF score < 50 THEN
grade = “F”
ELSE
grade = “P”
END IF
6. A computer can repeat a group of actions.
6.1 Leading decision loop
DOWHILE condition p is true
statement block
ENDDO
6.2 Trailing decision loop
REPEAT
statement
statement
UNTIL condition is true
6.3 Counted loop
DO loop_index = initial_value to final_value
statement_block
ENDDO
ตัวอย่าง Pseudo Code
Average of number
GET num1,num2,num2
COMPUTE sum=num1+num2+num3
COMPUTE average=sum/3
DISPLAY average
END
QUIZ (ให้เวลาทางาน 20 นาที)
จงเขียนอัลกอริทึมแบบ pseudo code เพื่อแสดงขั้นตอนของโจทย์ที่
กาหนดให้
1. รับค่าตัวเลขจานวนเต็ม 3 จานวนทางแป้ นพิมพ์ จากนั้นให้หาว่าตัวเลขที่มีค่ามาก
ที่สุดมีค่าเท่าไร แล้วแสดงบนหน้าจอ
2. รับค่าตัวเลขจานวนเต็ม 1 จานวนทางแป้ นพิมพ์ จากนั้นให้แสดงสูตรคูณของตัว
เลขที่รับ ทางหน้าจอภาพ
เขียนใส่กระดาษที่แจกให้ กระดาษสามารถเขียนได้ทั้งด้านหน้าและด้านหลัง
โครงสร้างข้อมูลแบบอาร์เรย์
 เป็นโครงสร้ำงข้อมูลที่ประกอบไปด้วยสมำชิกซึ่งมีรูปแบบข้อมูลเป็นแบบเดียวกัน เรียง
ติดต่อกันไป และมีจำนวนสมำชิกแน่นอน
 กำรอ้ำงถึงข้อมูลในหน่วยควำมจำจะใช้“ตัวบอกลำดับ” (Subscript) หรือ “ดรรชนี”
(Index)
 จำนวน ตัวบอกลำดับหรือดรรชนี จะเรียกว่ำ “มิติ” (Dimension)
 โดยทั่วไปตัวบอกลำดับจะเริ่มต้นจำก 0 เรียกว่ำ “ขอบเขตล่ำง” (Lower bound) ตัวบอก
ลำดับสุดท้ำย เรียกว่ำ “ขอบเขตบน” (Upper bound)
 กำรอ้ำงอิง หรือกำรเข้ำถึงสมำชิกตัวใด จะใช้ตัวบอกลำดับเพียงตัวเดียว
 โดยทั่วไปตัวบอกลำดับจะเริ่มต้นจำก 0 เรียกว่ำ “ขอบเขตล่ำง” (Lower bound)
 ตัวบอกลำดับสุดท้ำย เรียกว่ำ “ขอบเขตบน” (Upper bound)
อาร์เรย์ 1 มิติ
 อาร์เรย์หนึ่งมิติ เป็นอาร์เรย์ชนิดโครงสร้างที่สามารถจัดเก็บ
ข้อมูลชนิดเดียวกันเป็นกลุ่มหรือชุดที่เรียงต่อกันเป็นแถวใน
หน่วยความจาโดยใช้ตัวแปรชนิดเดียวกัน ชื่อเดียวกัน
82 61 43 56 78
Score[1] Score[2] Score[3] Score[4] Score[5]
Score
แต่ละเซลล์ในอาร์เรย์
การประกาศตัวแปรอาร์เรย์ 1 มิติ ในภาษา C
รูปแบบ
ชนิดข้อมูล ตัวแปรอาร์เรย์[ขนาด];
เช่น
int num[10];
float area[5];
อาร์เรย์ 2 มิติ
 อาร์เรย์สองมิติเป็นอาร์เรย์ที่มีลักษณะเป็นตาราง ประกอบด้วย ช่อง
หลายช่องเรียงกันเป็นแถว ในแนวนอน(Row) และในแนวตั้ง(Column)
Lab 1 Lab 2 Lab 3 Lab 4 Lab 5
Student 1 82 61 43 56 78
Student 2 75 65 55 60 70
Student 3 80 75 85 65 75
Score
ชื่ออาร์เรย์
การอ้างถึงอาร์เรย์ 2 มิติ
 รูปแบบ
ชื่ออาร์เรย์[ดัชนีกากับแถว(row)][ดัชนีกากับคอลัมน์(column)]
 ตัวอย่าง
Score[1][2] ได้แก่ค่า 61
Score[3][4] ได้แก่ค่า 65
Score[2][5] ได้แก่ค่า 70
Score Lab 1 Lab 2 Lab 3 Lab 4 Lab 5
Student 1 82 61 43 56 78
Student 2 75 65 55 60 70
Student 3 80 75 85 65 75
การประกาศตัวแปรอาร์เรย์ 2 มิติ ในภาษา C
รูปแบบ
ชนิดข้อมูล ตัวแปรอาร์เรย์[ขนาดแถว][ขนาดคอลัมน์];
เช่น
int num[2][3];
float area[5][4];
char stdname[5][20];

ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม