Giáo trình Công nghệ phần mềm - Phan Huy Khánh (Phần 2)
Tóm tắt Giáo trình Công nghệ phần mềm - Phan Huy Khánh (Phần 2): ...giaí thiãút vãö cháút læåüng cuía quaï trçnh debugger. b) Phæång phaïp thæí nghiãûm giaí thuyãút (Hypothesis Testing) Váún âãö laì xáy dæûng mäüt táûp håüp caïc pheïp thæí nghiãûm maì kãút quaí âæåüc áún âënh træåïc cho pheïp khàóng âënh hay baïc boí âäü äøn âënh cuía pháön mãöm âang xeït co... duû trãn âæåüc chia ra thaình caïc khäúi : âáöu, giao tiãúp vaì thán cuía âàûc taí. Mäùi khäúi gäöm mäüt säú khai baïo ngàn caïch nhau båíi caïc tæì khoïa (coï gaûch chán) Âäúi våïi khäúi giao tiãúp (interface), ngæåìi ta sæí duûng caïc khaïi niãûm tiãön täú (prefix), trung täú (infix) vaì ...hoía maîn (1.4)’ Thæûc ra, lãûnh chg (2, 5) thay âäøi näüi dung âëa chè x (cho giaï trë y) nhæng váùn giæî nguyãn caïc âëa chè khaïc, nghéa laì kêch thæåïc bäü nhåï khäng thay âäøi. IV.2. Haìm Trãn âáy, ta âaî váûn duûng quan âiãøm toaïn hoüc vãö haìm, sau âáy ta tiãúp tuûc laìm roî mäüt...
= ∅ keïo theo (f \ s) og = fog (5.3) dom (f) ∩ ran (g) = ∅ keïo theo fog = { } (5.4) Biãøu thæïc { } chè âënh haìm räùng f o (g \ S) = (fog) \ S (5.5) { x → y } o { x → u } = { x → y } (5.6) Tæì caïc luáût trãn, ta coï thãø âån giaín hoïa pheïp thay âäøi biãún âaî âënh nghéa åí (4.2) nhæ sau : p = m o a q = m o n (5.7) Vaì ta coï thãø chæïng minh dãù daìng âënh lyï phuì håüp (4.5) bàòng caïch sæí duûng caïc tênh cháút trãn. Tháût váûy, ta cáön chæïng minh hai âàóng thæïc sau âáy : m’ o n’ = (m o n) + { x → y } m’ o o’ = m o a Nghéa laì : (m + { u → y }) o (n + { x → u }) = (m o n) + { x → y } Âàûc taí 141 (m + { u → y }) o a = m o a våïi caïc giaí thiãút : u ∉ ran (n) nghéa laì { u } ∩ ran (n) = ∅ (5.8) u ∉ ran (a) nghéa laì { u } ∩ ran (a) = ∅ (5.9) Ta coï kãút quaí phuû nhæ sau : (m \ { u }) o (n \ { x }) = (( m \ { u }) o n) \ { x } theo (5.5) = (m o n) \ { x } theo (5.3) vaì (5.8). Nhæng : { x → y } o (n \ { x }} = { } theo (5.4), (2.2) vaì (5.8). Vaì ta cuîng coï : (m \ { u }) o { x → u } = { } theo (5.4) vaì (2.2) { u → y } o { x → u } = { x → y } theo (5.6) Nhæ váûy theo (5.2) vaì (2.5) : (m + { u → y }) o (m + { x → u}) = (m o n) \ { x } ∪ { x → y } = (m o n) + { x → y } Màût khaïc ta coï : m \ { u } o a = m o a theo (5.3) { u → y } o a = { } theo (5.4) Nhæ váûy : (m + { u → y }) o a = m o a theo (2.4) vaì (5.3) IV.6. Triãøn khai thæï hai Muûc naìy seî täúi æu caïch triãøn khai âáöu tiãn âaî trçnh baìy trong muûc 4 bàòng caïch xáy dæûng táûp håüp L caïc âëa chè tæû do cuía D, táûp håüp maì ta âaî choün tuìy yï mäüt pháön tæí u trong âàûc taí pheïp toaïn mod1 åí (4.3). YÏ tæåíng thiãút kãú caïch triãøn khai thæï hai naìy nàòm åí chäø giæî laûi traûng thaïi cuía mäùi âëa chè cuía D maì âëa chè naìy coï thãø thuäüc vãö mäüt (vaì chè mäüt maì thäi) trong 4 táûp håüp råìi nhau nhæ sau : RN _ RN RA ∩ RN RN _ RA RA ∪ RN = L trong âoï RA = ran (a), RN = ran (n) TS. PHAN HUY KHAÏNH biãn soaûn 141 142 Cäng nghãû Pháön mãöm Tuìy theo mäüt âëa chè d cuía D thuäüc vãö mäüt trong bäún táûp håüp trãn, ta noïi traûng thaïi tæång æïng seî laì : old (cuî) d ∈ ran (a) common (chung) d ∈ ran (a) vaì d ∈ ran (n) new (måïi) d ∈ ran (a) free (tæû do) d ∉ ran (a) vaì d ∉ ran (n) Khi mäüt âëa chè tæû do âæåüc choün, khi mäüt thay âäøi xaíy ra, âëa chè âoï chuyãøn qua traûng thaïi måïi ; vãö âëa chè quaï taíi trong baíng n, nãúu âëa chè âoï khäng phán chia bãn trong baíng n (nghéa laì nãúu haìm nlaì âån aïnh vaì âiãöu naìy âæåüc giaí thiãút laì luän âuïng), khi âoï, âëa chè seî tråí nãn tæû do nãúu âaûng åí traûng thaïi måïi hoàûc chuyãøn sang traûng thaïi cuî nãúu âang åí traûng thaïi chung. Khi mäüt pheïp håüp thæïc hoïa hay khåíi âäüng laûi caïc âëa chè tæû do hay chung váùn nhæ cuî. Caïc âëa chè måïi chuyãøn thaình tæû do khi mäüt sæû khåíi âäüng laûi vaì laì træåìng håüp chung khi håüp thæïc hoïa. Cuäúi cuìng, caïc âëa chè cuî chuyãøn thaình tæû do khi håüp thæïc hoïa vaì tråí thaình chung khi khåíi âäüng laûi.Chuï yï ràòng caïc âëa chè cuî khäng liãn quan âãún sæû thay âäøi. Så âäö dæåïi âáy toïm tàõt mäüt caïch phi hçnh thæïc nhæîng chuyãøn âäøi khaïc nhau naìy. Muûc âêch âãø hçnh thæïc hoïa phæång phaïp naìy, ta âæa vaìo mäüt biãún måïi s âënh nghéa traûng thaïi cuía mäùi âëa chè cuía D. s ∈ D → {fr, nw, cm, ol} (6.1) Ta coï báút biãún sau âáy : RA - RN = adr (ol) RA ∩ RN = adr (cm) (6.2) RN - RA = adr (nw) RA ∪ RN = adr (fr) HÇNH VEÎ Trong âoï : RA = ran (a) RN = ran (n) adr (z) = {x ∈ D / s (x) = Z} våïi Z ∈ {fr, nw, cm, ol} Cuäúi cuìng báút biãún thæï ba chè roî ràòng caí hai haìm n vaì a âãöu âån aïnh, nghéa laì hai âëa chè cuía A phán biãût seî luän luän tæång æïng våïi caïc âëa chè cuía D phán biãût qua caïc haìm naìy. Táûp håüp caïc haìm tæì A vaìo D nhæ váûy âæåüc kyï hiãûu båíi A ⌡ D nhæ váûy Âàûc taí 143 n ∈ A ⌡ D a ∈ A ⌡ D Báy giåì seî laì âënh nghéa ba haìm chuyãøn tiãúp láön læåüt laì f, g vaì h sæí duûng khi thay âäøi (cho caïc âëa chè cuía D liãn quan), khåíi âäüng laûi thay cho håüp thæïc hoïa (cho moüi âëa chè cuía D) : f = {fr → nw, nw → fr, thay âäøi cm → ol} g = {fr → fr, nw → fr, cm → cm, khåíi âäüng laûi ol → cm} h = {fr → fr, nw → cm, cm → cm, håüp thæïc hoïa ol → fr} Ta coï âàûc taí cuía 3 pheïp toaïn måïi mod2, rst2, vaì vld2 xuáút hiãûn nhæ laì caïc måí räüng tæång æïng tæì muûc 4 : (a, n, m, s) mod2 (x, y) (a’, n’, m’, s’) (a, n, m) mod1 (x, y) (a’, n’, m’) (6.5) s’ = s + {u → f (s (u)), v → f (s) (v))} xem (4.3) trong âoï : L = { Z ∈ D |s (z) = fr } u ∈ L v = n (x) (a, n, m, s) rst2 (a’, n’, m’, s’) (6.6) s’ = gos xem (4.6) (a, n, m, s) vld2 (a’, n’, m’, s’) (6.7) (a, n, m) vld1 (a’, n’, m’) xem (4.7) s’ = hos Sau âáy laì mäüt quaï trçnh chuyãøn âäøi cuía hãû thäúng CHÆÌA Chæïng minh TS. PHAN HUY KHAÏNH biãn soaûn 143 144 Cäng nghãû Pháön mãöm Màûc duì trong muûc træåïc ta âaî kiãøm chæïng kyî læåîng âàûc taí hãû thäúng vaì nháûn âæåüc kãút quaí thoîa maîn, nhæng chæa âaím baío âæåüc tênh âuïng âàõn cuía âàûc taí trong moüi træåìng håüp. Âãø âi âãún mäüt kãút quaí täøng quaït, ta cáön phaíi chæïng minh khäng phaíi cho mäüt træåìng håüp âàûc biãût naìo âoï maì phaíi cho caïc dæî liãûu tæåüng træng thoía maîn nhæîng giaí thiãút naìo âoï, caïc pheïp toaïn âaî âàûc taí laì phuì håüp vaì cháúp nháûn âæåüc. Viãûc chæïng minh tênh phuì håüp cuía caïc pheïp toaïn âàûc taí åí (6.5), (6.6) vaì (6.7) so våïi caïc pheïp toaïn âàûc taí åí (4.3), (4.6) vaì (4.7) laì hiãøn nhiãn vç ràòng trong caïch láûp caïc cäng thæïc thç caïc pheïp toaïn (4.3), (4.6) vaì (4.7) mäüt caïch tæång æïng. Traïi laûi, viãûc chæïng minh tênh cháúp nháûn âæåüc phæïc taûp hån. Træåïc hãút ta cáön chæïng minh ba nhoïm âënh lyï báút biãún sau âáy : ((6.1) vaì (6.5)) keïo theo (6.1)’ (7.1) ((6.2) vaì (6.5)) keïo theo (6.2)’ (7.2) ((6.3) vaì (6.5)) keïo theo (6.3)’ (7.3) ((6.1) vaì (6.6)) keïo theo (6.1)’ (7.4) ((6.2) vaì (6.6)) keïo theo (6.2)’ (7.5) ((6.3) vaì (6.6)) keïo theo (6.3)’ (7.6) ((6.1) vaì (6.7)) keïo theo (6.1)’ (7.7) ((6.2) vaì (6.7)) keïo theo (6.2)’ (7.8) ((6.3) vaì (6.7)) keïo theo (6.3)’ (7.9) Âäúi våïi 3 âënh lyï åí nhoïm 1, ta coï thãø dáùn âãún caïc giaí thiãút cho caïc âiãöu kiãûn sau âáy : a ∈ A ⌡ D n ∈ A ⌡ D u ∉ RN (7.10) u ∉ RA v ∈ RN Trong âoï u vaì âæåüc âënh nghéa åí (6.5) vaì RA, RN âæåüc âënh nghéa åí (6.2) chæïng minh (7.1) Âàûc taí 145 Mäüt khoï khàn nhoí laì haìm chuyãøn tiãúp f âæåüc âënh nghéa åí (6.4) laì haìm bäü pháûn. Cáön chæïng minh ràòng s’ âæåüc âënh nghéa âuïng, nghéa laì caïc biãøu thæïc f (s (u)) vaì f (s (v)) trong (6.5) coï nghéa, noïi caïch khaïc ta coï : s (u) ∈ dom (f) s (v) ∈ dom (f) âiãöu naìy hiãøn nhiãn vç ràòng theo (7.10), ta coï : s (u) = fr s (v) = { nw, cm} vaì theo (6.4) ta coï dom (f) = {fr, nw, cm} Âãø chæïng minh (7.2) vaì (7.3) ta cáön kãút quaí sau âáy liãn quan âãún sæû quaï taíi cuía mäüt haìm âån aïnh thæìa nháûn maì khäng chæïng minh : f ∈ X ⌡ Y keïo theo f’ ∈ X ⌡ Y x ∈ dom (f) ran (f’) = r’ y ∉ Y - ran (f) y ≠ f (x) Trong âoï : f’ = f + {x → y} r’ = (ran (f) - {f (x)}) ∪ {y} chæïng minh (7.2) : Theo (7.10), (7.11) vaì (6.5) ta coï RA’ = RA (vç ràòng a’ = a theo (4.3)) RN’ = (RN {V}) ∪ {u} theo 7.11 u ≠ v theo 7.10 HÇNH VEÎ Xaíy ra hai træåìng håüp : 1/ v ∈ RA, nghéa laì s (v) = cm Khi âoï : RA’ - RN’ = (RA - RN) ∪ {v} RA’ ∩ RN’ = (RA ∩ RN) - {v} RN’ - RA’ = (RN - RA) ∪ {u} RA’ ∪ RN’ = (RA ∪ RN) - {u} HÇNH VEÎ 2/ v ∉ RA, nghéa laì s (v) = nw Khi âoï : RA’ - RN’ = RA - RN TS. PHAN HUY KHAÏNH biãn soaûn 145 146 Cäng nghãû Pháön mãöm RA’ ∩ RN’ = RA ∩ RN RN’ - RA’ = ((RN - RA) - {v}) ∪ {v} RN’ ∪ RA’ = ((RN ∪ RA) - {u} ∪ {v} HÇNH VEÎ Nhæ váûy caïc chuyãøn tiãúp tæì s (u) vaì s (v) nhæ sau fr → nw våïi u cm → ol våïi v trong træåìng håüp 1/ nw → fr våïi v trong træåìng håüp 2/ Caïc chuyãøn tiãúp naìy tæång æïng våïi caïc chuyãøn tiãúp âaî chè ra båíi haìm g âënh nghéa åí (6.4) IV.7. Triãøn khai thæûc hiãûn láön thæï ba Láön naìy, ta giaí thiãút ràòng xaíy ra caïc sai soït cáön phaíi dæû phoìng nhåì hãû thäúng håüp thæïc hoïa vaì khåíi âäüng laûi. Giaí sæí caïc baíng a, n, m vaì s âæåüc caìi âàût trãn caïc thiãút bë nhåï khaïc nhæ sau : HÇNH VEÎ Tæì caïch täø chæïc naìy, ta muäún dæû phoìng caïc sai soït taïc âäüng lãn bäü nhåï trong bàòng caïch khåíi âäüng laûi tæì âéa. ÅÍ âáy, ta âaî caìi âàût caïc baíng s vaì s trong bäü nhåï trong våïi muûc âêch tàng tênh hiãûu quaí cuía pheïp thay âäøi bäü nhåï laì nhanh nháút coï thãø. Våïi muûc âêch trãn, viãûc khåíi âäüng laûi laìm thay âäøi baíng s tæì chênh noï (thæûc tãú laì s’ = gos theo (6.6)) khäng coìn coï taïc duûng næîa vç ràòng ta giaí thiãút ràòng bäü nhoï trung tám laì s seî khäng coìn næîa. Mäüt giaíi phaïp laì gáúp âäi baíng s lãn âéa cho mäùi láön håüp thæïc hoïa. Xáy dæûng baíng måïi t âæåüc tæång æïng våïi báút biãún nhæ sau : t ∈ D → {fr, cm} (8.1) Chuï yï ràòng ta khäng cáön moüi giaï trë caïc traûng thaïi âëa chè âéa vç ràòng t chè duìng âãø taïi sinh laûi baíng s khi khåíi âäüng laûi, tæì âoï ta coï báút biãún bäø sung nhæ sau : {x ∈ D | t (x) = cm} = ran (a) (8.2) Ta coï caïc âàûc taí måïi nhæ sau : (a, n, m, s, t) mod3 (x, y) (a’, n’, m’, s’, t’) (a, n, m, s) mod2 (x, y) (a’, n’, m’, s’) (8.3) t’ = t xem (6.5) (a, n, m, s, t) rst3 (a’, n’, m’, s’, t’) (a, n, m) rst1 (a’, n’, m’) (8.4) s’ = t xem (4.6) Âàûc taí 147 t’ = t (a, n, m, s, t) vld3 (a’, n’, m’, s’, t’) (8.5) (a, n, m, s) vld2 (a’, n’, m’, s’) xem (6.7) t’ = s’ Dãù daìng chæïng minh ràòng caí ba âàûc taí trãn laì phuì håüp vaì cháúp nháûn âæåüc. Màût khaïc ta tháúy ràòng pheïp khåíi âäüng laûi taïi sinh bäü nhåï trong tæì âéa vaì chè tæì âéa maì thäi. Triãøn khai láön thæï tæ vaì láön thæï nàm Ta seî maî hoïa caïc giaï trë fr, nw, cm vaì ol nhæ haìm âån aïnh k nhæ sau : k = {(0, 0) → fr, (0, 1) → ol, (1, 0) → cm, (9.1) (1, 1) → nw} Sau âoï ta biãøu diãùn caïc haìm s vaì t nhåì ba chuäùi bit nhæ sau : b ∈ D → {0, 1} âãø biãøu diãùn s c ∈ D → {0, 1} d → {0, 1}âãø biãøu diãùn t (9.2) Cuäúi cuìng, thay âäøi caïc biãún tæång æïng våïi caïc âiãöu kiãûn sau : s (x) = k (b (x), c (x)) t (x) = k (d (x), 0) våïi x ∈ D (9.3) Giaí sæí laì pheïp buì (âaío ngæåüc bêt) nhæ sau 0 = 1,1 = 0 (9.4) Ta tháúy coï thãø maî hoïa haìm f âaî âënh nghéa åí (6.4) nhåì hai pheïp buì vaì haìm h cuîng âaî dënh nghéa åí (6.4) nhåì pheïp sao cheïp vaì âàût lãö 0 tæång æïng våïi haìm : Z ∈ D → {0} (9.5) Ta coï 3 âàûc taí måïi nhæ sau : (a, n, m, b, c, d) mod4 (x, y) (a’, n’, m’, b’, c’, d’) (a, n, m) vld1 (a’, n’,m’) b’ = b (9.8) c’ = z xem (4.7) d’ = b Báy giåì ta chè cáön toïm tàõt laûi nhæîng gç âaî laìm cho âãún luïc naìy, nghéa laì mäüt màût, sao cheïp laûi caïc âàûc taí (4.3), (4.6) vaì (4.7) vaìo bãn trong cuía (9.6), (9.7) vaì (9.8), màût khaïc, nhoïm caïc báút biãún (4.1), (6.1), (6.2), (6.3), (8.1), (8.2) vaì (9.2) Âiãöu naìy laìm âæåüc bàòng caïch khæí caïc biãún tråí thaình dæ thæìa (chæïa s vaì t) båíi caïc pheïp thay âäøi biãún (9.3). TS. PHAN HUY KHAÏNH biãn soaûn 147 148 Cäng nghãû Pháön mãöm Khi sao cheïp, ta tháúy ràòng âàûc taí (4.3) chæïa âiãöu kiãûn træåïc L ≠ ∅ khäng dãù gç tênh âæåüc. Âãø khàõc phuûc nhæåüc âiãøm naìy ta âæa vaìo mäüt biãún måïi w laì mäüt säú nguyãn w ∈ N (9.9) w chæïa caïc pháön tæí cuía táûp håüp L (cardinality) w = | RA ∪ RN | Ta thæìa nháûn ngáöm ràòng caïc táûp håüp D vaì A âãöu laì hæîu haûn. Khi håüp thæïc hoïa vaì khåíi âäüng laûi, bäü âãúm w âæåüc khåíi taûo giaï trë |D| - |A| (vç ràòng a vaì n âãöu âån aïnh) laì mäüt hàòng säú dæång cuía hãû thäúng. Khi coï sæû thay âäøi, bäü âãúm w tàng lãn khi vaì chè khi âëa chè v, quaï taíi trong n, âang åí traûng thaïi cm, nghéa laì nãúu b (v) = 1 vaì nãúu c (v) = 0 Våïi sæû måí räüng måïi naìy, báút biãún cuía hãû thäúng luïc naìy seî laì : a ∈ A → D (6.3) n ∈ A → D (6.3) m ∈ D → V (4.1) b ∈ D → {0, 1} (9.2) c ∈ D → {0, 1} (9.2) d ∈ D → {0, 1} (9.2) d ∈ D → {0, 1} (9.2) w ∈ N (9.9) RA - RN = {x ∈ D / b (x) = 0 vaì c (x) = 1} (6.2) RA ∩ RN = {x ∈ D / b (x) = 1 vaì c (x) = 0} (6.2) RN - RA = {x ∈ D / b (x) = 1 vaì c (x) = 1} (6.2) RA ∪ RA {x ∈ D / b (x) = 0 vaì c (x) = 0} (6.2) RA = {x ∈ D / d (x) = 1} (9.2) W = | RA ∪ RN | (9.10) Trong âoï RA = ran (a) RN = ran (n) Sau âáy laì caïc âàûc taí âæåüc toïm tàõt bàòng caïch thay thãú caïc danh saïch daìi caïc biãún båíi hai biãún traûng thaïi state vaì traûng thaïi coï dáúu nhaïy (‘) state’ state mod5 (x, y) state’ x ∈ A y ∈ V w ≠ 0 a’ = a n’ = n + {x → u} Âàûc taí 149 m’ = m + {u → y} b’ = b + {u → b (u) v → b (v)} (9.12) c’ = c + {u → c (u), v → c (v)} d’ = d (b (v) = 1 & c (v) = 0) ⇒ w’ = w - 1 Trong âoï u ∈ {Z ∈ D | b (z) = 0 & c (z) = 0} v = n (x) state rst5 state’ a’ = a n’ = a m’ = m b’ = d (9.13) c’ = z d’ = d w’ = | D | - | A | state vdl5 state’ a’ = n n’ = n m’ = m b’ = b (9.14) c’ = z d’ = b w’ = | D | - | A | Trong âoï Z ∈ D → {0} Sau âáy laì quaï trçnh biãún âäøi cuû thãø IV.8. Âàûc taí laìm gç ? Sau âáy ta seî traí låìi cáu hoíi vãö muûc âêch (cho ai, cho caïi gç) cuía caïc cäng viãûc maì ta âaî laìm. Vai troì âáöu tiãn cuía mäüt âàûc taí laì cho pheïp måí ra caïc tranh luáûn vãö âãö taìi âàûc taí âãö taìi âàûc taí âãø cáûp âãún. Thæûc tãú, khaïc våïi mäüt chæång trçnh, mäüt âàûc khäng phaíi viãút ra âãø maïy tênh coï thãø hiãøu âæåüc maì âãø cho nhæîng NSD coï thãø hiãøu vaì tin tæåíng vaìo tênh âuïng âàõn cuía näüi dung âaî âàûc taí. Tæì âàûc taí luïc âáöu åí muûc 3 cho âãún caïc âàûc taí tiãúp theo åí caïc muûc 4, 6, 8 vaì 8, ta âaî sæí duûng caïc raìng buäüc mäùi luïc mäüt mang tênh thæc tiãùn. Ta âaî khàóng âënh âæåüc tênh âuïng âàõn cuía âàûc taí båíi caïc chæïng minh âënh lyï phuì håüp vaì cháúp nháûn âæåüc : baío toaìn tênh báút biãún. Báy giåì váún âãö laì sæí duûng caïc âàûc taí âãø láûp trçnh. Trong muûc naìy, ta seî láûp trçnh cho caïc træåìng håüp âàûc taí (9.12), (9.13) vaì (9.14), bàòng caïch sæí duûng ngän TS. PHAN HUY KHAÏNH biãn soaûn 149 150 Cäng nghãû Pháön mãöm ngæî giaí Pascal. Ta âæa vaìo caïc quy tàõc âãø tiãút láûp mäúi liãn hãû giæîa âàûc taí vaì láûp trçnh. Quy tàõc 1 : Khi mäüt âàûc taí chæïa caïc âiãöu kiãûn træåïc, chæång trçnh tæång æïng seî laì mäüt haìm. Theo nghéa cuía Pascal, mäùi giaï trë sai cuía âiãöu kiãûn træåïc seî traí vãö biãún traûng thaïi state mäüt giaï trë phán biãût. Chæång trçnh tæång æïng våïi âàûc taí (9.12) laì nhæ sau : if not (x in A) then state := bad - x else if not (y in v) then state := bad - y else if w = 0 then state := no more place else begin State := OK ; Modification {goüi thuí tuûc} end ; Quy tàõc 2 : Khi mäüt âàûc taí chæïa caïc biãún phuû, ta coï thãø måí moüi thuí tuûc chæïa caïc biãún naìy nhæ laì caïc biãún cuûc bäü. Thuí tuûc naìy bàõt âáöu båíi caïc lãûnh khåíi âäüng Thuí tuûc Modification nhæ sau : procedure Modification ; var u, v : D begin u := 1 ; {choün u laì âëa chè beï nháút cuía L} while (b (u) ≠ 0) or (c (u) ≠ 0) do u := u + 1 ; (10.2) v := n (x) {tiãúp tuûc thán thuí tuûc end ; Quy tàõc 3 : Caïc âiãöu kiãûn sau khaïc nhau nãúu coï daûng a’ = ... (trong âoï dáúu ba cháúm ... chè âënh mäüt biãøu thæïc khåíi âäüng chæïa caïc biãún coï âaïnh dáúu nhaïy), thç coï thãø âæåüc chuyãøn thaình pheïp gaïn qua caïc quy tàõc bäø tråü nhæ sau : - Loaûi boí caïc âiãöu kiãûn sau daûng âàóng thæïc. Vê duû : d’ = d - Thay thãú dáúu = båíi dáúu gaïn bàòng := - Thæûc hiãûn pheïp täúi æu khi mäüt haìm laì quaï taíi Âàûc taí 151 - Loaûi boí caïc dáúu nhaïy ‘ - Thay thãú mäüt âiãöu kiãûn sau båíi cáúu truïc âiãöu kiãûn if... else : Caïc âiãöu kiãûn sau khäng bë loaûi boí cuía âàûc taí (9.12) nhæ sau : if not (x in A) then state := bad - x else if not (y in V) then state := bad - y (10.1) else if w = 0 then state := no-more-place else begin state := O.K ; Modication {goüi giaï trë thuí tuûc} end ; Quy tàõc 2 : Khi mäüt âàûc taí chæïa caïc biãún phuû, ta coï thãø måí mäüt thuí tuûc chæïa caïc biãún naìy nhæ laì caïc biãún cuûc bäü. Thuí tuûc naìy bàõt âáöu båíi caïc lãûnh khåíi âäüng. Thuí tuûc Modication nhæ sau : Procedure Modication ; var u, v : D begin u := 1 ; {choün u laì âëa chè beï nháútcuía L} æhile (b (u) ≠ 0) or (c (u) ≠ 0) do u := u + 1 ; (10.2) v := n (x) {tiãúp tuûc thán thuí tuûc end ; Quy tàõc 3 : Caïc âiãöu kiãûn sau khaïc nhau nãúu âãöu coï daûng a’ = ... (trong âoï dáúu cháúm ... chè dënh mäüt biãøu thæïc khäng chæïa caïc biãún coï âaïnh dáúu nhaïy), thç coï thãø âæåüc chuyãøn thaình pheïp gaïn qua caïc quy tàõc bäø tråü nhæ sau : - Loaûi boí caïc âiãöu kiãûn sau daûng âàóng thæïc. Vê duû : d’ = d - Thay thãú dáúu = båíi dáúu gaïn bàòng := - thæûc hiãûn pheïp täúi æu khi mäüt haìm laì quaï taíi. - Loaûi boí caïc dáúu nhaïy ‘ - Thay thãú mäüt âiãöukiãûn sau båíi cáúu truïc âiãöu kiãûn if ... else : Caïc âiãöu kiãûn sau khäng loaûi boí cuía âàûc taí (9.12) nhæ sau : n (x) := u ; m (u) := y ; (10.3) TS. PHAN HUY KHAÏNH biãn soaûn 151 152 Cäng nghãû Pháön mãöm b (u) := b (u) ; b (v) := b (v) ; c (u) := c (u) ; c (v) = c (v) ; if (b (v) = 1) and (c (v) = 0) then w := w - 1 Quy tàõc 4 : Mäüt caïch hãû thäúng caïc hãû chæång trçnh âaî viãút âæåüc båíi caïc quy tàõc âaím baío tênh “song song” âæa vaìo tæì âàûc taí. Tæì caïc âoaûn chæång trçnh (10.1), (10.2) vaì (10.3) ta nháûn âæåüc cäng thæïc âáúy âuí hån nhæ sau : Âàûc taí 153 Mäüt säú âãö thi I. Âàûc taí (Specification) 1. Cho ma tráûn vuäng A cáúp n×n. Viãút âàûc taí thãø hiãûn : a) Mäùi pháön tæí trãn âæåìng cheïo chênh laì pháön tæí låïn nháút trãn cuìng haìng âi qua pháön tæí âoï. b) Mäùi pháön tæí trãn âæåìng cheïo phuû laì pháön tæí nhoí nháút trãn cuìng cäüt âi qua pháön tæí âoï. 2. Mäüt xáu (string) w âæåüc goüi laì âäúi xæïng (palindrome) nãúu w = wR hay âoüc xuäi ngæåüc âoüc ngæåüc âãöu nhæ nhau (wR laì xáu âaío ngæåüc cuía w). Vê duû caïc xáu omo, mannam, ... âãöu laì âäúi xæïng. Viãút âàûc taí thãø hiãûn caïc xáu âäúi xæïng. 3. Âa thæïc cáúp n âæåüc viãút dæåïi daûng Toaïn hoüc laì : Pn(x) = a0 + a1x1 + a2x2 + ... + anxn Viãút âàûc taí thãø hiãûn pheïp cäüng, so saïnh hai âa thæïc Pn(x) vaì Qm(x), nhán âa thæïc våïi mäüt hàòng säú a × Pn(x) vaì nhán hai âa thæïc Pn(x) × Qm(x). 4. Caïc phán säú (hay säú hæîu tyí) âæåüc biãøu diãùn båíi danh saïch (n, d), våïi n laì tæí säú vaì d laì máùu säú, laì nhæîng säú nguyãn (d ≠ 0). Viãút âàûc taí xáy dæûng caïc haìm xæí lyï phán säú: ruït goün, træì, chia vaì so saïnh hai phán säú, cäüng, nhán hai phán säú vaì chuyãøn âäøi phán säú thaình säú thæûc. II. Láûp trçnh cáúu truïc (Structured programming) 1. Viãút lãûnh bàòng giaí ngæî (phoíng Pascal), chè sæí duûng täúi âa ba cáúu truïc tuáön tæû, âiãöu kiãûn if vaì làûp (while-repeat), theo caïc så âäö khäúi dæåïi âáy : S1 Âuïng Sai S2 Sai Âuïng C2 C1S1 Âuïng Sai S2 Sai Âuïng C2 C1 TS. PHAN HUY KHAÏNH biãn soaûn 153 154 Cäng nghãû Pháön mãöm S1 Sai Sai S2 Âuïng Âuïng C2 C1 S3 Âuïng Âuïng S1 Sai Sai S2 C2 C1 S3 Âuïng Sai S3 Sai Âuïng S1 C1 C2 S2 S1 Âuïng Sai S2 Sai Âuïng C2 C1 2. Viãút lãûnh bàòng giaí ngæî (phoíng Pascal), chè sæí duûng täúi âa ba cáúu truïc tuáön tæû, âiãöu kiãûn if vaì làûp (whilerepeat), theo så âäö khäúi dæåïi âáy : III. Thæí nghiãûm chæång trçnh (Testing) Giaí sæí caïc chæång trçnh âaî cho åí pháön trãn âáy laì caïc âån thãø goüi âãún caïc âån thãø con S1, S2 vaì S3). Trçnh baìy mäüt phæång phaïp âãø thæí nghiãûm âån thãø goüi.
File đính kèm:
- giao_trinh_cong_nghe_phan_mem_phan_huy_khanh_phan_2.pdf