Lời nói đầu
Với tớc phát triển hiện nay thì mơn tin học trở thành một môn học không
thể thiếu trong các trường phổ thông và các trường đại học. Cuốn sách Cấu Trúc
Dữ Liệu và Giải Thuật của PGS. Đỗ Xuân Lôi đã trở thành tài liệu học tập và
tham khảo của sinh viên ngành công nghệ thông tin ở nhiều cơ sở đào tạo Cao
Đẳng, Đại Học và sau Đại Học.
Để việc học môn này trở nên dễ dàng hơn em đã viết lại một số thuật toán trong
sách dưới dạng các Unit.
2
Phần 1:Yêu cầu của đề:
Viết unit các thuật toán trong sách cấu trúc dữ liệu và giải thuật bằng
ngôn ngữ Pascal
Phần 2: Giới thiệu chi tiết đề tài
Chương 1: Tổng Quan:
I.
Công việc đã làm
1. Tiến trình công việc:
Trong thời gian 2 tuần đầu của thực tập em đã nghiên cứu một
số vấn đề quan trọng và căn bản có ý nghĩa trong việc thực hiện
yêu cầu đã đặt ra của đề tài.
• Các unit và menu chương trình được viết trong tuần thứ 3 và
hoàn thành trong tuần 4.
• Tuần 5 viết báo cáo và chỉnh sửa giao diện chương trình
2. Cơng việc cụ thể:
• Dưới sự hướng dẫn tận tình của thầy Phạm Đức Khánh, sau 5
tuần : từ ngày 12-4-2005 đến ngày 16-5-2005 em đã làm được
các công việc như sau:
•
1. Đệ quy: Viết Unit dequy gờm các thủ tục
•
•
•
•
N!
Fibonacci
Bài Toán Tháp Hà Nợi
Bài Toán Xếp 8 Hậu
2. Sắp xếp: Viết Unint sapxep gờm các phương pháp
• lựa chọn
• Thêm dần
• Nởi bọt
3
• Sắp xếp nhanh
• Vun đống
• Hoà nhập
3. Tìm kiếm Unit timkiem gờm các thủ tục
• Tìm kiếm t̀n tự
• Tìm kiếm nhị phân
4. Ngăn xếp Unit nganxep có úng dung
• Đởi cơ sớ từ mợt sớ hệ 10 sang hệ bất kỳ <10
II.
Công việc chưa làm
Do thời gian có hạn nên còn nhiều thuật toán hay trong sách em
chưa có điều kiên hoàn thành. Menu chương trình chính chưa được
đẹp vì chương trình em viết hoàn toàn bằng ngôn ngữ Pascal – một
ngôn ngữ có nhiều hạn chế về giao diện.
Chương 2 Tóm tắt các menu chính:
Chương trình chính có tên menu.pas gồm các modul sau:
1.
KeO: kẻ khung chương trình
2.
HienThi: hiển thị các lựa chọn của chương trình
3.
Call_n: Gọi thủ tục giaithua trong Unit dequy.tpu để tính n!
Call_Fibonacci: Gọi thủ tục Fibonacci trong Unit dequy.tpu để
tính dãy Fibonacci của một số nhập vào từ bàn phím
4.
Call_ThapHN: Gọi thủ tục ThapHaNoi trong Unit dequy.tpu để
thực hiện bài toán chuyển n đĩa từ cọc 1 sang cọc 2
>
5.
Call_XepHau: Gọi thủ tục XepHau trong Unit Dequy.tpu để đưa
ra các phương án xếp 8 con hậu không ăn nhau trên bàn cờ vua
6.
Call_Select: Gọi thủ tục Select_Sort trong Unit SX_va_TK.tpu để
Sắp xếp theo phương pháp lựa chọn
7.
4
Call_Insert: Gọi thủ tục Insert_Sort trong Unit SX_va_TK.tpu để
Sắp xếp theo phương pháp thêm dần
8.
Call_Bubble: Gọi thủ tục Bubble_Sort trong Unit SX_va_TK.tpu
để Sắp xếp theo phương pháp nổi bọt
9.
Call_Quick: Gọi thủ tục Quick_Sort trong Unit SX_va_TK.tpu để
Sắp xếp theo phương pháp sắp xếp nhanh
10.
Call_Heap: Gọi thủ tục Head_Sort trong Unit SX_va_TK.tpu để
Sắp xếp theo phương pháp vun đống
11.
Call_Mergring: Gọi thủ tục Mergring_Sort
SX_va_TK.tpu để Sắp xếp theo phương pháp hoà nhập
12.
trong
Unit
Call_TimTuanTu: Gọi thủ tục Sequen_Search trong Unit
SX_va_TK.tpu để tìm vị trí của một số trong dãy đã cho theo phương
pháp tìm kiếm tuần tự.
13.
Call_TimNhiPhan: Gọi thủ tục Binary_Search trong Unit
SX_va_TK.tpu để tìm vị trí của một số trong dãy đã cho theo phương
phán tìm vị trí của một số trong dãy đã cho theo phương phán tìm kiếm
Nhị Phân
14.
Call_DoiCoSo: Gọi thủ tục DoiCoSo trong Unint Stack.tpu để đổi
một số từ số hệ 10 sang hệ bất kỳ < 10.
15.
5
Chương 3 Chi tiết các modul :
1. n!:
Begin
Nhập N
K= 1
I =2
K: = k*i
I: =i+1
True
I>N
GiaiThua: = k
False
END
6
2. Fibonacci:
ta có : if n< = 2 then F(n) = 1
F(n) = F(n-2) + F(n-1)
Begin
Nhập N
i=2
x=1
y=1
Fibo = 0
I = i+ 1
Tru
e
i< = n
False
END
7
Fibo = x+y
X=Y
Y = Fibo
3. ThapHaNoi
Begin
N
True
N<>0
False
Chuyển n -1 đĩa từ a sang b
Out a b
Chuyển n -1 đĩa từ c sang b
8
END
4. Select_Sort:
Begin
I =N
1
m=i
j = i+1
True
m=j
a[j] < a[m]
False
j = j+1
False
m <> i
I>N
True
True
Đổi Chỗ a[j] ,
a[m]
M <> i
False
I=i+1
False
i>n-1
END
9
5. Insert_Sort:
Begin
a [0] = -32767
N
i=2
X = a [i]
j=j-1
False
x < a[j]
a [j+1] = x
True
I=i+1
a[j+1] = a[j]
j=j-1
True
I<=N
False
END
10
6. Bubble_Sort:
Begin
N
i=1
j=n
False
a[j] < a[j-1]
J=J-1
True
False
Đổi chỗ
a[j] , a[j-1]
J< I + 1
True
I = i+1
False
I > n-1
True
END
11
7. Quick_Sort:
Begin
i=l
j =N
r
x= a[(i+j) div 2]
True
a[i] < x
i=i+1
False
True
j=j-1
x< a[j]
False
True
i< = j
Đổi chỗ a[j] , a[j]
i=i+1
j=j-1
False
True
i< = j
False
True
L
R=j
False
True
I
R=j
False
END
12
8. Sequen_Search:
Begin
K
I=1
a[n+1] = k
N<>0
a[i] <> k
I = I+1
True
False
Sequen = i
END
13
9. Sequen_Search:
\
Begin
K
I=1
a[n+1] = k
N<>0
I = I+1
a[i] <> k
True
False
Sequen = i
END
14
10. Binary_Search:
Begin
K
I = 1;
a[n+1] = k
N<>0
Binary = 0
L< = r
False
True
M = (r+l) div 2
K < a[m]
True
R=m-1
False
K > a[m]
True
L=m+1
False
Binary = m
END
15
11. DoiCoSo:
Begin
X, Y
T=0
True
x <> 0
False
True
pop(c,t,r)
r = x mod y
push(c,t,r)
T>0
x = x div y
False
R
END
16
Chương 4: Hướng dẫn sử dụng qua giao
diện chương trình
Chương trình có thể chạy trên môi trường Windows 9x, 2000, xp hoặc Dos.
Dung lượng chương trình nhỏ, gọn, không phài cài đặt.
Menu chương trình chính:
Tính n!:
17
Fibonacci:
ThapHaNoi:
18
XepHau:
Select_Sort:
19
Insert_Sort:
bubble_Sort:
20
Quick_Sort:
Heap_Sort:
21
Mergring:
Sequen_Search:
22
Binary_Search:
DoiCoSo:
23
Tài liệu tham khảo:
Giáo trình: Ngôn ngũ lập trình Pascal – Quách Tuấn Ngọc
Giáo trình: Bài tập ngôn ngũ lập trình Pascal – Quách Tuấn Ngọc
Giáo trình: Ngôn Ngữ lập trình Pascal nâng cao - Quách Tuấn Ngọc
Giáo trình: Bài tập ngôn Ngữ lập trình Pascal nâng cao - Quách Tuấn Ngọc
Sách :Turbo Pascal, cẩm nang tra cứu - Quách Tuấn Ngọc
Giao trình: Cấu trúc dữ liệu và giải thuật – Đỗ Xuân Lôi
24