Tải bản đầy đủ (.pdf) (13 trang)

Bài Tập Đặc Tả Hình Thức

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (528.47 KB, 13 trang )

BÀI TẬP ĐẶC TẢ HÌNH THỨC #1
1. Đặc tả tập hợp X gồm các số tự nhiên lẻ trong khoảng từ 100 đến 1000.
2. Đặc tả tập hợp X gồm các số tự nhiên chẵn trong khoảng từ 100 đến 1000 (không xét 100
và 1000)
3. Đặc tả tập hợp P các số nguyên tố lớn hơn 100 và nhỏ hơn 65537.
P = {x ∈ N | x > 100 ∧ x < 65537 ∧ IsPrime(x)}
4. Đặc tả phát biểu: Với bất kỳ số tự nhiên x, luôn tìm được số nguyên lẻ y không vượt quá x.
5. Đặc tả phát biểu: Với bất kỳ số tự nhiên x, luôn tìm được số tự nhiên lẻ y không vượt quá x.
6. Đặc tả phát biểu: Với bất kỳ số tự nhiên x, luôn tìm được số nguyên y nhỏ hơn x.
7. Đặc tả phát biể
u: Tồn tại số tự nhiên x sao cho x > 1000.
8. Đặc tả phát biểu: Tồn tại số tự nhiên x sao cho x là số chẵn và x là số nguyên tố.
9. Đặc tả phát biểu: Với bất kỳ số tự nhiên x và y, tìm được số tự nhiên z sao cho x + y < z.
10. Đặc tả phát biểu: Với bất kỳ số tự nhiên x và y, luôn tìm được số
tự nhiên z < x + y.
∀ x ∈ N • ∀ y ∈ N • ∃ z ∈ N • z < x + y
Ghi chú: đối với các bài tập từ 4 đến 10, chỉ yêu cầu đặc tả đúng theo phát biểu, không xét
đến tính hợp lý của nội dung phát biểu.

BÀI TẬP ĐẶC TẢ HÌNH THỨC #2
11. Đặc tả hàm kiểm tra số thực a lớn hơn hay bằng số thực b hay không.
12. Đặc tả hàm trả về giá trị lớn nhất trong 3 số thực a, b, c.
13. Đặc tả hàm trả về số nguyên tố lớn nhất không vượt quá số tự nhiên n cho trước hoặc trả
về -1 nếu không tìm được giá trị cần thiết.
14. Đặc tả hàm kiểm tra n
ăm n > 0 là năm nhuận hay không.
15. Đặc tả hàm trả về số ngày tối đa của một tháng trong 1 năm nhuận.
16. Đặc tả hàm trả về số ngày tối đa của tháng t trong 1 năm n > 0.
17. Đặc tả hàm trả về số ngày chênh lệch từ ngày n
1
/t


1
đến n
2
/t
2
trong cùng năm. (ví dụ: từ
ngày 1/1 đến ngày 2/1 chênh lệch nhau 1 ngày)
18. Đặc tả hàm chuyển đổi từ milimetre sang metre.
19. Đặc tả hàm trả về số dư khi thực hiện phép chia a/b (xét trên số tự nhiên).
20. Đặc tả hàm tính căn bậc 2 không âm của số thực x.
BÀI TẬP ĐẶC TẢ HÌNH THỨC #3
21. Đặc tả hàm kiểm tra trong mảng a các số nguyên có tồn tại số không âm hay không.
22. Đặc tả hàm tính tổng giá trị của 1 mảng a các số thực.
23. Đặc tả hàm tính tổng các phần tử dương trong 1 mảng a các số thực.
24. Đặc tả hàm tính tổng các số nguyên tố có trong mảng a các số tự nhiên.
25. Đặc tả hàm kiểm tra 1 số tự nhiên x có xuất hiện trong mảng a các số t
ự nhiên hay không .
26. Đặc tả hàm trả về chỉ số đầu tiên (nếu có) của giá trị x trong mảng a các số thực, hoặc trả
về giá trị 0 nếu không tồn tại giá trị x trong mảng a.
27. Đặc tả hàm tính tổng các phần tử ở vị trí chẵn của mảng a các số thực.
28. Đặc tả hàm trả về giá trị lớn nhất trong mảng a
gồm các số thực.
29. Đặc tả hàm trả về số chẵn lớn nhất trong mảng các số nguyên hoặc -1 nếu không có số
chẵn.
30. Đặc tả hàm kiểm tra xem mảng a có phần tử trùng nhau hay không.
BÀI TẬP ĐẶC TẢ HÌNH THỨC #4
31. Giả sử không dùng hàm elems. Hãy đặc tả hàm trả về tập hợp các giá trị có xuất hiện
trong mảng a.
32. Đặc tả hàm trả về chỉ số của phần tử lớn nhất không dương trong mảng a hoặc trả về giá
trị 1 nếu mọi phần tử đều là số dương.

33. Đặc tả hàm trả về chỉ số của phần tử nh
ỏ nhất không âm trong mảng a hoặc trả về giá trị -
1 nếu mọi phần tử đều là số âm.
34. Đặc tả hàm trả về số chính phương lớn nhất không vượt quá số nguyên dương x cho trước.
35. Đặc tả hàm trả về số nguyên tố nhỏ nhất lớn hơn hay bằng số tự nhiên n cho trước .
36. Đặc tả hàm đếm số lượng năm nhuậ
n từ năm a đến năm b (kể cả năm a và năm b). Chỉ xét
0 < a≤ b.
37. Đặc tả hàm đếm số lượng số nguyên tố từ số tự nhiên a đến số tự nhiên b (tính luôn a và b
với a ≤ b).
38. Đặc tả hàm tìm USCLN của các phần tử trong mảng a các số nguyên dương.
39.Đặc tả hàm tìm BSCNN c
ủa các phần tử trong mảng a các số nguyên dương.
40.Đặc tả hàm sắp xếp tăng dần mảng a các số thực.
BÀI TẬP ĐẶC TẢ HÌNH THỨC #5
41. Hãy đặc tả hàm trả sắp xếp mảng số thực A theo thứ tự giảm dần.
42. Hãy đặc tả hàm sắp xếp mảng số thực A theo thứ tự giá trị tuyệt đối tăng dần.
43. Hãy đặc tả hàm sắp xếp mảng số thực A theo quy luật sau:
- các số dương (nếu có) ở đầu mảng và có thứ tự giảm dần,
-
các số âm (nếu có) ở cuối mảng và có thứ tự tăng dần
44. Hãy đặc tả hàm sắp xếp mảng số nguyên A theo quy luật:
- các số chẵn (nếu có) ở đầu mảng và có thứ tự tăng dần,
- các số lẻ (nếu có) ở cuối mảng và có thứ tự giảm dần
45. Hãy đặc tả hàm sắp xếp mảng số nguyên A theo quy luật:
-
các số chẵn (nếu có) có thứ tự tăng dần,
- các số lẻ (nếu có) có thứ tự giảm dần
- tính chất chẵn/lẻ tại mỗi vị trí trong mảng A không thay đổi sau khi sắp xếp
(tức là trước khi sắp xếp, tại vị trí i của mảng A là số chẵn/lẻ thì tại vị trí i của

mảng sau khi sắp xếp cũ
ng là số chẵn/lẻ)
!Ví dụ: A = (1, 1, 2, 3, 4, 5, 6, 7)
Kết quả kq = (1, 1, 6, 3, 4, 5, 2, 7).
46. Hãy đặc tả hàm kiểm tra một chuỗi s có phải là chuỗi con của chuỗi t hay
không?
47. Hãy đặc tả hàm tạo ra chuỗi ký tự đảo ngược của chuỗi ký tự s
! Ví dụ
: s = “123”, kết quả là kq = “321”
48. Một tiếng (word) là một chuỗi ký tự không có ký tự khoảng trắng. Đặc tả hàm
chuẩn hóa một chuỗi ký tự s: xóa bỏ các ký tự khoảng trắng ở đầu và cuối chuỗi,
giữa các tiếng (word) có duy nhất một ký tự khoảng trắng.
! Ví dụ: chuỗi s = “ Hello World”. Kết quả kq = “Hello World”
49. Hãy đặc tả hàm đếm số tiếng (word) của một chuỗi ký tự
s đã chuẩn hóa
(chuỗi s không có ký tự khoảng trắng ở đầu và cuối chuỗi, giữa các tiếng (word)
chỉ có duy nhất một ký tự khoảng trắng)
! Ví dụ: s = “Hello World” gồm 2 tiếng.
50. Hãy đặc tả hàm đếm số tiếng (word) của một chuỗi ký tự s chưa chuẩn hóa.
Ghi chú: đặc tả theo 2 cách: sử dụng hàm phụ (ở câu 48) và không sử dụng hàm
phụ (ở câu 48)
! Ví
d
ụ: s = “University of Natural Sciences ” gồm 4 tiếng (word)
BÀI TẬP ĐẶC TẢ HÌNH THỨC #6
51. Đặc tả lại bài 48 với phương án sử dụng biến tạm để xóa ký tự khoảng trắng đầu chuỗi
nếu có.
52. Đặc tả yêu cầu bài 48 bằng phương pháp không tường minh mô tả tính chất của chuỗi kết
quả.
53. Đặc tả hàm trả về tiếng có độ dài lớn nhất (đầu tiên) trong một chuỗi ký tự s. Nếu trong

chuỗi s không có tiếng nào thì trả về chuỗ
i rỗng
54. Đặc tả hàm kiểm tra mảng số thực B là mảng con (gồm các phần tử liên tiếp nhau) của
mảng số thực A
! Ví dụ: mảng B = [1, 2, 3] là mảng con của mảng A = [4, 5, 1, 2, 3, 7, 8]
mảng B = [1, 2, 3] không phải là mảng con của mảng A = [1, 4, 2, 5, 3, 8]
55. Đặc tả hàm trả về mảng con (gồm các phần tử liên tiếp nhau) tăng dần dài nhất trong
mảng số thực A.
56a. Đặc tả kiểu dữ liệu PHÂN-SỐ và hàm inv-PHÂN-SỐ kiểm tra tính hợp lệ của phân số
b. Đặc tả hàm tính tổng (và rút gọn kết quả) của một mảng gồm các phân số
58a. Đặc tả kiểu dữ liệu ĐIỂM và ĐƯỜNG-THẲNG trong không gian 2 chiều.
b. Đặc tả hàm kiểm tra một điểm có thuộc về một đường thẳng hay không (sử dụng kiểu dữ

liệu đã định nghĩa)
59a. Đặc tả kiểu dữ liệu ĐIỂM và TAM-GIÁC trong không gian 2 chiều.
b. Đặc tả hàm kiểm tra điều kiện tạo thành của một tam giác (3 đỉnh không thẳng hàng)
60a. Đặc tả kiểu STACK chứa các số tự nhiên.
b. Đặc tả các thao tác sau:
POP: lấy phần tử ở đỉnh stack ra khỏi stack, trả về -1 nếu stack rỗng
PUSH: thêm 1 phần t
ử vào đỉnh stack, trả về TRUE nếu thành công và FALSE nếu
ngược lại
TOP: trả về giá trị của phần tử ở đỉnh stack (không xóa phần tử này ra khỏi stack), hoặc
trả về -1 nếu stack rỗng
ISEMPTY: kiểm tra stack rỗng hay không
ISFULL: kiểm tra stack đầy hay không
EMPTY: khởi
t

o stack về t

r

ng thái
r
ỗng
BÀI TẬP ĐẶC TẢ HÌNH THỨC #7
61. Cho các kiểu dữ liệu sau:
Sinh-Viên ::
mã-SV: Mã-SV
họ-tênSV: Họ-Tên
Môn ::
mã-Môn: Mã-Môn
tên-Môn: Tên-Môn
hệ-số:

Học::
mã-SV: Mã-SV
mã-Môn: Mã-Môn
học-kỳ: {1, 2, 3, 4}
năm-học:

1
điểm: ℝ
Hãy đặc tả hàm trả về danh sách các mã môn học mà sinh viên có mã sinh viên là mã-SV đã
học.
DanhSáchMãHọcPhần(mã-SV: Mã-SV) kq: Mã-Môn-set
ext rd ds-học: Học*
pre
post kq = XLĐệQuy(mã-SV, ds-học)
XLĐệQuy(mã-SV: Mã-SV, ds-học: Học*) kq: Mã-Môn-set

pre
post ((len ds-học = 0) ∧ (kq = {}))
∨ ((len ds-học > 0) ∧ (ds-học(1).mã-SV = mã-SV) ∧
(kq = {ds-học(1).mã-Môn} ∪ XLĐệQuy(mã-SV, tl ds-học)))
∨ ((len ds-học > 0) ∧ (ds-học(1).mã-SV ≠ mã-SV) ∧
(kq = XLĐệQuy(mã-SV, tl ds-học)))
62. Cho các kiểu dữ liệu sau:
Sinh-Viên ::
mã-SV: Mã-SV
họ-tênSV: Họ-Tên
Môn ::
mã-Môn: Mã-Môn
tên-Môn: Tên-Môn
hệ-số: ℕ

KQ-Học ::
mã-Môn: Mã-Môn
học-kỳ: {1, 2, 3, 4}
năm-học: ℕ
1
điểm: ℝ
Cho trước ánh xạ kq-Học: Mã-SV
⎯→⎯
m
KQ-Học* thể hiện tất cả kết quả học tập của sinh
viên (nếu sinh viên đã học một môn nhiều lần thì tất cả kết quả học của sinh viên trong môn
học này đều được ghi nhận lại).
Hãy đặc tả hàm trả về danh sách các mã học phần mà sinh viên có mã sinh viên là mã-SV đã
học.
DS-Mã-Môn-Đã-Học

(mã-SV: Mã-SV, kq-Học: Mã-SV ⎯→⎯
m
KQ-Học*) dsMãMôn : Mã-Môn-set
pre
post
dsMãMôn = {mã-Môn | ∃ ct-kq ∈ ( {mã-SV} ⊲ kq-Học ) • ct-kq(mã-SV).mã-Môn = mã-Môn }
Câu 63 đến 65 :
Cho các kiểu dữ liệu
Học-Phần ::
mã-Học-Phần: char*
tên-Học-Phần: char*
số-TC :: ℕ
1
Tên-Chuyên-Ngành = char*
DSHọcPhần-ChuyênNgành = Tên-Chuyên-Ngành ⎯→⎯
m
Học-Phần* cho biết danh sách các
học phần (bắt buộc và tự chọn) của mỗi chuyên ngành.
Cho trước ánh xạ ds-HọcPhần-ChuyênNgành ∈ DSHọcPhần-ChuyênNgành.
63. Hãy đặc tả hàm trả về số lượng học phần của chuyên ngành có tên là X cho trước.
SL-Học-phần-của-Chuyên-ngành
(X : Tên-Chuyên-Ngành,
ds-HọcPhần-ChuyênNgành : Tên-Chuyên-Ngành ⎯→⎯
m
Học-Phần*) sl-Học-Phần : ℕ
64. Hãy đặc tả hàm kiểm tra xem chuyên ngành X và chuyên ngành Y có học phần nào chung
hay không.
Kiểm-tra-Có-chung-Học-phần
(X : Tên-Chuyên-Ngành, Y : Tên-Chuyên-Ngành,
ds-HọcPhần-ChuyênNgành : Tên-Chuyên-Ngành ⎯→⎯

m
Học-Phần*) kq : B
65. Hãy đặc tả hàm trả về tên của chuyên ngành có số lượng học phần nhiều nhất (ghi chú :
trong trường hợp có nhiều chuyên ngành có cùng số lượng học phần nhiều nhất, chỉ cần trả
tên của một chuyên ngành trong số này).
Chuyên-Ngành-Nhiều-Học-Phần-Nhất
(ds-HọcPhần-ChuyênNgành : Tên-Chuyên-Ngành ⎯→⎯
m
Học-Phần*) tênHP : char*
Câu 66 đến 70 :
Cho các kiểu dữ liệu sau :

Sinh-Viên ::
mã-SV: Mã-SV
họ-tênSV: char*
khóa-tuyển:

1

Khoa::
mã-Khoa : Mã-Khoa
tên-Khoa: char*


Cho các ánh xạ sau:
ds-Khoa : Mã-Khoa
⎯→⎯
m
Khoa
ds-SV : Mã-SV

⎯→⎯
m
Sinh-Viên
ds-SV-Thuộc-Khoa : Mã-Khoa
⎯→⎯
m
Mã-SV-set cho biết d/sách sinh viên thuộc từng Khoa.

Lưu ý
: trong các đặc tả dưới đây (từ câu 66 đến 70), có thể sử dụng các ánh xạ trên dưới dạng
các biến toàn cục (nếu cần).

66. Hãy đặc tả hàm trả về tổng số sinh viên thuộc một khóa tuyển cho trước.
Tổng-Số-SV-Khoa (khóa-tuyển:
ℕ) tổng-số-SV: ℕ

67. Hãy đặc tả hàm trả về số lượng sinh viên của Khoa với mã khoa là mã-Khoa cho trước.
SL -SV-Khoa (mã-Khoa: Mã-Khoa) kq:


68. Hãy đặc tả hàm trả về ánh xạ số-lượng-SV-Khoa: Mã-Khoa
⎯→⎯
m
ℕ cho biết tổng số
sinh viên theo từng Khoa.
Tính-SL -SV-Khoa () số-lượng-SV-Khoa: Mã-Khoa
⎯→⎯
m



69. Giả sử các khoa đều có tên phân biệt. Hãy đặc tả hàm trả về mã khoa tương ứng với tên
khoa cho trước.
Tìm-Mã-Khoa-Theo-Tên (tên-Khoa: char*): mã-Khoa: Mã-Khoa

70. Hãy đặc tả hàm trả về số lượng sinh viên trong khóa tuyển khóa-tuyển thuộc Khoa với tên
Khoa là tên-Khoa cho trước. Giả sử các khoa đều có tên phân biệt.
SL-SV-Khoa-Trong-Khóa-Tuyển (tên-Khoa:char*, khóa-tuyển:

1
) sốlượngSV: ℕ
BÀI TẬP ĐẶC TẢ HÌNH THỨC #8
Bài 71 : Đặc tả kiểu dữ liệu NGAY. Đặc tả điều kiện của một ngày hợp lệ.
Bài 72: Đặc tả hàm trả về ngày tiếp theo sau 1 ngày cho trước.
Bài 73: Đặc tả hàm trả về ngày thứ n (n >= 0) tiếp theo sau ngày cho trước.
Bài 74: Đặc tả hàm trả về số ngày chênh lệch giữa 2 ngày cho trước.
(ví dụ : ngày 1 : 1/1/2007, ngày 2 : 1/1/2006 " Kết quả : -365)
Bài 75: Cho biết ngày 12/5/2007 là ngày thứ bảy.Hãy đặc tả hàm tr
ả về thứ của 1 ngày cho
trước(trả về chuỗi ký tự).
Bài 76: Hãy đặc tả kiểu ĐƠN-THỨC & ĐA-THỨC.
Bài 77: Đặc tả hàm tính đạo hàm (cấp 1) của 1 đa thức.
Bài 78: Đặc tả hàm tìm tất cả các nghiệm (phân biệt) của 1 đa thức.
Tập-Nghiệm ::
sốNghiệm:

nghiệm :
ℝ*
Bài 79: Đặc tả hàm tính giá trị đa thức với giá trị x
0
cho trước

Bài 80: Đặc tả hàm tính tích phân xác định của 1 đa thức trên đoạn [x
1
, x
2
]

BÀI TẬP ĐẶC TẢ HÌNH THỨC #9
Cho trước các đặc tả kiểu dữ liệu sau:
VERTEX =

GRAPH ::
n: ℕ
A: ℝ**
Giải thích:
n:là số lượng đỉnh trong đồ thị
A là ma trận kề, với quy ước: A(i)(j) = 0 nếu không có cung từ đỉnh i đến đỉnh j
A(i)(j) ≠ 0 là trọng số của cung từ đỉnh i đến đỉnh j

Bài 81: Đặc tả hàm kiểm tra đồ thị G có phải là đồ thị vô hướng hay không.
Bài 82: Đặc tả hàm kiểm tra đồ thị G có chứa cạnh có trọng số âm hay không
Bài 83: Đặc tả hàm tính bậc của một đỉnh v trong đồ thị G cho trước.
Degree (G: GRAPH, v: VERTEX) deg :

Bài 84: Tự đặc tả kiểu dữ liệu PATH để lưu trữ được một đườ ng đi trên đồ thị. Đặc tả hàm
tính độ dài một đường đi cho trước. Lưu ý: đường đi bao gồm các cung liên tiếp nhau (và
phải tôn trọng hướng của cung)
Bài 85: Đặc tả hàm kiểm tra có tồn tại dây chuyền từ đỉnh u đến đỉnh v trong đồ thị G hay
không.
Lưu ý:
- Các cung trên dây chuyền KHÔNG cần tôn trọng hướng

- Đồ thị G có thể vô hướng hoặc có hướng
Bài 86: Đặc tả hàm kiểm tra một đồ thị G có liên thông hay không. Gợi ý: Trong đồ thị liên
thông, luôn tồn tại dây chuyền nối liền hai đỉnh phân biệt bất kỳ
Bài 87: Đặc tả hàm kiểm tra một đồ thị G có phải là cây hay không. Gợi ý: cây là đồ thị liên
thông có đúng n-1 cạ
nh (với n là số lượng đỉnh của đồ thị)
Bài 88: Tự đặc tả kiểu dữ liệu SPANNING-TREE để lưu trữ một cây khung của đồ thị. Đặc tả
điều kiện hợp lệ inv-SPANNING-TREE cho kiểu dữ liệu này.
Bài 89: Đặc tả hàm tính trọng số của một cây khung cho trước. Đặc tả hàm xác định cây
khung nhỏ nhất (có tổng trọng số nhỏ nhấ
t) của một đồ thị vô hướng G cho trước. (không xử
lý khi đồ thị không liên thông)
Bài 90: Đặc tả hàm kiểm tra một đồ thị vô hướng G có tồn tại đường đi Euler hay không? Gợi
ý: đồ thị G có tồn tại đường đi Euler nếu G có 0 hoặc 2 đỉnh bậc lẻ.
BÀI TẬP ĐẶC TẢ HÌNH THỨC #10
Sử dụng các kiểu dữ liệu sau cho các câu từ 91 đến 95:
SÂN-VẬN-ĐỘNG ::
tên-Sân: char*
sức-chứa: ℕ
1

TỶ-SỐ ::
số-bàn-thắng-đội-nhà : ℕ
số-bàn-thắng-đội-khách : ℕ
ĐỘI-BÓNG ::
tên-Đội: char*
sân-nhà : SÂN-VẬN-ĐỘ NG
TRẬN-ĐẤU ::
đội-nhà : ĐỘI-BÓNG
đội-khách : ĐỘI-BÓNG

vòng-thi-đấu: ℕ
1

tỷ-số : TỶ-SỐ

Ghi chú: Mỗi đội bóng thi đấu đúng 2 trận
với các đội còn lại (một trận lượt đi trên sân
khách, một trận lượt về trên sân nhà của
chính mình).
91. Đặc tả hàm tính số trận thắng của một đội bóng trong giải vô địch
Số-trận-thắng (đội: ĐỘI-BÓNG, lịch-thi-đấu: TRẬN-ĐẤU*)
kq: ℕ
92. Đặc tả hàm tính số trận hòa của một đội bong trong giải vô địch
Số-trận-thắng (đội: ĐỘI-BÓNG, lịch-thi-đấu: TRẬN-ĐẤU*) kq: ℕ
93. Đặc tả hàm tính điểm của một đội bóng với quy định: mỗi trận thắng được 3 điểm, mỗi
trận hòa được 1 điểm, mỗ i trận thua không có đi
ểm.
Số-điểm (đội: ĐỘI-BÓNG, lịch-thi-đấu: TRẬN-ĐẤU*) kq: ℕ
94. Đặc tả hàm tính hiệu số bàn thắng bại của một đội bong.
Hiệu-số-bàn-thắng-bại (đội: ĐỘI-BÓNG, lịch-thi-đấu: TRẬN-ĐẤU*) kq: Z
95. Đặc tả hàm sắp hạng các đội bóng theo điểm giảm dầ
n. Nếu nhiều đội cùng điểm thì xét
tiếp các tiêu chí sau: hiệu số bàn thắng bại (giảm dần), số bàn thắng (giảm dần), kết quả trận
đối kháng trực tiếp.
Số-điểm (ds-đội: ĐỘI-BÓNG*, lịch-thi-đấu: TRẬN-ĐẤU*) kq-xếphạng: ĐỘI-BÓNG*
Sử dụng kiểu dữ liệu dưới đây cho câu 96 và 97:

Xét một hệ điều hành đơn giản. Cho trước đặc tả các kiểu dữ liệu biểu diễn thông tin của 1
tiến trình và ReadyList như sau:
PROCESS_ID =


PROCESS_INFO ::
pID : PROCESS_ID
CPUBurstTime: ℝ
READY_LIST = PROCESS_INFO*
Cho trước biến toàn cục ready-List : READY-LIST
96. Hãy đặc tả hàm FIFOScheduler cho phép chọn ra tiến trình theo chiến lược FIFO với
thông tin các tiến trình đang chờ sử dụng CPU trong ready-List.
FIFOScheduler () pID: PROCESS_ID

97. Hãy đặc tả hàm SJFScheduler cho phép chọn ra tiến trình theo chiến lược SJF (Shortest
Job First) với thông tin các tiến trình đang chờ sử dụng CPU trong ready-List. Nếu có nhiều
tiến trình có cùng thời gian thực thi (CPUBurstTime) ngắn nhất bằng nhau thì ưu tiên chọn
tiến trình có thời gian ngắn nhất xuất hiện trước trong ready-List.
SJFScheduler () pID: PROCESS_ID


98. Tự định nghĩa kiểu dữ liệu TOWER_STATE để biểu diễn 1 trạng thái của bài toán Tháp
Hà Nội với 3 cột (A, B, C) và n đĩa (đánh số từ 1 đến n, đĩa 1 < đĩa 2 < … < đĩa n). Đặc tả
điều kiện ràng buộc đối vớ i kiểu dữ liệu này (ghi chú: với mỗi cột, đĩa dưới phải lớn hơn đĩa
trên)
99. Đặc tả thao tác
MoveAB thực hiện việc di chuyển 1 đĩa (trên cùng) từ cột A sang cột B.
Lưu ý chỉ xử lý nếu cột A có ít nhất 1 đĩa, và đĩa trên cùng của cột A phải nhỏ hơn đĩa trên
cùng của cột B, hoặc cột B còn trống.
MoveAB(S
0
: TOWER_STATE) S
1
: TOWER_STATE

100. Giả sử đã có sẵn các đặc tả của các thao tác di chuyển 1 đĩa (trên cùng) từ cộ t này sang
cột khác.
MoveAB(S
0
: TOWER_STATE) S
1
: TOWER_STATE
MoveBA(S
0
: TOWER_STATE) S
1
: TOWER_STATE
MoveAC(S
0
: TOWER_STATE) S
1
: TOWER_STATE
MoveCA(S
0
: TOWER_STATE) S
1
: TOWER_STATE
MoveBC(S
0
: TOWER_STATE) S
1
: TOWER_STATE
MoveCB(S
0
: TOWER_STATE) S

1
: TOWER_STATE
Hãy đặc tả hàm biến đổi từ trạng thái S
0
sang trạng thái S
n
cho trước.

×