Tải bản đầy đủ (.doc) (7 trang)

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

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 (74.03 KB, 7 trang )

KHOA CNG NGH THNG TIN

0(511) 841 287

óử thi Mọn CNG NGH PHệN MệM

óử sọỳ 106

Thồỡi gian laỡm baỡi 90 phuùt . Khọng sổớ duỷn g taỡi lióỷu . Ghi sọỳ õóử thi vaỡo baỡi laỡm . Nọỹp laỷi õóử
thi

ỷc taớ sọỳ hổợu tyớ (Rational Number)
Lồùp caùc sọỳ hổợu tyớ õổồỹc bióứu dióựn bồới hai thaỡnh phỏửn tổớ sọỳ n vaỡ mỏựu sọỳ d laỡ nhổợng sọỳ nguyón.
Ngổồỡi ta cỏửn xỏy dổỷng caùc haỡm xổớ lyù sọỳ hổợu tyớ nhổ : taỷo mồùi, ruùt goỹn, cọỹng, trổỡ, nhỏn, chia, so saùnh
vaỡ chuyóứn õọứi thaỡnh sọỳ thổỷc.
Giaớ sổớ kióứu trổỡu tổồỹng Rational õổồỹc õởnh nghộa nhổ sau (cọỹt bón phaới õỷt trổồùc bồới mọỹt dỏỳu ;
õóứ giaới thờch) :
Type Rational
Functions
Create-rat
Reduction
Numer
Denom
+rat
-rat
*rat
/rat
=rat
Rat-Real

:


:
:
:
:
:
:
:
:
:

Int ì Int
Rational
Rational
Rational
Rational ì Rational
Rational ì Rational
Rational ì Rational
Rational ì Rational
Rational ì Rational
Rational

Preconditions
Pre Create-rat (n, d : Int)













Rational
Rational
Int
Int
Rational
Rational
Rational
Rational
Bool
Real
=

;
;
;
;
;
;
;
;
;
;

taỷo sọỳ hổợu tyớ tổỡ hai sọỳ nguyón
ruùt goỹn sọỳ hổợu tyớ

traớ vóử tổớ sọỳ (numerator)
traớ vóử mỏựu sọỳ (denominator)
cọỹng hai sọỳ hổợu tyớ
trổỡ hai sọỳ hổợu tyớ
nhỏn hai sọỳ hổợu tyớ
chia hai sọỳ hổợu tyớ
so saùnh hai sọỳ hổợu tyớ
chuyóứn mọỹt sọỳ hổợu tyớ thaỡnh sọỳ thổỷc

d0

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 laỡ, nóỳu r laỡ mọỹt sọỳ hổợu tyớ, r=n/d, thỗ tổớ sọỳ cuớa r laỡ n vaỡ mỏựu sọỳ laỡ d0.
=rat(create-rat(n1, d1), create-rat(n2, d2)
n1*d2 = n2*d1
; Hai sọỳ hổợu tyớ r1=n1/d1 vaỡ r2=n2/d2 bũng nhau khi vaỡ 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 caùc tión õóử õaợ cho gồỹi yù, haợy tióỳp tuỷc taỷo mồùi caùc tión õóử cho pheùp thổỷc hióỷn caùc
pheùp toaùn xổớ lyù sọỳ hổợu tyớ õổồỹc õởnh nghộa trong phỏửn Functions .
2. Lỏỷp trỗnh bũng ngọn ngổợ giaớ (tổồng tổỷ Pascal) caùc haỡm xổớ lyù sọỳ hổợu tyớ mọ taớ trón õỏy.

óử thi Mọn CNG NGH PHệN MệM


TS. Phan Huy Khaùnh 08/05/17, 5/8/2017

óử sọỳ 105


KHOA CÄNG NGHÃÛ THÄNG TIN

 0(511) 841 287

Thåìi gian lm bi 90 phụt . Khäng sỉí dủn g ti liãûu . Ghi säú âãư thi vo bi lm . 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 no âọ, âỉåüc âënh nghéa âãû quy nhỉ sau :
∅ l mäüt cáy nhë phán kiãøu T, âỉåüc gi l cáy räùng (empty tree).

1.
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)
cng 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 phi ca A. Nãúu A l cáy suy biãún chè gäưm mäüt nụt, thç nụt âọ ln ln l nụt gäúc ca mäüt
cáy con. Ngỉåìi ta cn gi A l cáy âỉåüc gàõn nhn (labelled tree, hay tag tree) båíi cạc giạ trë trong T.

Chụ sỉû lãûch âäúi xỉïng ca âënh nghéa : nãúu A khäng phi 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 ln ln råìi (phán
biãût) nhau, cn cạc giạ trë thç cọ thãø giäúng nhau. Kiãøu trỉìu tỉåüng ca cáy nhë phán âỉåüc âënh nghéa
nhỉ sau (cäüt bãn phi âàût trỉåïc båíi mäüt dáúu ; âãø gii thêch) :
Type BinTree(T)
Functions
emptytree :
emptytree? :
createtree :
root
:
left
:
right
:
leaf?
:

 BinTree(T)
BinTree(T)
 Boolean
T  BinTree(T)  BinTree(T)  BinTree(T)
BinTree(T)
T
BinTree(T)
 BinTree(T)
BinTree(T)
 BinTree(T)
BinTree(T)
 Bool


Preconditions
root(A) âỉåüc xạc âënh nãúu v chè nãúu
left(A)
âỉåüc xạc âënh nãúu v chè nãúu
right(A) âỉåüc xạc âënh nãúu v chè nãúu
leaf?(A) âỉåüc xạc âënh nãúu v chè nãúu

;
;
;
;
;
;
;

tảo måïi cáy räùng
kiãøm tra cáy räùng
tảo cáy nhë phán
truy cáûp nụt gäúc
truy cáûp cáy con trại
truy cáûp cáy con phi
kiãøm tra nụt lạ

A ≠ emptytree
A ≠ emptytree
A ≠ emptytree
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
. . .
u cáưu :
1. Dỉûa theo cạc tiãn âãư â cho gåüi , hy 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 cáy nhë phán âỉåü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 hm xỉí l cáy nhë phán mä t trãn âáy.

Âãư thi Män CÄNG NGHÃÛ PHÁƯN MÃƯM
TS. Phan Huy Khạnh 08/05/17, 5/8/2017

Âãư säú 104


KHOA CÄNG NGHÃÛ THÄNG TIN

 0(511) 841 287

Thåìi gian lm bi 90 phụt . Khäng sỉí dủn g ti liãûu . Ghi säú âãư thi vo bi lm . 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. Ngoi ra,
ngỉåìi ta cọ hai phẹp toạn bäø sung l kiãøm tra mäüt pháưn tỉí cọ thü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
Functions Key-of
: Element → Key
EmptyCollection : → Collection
Add
: Element × Collection → Collection
Delete
: Key × Collection → Collection
Search
: Key × Collection → Element
in
: Element × Collection → Bool
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
u cáưu :
1. Dỉûa theo cạc tiãn âãư â cho, hon chènh (âiãưn vo dáúu ?) cạc tiãn âãư sau âáy :

(k ≠ k’)

⇒?

e ≠ Search (k, C)

⇒?

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ỉí ca S tho mn
mäüt tênh cháút â cho no âọ.

TS. Phan Huy Khạnh 08/05/17, 5/8/2017


KHOA CÄNG NGHÃÛ THÄNG TIN

 0(511) 841 287

Âãư thi Män CÄNG NGHÃÛ PHÁƯN MÃƯM

Âãư säú 103

Thåìi gian lm bi 90 phụt . Khäng sỉí dủn g ti liãûu . Ghi säú âãư thi vo bi lm . Näüp lải âãư
thi

Âàûc t danh sạc h tuún tênh (Linear List) viãút tàõt DSTT)
DSTT l mäüt dy cọ thãø räùng hồû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ỉû ca cạc vë trê (place) ca chụng, âỉåüc xạc âënh båíi hm Succ.

Nghéa l våïi mi vë trê p ca mäüt DSTT ≠ φ, ta cọ : ∃ k ≥ 0 sao cho p = Succk (Head
(Trong âọHead () chè vë trê âáưu tiãn ca 
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ê ca
âỉåüc gi l âäü di (length) ca . Nãúu n = 0, thç = φ. Màût khạc hm 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 tưn tỉû trãn cạc pháưn tỉí :
• Tiãúp cáûn (access) âãún pháưn tỉí thỉï k ca DSTT.
• Loải b (delete) pháưn tỉí thỉï k ca DSTT.
• Chn (insert) mäüt pháưn tỉí måïi tải vë trê thỉï k ca 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ỉí vo cú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)
u cáưu :
1. Dỉûa theo cạc tiãn âãư â cho, hon chènh (âiãưn vo dáúu ?) cạc tiãn âãư sau âáy :
(1 ≤ k ≤ Length ()1) and (i  k)
⇒?
(1 ≤ k ≤ Length ()) and (1 ≤ i ≤ k1)
⇒?

2. Viãút bàòng ngän ngỉỵ gi (tỉång tỉû Pascal) cạc th tủc chn (Insert) mäüt pháưn tỉí vo DSTT v
tçm kiãúm nhë phán (Binsearch) våïi gi thiãút DSTT â âỉåüc sàõp xãúp trỉåïc.
TS. Phan Huy Khạnh 08/05/17, 5/8/2017


KHOA CÄNG NGHÃÛ THÄNG TIN

 0(511) 841 287

Âãư thi Män CÄNG NGHÃÛ PHÁƯN MÃƯM

Âãư säú 102


Thåìi gian lm bi 90 phụt . Khäng sỉí dủn g ti liãûu . Ghi säú âãư thi vo bi lm . 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. Ngoi ra,
ngỉåìi ta cọ hai phẹp toạn bäø sung l kiãøm tra mäüt pháưn tỉí cọ thü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
Functions Key-of
: Element → Key
EmptyCollection : → Collection
Add
: Element × Collection → Collection
Delete
: Key × Collection → Collection
Search
: Key × Collection → Element
in
: Element × Collection → Bool
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
u cáưu :
1. Dỉûa theo cạc tiãn âãư â cho, hon chènh (âiãưn vo dáúu ?) cạc tiãn âãư sau âáy :

Key-of (e) ≠ k

⇒?

(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 (duût) táút c cạc pháưn tỉí ca mäüt táûp håüp â cho.

TS. Phan Huy Khạnh 08/05/17, 5/8/2017


KHOA CÄNG NGHÃÛ THÄNG TIN

 0(511) 841 287


Âãư thi Män CÄNG NGHÃÛ PHÁƯN MÃƯM

Âãư säú 101

Thåìi gian lm bi 90 phụt . Khäng sỉí dủn g ti liãûu . Ghi säú âãư thi vo bi lm . Näüp lải âãư
thi

Âàûc t danh sạc h tuún tênh (Linear List) viãút tàõt DSTT)
DSTT l mäüt dy cọ thãø räùng hồû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ỉû ca cạc vë trê (place) ca chụng, âỉåüc xạc âënh båíi hm Succ.
Nghéa l våïi mi vë trê p ca mäüt DSTT ≠ φ, ta cọ : ∃ k ≥ 0 sao cho p = Succk (Head
(Trong âọHead () chè vë trê âáưu tiãn ca 
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ê ca
âỉåüc gi l âäü di (length) ca . Nãúu n = 0, thç = φ. Màût khạc hm 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 tưn tỉû trãn cạc pháưn tỉí :
• Tiãúp cáûn (access) âãún pháưn tỉí thỉï k ca DSTT.
• Loải b (delete) pháưn tỉí thỉï k ca DSTT.
• Chn (insert) mäüt pháưn tỉí måïi tải vë trê thỉï k ca 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ỉí vo cú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)

u cáưu :
1. Dỉûa theo cạc tiãn âãư â cho, hon chènh (âiãưn vo dáúu ?) cạc tiãn âãư sau âáy :
( ≠ EmptyList) and (1 ≤ k ≤ Length ()) and (k ≤ i ≤ Length () 1) ⇒ ?
(1 ≤ k ≤ Length ()1) and (k1 ≤ i ≤ Length ()1)
⇒?
2. Viãút bàòng ngän ngỉỵ gi (tỉång tỉû Pascal) cạc th tủc duût (Scan) v tênh âäü di (Length)
ca mäüt DSTT.
TS. Phan Huy Khạnh 08/05/17, 5/8/2017



KHOA CÄNG NGHÃÛ THÄNG TIN

 0(511) 841 287

TS. Phan Huy Khaïnh 08/05/17, 5/8/2017



×