Transcript (-2) + 1

เอกสารประกอบการสอน
โครงสร้างข้อมูลและการจัดการ
แฟ้ มข้อมูล
มหาวิทยาลัยรัตนบัณฑิต
คณะบริหารธุรกิจ ภาควิชาคอมพิวเตอร์ ธุรกิจ
ปี การศึกษา 2550
---------------------------------------------------------------
Course Syllabus
บริ หารธุรกิจบัณฑิต
BC.302 โครงสร้างข้อมูลและการจัดการแฟ้ มข้อมูล
( Data Structure and File Management )
สถานภาพของวิชา
วิชาเอกบังคับ
เงื่อนไขรายวิชา
สอบผ่านวิชา คธ.300 การเขียนโปรแกรม
จานวนชัว่ โมง/สัปดาห์ 3 ( 3-0 )
เนื้อหารายวิชา (Course Description)
ศึกษาหลักการด้านโครงสร้างข้อมูลวากยสัมพันธ์โครงสร้าง
ข้อมูลพื้นฐาน ได้แก่ Record, Array, Stack, Queue,Tree และ Graph
การประยุกต์และวิเคราะห์โครงสร้างข้อมูล การแก้ปัญหาโดยวิธีการทาง
คอมพิวเตอร์สาหรับการเรี ยงลาดับข้อมูล การค้นหาข้อมูล ความรู้
เกี่ยวกับการประมวลผลแฟ้ มข้อมูล นิยามของระเบียน แฟ้ มข้อมูล
และการจัดกลุ่มระเบียน การเข้าถึงโดยลาดับ ลักษณะทางกายภาพ
ของสื่ อบันทึกแบบลาดับ เทคนิคในการปรับปรุ ง การลบและเพิ่มระเบียน
ในแฟ้ มข้อมูล การเข้าถึงโดยสุ่ มและลักษณะของสื่ อ
การวัดผลการเรี ยน
จิตพิสยั
รายงาน
สอบเก็บคะแนน
สอบปลายภาค
รวม
10%
10%
30%
50%
100%
เนื้อหาที่เรี ยนสัปดาห์ที่ 1
ความรู ้พ้นื ฐานทัว่ ไปด้านคอมพิวเตอร์
- ลักษณะของโปรแกรมที่มีโครงสร้างที่ดี
- โครงสร้างโปรแกรมภาษาปาสคาล
- การจัดสรรพื้นที่ความจา List
Ordered List
Linked List
Storage Structure
ทบทวนความรู้พ้นื ฐานของคอมพิวเตอร์
ความหมายของคอมพิวเตอร์
เครื่ องมืออิเล็กทรอนิกส์ชนิดหนึ่งที่สามารถรับข้อมูลเข้า
ประมวลผล และแสดงผลลัพธ์ได้อย่างถูกต้องและรวดเร็ ว
องค์ ประกอบของระบบคอมพิวเตอร์
Hardware
Software
Peopleware
ทบทวนความรู้พ้นื ฐานของคอมพิวเตอร์
ส่ วนประกอบของระบบคอมพิวเตอร์
INPUT
PROCESS
OUTPUT
DATA STURCTURE
การแสดงความสัมพันธ์ระหว่างชุดข้อมูลในโครงสร้างต่าง ๆ
เช่น Array Stack Queue Linked List Tree Graph เป็ นต้น
ชนิดของข้อมูล
DATA TYPE
SCALE
STRUCTURE
STNADARD USER DEFINE
INTEGER
REAL
CHARACTER
STRING
BOOLEAN
SUBRANGE
ENUMERATED
SET
ARRAY
RECORD
FILE
POINTER
ลักษณะโปรแกรมที่มีโครงสร้างที่ดี
แบ่งได้ 3 ลักษณะ
1. โครงสร้ างข้ อมูลแบบเรียงลาดับ Sequential
ข้อมูลเข้า
A
ข้อมูลออก
B
2. โครงสร้ างข้ อมูลแบบตัดสิ นใจเลือก Dission
A
B
ลักษณะโปรแกรมที่มีโครงสร้างที่ดี
3. โครงสร้ างแบบวงจรปิ ด Loop
A
โครงสร้างของภาษา
ทุก ๆ ภาษาจะมีโครงสร้าง เช่น PASCAL COBOL C C++ เป็ นต้น
EX ภาษา PACAL ประกอบ 4 โครงสร้ าง
1. ชื่อโปรแกรม Heading Program
Program student;
2. กาหนดค่าตัวแปร Declaration Part
Var Age: Integer;
3. โปรแกรมย่อย Procedure Function
4. ส่ วนที่เขียนความต้องการของผลลัพธ์ Main Program
ตัวอย่างโปรแกรมภาษาปาสคาล
Program My_First_Program;
Var A,B,C : Integer;
Procedure Line;
Begin
For I : 1 to 80 Do
Write (‘-’);
Writeln;
End;
Heading Program
Declaration Part
Procedure Function
ตัวอย่างโปรแกรมภาษาปาสคาล (ต่อ)
Begin
A := 10;
B := 20;
C : = A + B;
Line;
Writeln (c);
Line;
Readln;
End.
Main Program
การจัดสรรเนื้อที่ในหน่วยความจา
LIST เป็ นการจัดเก็บข้อมูลเรี ยงต่อกัน แบ่งออกเป็ น 2 ส่ วน
Address Node
1
2
3
4
5
6
Information
ข่าวสารที่บรรจุอยูใ่ นแต่ละ
Node
ประเภทของ LIST
1. Ordered List เป็ นตารางเรี ยงต่อกันเป็ นช่อง ๆ เก็บค่าไว้ในวงเล็บ
เรี ยงจากน้อยไปหามาก (อาทิตย์ , จันทร์ , อังคาร)
จาแนกเป็ น 2 ชนิด คือ
1.1 Sequential อาศัยการแทนที่ดว้ ย Array
Sun
Day (1)
Mon
Tue
Day(2)
Day(3)
Wed
Day(4)
Thu
Day(5)
Fri
Sat
Day(6)
Day(7)
ประเภทของ LIST
1.2 Pointer การสร้ างตารางออกเป็ น 2 ช่ อง
INFO
POINTER
Mon
Head
Sat
Sun
^
Tue
Thu
Fri
Wed
ประเภทของ LIST
2. Linked List
Wed
Mon
Sat
Sun
Tue
Fri
Thu
Day (7)
1
2
3
4
5
6
7
7
5
^
2
1
1
3
6
LINK (7)
5
2
3
4
6
7
STORAGE STRUCTURE
โครงสร้างของหน่วยความจาหลัก ประกอบด้วย
** LINEAR
เป็ นโครงสร้างข้อมูลเชิงเส้นโดยเก็บข้อมูลเรี ยง
ติดต่อกันและสามารถคานวณได้ ORDERED LIST
** NON-LINEAR
เป็ นโครงสร้างข้อมูลที่ไม่เรี ยงต่อกัน แต่สามารถ
คานวณที่อยูไ่ ด้เช่นกัน POINTER , LINKED LIST
การจาแนกโครงสร้างข้อมูลตามการจัดลาดับ
แบ่งออกเป็ น 2 ประเภท
1. STATIC LIST
ใช้ในการเรี ยกใช้ขอ้ มูลที่มีขนาดแน่นอน โดยอาศัย
การจองพื้นที่ให้ก่อน เช่น ARRAY
2. DYNAMIC LIST
เป็ นการเรี ยกใช้ขอ้ มูลขนาดไม่แน่นอน มีการลด
การเพิม่ เช่น STACK , QUEUE , LINKED LIST , TREE
GRAPH
เนือ้ หาที่เรียนสั ปดาห์ ที่ 2-3
โครงสร้ างข้ อมูลแบบ Array
- โครงสร้ างของ Array
ลักษณะของ Array
การเก็บ Array ใน Computer
One Dimention Array
Two Dimention Array
Tree Dimention Array
Triangular Matrix
ARRAY
เป็ นโครงสร้ างข้ อมูลแบบ LINEAR โดยมีการจองพืน้ ที่เป็ น
ตารางเป็ นช่ องมีขนาดทีเ่ ท่ ากันและมีข้อมูลเป็ นชนิดเดียวกัน
SUBSCAIP
A (5) หมายถึง การจองพื้นที่ ARRAY A จานวน 5 ช่อง
A1
A2 A3
A4
A5
ARRAY
ลักษณะของ ARRAY
- ชื่อของ ARRAY
- ขนาด , มิติ
- ค่ าสู งสุ ด UPPER , ค่ าตา่ สุ ด LOWER
A(l:u)
A ( -3 : 8 )
สู ตรการหาจานวนช่ องของ ARRAY
A ( l : u) = u - l + 1
l คือ ค่ าตา่ สุ ดของ ARRAY
u คือ ค่ าสู งสุ ดของ ARRAY
A (-3:8) = 8 - (-3) + 1
= 12 ช่ อง
สู ตรการหาตาแหน่งของ ARRAY
A(i) = i - l + 1
A(2) = 2 - (-2) + 1
=5
สู ตรการหาAddress ของ ARRAY
Address [A(i)] = A(l1) + C (i-1)
A(l1) คือ ค่าตาแหน่งของหน่วยความจา C คือ ค่าขนาดเก็บข้อมูลแต่ละช่อง
ชนิดของ ARRAY
ONE-DIMENSION ARRAY
TWO-DIMENSION ARRAY
THREE-DIMENSION ARRAY
ONE-DIMENSION ARRAY
เป็ นตารางหรือแถวข้ อมูลมีแถวเดียวเท่ านั้น
โจทย์ ตัวอย่ าง
 จงคานวณหา Address ของ A(20) โดยกาหนดให้
ArrayA(-3 : 50) ขนาดหน่ วยความจา 540 Byte ตาแหน่ งแรก
ของA(1) บันทึกตาแหน่ งความจา 3000
จานวนช่ อง A(l : U)
=U-l+1
= 50 - (-3) + 1
= 54
โจทย์ ตัวอย่ าง (ต่ อ)
ขนาดของหน่ วยความจา
540
ขนาดแต่ ละช่ อง

Address[A(i)]


= จานวนช่ อง x ขนาดแต่ ละช่ อง
=
54 x ขนาดแต่ ละช่ อง
=
54 / 540
=
10
=
3000 + 10(20 - 1)
=
3000 + 190
= 3,190
TWO-DIMENSION
ARRAY
เป็ นตารางโดยประกอบไปด้ วย ROW กับ COLUMN
โดยให้ M แทน ROW และให้ N แทน COLUMN
COLUMN
Row
สู ตรการหาจานวนของ ARRAY
A (l : u) = (u1 - l1 + 1)(u2 - l2 + 1)
สู ตรการหาAddress ของ ARRAY
Address [A(i,j) = Address[A(l1,l2)] + C (u2-l2+1)
(i-l1)+C (j-l2)
A(l1,l2) คือ ค่ าตาแหน่ งของหน่ วยความจา C คือ ค่ าขนาดเก็บข้ อมูลแต่ ละช่ อง
โจทย์ ตัวอย่ าง
จงหาจานวนช่ องและ Address[A(2,2)] โดยกาหนดให้ Array
A[3:6,2:5) Address [A(3,2)] = 2500 และ 1 ช่ องเก็บ 5 Word
จานวนช่ อง = A (l : u) = (u1 - l1 + 1)(u2 - l2 + 1)
= (6 - 3 + 1 )(5 - 2 + 1)
= 16 ช่ อง
Address[A(i,j)] = Address[A(l1,l2)] + C (u2-l2+1) (i-l1)+C (j-l2)

THREE-DIMENSION ARRAY
จะประกอบด้ วย A [1 : l , 1 : M , 1 : N]
สู ตรการหาจานวนของ ARRAY
A (l : u) = (u1 - l1 + 1)(u2 - l2 + 1)
(u3 - l3 + 1)
สู ตรการหา Address ของ ARRAY
Address [A(i,j,k) = Address[A(l1,l2,l3)] + C (i-l1)
MN+C (j-l2) N + C (k-l3)
A(l1,l2,l3) คือ ค่ าตาแหน่ งของหน่ วยความจา
C
คือ ค่ าขนาดเก็บข้ อมูลแต่ ละช่ อง
M = u2 - l2 + 1 N = u3 - l3 + 1
โจทย์ ตัวอย่ าง
จงหาจานวนช่ องและ Address A[2,1,1] โดยกาหนดให้
Array A[0:4,1:9,3:6] Address [A(0,1,3)] = 3500 และ 1 ช่ องเก็บ
5 Word
หาจานวนช่ อง
เฉลย
A (l : u) = (u1 - l1 + 1)(u2 - l2 + 1)(u3 - l3 + 1)
= (4 - 0 + 1) (9 - 1 + 1) (6 - 3 + 1 )
= 5 (9) (4)
= 180 ช่ อง
โจทย์ ตัวอย่ าง
Address [A(i,j,k) = Address[A(l1,l2,l3)] + C (i-l1)
MN+C (j-l2) N + C (k-l3)
= Address[A(0,1,3)] + 5 (2 - 0) (3)(6)+5(1 - 1) 4 +
5(1 - 3)
= 3500 + 360 + 0 - 10
= 3850
สรุปสู ตรการคานวณหาจานวนช่ องใน
ARRAY ทั้ง 3 มิติ
ONE
A (l : u) = u - l + 1
TWO
A (l : u) = (u1 - l1 + 1)(u2 - l2 + 1)
THREE
A (l : u) = (u1 - l1 + 1)(u2 - l2 + 1)
(u3 - l3 + 1)
สรุปสู ตรการคานวณหา Address ของ ARRAY ทั้ง 3 มิติ
ONE
TWO
THREE
Address [A(i) = Address[A(l1)] + C (i-1)
Address [A(i,j) = Address[A(l1,l2)] + C (u2-l2+1)
(i-l1)+C (j-l2)
Address [A(i,j,k) = Address[A(l1,l2,l3)] + C (i-l1)
MN+C (j-l2) N + C (k-l3)
M คือ u2 - l2 + 1 N คือ u3 - l3 + 1
Triangular Matrix
สามารถนามาใช้ ในการออกแบบโครงสร้ างข้ อมูลทีป่ ระหยัด
พืน้ ที่ความจาได้ เพือ่ แทนความสั มพันธ์ ของสิ่ งสองสิ่ ง โดยมองเป็ น
Array 2 มิติ (i,j)
EX..
สมมติว่ามีคน 5 คน แทนด้ วยตัวเลข 1,2,3,4 และ 5
โดยแบ่ งกลุ่มทีห่ นึ่ง {1,3,5} และกลุ่มทีส่ อง {2,4}
0
0
1
0
1
0
0
0
1
0
1
0
0
0
1
0
1
0
0
0
1
0
1
0
0
0
0
1
0
1
0
0
0
1
0
1
0
0
0
1
0
1
0
0
0
1
0
1
0
0
Array ทีใ่ ช้ แทน Triangular Matrix
0
1
1
2
0
3
0
4
1
0
1
0
1
5
6
7
8
9
0
10
การบ้านครั้งที่ 2
1. เก็บคะแนนสอบนักเรี ยนเลขประจาตัว 1741-1750 ได้
คะแนนดังนี้
50,60,70,60,55,71,62,59,41,70
กาหนด u=1750 l=1741 จงหาจานวนช่องของarray