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

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

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

Thông tin tài liệu

KHOA CÄNG NGHÃÛ THÄNG TIN  0(511) 841 287 Âãư thi Män CÄNG NGHÃÛ PHÁƯN MÃƯM Âãư säú 106 Thåìi gian lm bi 90 Khäng sỉí dủn g ti liãûu Ghi säú âãư thi vo bi lm 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 thnh pháưn tỉí säú n v máùu säú d l nhỉỵng säú ngun Ngỉåìi ta cáưn xáy dỉûng cạc hm xỉí l säú hỉỵu t : tảo måïi, rụt gn, cäüng, trỉì, nhán, chia, so sạnh v chuøn âäøi thnh säú thỉûc Gi sỉí kiãøu trỉìu tỉåüng Rational âỉåüc âënh nghéa sau (cäüt bãn phi âàût trỉåïc båíi mäüt dáúu ; âãø gii 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 = ; ; ; ; ; ; ; ; ; ; tảo säú hỉỵu t tỉì hai säú ngun rụt gn säú hỉỵu t tr vãư tỉí säú (numerator) tr vãư máùu säú (denominator) cäüng hai säú hỉỵu t trỉì hai säú hỉỵu t nhán hai säú hỉỵu t chia hai säú hỉỵu t so sạnh hai säú hỉỵu t chuøn mäüt säú hỉỵu t thnh säú thỉûc d≠0 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) ≠ ; Nghéa l, nãúu r l mäüt säú hỉỵu t, r=n/d, thç tỉí säú ca 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 v chè n1*d2 =n2*d1 +rat(create-rat(n1, d1), create-rat(n2, d2) ⇔ Reduction(create-rat(n1*d2 + n2*d1, d1*d2)) u cáưu : 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 säú hỉỵu t âỉåüc âënh nghéa pháưn Functions Láûp trçnh bàòng ngän ngỉỵ gi (tỉång tỉû Pascal) cạc hm xỉí l säú hỉỵu t 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äú 105 KHOA CÄNG NGHÃÛ THÄNG TIN  0(511) 841 287 Thåìi gian lm bi 90 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 sau : ∅ l mäüt cáy nhë phán kiãøu T, âỉåüc gi l cáy räùng (empty tree) 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 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 (subtree) bãn trại, A2 l cáy 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 Ngỉåìi ta cn gi A l cáy âỉåüc gàõn nhn (labelled tree, hay tag tree) båíi cạc giạ trë 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 Kiãøu trỉìu tỉåüng ca cáy nhë phán âỉåüc âënh nghéa 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 trại truy cáûp cáy 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 : 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 pháưn Functions 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 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 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 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) ≥ 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) = Key-of (e) = k ⇒NbOccurrences (k, Add (e, C)) = NbOccurrences (k, C)  (k = k’) and NbOccurrences (k, C) = ⇒ NbOccurrences (k, Delete (k’, C)) = 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 : 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) ⇒? Cho S l táûp håüp cạc säú tỉû nhiãn gäưm giỉỵa 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 S’ ⊆ S cho S’ gäưm cạc säú chàơn Viãút th tủc xáy dỉûng mäüt táûp håüp S’ ⊆ S cho S’ gäưm cạc pháưn tỉí ca S tho mn mäüt 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 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 (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  = Thỉï tỉû cạc pháưn tỉí 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 ≥ 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 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) = ( ≠ EmptyList) and (1 ≤ k ≤ Length ()) ⇒ Length (Delete (, k)) = Length ()  (1 ≤ k ≤ Length ()) ⇒ Length (Insert (, k, e)) = Length () + ( ≠ 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 : 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) ⇒? 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 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 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 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) ≥ 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) = Key-of (e) = k ⇒NbOccurrences (k, Add (e, C)) = NbOccurrences (k, C)  (k = k’) and NbOccurrences (k, C) = ⇒ NbOccurrences (k, Delete (k’, C)) = 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 : 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) ≥ ⇒? Cho S l táûp håüp cạc säú tỉû nhiãn gäưm giỉỵa 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 S’ ⊆ S cho S’ gäưm cạc säú l 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 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 (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  = Thỉï tỉû cạc pháưn tỉí 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 ≥ 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 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) = ( ≠ EmptyList) and (1 ≤ k ≤ Length ()) ⇒ Length (Delete (, k)) = Length ()  (1 ≤ k ≤ Length ()) ⇒ Length (Insert (, k, e)) = Length () + ( ≠ 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 : 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) ⇒? Viãút bàòng ngän ngỉỵ gi (tỉång tỉû Pascal) cạc th tủc duût (Scan) v âäü 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 Khạnh 08/05/17, 5/8/2017 ... 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 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 (Linear... 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 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 (Linear... THÄNG TIN  0(511) 841 287 Thåìi gian lm bi 90 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

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan