1. Trang chủ
  2. » Giáo án - Bài giảng

Đề thi công nghệ phần mềm (8)

7 401 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 64,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nộp lại đề thi Đặc tả số hữu tỷ Rational Number Lớp các số hữu tỷ được biểu diễn bởi hai thành phần tử số n và mẫu số d là những số nguyên.. Dựa theo các tiên đề đã cho gợi ý, hãy tiếp t

Trang 1

Đề thi Môn CÔNG NGHỆ PHẦN MỀM Đề số 106

Thời gian làm bài 90 phút Không sử dụng tài liệu Ghi số đề thi vào bài làm Nộp lại đề

thi

Đặc tả số hữu tỷ (Rational Number)

Lớp các số hữu tỷ được biểu diễn bởi hai thành phần tử số n và mẫu số d là những số nguyên Người ta cần xây dựng các hàm xử lý số hữu tỷ như : tạo mới, rút gọn, cộng, trừ, nhân, chia, so sánh và chuyển đổi thành số thực

Giả sử kiểu trừu tượng Rational được định nghĩa như sau (cột bên phải đặt trước bởi một dấu ; để giải thích) :

Type Rational

Functions

Create-rat : Int × Int → Rational ; tạo số hữu tỷ từ hai số nguyên Reduction : Rational → Rational ; rút gọn số hữu tỷ

+rat : Rational × Rational → Rational ; cộng hai số hữu tỷ

-rat : Rational × Rational → Rational ; trừ hai số hữu tỷ

*rat : Rational × Rational → Rational ; nhân hai số hữu tỷ

/rat : Rational × Rational → Rational ; chia hai số hữu tỷ

=rat : Rational × Rational → Bool ; so sánh hai số hữu tỷ

Rat-Real : Rational → Real ; chuyển một số hữu tỷ thành số thực Preconditions

Axioms ForAll n, d, n1, d1, n2, d2 : Int, r, r1, r2 : Rational :

r=create-rat(n, d) ⇒ numer(r) * d=denom(r) * n and denom(r) ≠ 0

; Nghĩa là, nếu r là một số hữu tỷ, r=n/d, thì tử số của r là n và mẫu số là d≠0

=rat(create-rat(n1, d1), create-rat(n2, d2) ⇔ n1*d2 = n2*d1

; Hai số hữu tỷ r1=n1/d1 và r2=n2/d2 bằng nhau khi và chỉ khi n1*d2 =n2*d1 +rat(create-rat(n1, d1), create-rat(n2, d2) ⇔

Reduction(create-rat(n1*d2 + n2*d1, d1*d2))

Yêu cầu :

1 Dựa theo các tiên đề đã cho gợi ý, hãy tiếp tục tạo mới các tiên đề cho phép thực hiện các phép toán xử lý số hữu tỷ được định nghĩa trong phần Functions

2 Lập trình bằng ngôn ngữ giả (tương tự Pascal) các hàm xử lý số hữu tỷ mô tả trên đây

Đề thi Môn CÔNG NGHỆ PHẦN MỀM Đề số 105

Trang 2

Thời gian làm bài 90 phút Không sử dụng tài liệu Ghi số đề thi vào bài làm Nộp lại đề

thi

Đặc tả cây nhị phân Binary Tree)

Kiểu cây nhị phân kiểu T, với T là một kiểu bất kỳ nào đó, được định nghĩa đệ quy như sau :

1 ∅ là một cây nhị phân kiểu T, được gọi là cây rỗng (empty tree)

2 Nếu E là một phần tử kiểu T, A1 và A2 là những cây nhị phân kiểu T, thì bộ ba (E, A1, A2) cũng là những cây nhị phân kiểu T

3 Chỉ những đối tượng được định nghĩa bởi hai quy tắc trên đây mới là các cây nhị phân kiểu T

Nếu A=(E, A1, A2) là cây nhị phân, thì E là nút gốc, A1 là cây con (subtree) bên trái, A2 là cây con bên phải của A Nếu A là cây suy biến chỉ gồm một nút, thì nút đó luôn luôn là nút gốc của một cây con Người ta còn gọi A là cây được gắn nhãn (labelled tree, hay tag tree) bởi các giá trị trong T Chú ý sự lệch đối xứng của định nghĩa : nếu A không phải là cây rỗng, thì cây (E, A, ∅) khác với cây (E, ∅, A) Cần phân biệt một nút với một giá trị gắn cho nút đó Các nút luôn luôn rời (phân biệt) nhau, còn các giá trị thì có thể giống nhau Kiểu trừu tượng của cây nhị phân được định nghĩa như sau (cột bên phải đặt trước bởi một dấu ; để giải thích) :

Type BinTree(T)

Functions

createtree : T  BinTree(T)  BinTree(T)  BinTree(T) ; tạo cây nhị phân

Preconditions

root(A) được xác định nếu và chỉ nếu A ≠ emptytree

left(A) được xác định nếu và chỉ nếu A ≠ emptytree

right(A) được xác định nếu và chỉ nếu A ≠ emptytree

leaf?(A) được xác định nếu và chỉ nếu A ≠ emptytree

Axioms ForAll E : T ; A, A1, A2 : BinTree(T) :

emptytree?(emptytree()) = true

emptytree?(createtree(E, A1, A2)) = false

root(createtree(E, A1, A2)) = E

Yêu cầu :

Trang 3

Thời gian làm bài 90 phút Không sử dụng tài liệu Ghi số đề thi vào bài làm Nộp lại đề

thi

Đặc tả tập hợp (Collection Specification)

Cho trước một tập hợp (collection) C các phần tử (elements) e Người ta cần thực hiện các phép tìm kiếm, bổ sung (Add) và loại bỏ (Delete) một phần tử e có khoá (key) là k trong C Ngoài ra, người ta có hai phép toán bổ sung là kiểm tra một phần tử có thuộc (in) một tập hợp cho trước hay không và đếm số phần tử (number of occurrences) có khoá đúng bằng một khoá k đã cho

Giả sử Element là kiểu phần tử có khoá kiểu Key đã được định nghĩa trước đó Kiểu trừu tượng Collection được định nghĩa như sau :

Type Collection

EmptyCollection : → Collection Add : Element × Collection → Collection Delete : Key × Collection → Collection Search : Key × Collection → Element

NbOccurrences : Key × Collection → Int Preconditions

Pre Search (k: Key, C: Collection) ≡ NbOccurrences(k, C) ≥ 1

Axioms ForAll C: Collection, k, k’: Key e, e’ : Element :

(e in EmptyCollection) = false

(e = e’) ⇒ (e in Add (e’, C)) = true

(e ≠ e’) ⇒ (e in Add (e’, C)) = (e in C)

NbOccurrences (k, EmptyCollection) = 0

Key-of (e) = k ⇒NbOccurrences (k, Add (e, C)) = NbOccurrences (k, C)  1

(k = k’) and NbOccurrences (k, C) = 0 ⇒ NbOccurrences (k, Delete (k’, C)) = 0

Key-of (Search (k, C)) = k

(Search (k, C) in C) = true

e = Search (k, C) ⇒(e in Delete (k, C)) = false

Yêu cầu :

1 Dựa theo các tiên đề đã cho, hoàn chỉnh (điền vào dấu ?) các tiên đề sau đây :

2 Cho S là tập hợp các số tự nhiên gồm giữa 1 và N Viết bằng ngôn ngữ giả (tương tự Pascal) thủ tục xây dựng một tập hợp con S’ ⊆ S sao cho S’ gồm các số chẵn

3 Viết thủ tục xây dựng một tập hợp con S’ ⊆ S sao cho S’ gồm các phần tử của S thoả mãn một tính chất đã cho nào đó

Trang 4

Đề thi Môn CÔNG NGHỆ PHẦN MỀM Đề số 103

Thời gian làm bài 90 phút Không sử dụng tài liệu Ghi số đề thi vào bài làm Nộp lại đề

thi

Đặc tả danh sách tuyến tính (Linear List) viết tắt DSTT)

DSTT là một dãy có thể rỗng hoặc có hữu hạn các phần tử, ký hiệu  = <e1, e2, , en> Thứ tự các phần tử trong một DSTT là thứ tự của các vị trí (place) của chúng, được xác định bởi hàm Succ Nghĩa là với mọi vị trí p của một DSTT ≠ φ, ta có : ∃ k ≥ 0 sao cho p = Succk (Head (Trong đóHead () chỉ vị trí đầu tiên của 

Mỗi vị trí có một nội dung (content) chính là phần tử ở vị trí đó Số phần tử hay số vị trí của

được gọi là độ dài (length) của  Nếu n = 0, thì = φ Mặt khác hàm Succ không xác định ở

vị trí thứ n hay Succn (Head ()) không xác định

Đối với các DSTT, người ta xây dựng ba phép xử lý tuần tự trên các phần tử :

• Tiếp cận (access) đến phần tử thứ k của DSTT

• Loại bỏ (delete) phần tử thứ k của DSTT

• Chèn (insert) một phần tử mới tại vị trí thứ k của DSTT

Giả sử Element là một phần tử có kiểu đã được định nghĩa trước đó Kiểu trừu tượng List được định nghĩa như sau :

Type List, Place

Functions EmptyList : → List

Length : List → Int Succ : Place → Place Access : List × Int → Place Content : Place → Element Delete : List × Int → List Insert : List × Int × Element → List Preconditions

Pre Access (: List, k : Int) = (1 ≤ k ≤ Length ())

Pre Delete (: List, k : Int) = (1 ≤ k ≤ Length ())

Pre Insert (: List, k : Int, e : Element) = (1 ≤ k ≤ Length () + 1)

/* k = Length () tương ứng với việc thêm một phần tử vào cuối DSTT */

Axioms ForAll  : List, k : Int, e : Element :

Length (EmptyList) = 0

( ≠ EmptyList) and (1 ≤ k ≤ Length ())⇒ Length (Delete (, k)) = Length ()  1 (1 ≤ k ≤ Length ()) ⇒ Length (Insert (, k, e)) = Length () + 1 ( ≠ EmptyList) and (1 ≤ k < Length ())⇒ Succ (Access (, k)) = Access (, k + 1) ( ≠ EmptyList) and (1 ≤ k ≤ Length ()) and (1 ≤ i ≤ k1) ⇒

Content (Access (Delete (, k), i)) = Content (Access (i) Yêu cầu :

1 Dựa theo các tiên đề đã cho, hoàn chỉnh (điền vào dấu ?) các tiên đề sau đây :

Trang 5

Đề thi Môn CÔNG NGHỆ PHẦN MỀM Đề số 102

Thời gian làm bài 90 phút Không sử dụng tài liệu Ghi số đề thi vào bài làm Nộp lại đề

thi

Đặc tả tập hợp (Collection Specification)

Cho trước một tập hợp (collection) C các phần tử (elements) e Người ta cần thực hiện các phép tìm kiếm, bổ sung (Add) và loại bỏ (Delete) một phần tử e có khoá (key) là k trong C Ngoài ra, người ta có hai phép toán bổ sung là kiểm tra một phần tử có thuộc (in) một tập hợp cho trước hay không và đếm số phần tử (number of occurrences) có khoá đúng bằng một khoá k đã cho

Giả sử Element là kiểu phần tử có khoá kiểu Key đã được định nghĩa trước đó Kiểu trừu tượng Collection được định nghĩa như sau :

Type Collection

EmptyCollection : → Collection Add : Element × Collection → Collection Delete : Key × Collection → Collection Search : Key × Collection → Element

NbOccurrences : Key × Collection → Int Preconditions

Pre Search (k: Key, C: Collection) ≡ NbOccurrences(k, C) ≥ 1

Axioms ForAll C: Collection, k, k’: Key e, e’ : Element :

(e in EmptyCollection) = false

(e = e’) ⇒ (e in Add (e’, C)) = true

(e ≠ e’) ⇒ (e in Add (e’, C)) = (e in C)

NbOccurrences (k, EmptyCollection) = 0

Key-of (e) = k ⇒NbOccurrences (k, Add (e, C)) = NbOccurrences (k, C)  1

(k = k’) and NbOccurrences (k, C) = 0 ⇒ NbOccurrences (k, Delete (k’, C)) = 0

Key-of (Search (k, C)) = k

(Search (k, C) in C) = true

e = Search (k, C) ⇒(e in Delete (k, C)) = false

Yêu cầu :

1 Dựa theo các tiên đề đã cho, hoàn chỉnh (điền vào dấu ?) các tiên đề sau đây :

(k = k’) and NbOccurrences (k, C) ≥ 1 ⇒ ?

2 Cho S là tập hợp các số tự nhiên gồm giữa 1 và N Viết bằng ngôn ngữ giả (tương tự Pascal) thủ tục xây dựng một tập hợp con S’ ⊆ S sao cho S’ gồm các số lẻ

3 Viết thủ tục cho phép xử lý (duyệt) tất cả các phần tử của một tập hợp đã cho

Trang 6

Đề thi Môn CÔNG NGHỆ PHẦN MỀM Đề số 101

Thời gian làm bài 90 phút Không sử dụng tài liệu Ghi số đề thi vào bài làm Nộp lại đề

thi

Đặc tả danh sách tuyến tính (Linear List) viết tắt DSTT)

DSTT là một dãy có thể rỗng hoặc có hữu hạn các phần tử, ký hiệu  = <e1, e2, , en> Thứ tự các phần tử trong một DSTT là thứ tự của các vị trí (place) của chúng, được xác định bởi hàm Succ Nghĩa là với mọi vị trí p của một DSTT ≠ φ, ta có : ∃ k ≥ 0 sao cho p = Succk (Head (Trong đóHead () chỉ vị trí đầu tiên của 

Mỗi vị trí có một nội dung (content) chính là phần tử ở vị trí đó Số phần tử hay số vị trí của

được gọi là độ dài (length) của  Nếu n = 0, thì = φ Mặt khác hàm Succ không xác định ở

vị trí thứ n hay Succn (Head ()) không xác định

Đối với các DSTT, người ta xây dựng ba phép xử lý tuần tự trên các phần tử :

• Tiếp cận (access) đến phần tử thứ k của DSTT

• Loại bỏ (delete) phần tử thứ k của DSTT

• Chèn (insert) một phần tử mới tại vị trí thứ k của DSTT

Giả sử Element là một phần tử có kiểu đã được định nghĩa trước đó Kiểu trừu tượng List được định nghĩa như sau :

Type List, Place

Functions EmptyList : → List

Length : List → Int Succ : Place → Place Access : List × Int → Place Content : Place → Element Delete : List × Int → List Insert : List × Int × Element → List Preconditions

Pre Access (: List, k : Int) = (1 ≤ k ≤ Length ())

Pre Delete (: List, k : Int) = (1 ≤ k ≤ Length ())

Pre Insert (: List, k : Int, e : Element) = (1 ≤ k ≤ Length () + 1)

/* k = Length () tương ứng với việc thêm một phần tử vào cuối DSTT */

Axioms ForAll  : List, k : Int, e : Element :

Length (EmptyList) = 0

( ≠ EmptyList) and (1 ≤ k ≤ Length ())⇒ Length (Delete (, k)) = Length ()  1 (1 ≤ k ≤ Length ()) ⇒ Length (Insert (, k, e)) = Length () + 1 ( ≠ EmptyList) and (1 ≤ k < Length ())⇒ Succ (Access (, k)) = Access (, k + 1) ( ≠ EmptyList) and (1 ≤ k ≤ Length ()) and (1 ≤ i ≤ k1) ⇒

Content (Access (Delete (, k), i)) = Content (Access (i) Yêu cầu :

1 Dựa theo các tiên đề đã cho, hoàn chỉnh (điền vào dấu ?) các tiên đề sau đây :

Ngày đăng: 08/05/2017, 12:29

TỪ KHÓA LIÊN QUAN

w