Âải hc  Nàơng, trỉåìng Âải hc K thût Khoa CNTT−ÂTVT
Âãư thi säú SE99
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Thåìi gian 90 phụt
Ngy thi :
I.
Âàûc t (Specification)
Cho ma tráûn vng A cáúp n×n. Viãút âàûc t thãø hiãûn :
a)
Mäùi pháưn tỉí trãn âỉåìng chẹo chênh l pháưn tỉí låïn nháút trãn cng hng âi qua pháưn tỉí âọ.
b)
Mäùi pháưn tỉí trãn âỉåìng chẹo phủ l pháưn tỉí nh nháút trãn cng cäüt âi qua pháưn tỉí âọ.
II. Láûp trçnh cáúu trục
Viãút lãûnh bàòng gi ngỉỵ (phng Pascal), chè sỉí dủng täúi âa ba cáúu trục tưn tỉû, âiãưu kiãûn if v làûp (whilerepeat),
theo så âäư
khäúi dỉåïi âáy :
Âụng
C1
Sai
S1
Sai
Âụng
C2
S2
III. Thỉí nghiãûm chỉång trçnh (Testing)
Gi sỉí chỉång trçnh cho trong cáu II l âån thãø gi âãún cạc âån thãø S1 v S2. Trçnh by mäüt phỉång phạp âãø thỉí nghiãûm
âån thãø gi.
Khäng sỉí dủn g ti liãûu . Ghi säú âãư thi vo bi lm . Näüp lải âãư thi
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Ngy thi :
Thåìi gian 90 phụt
Âãư thi säú SE98
I.
Âàûc t (Specification)
Mäüt xáu (string) w âỉåüc gi l âäúi xỉïng (palindrome) nãúu w = wR hay âc xi ngỉåüc âc ngỉåüc âãưu nhỉ nhau (wR l
xáu âo ngỉåüc ca w). Vê dủ cạc xáu omo, mannam, ... âãưu l âäúi xỉïng. Viãút âàûc t thãø hiãûn cạc xáu âäúi xỉïng.
II. Láûp trçnh cáúu trục (Structured programming)
Viãút lãûnh bàòng gi ngỉỵ (phng Pascal), chè sỉí dủng täúi âa ba cáúu trục tưn tỉû, âiãưu kiãûn if v làûp (whilerepeat),
theo så âäư
khäúi dỉåïi âáy :
S1
Sai
C1
Âụng
S2
C2
Sai
Âụn
g
III. Thỉí nghiãûm chỉång trçnh (Testing)
Gi sỉí chỉång trçnh cho trong cáu II l âån thãø gi âãún cạc âån thãø S1 v S2. Trçnh by mäüt phỉång phạp âãø thỉí nghiãûm
âån thãø gi.
Khäng sỉí dủn g ti liãûu . Ghi säú âãư thi vo bi lm . Näüp lải âãư thi
Thåìi gian 90 phụt
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Ngy thi :
I.
Âãư thi säú SE97
Âàûc t (Specification)
Âa thỉïc cáúp n âỉåüc viãút dỉåïi dảng Toạn hc l :
Pn(x) = a0 + a1x1 + a2x2 + ... + anxn
Viãút âàûc t thãø hiãûn phẹp cäüng v phẹp so sạnh hai âa thỉïc Pn(x) v Qm(x).
II. Láûp trçnh cáúu trục (Structured programming)
Viãút lãûnh bàòng gi ngỉỵ (phng Pascal), chè sỉí dủng täúi âa ba cáúu trục tưn tỉû, âiãưu kiãûn if v làûp (whilerepeat),
theo så âäư
khäúi dỉåïi âáy :
TS.Phan Huy Khánh, Tuyển chọn và In bởi : ,
aỷi hoỹc aỡ Nụng, trổồỡng aỷi hoỹc Kyợ thuỏỷt
III.
goỹi.
Khoa CNTTTVT
Thổớ nghióỷm chổồng trỗnh (Testing)
Chổồng trỗnh cho trong cỏu II laỡ õồn thóứ goỹi õóỳn caùc õồn thóứ S1, S2 vaỡ S3. Trỗnh baỡy mọỹt phổồng phaùp thổớ nghióỷm õồn thóứ
Sai
C1
Khọng sổớ duỷn g taỡi lióỷu .uùng
Ghi sọỳ õóử thi vaỡo baỡi laỡm . Nọỹp laỷi õóử thi
S1
C2
Sai
S3
uùng
S2
TS.Phan Huy Khỏnh, Tuyn chn v In bi : ,
aỷi hoỹc aỡ Nụng, trổồỡng aỷi hoỹc Kyợ thuỏỷt
Mọn hoỹc CNG NGH PHệN MệM
Ngaỡy thi :
Thồỡi gian 90 phuùt
I.
Khoa CNTTTVT
óử thi sọỳ SE96
ỷc taớ (Specification)
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 nhỏn õa thổùc vồùi mọỹt hũng sọỳ a ì Pn(x), pheùp nhỏn hai õa thổùc Pn(x) ì Qm(x).
II. Lỏỷp trỗnh cỏỳu truùc (Structured programming)
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 :
S1
C1
uùn
g
Sai
S2
C2
Sai
S3
uùn
g
III.
goỹi.
Thổớ nghióỷm chổồng trỗnh (Testing)
Chổồng trỗnh cho trong cỏu II laỡ õồn thóứ goỹi õóỳn caùc õồn thóứ S1, S2 vaỡ S3. Trỗnh baỡy mọỹt phổồng phaùp thổớ nghióỷm õồn thóứ
Khọng sổớ duỷn g taỡi lióỷu . Ghi sọỳ õóử thi vaỡo baỡi laỡm . Nọỹp laỷi õóử thi
Mọn hoỹc CNG NGH PHệN MệM
Ngaỡy thi :
Thồỡi gian 90 phuùt
I.
óử thi sọỳ SE95
ỷc taớ (Specification)
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ọỳ.
II. Lỏỷp trỗnh cỏỳu truùc (Structured programming)
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 :
S1
Sai
C1
S2
uùng
C2
Sai
uùng
S3
III. Thổớ nghióỷm chổồng trỗnh (Testing)
Chổồng trỗnh cho trong cỏu II laỡ õồn thóứ goỹi õóỳn caùc õồn thóứ S1, S2 vaỡ S3. Trỗnh baỡy mọỹt phổồng phaùp thổớ nghióỷm õồn thóứ
goỹi.
uùng
Khọng
sổớ duỷn g taỡi lióỷu . Ghi sọỳ õóử thi vaỡo baỡi laỡm . Nọỹp laỷi õóử thi
C1
Thồỡi gian 90 phuùt
I.
ỷc taớ (Specification)
Sai Mọn hoỹc CNG NGH PHệN MệM
Ngaỡy thi :
óử thi sọỳ SE94
S1
Saisaùch ( n, d), vồùi n laỡ tổớ sọỳ vaỡ d laỡ mỏựu sọỳ, laỡ nhổợng sọỳ nguyón ( d 0).
Caùc phỏn sọỳ (hay sọỳ hổợu tyớ) õổồỹc bióứu dióựn bồới danh
Vióỳt õỷc taớ xỏy dổỷng caùc haỡm xổớ lyù phỏn sọỳ : cọỹ
C2ng, 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) uùng
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 :
S2
TS.Phan Huy Khỏnh, Tuyn chn v In bi : ,
Âải hc  Nàơng, trỉåìng Âải hc K thût
Khoa CNTT−ÂTVT
III. Thỉí nghiãûm chỉång trçnh (Testing)
Chỉång trçnh cho trong cáu II l âån thãø gi âãún cạc âån thãø S1 v S2. Trçnh by mäüt phỉång phạp thỉí nghiãûm âån thãø gi.
ÂÃƯ
ÂÃƯA1
A1
Khäng sỉí dủn g ti liãûu . Ghi säú âãư thi vo bi lm . Näüp lải âãư thi
ÂÃƯ THI LÁƯN 1
Ngy 14/12/1999
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Thåìi gian lm bi 90 phụt − Khäng sỉí dủn g ti liãûu
I.
Âàûc t (Specification)
Mäüt xáu (string) âỉåüc gi l âäúi xỉïng nãúu cạc k tỉû cạch âãưu âáưu xáu v cúi xáu l giäúng nhau. Vê dủ cạc xáu a, bab,
aabbaa âãưu l âäúi xỉïng. Hy viãút âàûc t thãø hiãûn cạc xáu âäúi xỉïng, tỉì âọ chuøn thnh mäüt th tủc Pascal (hồûc C).
II. Ngän ngỉỵ âàûc t RAISE (RSL)
Âãø âënh nghéa kiãøu complex cho cạc säú phỉïc x + yi (i2 = −1), RSL sỉí dủng dảng (x, y).
Gi sỉí zero biãøu diãùn säú phỉïc 0 + 0i. Hy biãøu diãùn cạc säú phỉïc sau âáy :
•
Phẹp Add âãø cäüng hai säú phỉïc v phẹp Sub âãø trỉì hai säú phỉïc.
•
Phẹp Mult âãø nhán hai säú phỉïc.
Näüp lải âãư thi cng bi lm
KHOA CÄNG NGHÃÛ THÄNG TIN
ÂÃƯ
ÂÃƯB2
B2
I.
TRỈÅÌNG ÂẢI HC K THÛT - ÂẢI HC Â NÀƠNG
ÂÃƯ THI LÁƯN 1
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Thåìi gian lm bi 90 phụt − Khäng sỉí dủn g ti liãûu
Ngy 14/12/1999
Âàûc tí (Specification)
Cho ma tráûn vng A cáúp N × N. Viãút âàûc t thãø hiãûn mäùi pháưn tỉí trãn âỉåìng chẹo chênh ca ma tráûn A chênh l täøng ca
táút c cạc pháưn tỉí trãn mäùi hng v trãn mäùi cäüt âi qua pháưn tỉí âọ nhỉng khäng tênh cäüng pháưn tỉí âọ, tỉì âọ chuøn thnh mäüt
th tủc Pascal (hồûc C).
II. Ngän ngỉỵ âàûc t RAISE (RSL)
1. Viãút mäüt biãøu thỉïc RSL thãø hiãûn ràòng khäng täưn tải mäüt säú ngun låïn nháút.
2. Âiãưn vo chäù cn thiãúu (cọ âàût dáúu ...) trong âënh nghéa hm dỉåïi âáy cho phẹp kiãøm tra mäüt säú tỉû nhiãn â cho cọ l
chàơn khäng :
is_even : Nat → Bool
is_even(n) ≡ ...
ÂÃƯ
ÂÃƯC3
C3
Näüp lải âãư thi cn g bi lm
ÂÃƯ THI LÁƯN 1
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Thåìi gian lm bi 90 phụt − Khäng sỉí dủn g ti liãûu
Ngy 14/12/1999
I.
Âàûc t (Specification)
Viãút âàûc t thãø hiãûn phẹp cäüng v phẹp nhán hai âa thỉïc cọ báûc n v m l P n(x) v Qm(x). Cho biãút cạch chuøn thnh mäüt
th tủc Pascal (hồûc C).
II. Ngän ngỉỵ âàûc t RAISE (RSL)
Sỉí dủng RSL âãø viãút mäüt âån thãø cọ tãn CIRCLE gäưm cạc âënh nghéa hm tênh diãûn têch Area v tênh chu vi
Circumference ca mäüt âỉåìng trn tám O cọ toả âäü (x, y) v bạn kênh r. Cọ thãø viãút âënh nghéa hm theo nhỉỵng cạch khạc ?
Näüp lải âãư thi cn g bi lm
TS. Phan Huy Khạnh
ÂÃƯ
ÂÃƯD4
D4
I.
08/05/2017
ÂÃƯ THI LÁƯN 1
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Thåìi gian lm bi 90 phụt − Khäng sỉí dủn g ti liãûu
Âàûc tí (Specification)
Mäüt xáu (string) w âỉåüc gi l palindrome nãúu w = wR (wR l xáu âo ngỉåüc ca w).
TS.Phan Huy Khánh, Tuyển chọn và In bởi : ,
Ngy 14/12/1999
Âải hc  Nàơng, trỉåìng Âải hc K thût
Vê dủ xáu madam l palindrome.
Khoa CNTT−ÂTVT
Viãút âàûc t thãø hiãûn cạc xáu palindrome, tỉì âọ chuøn thnh mäüt th tủc Pascal (hồûc C).
II. Ngän ngỉỵ âàûc t RAISE (RSL)
Sỉí dủng cạc lãûnh gạn v lãûnh làûp trong RSL âãø viãút mäüt âån thãø cọ tãn EXPONENT tênh hm m e x ?
Thê sinh khäng âỉåüc sỉí dủn g ti liãûu , ghi säú âãư thi vo bi lm v näüp lải âãư thi cn g bi lm
I.
Âãư thi láưn 1
Låïp 97T1,2CÂCN, ngy 21/01/2000
Âãư
Âãư
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM − Thåìi gian lm bi 60 phụt
1205
1205
Âàûc t (Specification)
Mäüt xáu (string) l âäúi xỉïng nãúu cạc k tỉû cạch âãưu âáưu v cúi xáu
l giäúng nhau. Vê dủ xáu 1234321 l âäúi xỉïng.
Viãút âàûc t thãø hiãûn cạc xáu âäúi xỉïng.
II. Láûp trçnh cáúu trục (Structured programming)
Viãút cạc cáu lãûnh Pascal (hồûc C) theo så âäư khäúi bãn âáy
Âụn
Sai g
S1
C1
III. Thỉí nghiãûm chỉång trçnh (Testing)
Gi sỉí chỉång trçnh cho trong cáu II l mäüt âån thãø gi âãún cạc âån
thãø S1 v S2.
Trçnh by mäüt phỉång phạp âãø thỉí nghiãûm âån thãø gi.
C2
Âụng
S2
Sai
Thê sinh khäng âỉåüc sỉí dủn g ti liãûu , ghi säú âãư thi vo bi lm v näüp lải âãư thi cn g bi lm
ÂẢI HC Â NÀƠNG TRỈÅÌNG ÂẢI HC K THÛT
I.
Âãư
Âãư
1207
1207
KHOA CÄNG NGHÃÛ THÄNG TIN
Âãư thi láưn 1
Låïp 97T1,2CÂCN, ngy 21/01/2000
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM − Thåìi gian lm bi 60 phụt
Âàûc t (Specification)
Mäüt xáu (string) w âỉåüc gi l palindrome nãúu w = wR
R
(w l xáu âo ngỉåüc ca w). Vê dủ xáu madam l palindrome.
Viãút âàûc t thãø hiãûn cạc xáu palindrome.
S1
II. Láûp trçnh cáúu trục (Structured programming)
Viãút cạc cáu lãûnh Pascal (hồûc C) theo så âäư khäúi bãn âáy.
C1
III. Thỉí nghiãûm chỉång trçnh (Testing)
Gi sỉí chỉång trçnh cho trong cáu II l mäüt âån thãø gi âãún cạc âån
thãø S1 v S2.
Trçnh by mäüt phỉång phạp âãø thỉí nghiãûm âån thãø gi.
Sai
Âụng
S2
C2
Sai
Âụn
g
Thê sinh khäng âỉåüc sỉí dủn g ti liãûu , ghi säú âãư thi vo bi lm v näüp lải âãư thi cn g bi lm
Âãư A
Âãư thi láưn 1
Låïp 96T1,2, ngy 23/01/1999
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Thåìi gian lm bi 90 phụt . Khäng mang ti liãûu vo phng thi
TS.Phan Huy Khánh, Tuyển chọn và In bởi : ,
Âải hc  Nàơng, trỉåìng Âải hc K thût
I. Âàûc t (Specification)
Khoa CNTT−ÂTVT
Mäüt xáu (string) l âäúi xỉïng nãúu cạc k tỉû cạch âãưu âáưu v
cúi xáu l giäúng nhau. Vê dủ xáu 1234321 l âäúi xỉïng.
Viãút âàûc t thãø hiãûn cạc xáu âäúi xỉïng.
II. Láûp trçnh cáúu trục (Structured programming)
u cáưu viãút cạc cáu lãûnh Pascal theo så âäư khäúi bãn âáy
Sai
C1
Âụn
g
III. Thỉí nghiãûm chỉång trçnh (Testing)
Gi sỉí chỉång trçnh cho trong cáu II l mäüt âån thãø gi âãún cạc
âån thãø S1, S2 v S3. Trçnh by mäüt phỉång phạp âãø thỉí nghiãûm
âån thãø gi.
S2
S1
Sai
C3
Sai
C2
Âụng
Âụng
S3
TS. Phan Huy Khạnh
ÂẢI HC Â NÀƠNG TRỈÅÌNG ÂẢI HC K THÛT
Âãư
Âãư
I.
B
B
KHOA CÄNG NGHÃÛ THÄNG TIN
Âãư thi láưn 1
Låïp 96T1,2, ngy 23/01/1999
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Thåìi gian lm bi 90 phụt . Khäng mang ti liãûu vo phng thi
Âàûc t (Specification)
Mäüt xáu (string) w âỉåüc gi l palindrome nãúu w = wR
(wR l xáu âo ngỉåüc ca w). Vê dủ xáu madam l palindrome.
Viãút âàûc t thãø hiãûn cạc xáu palindrome.
Âụn
g
II. Láûp trçnh cáúu trục (Structured programming)
u cáưu viãút cạc cáu lãûnh Pascal theo så âäư khäúi bãn âáy
III. Thỉí nghiãûm chỉång trçnh (Testing)
Gi sỉí chỉång trçnh cho trong cáu II l mäüt âån thãø gi âãún cạc
âån thãø S1, S2 v S3. Trçnh by mäüt phỉång phạp âãø thỉí nghiãûm âån
thãø gi.
90
90Phụt
Phụt
ÂÃƯ
ÂÃƯ A
A
I.
Sai
C1
Sai
S2
S1
C2
C3
Âụng
Âụng
Sai
S3
Låïp 94T, ngy 23/07/1998
Âãư thi láưn 2
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
Âàûc t (Specification)
Âa thỉïc cáúp n âỉåüc viãút dỉåïi dảng Toạn hc l Pn(x) a0 + a1x1 + a2x2 + ... + anxn
Viãút âàûc t thãø hiãûn phẹp cäüng v phẹp nhán hai âa thỉïc
Pn(x) v Qm(x).
II. Láûp trçnh cáúu trục (Structured programming)
u cáưu viãút cạc cáu lãûnh Pascal theo så âäư khäúi bãn âáy
C1
Âụn
g
Sai
S1
Sai
S2
C3
C2
Sai
Âụng
S3
Âụng
Phan Huy Khạnh
KHOA CÄNG NGHÃÛ THÄNG TIN
90
90Phụt
Phụt
TRỈÅÌNG ÂẢI HC K THÛT - ÂẢI HC Â NÀƠNG
TS.Phan
ÂÃƯHuyAKhánh, Tuyển chọn và In bởi : ,
ÂÃƯ A
Âải hc  Nàơng, trỉåìng Âải hc K thût
Âãư thi láưn 2
Män hc CÄNG NGHÃÛ PHÁƯN MÃƯM
I.
Khoa CNTT−ÂTVT
Låïp 94T, ngy 23/07/1998
Âàûc t (Specification)
Âa thỉïc cáúp n âỉåüc viãút dỉåïi dảng Toạn hc l Pn(x) = a0 + a1x1 + a2x2 + ... + anxn
Viãút âàûc t thãø hiãûn phẹp cäüng v phẹp nhán hai âa thỉïc
Pn(x) v Qm(x).
II. Láûp trçnh cáúu trục (Structured programming)
u cáưu viãút cạc cáu lãûnh Pascal theo så âäư khäúi bãn âáy
Sai
C1
Âụn
g
Sai
S2
S1
Sai
C3
C2
Âụng
S3
Âụng
90
90Phụt
Phụt
ÂÃƯ
ÂÃƯ A
A
ÂÃƯ THI KÃÚT THỤC MÄN HC CÄNG NGHÃÛ PHÁƯN MÃƯM
I.
Âàûc t (Specification)
Cho ma tráûn vng A cáúp NxN gäưm cạc säú thỉûc. Viãút âàûc t thãø hiãûn mäùi pháưn tỉí trãn âỉåìng chẹo phủ ca ma tráûn A chênh
l têch ca táút c cạc pháưn tỉí trãn hng v trãn cäüt âi qua pháưn tỉí âọ nhỉng khäng tênh nhán pháưn tỉí âọ.
II. Láûp trçnh cáúu trục (Structured programming)
u cáưu :
1. Viãút cạc cáu lãûnh Pascal theo så âäư khäúi bãn âáy
2. Chuøn vãư dảng chè sỉí dủng hai cáúu trục tưn tỉû v làûp
kiãøm tra âiãưu kiãûn trỉåïc (while) theo âënh l Bolm v
Jacopini.
Sai
C1
Âụn
g
S1
Sai
C2
S2
Sai
C3
Âụng
Âụng
Phan Huy Khạnh
5/8/2017
KHOA CÄNG NGHÃÛ THÄNG TIN
TRỈÅÌNG ÂẢI HC K THÛT - ÂẢI HC Â NÀƠNG
90
90Phụt
Phụt
ÂÃƯ
ÂÃƯ B
B
ÂÃƯ THI KÃÚT THỤC MÄN HC CÄNG NGHÃÛ PHÁƯN MÃƯM
I.
Âàûc t (Specification)
Cho ma tráûn vng A cáúp NxN gäưm cạc säú ngun. Viãút âàûc t thãø hiãûn mäùi pháưn tỉí trãn âỉåìng chẹo chênh ca ma tráûn A
thç täøng táút c cạc pháưn tỉí trãn hng âụng bàòng täøng táút c cạc pháưn tỉí trãn cäüt âi qua pháưn tỉí âọ.
TS.Phan Huy Khánh, Tuyển chọn và In bởi : ,
aỷi hoỹc aỡ Nụng, trổồỡng aỷi hoỹc Kyợ thuỏỷt
II. Lỏỷp trỗnh cỏỳu truùc (Structured programming)
Yóu cỏửu :
3. Vióỳt caùc cỏu lóỷnh Pascal theo sồ õọử khọỳi bón õỏy
4. Chuyóứn vóử daỷng chố sổớ duỷng hai cỏỳu truùc tuỏửn tổỷ vaỡ lỷp
kióứm tra õióửu kióỷn trổồùc (while) theo õởnh lyù Bolm vaỡ
Jacopini.
Khoa CNTTTVT
S1
Sai
C1
uùng
S2
Sai
C2
TS.Phan Huy Khỏnh, Tuyn chn v In bi : ,
uùng
Âải hc  Nàơng, trỉåìng Âải hc K thût
Khoa CNTT−ÂTVT
Âãư thi kãút thủc Män hc
ÂÃƯ
ÂÃƯA
A
CÄNG NGHÃÛ PHÁƯN MÃƯM
150 phụt (khäng âỉåüc mang ti liãûu vo phng thi)
I.
Phỉång phạp tinh chãú tỉìng bỉåïc
Trong viãûc qun l danh bả âiãûn thoải cho khạch hng, ngỉåìi ta cáưn mäüt th tủc nàõn lải (correcting) cạc säú âiãûn thoải âỉa
vo âãø thäúng nháút cạch lỉu trỉỵ v in ra.
Gi sỉí säú âiãûn thoải gäưm hai pháưn, pháưn m vng (regional code) v pháưn säú (number). Khi ngỉåìi sỉí dủng nháûp vo mạy
tênh mäüt häư så khạch hng tải mủc Säú Âiãûn Thoải cọ chỉïa mäüt säú no âọ, vê dủ 0(51) 892.992, hồûc 051-892-992, hồûc
051.892.992, v.v..., mạy phi lỉu trỉỵ 051.892992 v in ra dảng 051.892.992. (Chụ âäúi våïi cạc m vng l mäüt säú nhỉ H näüi
4, Tp HCM 8..., chuøn säú 8 ca pháưn säú qua âãø váùn cọ dảng nn.nnnnnn).
1. Trçnh by låìi gii bàòng phỉång phạp tinh chãú tỉìng bỉåïc.
2. Láûp trçnh theo âån vë Unit ca ngän ngỉỵ Pascal.
II. Âàûc t
Cho ma tráûn vng A cáúp NxN. Viãút âàûc t thãø hiãûn mäùi pháưn tỉí trãn âỉåìng chẹo chênh ca ma tráûn chênh l pháưn tỉí nh
nháút trãn mäùi hng.
III. Ngän ngỉỵ âàûc t RAISE
Viãút trãn RSL mäüt âån thãø cọ tãn EXPONENT âãø tênh hm m ex ?
ĐỀ THI KẾT THÚC MÔN HỌC CÄNG NGHÃÛ PHÁƯN MÃƯM
150 phút (cọ thãø mang ti liãûu vo phng thi)
I.
Phỉång phạp tinh chãú tỉìng bỉåïc
Trong viãûc qun l danh bả âiãûn thoải cho khạch hng, ngỉåìi ta cáưn mäüt th tủc nàõn lải (correcting) cạc säú âiãûn thoải âỉa
vo âãø thäúng nháút cạch lỉu trỉỵ v in ra.
Gi sỉí säú âiãûn thoải gäưm hai pháưn, pháưn m vng (regional code) v pháưn säú (number). Viãûc nàõn l lm sao khi nháûp vo
mạy mäüt säú âiãûn thoải, vê dủ (51) 892.992, hồûc 51-892-992, hồûc 51.892.992, v.v..., mạy phi lỉu trỉỵ 51.892992 v in ra dảng
51.892.992. Âäúi våïi cạc m vng mäüt säú (H näüi 4, Tp HCM 8...), chuøn säú 8 ca pháưn säú qua âãø váùn cọ dảng xx.xxxxxx.
1.Trçnh by låìi gii bàòng phỉång phạp tinh chãú tỉìng bỉåïc theo ngän ngỉỵ tỉû nhiãn.
2.Láûp trçnh theo âån vë Unit ca ngän ngỉỵ Pascal (cng måí räüng bi toạn cng täút).
II. Ngän ngỉỵ âàûc t RAISE
Viãút trãn RSL mäüt âån thãø cọ tãn CIRCLE gäưm cạc âënh nghéa hm tênh diãûn têch area v tênh chu vi circumference. Cọ
thãø viãút âënh nghéa hm theo nhỉỵng cạch khạc ?
Âãư thi CÄNG NGHÃÛ PHÁƯN MÃƯM
SE-112
Thåìi gian 60 phụt
Ngy thi :
1. Láûp trçnh cáúu trục (Structured programming)
Bàòng cạch chè sỉí dủng täúi âa
ba cáúu trục tưn tỉû, âiãưu kiãûn
(if...then) v làûp (whilerepeat),
hy viãút âoản lãûnh bàòng gi ngỉỵ
(phng Pascal) thỉûc hiãûn chỉång
trçnh cho trong så âäư khäúi bãn âáy :
Sai
C1
Âụng
S1
Sai
C2
Âụng
S3
S2
2.
Thỉí nghiãûm chỉång trçnh (Testing)
Hy láûp bng dỉỵ liãûu thỉí nghiãûm âãø cho biãút chỉång trçnh dỉåïi âáy in ra kãút qu láưn lỉåüt nhỉ thãú no ? Gii thêch cå chãú
gi âãû quy ?
program Testing1;
var x: integer;
procedure Recursive1 (M: integer);
begin
if M =1 then writeln ('A: x = ', x:3) else
begin
x:=x+2;
writeln ('B: x = ', x:3);
Recursive1 (M-1) end;
end; { Recursive1 }
Begin { Testing1 }
TS.Phan Huy Khánh, Tuyển chọn và In bởi : ,
aỷi hoỹc aỡ Nụng, trổồỡng aỷi hoỹc Kyợ thuỏỷt
x := 0; Recursive1 (5);
End. { Testing1 }
3. ỷc taớ (Specification)
Vióỳt õỷc taớ pheùp cọỹng vaỡ trổỡ hai õa thổùc bỏỷc n>0.
Khoa CNTTTVT
Khọng sổớ duỷn g taỡi lióỷu . Ghi sọỳ õóử thi vaỡ nọỹp laỷi õóử thi cuỡn g baỡi laỡm .
óử thi CNG NGH PHệN MệM
SE-113
Thồỡi gian 60 phuùt
Ngaỡy thi :
1. Lỏỷp trỗnh cỏỳu truùc (Structured programming)
Bũng caùch chố sổớ duỷng tọỳi õa
ba cỏỳu truùc tuỏửn tổỷ, õióửu kióỷn
(if...then) vaỡ lỷp (whilerepeat),
haợy vióỳt õoaỷn lóỷnh bũng giaớ ngổợ
(phoớng Pascal) thổỷc hióỷn chổồng
trỗnh cho trong sồ õọử khọỳi bón õỏy :
S1
C1
Sai
uùng
S2
Sai
C2
uùng
S3
2.
Thổớ nghióỷm chổồng trỗnh (Testing)
Haợy lỏỷp baớng dổợ lióỷu thổớ nghióỷm õóứ cho bióỳt chổồng trỗnh dổồùi õỏy in ra kóỳt quaớ lỏửn lổồỹt nhổ thóỳ naỡo ? Giaới thờch cồ chóỳ
goỹi õóỷ quy ?
program Testing2;
var y: integer;
procedure Recursive2 (N: integer);
begin
if N =0 then writeln ('1) y = ', y:3) else
begin y:=y+1; writeln ('2) y = ', y:3); Recursive2 (N-1) end;
end; { Recursive2 }
begin { Testing2 }
y := 0; Recursive2 (4);
end. { Testing2 }
3. ỷc taớ (Specification)
Vióỳt õỷc taớ pheùp nhỏn õa thổùc bỏỷc n>0 vồùi mọỹt nhở thuùc bỏỷc n=1.
Khọng sổớ duỷn g taỡi lióỷu . Ghi sọỳ õóử thi vaỡ nọỹp laỷi õóử thi cuỡn g baỡi laỡm .
óử thi Mọn CNG NGH PHệN MệM
SE-100
Thồỡi gian 90 phuùt
Ngaỡy thi :
I.
ỷc taớ (Specification)
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ọỳ.
II. Lỏỷp trỗnh cỏỳu truùc
Bũng caùch chố sổớ duỷng tọỳi õa ba cỏỳu truùc tuỏửn tổỷ, õióửu kióỷn (if ... then) vaỡ lỷp (whilerepeat), haợy vióỳt õoaỷn lóỷnh bũng giaớ
ngổợ (phoớng Pascal) thổỷc hióỷn chổồng trỗnh cho trong sồ õọử khọỳi dổồùi õỏy :
C1
Sai
uùng
S1
Sai
uùng
C2
S3
S2
III. Thổớ nghióỷm chổồng trỗnh (Testing)
Chổồng trỗnh trong cỏu II laỡ õồn thóứ M goỹi õóỳn caùc õồn thóứ C1, C2, S1, S2 vaỡ S3. Trỗnh baỡy phổồng phaùp thổớ nghióỷm tổỡ
dổồùi lón õóứ thổớ nghióỷm õồn thóứ M. So saùnh vồùi phổồng phaùp thổớ nghióỷm tổỡ trón xuọỳng.
Khọng sổớ duỷn g taỡi lióỷu . Ghi sọỳ õóử thi vaỡo baỡi laỡm . Nọỹp laỷi õóử thi
TS.Phan Huy Khỏnh, Tuyn chn v In bi : ,
aỷi hoỹc aỡ Nụng, trổồỡng aỷi hoỹc Kyợ thuỏỷt Khoa CNTTTVT
óử thi Mọn CNG NGH PHệN MệM
SE-101
Thồỡi gian 90 phuùt
Ngaỡy thi :
I.
ỷc taớ (Specification)
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ọỳ : 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
Bũng caùch chố sổớ duỷng tọỳi õa ba cỏỳu truùc tuỏửn tổỷ, õióửu kióỷn (if ... then) vaỡ lỷp (whilerepeat), haợy vióỳt õoaỷn lóỷnh bũng giaớ
ngổợ (phoớng Pascal) thổỷc hióỷn chổồng trỗnh cho trong sồ õọử khọỳi dổồùi õỏy :
S1
uùng
C1
S2
uùng
C2
Sai
Sai
S3
III. Thổớ nghióỷm chổồng trỗnh (Testing)
Chổồng trỗnh cho trong cỏu II laỡ õồn thóứ M goỹi õóỳn caùc õồn thóứ C1, C2, S1, S2 vaỡ S3. Trỗnh baỡy phổồng phaùp thổớ nghióỷm
tổỡ trón xuọỳng õóứ thổớ nghióỷm õồn thóứ M. So saùnh vồùi phổồng phaùp thổớ nghióỷm tổỡ dổồùi lón.
Khọng sổớ duỷn g taỡi lióỷu . Ghi sọỳ õóử thi vaỡo baỡi laỡm . Nọỹp laỷi õóử thi
program Testing1; { SE-112 }
var x: integer;
procedure Recursive1 (M: integer);
begin
if M =1 then writeln ('A: x = ', x:3) else
begin x:=x+2; writeln ('B: x = ', x:3); Recursive1 (M-1) end;
end; { Recursive1 }
begin { Testing1 }
x := 0; Recursive1 (5);
end. { Testing1 }
Result:
B: x =
B: x =
B: x =
B: x =
A: x =
2
4
6
8
8
TS.Phan Huy Khỏnh, Tuyn chn v In bi : ,
Khoa CNTTTVT
aỷi hoỹc aỡ Nụng, trổồỡng aỷi hoỹc Kyợ thuỏỷt
program Testing2; { SE-113 }
var y: integer;
procedure Recursive2 (N: integer);
begin
if N =0 then writeln ('1) y = ', y:3) else
begin y:=y+1; writeln ('2) y = ', y:3); Recursive2 (N-1) end;
end; { Recursive2 }
begin { Testing2 }
y := 0; Recursive2 (4);
end. { Testing2 }
Result:
2) y =
2) y =
2) y =
2) y =
1) y =
1
2
3
4
4
óử thi CNG NGH PHệN MệM
Thồỡi gian 60 phuùt
1. Lỏỷp trỗnh cỏỳu truùc (Structured programming)
Bũng caùch chố sổớ duỷng tọỳi õa
ba cỏỳu truùc tuỏửn tổỷ, õióửu kióỷn
(if...then) vaỡ lỷp (whilerepeat),
haợy vióỳt õoaỷn lóỷnh bũng giaớ ngổợ
(phoớng Pascal) thổỷc hióỷn chổồng
trỗnh cho trong sồ õọử khọỳi bón õỏy :
Ngaỡy thi :
C2
uùng
2.
uùng
C1
S1
SE-102
Sai
Sai
S2
Thổớ nghióỷm chổồng trỗnh (Testing)
Haợy lỏỷp baớng dổợ lióỷu thổớ nghióỷm õóứ cho bióỳt chổồng trỗnh dổồùi õỏy in ra kóỳt quaớ nhổ thóỳ naỡo ?
program Testing1;
var x: integer;
procedure Recursive (M: integer);
begin
if M =1 then writeln ('A: x = ', x:3)
else begin x:=x+2; writeln ('B: x = ', x:3); Recursive (M-1)
end;
end; { Recursive }
begin { Testing1 }
x := 0; Recursive (5);
end. { Testing1 }
Khọng sổớ duỷn g taỡi lióỷu . Ghi sọỳ õóử thi vaỡo baỡi laỡm . Nọỹp laỷi õóử thi
óử thi CNG NGH PHệN MệM
Thồỡi gian 60 phuùt
1. Lỏỷp trỗnh cỏỳu truùc (Structured programming)
Ngaỡy thi :
SE-103
TS.Phan Huy Khỏnh, Tuyn chn v In bi : ,
Âải hc  Nàơng, trỉåìng Âải hc K thût
Bàòng cạch chè sỉí dủng täúi âa
ba cáúu trục tưn tỉû, âiãưu kiãûn
(if...then) v làûp (whilerepeat),
hy viãút âoản lãûnh bàòng gi ngỉỵ
(phng Pascal) thỉûc hiãûn chỉång
trçnh cho trong så âäư khäúi bãn âáy :
Khoa CNTT−ÂTVT
S1
C1
Âụng
Sai
S2
Âụng
2.
Sai
C2
Thỉí nghiãûm chỉång trçnh (Testing)
Hy láûp bng dỉỵ liãûu thỉí nghiãûm âãø cho biãút chỉång trçnh dỉåïi âáy in ra kãút qu nhỉ thãú no ?
program Testing2;
var y: integer;
procedure Recursive (N: integer);
begin
if N =0 then writeln ('1) y = ', y:3)
else begin y:=y+1; writeln ('2) y = ', y:3); Recursive (N-1)
end;
end; { Recursive }
begin { Testing2 }
y := 0; Recursive (4);
end. { Testing2 }
Khäng sỉí dủn g ti liãûu . Ghi säú âãư thi vo bi lm . Näüp lải âãư thi
Âạp ạn Âãư thi SE-100
While C1 do begin
S1
if C2 then S2 else S3
end
q:= false
repeat
if not C1 then q:= true
else begin
S1
if C2 then S2 else S3
end
until q
Âạp ạn Âãư thi SE-101
q:= false
repeat
S1
if not C1 then q:= true
else begin
S2
if not C2 then S3
end
until q
B: x = 2
B: x = 4
B: x = 6
B: x = 8
A: x = 8
2) y =
2) y =
2) y =
2) y =
1) y =
1
2
3
4
4
Âàû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
TS.Phan Huy Khánh, Tuyển chọn và In bởi : ,
Âải hc  Nàơng, trỉåìng Âải hc K thût Khoa CNTT−ÂTVT
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 kiãøu pháưn tỉí â âỉåü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 ≤ k1)
⇒
Content (Access (Delete (, k), i)) = Content (Access (i)
( ≠ EmptyList) and (1 ≤ k ≤ Length ()) and (k ≤ i ≤ Length () 1) ⇒
Content (Access (Delete (, k), i)) = Content (Access (i 1)
(1 ≤ k ≤ Length ()) and (1 ≤ i ≤ k1)
⇒
Content (Access (Insert (, k, e), i)) = Content (Access (i)
(1 ≤ k ≤ Length ()1) and (i k)
⇒ Content (Access (Insert (, k, e), i)) = e
(1 ≤ k ≤ Length ()1) and (k1 ≤ i ≤ Length ()1) ⇒
Content (Access (Insert (, k, e), i)) = Content (Access (, i 1))
Âãư thi Män CÄNG NGHÃÛ PHÁƯN MÃƯM
Âãư säú 106
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 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 nhỉ : 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 nhỉ 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) ≠ 0
; 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 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))
TS.Phan Huy Khánh, Tuyển chọn và In bởi : ,
Âải hc  Nàơng, trỉåìng Âải hc K thût
. . .
Khoa CNTT−ÂTVT
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 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 hm xỉí l säú hỉỵu t mä t trãn âáy.
Âãư thi Män CÄNG NGHÃÛ PHÁƯN MÃƯM
Âãư säú 105
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).
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
emptytree
:
BinTree(T)
; tảo måïi cáy räùng
emptytree?
: BinTree(T)
Boolean
; kiãøm tra cáy räùng
createtree
: T BinTree(T) BinTree(T)
BinTree(T)
; tảo cáy nhë phán
root
: BinTree(T)
T
; truy cáûp nụt gäúc
left
: BinTree(T)
BinTree(T)
; truy cáûp cáy con trại
right
: BinTree(T)
BinTree(T)
; truy cáûp cáy con phi
leaf?
: BinTree(T)
Bool
; kiãøm tra nụt lạ
1.
2.
Preconditions
root(A)
left(A)
right(A)
leaf?(A)
âỉåüc xạc âënh nãúu v chè nãúu
âỉåüc xạc âënh nãúu v chè nãúu
âỉåüc xạc âënh nãúu v chè nãúu
âỉåüc xạc âënh nãúu v chè nãúu
Axioms ForAll E : T ; A, A1, A2 : BinTree(T) :
emptytree?(emptytree())
emptytree?(createtree(E,
A1, A2))
root(createtree(E,
A1, A2))
. . .
A ≠ emptytree
A ≠ emptytree
A ≠ emptytree
A ≠ emptytree
= true
= false
=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
Âãư säú 104
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)
TS.Phan Huy Khánh, Tuyển chọn và In bởi : ,
Âải hc  Nàơng, trỉåìng Âải hc K thût Khoa CNTT−ÂTVT
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’)
⇒?
2.
e ≠ Search (k, C)
⇒?
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 âọ.
Âãư 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 ≤ k1)
⇒
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 ≤ k1)
⇒?
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.
Âãư 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
TS.Phan Huy Khánh, Tuyển chọn và In bởi : ,
Âải hc  Nàơng, trỉåìng Âải hc K thût
Functions
Key-of
EmptyCollection
Add
Delete
Search
in
NbOccurrences
:
:
:
:
:
:
:
Khoa CNTT−ÂTVT
Element → Key
→ Collection
Element × Collection → Collection
Key × Collection → Collection
Key × Collection → Element
Element × Collection → Bool
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.
Âãư 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 ≤ k1)
⇒
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 (k1 ≤ 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, Tuyển chọn và In bởi : ,