You are on page 1of 19

Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT

Âãö thi säú SE99


Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
Thåìi gian 90 phuït Ngaìy thi :

I. Âàûc taí (Specification)


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ï.
II. Láûp trçnh cáúu truïc
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 så âäö khäúi dæåïi âáy :

Âuïng
C1
Sai

S1
Sai
C2
Âuïng

S2

III. Thæí nghiãûm chæång trçnh (Testing)


Giaí sæí chæång trçnh cho trong cáu II laì âån thãø goüi âãún caïc âån thãø S1 vaì S2. Trçnh baìy mäüt phæång phaïp âãø
thæí nghiãûm âån thãø goüi.

Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi
Âãö thi säú SE98
Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
Thåìi gian 90 phuït Ngaìy thi :

I. Âàûc taí (Specification)


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.
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
(whilerepeat), theo så âäö khäúi dæåïi âáy :

S1
Âuïng
C1
Sai
S2
C2 Sai

Âuïng

III. Thæí nghiãûm chæång trçnh (Testing)


Giaí sæí chæång trçnh cho trong cáu II laì âån thãø goüi âãún caïc âån thãø S1 vaì S2. Trçnh baìy mäüt phæång phaïp âãø
thæí nghiãûm âån thãø goüi.

Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi
Âãö thi säú SE97
Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
Thåìi gian 90 phuït Ngaìy thi :

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
I. Âàû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 cäüng vaì pheïp so saïnh hai âa thæïc Pn(x) vaì 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
(whilerepeat), theo så âäö khäúi dæåïi âáy :

Sai
C1
Âuïng
S1
C2 Sai S3
ÂuïngS2

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.

Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
Âãö thi säú SE96
Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
Thåìi gian 90 phuït Ngaìy thi :

I. Âàû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
(whilerepeat), theo så âäö khäúi dæåïi âáy :

S1
Sai
C1
Âuïng
S2

C2 Sai S3
Âuïng

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.

Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi
Âãö thi säú SE95
Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
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 (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
(whilerepeat), theo så âäö khäúi dæåïi âáy :

S1
Sai
C1 S2
Âuïng
C2 Âuïng
Sai
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.

Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi
Âãö thi säú SE94
Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
Thåìi gian 90 phuït Ngaìy thi :

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
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 (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
(whilerepeat), theo så âäö khäúi dæåïi âáy :

Âuïng
C1
Sai

S1
Sai
C2
Âuïng

S2

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 vaì S2. Trçnh baìy mäüt phæång phaïp thæí nghiãûm
âån thãø goüi.

Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi
ÂÃÖ THI LÁÖN 1 Ngaìy 14/12/1999
Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
ÂÃÖA1
ÂÃÖ A1 Thåìi gian laìm baìi 90 phuït  Khäng sæí duûng taìi liãûu

I. Âàûc taí (Specification)


Mäüt xáu (string) âæåüc goüi laì âäúi xæïng nãúu caïc kyï tæû caïch âãöu âáöu xáu vaì cuäúi xáu laì giäúng nhau. Vê duû
caïc xáu a, bab, aabbaa âãöu laì âäúi xæïng. Haîy viãút âàûc taí thãø hiãûn caïc xáu âäúi xæïng, tæì âoï chuyãøn thaình mäüt
thuí tuûc Pascal (hoàûc C).
II. Ngän ngæî âàûc taí RAISE (RSL)

Âãø âënh nghéa kiãøu complex cho caïc säú phæïc x + yi (i2 = 1), RSL sæí duûng daûng (x, y).
Giaí sæí zero biãøu diãùn säú phæïc 0 + 0i. Haîy biãøu diãùn caïc säú phæïc sau âáy :
 Pheïp Add âãø cäüng hai säú phæïc vaì pheïp Sub âãø træì hai säú phæïc.
 Pheïp Mult âãø nhán hai säú phæïc.

Näüp laûi âãö thi cuìng baìi laìm

KHOA CÄNG NGHÃÛ THÄNG TIN TRÆÅÌNG ÂAÛI HOÜC KYÎ THUÁÛT - ÂAÛI HOÜC ÂAÌ NÀÔNG

ÂÃÖ THI LÁÖN 1 Ngaìy 14/12/1999


Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
ÂÃÖB2
ÂÃÖ B2 Thåìi gian laìm baìi 90 phuït  Khäng sæí duûng taìi liãûu

I. Âàûc taíí (Specification)


Cho ma tráûn vuäng A cáúp N  N. Viãút âàûc taí thãø hiãûn mäùi pháön tæí trãn âæåìng cheïo chênh cuía ma tráûn A
chênh laì täøng cuía táút caí caïc pháön tæí trãn mäùi haìng vaì trãn mäùi cäüt âi qua pháön tæí âoï nhæng khäng tênh cäüng
pháön tæí âoï, tæì âoï chuyãøn thaình mäüt thuí tuûc Pascal (hoàûc C).
II. Ngän ngæî âàûc taí RAISE (RSL)
1. Viãút mäüt biãøu thæïc RSL thãø hiãûn ràòng khäng täön taûi mäüt säú nguyãn låïn nháút.

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
2. Âiãön vaìo chäù coìn thiãúu (coï âàût dáúu ...) trong âënh nghéa haìm dæåïi âáy cho pheïp kiãøm tra mäüt säú tæû nhiãn
âaî cho coï laì chàôn khäng :
is_even : Nat  Bool
is_even(n)  ...

Näüp laûi âãö thi cuìng baìi laìm


ÂÃÖ THI LÁÖN 1 Ngaìy 14/12/1999
Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
ÂÃÖC3
ÂÃÖ C3 Thåìi gian laìm baìi 90 phuït  Khäng sæí duûng taìi liãûu

I. Âàûc taí (Specification)


Viãút âàûc taí thãø hiãûn pheïp cäüng vaì pheïp nhán hai âa thæïc coï báûc n vaì m laì P n(x) vaì Qm(x). Cho biãút caïch
chuyãøn thaình mäüt thuí tuûc Pascal (hoàûc C).
II. Ngän ngæî âàûc taí RAISE (RSL)
Sæí duûng RSL âãø viãút mäüt âån thãø coï tãn CIRCLE gäöm caïc âënh nghéa haìm tênh diãûn têch Area vaì tênh chu vi
Circumference cuía mäüt âæåìng troìn tám O coï toaû âäü (x, y) vaì baïn kênh r. Coï thãø viãút âënh nghéa haìm theo nhæîng
caïch khaïc ?

Näüp laûi âãö thi cuìng baìi laìm

TS. Phan Huy Khaïnh 23/08/2021

ÂÃÖ THI LÁÖN 1 Ngaìy 14/12/1999


Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
ÂÃÖD4
ÂÃÖ D4 Thåìi gian laìm baìi 90 phuït  Khäng sæí duûng taìi liãûu

I. Âàûc taíí (Specification)

Mäüt xáu (string) w âæåüc goüi laì palindrome nãúu w = wR (wR laì xáu âaío ngæåüc cuía w).
Vê duû xáu madam laì palindrome.
Viãút âàûc taí thãø hiãûn caïc xáu palindrome, tæì âoï chuyãøn thaình mäüt thuí tuûc Pascal (hoàûc C).

II. Ngän ngæî âàûc taí RAISE (RSL)

Sæí duûng caïc lãûnh gaïn vaì lãûnh làûp trong RSL âãø viãút mäüt âån thãø coï tãn EXPONENT tênh haìm muî ex ?

Thê sinh khäng âæåüc sæí duûng taìi liãûu, ghi säú âãö thi vaìo baìi laìm vaì näüp laûi âãö thi cuìng baìi laìm

Âãö thi láön 1 Låïp 97T1,2CÂCN, ngaìy 21/01/2000


Âãö
Âãö 1205
1205 Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM  Thåìi gian laìm baìi 60 phuït

I. Âàûc taí (Specification)

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT

Mäüt xáu (string) laì âäúi xæïng nãúu caïc kyï tæû caïch âãöu âáöu
vaì cuäúi xáu laì giäúng nhau. Vê duû xáu 1234321 laì âäúi xæïng.
Viãút âàûc taí thãø hiãûn caïc xáu âäúi xæïng.
II. Láûp trçnh cáúu truïc (Structured programming)
Âuïn
Viãút caïc cáu lãûnh Pascal (hoàûc C) theo så âäö khäúi bãn âáy C1
g
III. Thæí nghiãûm chæång trçnh (Testing)
Sai
S1
Giaí sæí chæång trçnh cho trong cáu II laì mäüt âån thãø goüi âãún
caïc âån thãø S1 vaì S2. C2
Trçnh baìy mäüt phæång phaïp âãø thæí nghiãûm âån thãø goüi.
S2
Âuïng Sai

Thê sinh khäng âæåüc sæí duûng taìi liãûu, ghi säú âãö thi vaìo baìi laìm vaì näüp laûi âãö thi cuìng baìi laìm
ÂAÛI HOÜC ÂAÌ NÀÔNG  TRÆÅÌNG ÂAÛI HOÜC KYÎ THUÁÛT KHOA CÄNG NGHÃÛ THÄNG TIN

Âãö thi láön 1 Låïp 97T1,2CÂCN, ngaìy 21/01/2000


Âãö
Âãö 1207
1207 Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM  Thåìi gian laìm baìi 60 phuït

I. Âàûc taí (Specification)


Mäüt xáu (string) w âæåüc goüi laì palindrome nãúu w = wR
(wR laì xáu âaío ngæåüc cuía w). Vê duû xáu madam laì palindrome.
S1
Viãút âàûc taí thãø hiãûn caïc xáu palindrome.
II. Láûp trçnh cáúu truïc (Structured programming) Âuïng
C1
Viãút caïc cáu lãûnh Pascal (hoàûc C) theo så âäö khäúi bãn âáy.
Sai
III. Thæí nghiãûm chæång trçnh (Testing) S2
Giaí sæí chæång trçnh cho trong cáu II laì mäüt âån thãø goüi âãún
caïc âån thãø S1 vaì S2. Sai
C2
Trçnh baìy mäüt phæång phaïp âãø thæí nghiãûm âån thãø goüi. Âuïn
g
Thê sinh khäng âæåüc sæí duûng taìi liãûu, ghi säú âãö thi vaìo baìi laìm vaì näüp laûi âãö thi cuìng baìi laìm

Âãö thi láön 1 Låïp 96T1,2, ngaìy 23/01/1999


Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
Âãö A Thåìi gian laìm baìi 90 phuït. Khäng mang taìi liãûu vaìo phoìng thi

I. Âàûc taí (Specification)


Mäüt xáu (string) laì âäúi xæïng nãúu caïc kyï tæû caïch âãöu Sai
âáöu vaì cuäúi xáu laì giäúng nhau. Vê duû xáu 1234321 laì âäúi C1
xæïng. Âuïng
Viãút âàûc taí thãø hiãûn caïc xáu âäúi xæïng.
S2
II. Láûp trçnh cáúu truïc (Structured programming) S1
Sai
Yãu cáöu viãút caïc cáu lãûnh Pascal theo så âäö khäúi bãn âáy C3
Sai Âuïng
III. Thæí nghiãûm chæång trçnh (Testing) C2
TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com
Âuïng S3
Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT

Giaí sæí chæång trçnh cho trong cáu II laì mäüt âå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.

TS. Phan Huy Khaïnh

ÂAÛI HOÜC ÂAÌ NÀÔNG  TRÆÅÌNG ÂAÛI HOÜC KYÎ THUÁÛT KHOA CÄNG NGHÃÛ THÄNG TIN

Âãö thi láön 1 Låïp 96T1,2, ngaìy 23/01/1999


Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
Âãö
Âãö BB Thåìi gian laìm baìi 90 phuït. Khäng mang taìi liãûu vaìo phoìng thi

I. Âàûc taí (Specification)


Mäüt xáu (string) w âæåüc goüi laì palindrome nãúu w = wR
Sai
(wR laì xáu âaío ngæåüc cuía w). Vê duû xáu madam laì palindrome. C1
Viãút âàûc taí thãø hiãûn caïc xáu palindrome. Âuïng
II. Láûp trçnh cáúu truïc (Structured programming) S2
S1
Yãu cáöu viãút caïc cáu lãûnh Pascal theo så âäö khäúi bãn âáy
Sai Âuïng
III. Thæí nghiãûm chæång trçnh (Testing) C2
C3
Giaí sæí chæång trçnh cho trong cáu II laì mäüt âån thãø goüi Âuïng
âãún caïc âån thãø S1, S2 vaì S3. Trçnh baìy mäüt phæång phaïp âãø Sai
S3
thæí nghiãûm âån thãø goüi.

90
90Phuït
Phuït Âãö thi láön 2 Låïp 94T, ngaìy 23/07/1998
Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
ÂÃÖAA
ÂÃÖ

I. Âàû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 cäüng vaì pheïp nhán hai âa
thæïc Pn(x) vaì Qm(x). Sai
C1
II. Láûp trçnh cáúu truïc (Structured programming) Âuïng
Yãu cáöu viãút caïc cáu lãûnh Pascal theo så âäö khäúi bãn âáy S2
S1
Sai
C3
Sai Âuïng
C2
S3
Âuïng

Phan Huy Khaïnh

KHOA CÄNG NGHÃÛ THÄNG TIN TRÆÅÌNG ÂAÛI HOÜC KYÎ THUÁÛT - ÂAÛI HOÜC ÂAÌ NÀÔNG

Âãö thi láön 2 Låïp 94T, ngaìy 23/07/1998


90
90Phuït
Phuït Män hoüc CÄNG NGHÃÛ PHÁÖN MÃÖM
ÂÃÖAA
ÂÃÖ
I. Âàû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
TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com
Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT

Viãút âàûc taí thãø hiãûn pheïp cäüng vaì pheïp nhán hai âa
thæïc Pn(x) vaì Qm(x). Sai
C1
II. Láûp trçnh cáúu truïc (Structured programming) Âuïng
Yãu cáöu viãút caïc cáu lãûnh Pascal theo så âäö khäúi bãn âáy S2
S1
Sai
C3
Sai Âuïng
C2
S3
Âuïng

90
90Phuït
Phuït
ÂÃÖAA
ÂÃÖ ÂÃÖ THI KÃÚT THUÏC MÄN HOÜC CÄNG NGHÃÛ PHÁÖN MÃÖM

I. Âàûc taí (Specification)


Cho ma tráûn vuäng A cáúp NxN gäöm caïc säú thæûc. Viãút âàûc taí thãø hiãûn mäùi pháön tæí trãn âæåìng cheïo phuû
cuía ma tráûn A chênh laì têch cuía táút caí caïc pháön tæí trãn haìng vaì trãn cäüt âi qua pháön tæí âoï nhæng khäng tênh
nhán pháön tæí âoï.
II. Láûp trçnh cáúu truïc (Structured programming)
Sai
Yãu cáöu : C1
1. Viãút caïc cáu lãûnh Pascal theo så âäö khäúi bãn âáy Âuïng
2. Chuyãøn vãö daûng chè sæí duûng hai cáúu truïc tuáön S1 S2
tæû vaì làûp kiãøm tra âiãöu kiãûn træåïc (while) theo
âënh lyï Bolm vaì Jacopini. Sai Sai
C2 C3
Âuïng Âuïng

Phan Huy Khaïnh 8/23/2021

KHOA CÄNG NGHÃÛ THÄNG TIN TRÆÅÌNG ÂAÛI HOÜC KYÎ THUÁÛT - ÂAÛI HOÜC ÂAÌ NÀÔNG

90
90Phuït
Phuït
ÂÃÖBB
ÂÃÖ ÂÃÖ THI KÃÚT THUÏC MÄN HOÜC CÄNG NGHÃÛ PHÁÖN MÃÖM
I. Âàûc taí (Specification)
Cho ma tráûn vuäng A cáúp NxN gäöm caïc säú nguyãn. Viãút âàûc taí thãø hiãûn mäùi pháön tæí trãn âæåìng cheïo
chênh cuía ma tráûn A thç täøng táút caí caïc pháön tæí trãn haìng âuïng bàòng täøng táút caí caïc pháön tæí trãn cäüt âi qua
pháön tæí âoï.

II. Láûp trçnh cáúu truïc (Structured programming)


Yãu cáöu : S1
3. Viãút caïc cáu lãûnh Pascal theo så âäö khäúi bãn âáy
Âuïng
4. Chuyãøn vãö daûng chè sæí duûng hai cáúu truïc tuáön C1
tæû vaì làûp kiãøm tra âiãöu kiãûn træåïc (while) theo Sai
âënh lyï Bolm vaì Jacopini.
S2

Âuïng
C2
Sai

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT

Âãö thi kãút thuûc Män hoüc


ÂÃÖA
ÂÃÖ A
CÄNG NGHÃÛ PHÁÖN MÃÖM
150 phuït (khäng âæåüc mang taìi liãûu vaìo phoìng thi)

I. Phæång phaïp tinh chãú tæìng bæåïc


Trong viãûc quaín lyï danh baû âiãûn thoaûi cho khaïch haìng, ngæåìi ta cáön mäüt thuí tuûc nàõn laûi (correcting) caïc
säú âiãûn thoaûi âæa vaìo âãø thäúng nháút caïch læu træî vaì in ra.
Giaí sæí säú âiãûn thoaûi gäöm hai pháön, pháön maî vuìng (regional code) vaì pháön säú (number). Khi ngæåìi sæí duûng
nháûp vaìo maïy tênh mäüt häö så khaïch haìng taûi muûc Säú Âiãûn Thoaûi coï chæïa mäüt säú naìo âoï, vê duû 0(51)
892.992, hoàûc 051-892-992, hoàûc 051.892.992, v.v..., maïy phaíi læu træî 051.892992 vaì in ra daûng 051.892.992. (Chuï yï
âäúi våïi caïc maî vuìng laì mäüt säú nhæ Haì näüi 4, Tp HCM 8..., chuyãøn säú 8 cuía pháön säú qua âãø váùn coï daûng
nn.nnnnnn).
1. Trçnh baìy låìi giaíi bàòng phæång phaïp tinh chãú tæìng bæåïc.
2. Láûp trçnh theo âån vë Unit cuía ngän ngæî Pascal.
II. Âàûc taí
Cho ma tráûn vuäng A cáúp NxN. Viãút âàûc taí thãø hiãûn mäùi pháön tæí trãn âæåìng cheïo chênh cuía ma tráûn chênh
laì pháön tæí nhoí nháút trãn mäùi haìng.
III. Ngän ngæî âàûc taí RAISE
Viãút trãn RSL mäüt âån thãø coï tãn EXPONENT âãø tênh haìm muî ex ?

ÑEÀ THI KEÁT THUÙC MOÂN HOÏC CÄNG NGHÃÛ PHÁÖN MÃÖM
150 phuùt (coï thãø mang taìi liãûu vaìo phoìng thi)

I. Phæång phaïp tinh chãú tæìng bæåïc


Trong viãûc quaín lyï danh baû âiãûn thoaûi cho khaïch haìng, ngæåìi ta cáön mäüt thuí tuûc nàõn laûi (correcting) caïc
säú âiãûn thoaûi âæa vaìo âãø thäúng nháút caïch læu træî vaì in ra.
Giaí sæí säú âiãûn thoaûi gäöm hai pháön, pháön maî vuìng (regional code) vaì pháön säú (number). Viãûc nàõn laì laìm
sao khi nháûp vaìo maïy mäüt säú âiãûn thoaûi, vê duû (51) 892.992, hoàûc 51-892-992, hoàûc 51.892.992, v.v..., maïy phaíi
læu træî 51.892992 vaì in ra daûng 51.892.992. Âäúi våïi caïc maî vuìng mäüt säú (Haì näüi 4, Tp HCM 8...), chuyãøn säú 8
cuía pháön säú qua âãø váùn coï daûng xx.xxxxxx.
1.Trçnh baìy låìi giaíi bàòng phæång phaïp tinh chãú tæìng bæåïc theo ngän ngæî tæû nhiãn.
2.Láûp trçnh theo âån vë Unit cuía ngän ngæî Pascal (caìng måí räüng baìi toaïn caìng täút).
II. Ngän ngæî âàûc taí RAISE
Viãút trãn RSL mäüt âån thãø coï tãn CIRCLE gäöm caïc âënh nghéa haìm tênh diãûn têch area vaì tênh chu vi
circumference. Coï thãø viãút âënh nghéa haìm theo nhæîng caïch khaïc ?
Âãö thi CÄNG NGHÃÛ PHÁÖN MÃÖM SE-112
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æû, Sai
âiãöu kiãûn (if...then) vaì làûp C1
(whilerepeat), haîy viãút âoaûn Âuïng
lãûnh bàòng giaí ngæî (phoíng
Pascal) thæûc hiãûn chæång trçnh S1
cho trong så âäö khäúi bãn âáy : Âuïng
C2 S3
Sai

S2

2. Thæí nghiãûm chæång trçnh (Testing)

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
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 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 }
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.

Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaì näüp laûi âãö thi cuìng baìi laìm.
Âãö thi CÄNG 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 S1
(whilerepeat), haîy viãút âoaûn
lãûnh bàòng giaí ngæî (phoíng Sai
Pascal) thæûc hiãûn chæång trçnh C1
cho trong så âäö khäúi bãn âáy : Âuïng
S2
Âuïng

C2 S3
Sai

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ûng taìi liãûu. Ghi säú âãö thi vaì näüp laûi âãö thi cuìng baìi laìm.
Âãö thi Män CÄNG 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

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
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 (whilerepeat), 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 :

Sai
C1
Âuïng

S1
Sai
C2 S3
Âuïng

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ûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
Âãö thi Män CÄNG 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 (whilerepeat), 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

Sai
C1
Âuïng
S2
Sai
C2 S3
Âuïng

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ûng 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 = 2
B: x = 4
B: x = 6
B: x = 8
A: x = 8

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT

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 = 1
2) y = 2
2) y = 3
2) y = 4
1) y = 4
Âãö thi CÄNG NGHÃÛ PHÁÖN MÃÖM SE-102
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æû, Âuïng
âiãöu kiãûn (if...then) vaì làûp C1
(whilerepeat), haîy viãút âoaûn Sai
lãûnh bàòng giaí ngæî (phoíng S1
Pascal) thæûc hiãûn chæång trçnh
cho trong så âäö khäúi bãn âáy : C2 Sai
Âuïng
S2

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í 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ûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi

Âãö thi CÄNG NGHÃÛ PHÁÖN MÃÖM SE-103


Thåìi gian 60 phuït Ngaìy thi :
1. Láûp trçnh cáúu truïc (Structured programming)

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT

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 S1
(whilerepeat), haîy viãút âoaûn
lãûnh bàòng giaí ngæî (phoíng Âuïng
Pascal) thæûc hiãûn chæång trçnh C1
cho trong så âäö khäúi bãn âáy :
Sai
S2
Sai
C2
Âuïng

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í nhæ thãú naìo ?
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æí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi

Âaïp aïn Âãö thi SE-100

q:= false
repeat
While C1 do begin
if not C1 then q:= true
S1
else begin
if C2 then S2 else S3
S1
end
if C2 then S2 else S3
end
until q

Âaïp aï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 = 1
2) y = 2

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
2) y = 3
2) y = 4
1) y = 4
Âàûc taí danh saïch tuyãún tênh (Linear List) viãút tàõt DSTT)
DSTT laì mäüt daîy coï thãø räùng hoàûc coï hæîu haûn caïc pháön tæí, kyï hiãûu  = <e1, e2, ..., en>. Thæï tæû caïc
pháön tæí trong mäüt DSTT laì thæï tæû cuía caïc vë trê (place) cuía chuïng, âæåüc xaïc âënh båíi haìm Succ. Nghéa laì våïi
moüi vë trê p cuía mäüt DSTT  , ta coï :  k  0 sao cho p = Succk (Head (Trong âoïHead () chè vë trê
âáöu tiãn cuía 
Mäùi vë trê coï mäüt näüi dung (content) chênh laì pháön tæí åí vë trê âoï. Säú pháön tæí hay säú vë trê cuía âæåüc
goüi laì âäü daìi (length) cuía . Nãúu n = 0, thç = . Màût khaïc haìm Succ khäng xaïc âënh åí vë trê thæï n hay Succn
(Head ()) khäng xaïc âënh.
Âäúi våïi caïc DSTT, ngæåìi ta xáy dæûng ba pheïp xæí lyï tuáön tæû trãn caïc pháön tæí :
 Tiãúp cáûn (access) âãún pháön tæí thæï k cuía DSTT
 Loaûi boí (delete) pháön tæí thæï k cuía DSTT
 Cheìn (insert) mäüt pháön tæí måïi taûi vë trê thæï k cuía DSTT
Giaí sæí Element laì mäüt kiãøu pháön tæí âaî âæåüc âënh nghéa træåïc âoï. 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æí vaì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)
(  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  k1) 
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 (k1  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 laìm baìi 90 phuït. Khäng sæí duûng 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 : Int  Int  Rational ; taûo säú hæîu tyí tæì hai säú nguyãn
Reduction : Rational  Rational ; ruït goün säú hæîu tyí
Numer : Rational  Int ; traí vãö tæí säú (numerator)
TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com
Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
Denom : Rational  Int ; traí vãö máùu säú (denominator)
+rat : Rational  Rational  Rational ; cäüng hai säú hæîu tyí
-rat : Rational  Rational  Rational ; træì hai säú hæîu tyí
*rat : Rational  Rational  Rational ; nhán hai säú hæîu tyí
/rat : Rational  Rational  Rational ; chia hai säú hæîu tyí
=rat : Rational  Rational  Bool ; so saïnh hai säú hæîu tyí
Rat-Real : Rational  Real ; chuyãøn mäüt säú hæîu tyí thaình säú thæûc
Preconditions
Pre Create-rat (n, d : Int) = 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 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ì d0.
=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 CÄNG NGHÃÛ PHÁÖN MÃÖM Âãö säú 105
Thåìi gian laìm baìi 90 phuït. Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi

Âàûc taí cáy nhë phán Binary Tree)


Kiãøu cáy nhë phán kiãøu T, våïi T laì mäüt kiãøu báút kyì naìo âoï, âæåüc âënh nghéa âãû quy nhæ sau :
1.  laì mäüt cáy nhë phán kiãøu T, âæåüc goüi laì cáy räùng (empty tree).
2. Nãúu E laì mäüt pháön tæí kiãøu T, A1 vaì A2 laì nhæîng cáy nhë phán kiãøu T, thç bäü ba (E, A1, A2) cuîng laì
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 laì caïc cáy nhë phán kiãøu T.
Nãúu A=(E, A1, A2) laì cáy nhë phán, thç E laì nuït gäúc, A1 laì cáy con (subtree) bãn traïi, A2 laì cáy con bãn phaíi cuía A.
Nãúu A laì cáy suy biãún chè gäöm mäüt nuït, thç nuït âoï luän luän laì nuït gäúc cuía mäüt cáy con. Ngæåìi ta coìn goüi A laì cáy
âæåüc gàõn nhaîn (labelled tree, hay tag tree) båíi caïc giaï trë trong T. Chuï yï sæû lãûch âäúi xæïng cuía âënh nghéa : nãúu A
khäng phaíi laì cáy räùng, thç cáy (E, A, ) khaïc våïi cáy (E, , A). Cáön phán biãût mäüt nuït våïi mäüt giaï trë gàõn cho
nuït âoï. Caïc nuït luän luän råìi (phán biãût) nhau, coìn caïc giaï trë thç coï thãø giäúng nhau. Kiãøu træìu tæåüng cuía cáy nhë
phán âæåü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 BinTree(T)
Functions
emptytree :  BinTree(T) ; taûo måïi cáy räùng
emptytree? : BinTree(T)  Boolean ; kiãøm tra cáy räùng
createtree : T  BinTree(T)  BinTree(T)  BinTree(T) ; taûo cáy nhë phán
root : BinTree(T) T ; truy cáûp nuït gäúc
left : BinTree(T)  BinTree(T) ; truy cáûp cáy con traïi
right : BinTree(T)  BinTree(T) ; truy cáûp cáy con phaíi
leaf? : BinTree(T)  Bool ; kiãøm tra nuït laï
Preconditions
root(A) âæåüc xaïc âënh nãúu vaì chè nãúu A  emptytree
left(A) âæåüc xaïc âënh nãúu vaì chè nãúu A  emptytree
right(A) âæåüc xaïc âënh nãúu vaì chè nãúu A  emptytree
leaf?(A) âæåüc xaïc âënh nãúu vaì 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
...

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
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ï cáy nhë phán âæåü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ï cáy nhë phán mä taí trãn âáy.
Âãö thi Män CÄNG NGHÃÛ PHÁÖN MÃÖM Âãö säú 104
Thåìi gian laìm baìi 90 phuït. Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi

Âàûc taí táûp håüp (Collection Specification)


Cho træåïc mäüt táûp håüp (collection) C caïc pháön tæí (elements) e. Ngæåìi ta cáön thæûc hiãûn caïc pheïp tçm kiãúm,
bäø sung (Add) vaì loaûi boí (Delete) mäüt pháön tæí e coï khoaï (key) laì k trong C. Ngoaìi ra, ngæåìi ta coï hai pheïp toaïn
bäø sung laì kiãøm tra mäüt pháön tæí coï thuäüc (in) mäüt táûp håüp cho træåïc hay khäng vaì âãúm säú pháön tæí (number of
occurrences) coï khoaï âuïng bàòng mäüt khoaï k âaî cho.
Giaí sæí Element laì kiãøu pháön tæí coï khoaï kiãøu Key âaî âæåüc âënh nghéa træåïc âoï. 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
Yãu cáöu :
1. Dæûa theo caïc tiãn âãö âaî cho, hoaìn chènh (âiãön vaìo dáúu ?) caïc tiãn âãö sau âáy :
(k  k’) ?
e  Search (k, C) ?
2. Cho S laì táûp håüp caïc säú tæû nhiãn gäöm giæîa 1 vaì N. Viãút bàòng ngän ngæî giaí (tæång tæû Pascal) thuí tuûc
xáy dæûng mäüt táûp håüp con S’  S sao cho S’ gäöm caïc säú chàôn.
3. Viãút thuí tuûc xáy dæûng mäüt táûp håüp con S’  S sao cho S’ gäöm caïc pháön tæí cuía S thoaí maîn mäüt tênh
cháút âaî cho naìo âoï.

Âãö thi Män CÄNG NGHÃÛ PHÁÖN MÃÖM Âãö säú 103
Thåìi gian laìm baìi 90 phuït. Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi

Âàûc taí danh saïch tuyãún tênh (Linear List) viãút tàõt DSTT)
DSTT laì mäüt daîy coï thãø räùng hoàûc coï hæîu haûn caïc pháön tæí, kyï hiãûu  = <e1, e2, ..., en>. Thæï tæû caïc
pháön tæí trong mäüt DSTT laì thæï tæû cuía caïc vë trê (place) cuía chuïng, âæåüc xaïc âënh båíi haìm Succ. Nghéa laì våïi
moüi vë trê p cuía mäüt DSTT  , ta coï :  k  0 sao cho p = Succk (Head (Trong âoïHead () chè vë trê
âáöu tiãn cuía 
Mäùi vë trê coï mäüt näüi dung (content) chênh laì pháön tæí åí vë trê âoï. Säú pháön tæí hay säú vë trê cuía âæåüc
goüi laì âäü daìi (length) cuía . Nãúu n = 0, thç = . Màût khaïc haìm Succ khäng xaïc âënh åí vë trê thæï n hay Succn
(Head ()) khäng xaïc âënh.
Âäúi våïi caïc DSTT, ngæåìi ta xáy dæûng ba pheïp xæí lyï tuáön tæû trãn caïc pháön tæí :
 Tiãúp cáûn (access) âãún pháön tæí thæï k cuía DSTT.
 Loaûi boí (delete) pháön tæí thæï k cuía DSTT.
 Cheìn (insert) mäüt pháön tæí måïi taûi vë trê thæï k cuía DSTT.

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com


Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
Giaí sæí Element laì mäüt pháön tæí coï kiãøu âaî âæåüc âënh nghéa træåïc âoï. 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æí vaì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 caïc tiãn âãö âaî cho, hoaìn chènh (âiãön vaìo dáúu ?) caï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æî giaí (tæång tæû Pascal) caïc thuí tuûc cheìn (Insert) mäüt pháön tæí vaìo DSTT vaì tçm kiãúm
nhë phán (Binsearch) våïi giaí thiãút DSTT âaî âæåüc sàõp xãúp træåïc.
Âãö thi Män CÄNG NGHÃÛ PHÁÖN MÃÖM Âãö säú 102
Thåìi gian laìm baìi 90 phuït. Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi

Âàûc taí táûp håüp (Collection Specification)


Cho træåïc mäüt táûp håüp (collection) C caïc pháön tæí (elements) e. Ngæåìi ta cáön thæûc hiãûn caïc pheïp tçm kiãúm,
bäø sung (Add) vaì loaûi boí (Delete) mäüt pháön tæí e coï khoaï (key) laì k trong C. Ngoaìi ra, ngæåìi ta coï hai pheïp toaïn
bäø sung laì kiãøm tra mäüt pháön tæí coï thuäüc (in) mäüt táûp håüp cho træåïc hay khäng vaì âãúm säú pháön tæí (number of
occurrences) coï khoaï âuïng bàòng mäüt khoaï k âaî cho.
Giaí sæí Element laì kiãøu pháön tæí coï khoaï kiãøu Key âaî âæåüc âënh nghéa træåïc âoï. 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
Yãu cáöu :
1. Dæûa theo caïc tiãn âãö âaî cho, hoaìn chènh (âiãön vaìo dáúu ?) caïc tiãn âãö sau âáy :
Key-of (e)  k ?
TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com
Âaûi hoüc Âaì Nàông, træåìng Âaûi hoüc Kyî thuáût Khoa CNTTÂTVT
(k = k’) and NbOccurrences (k, C)  1 ?
2. Cho S laì táûp håüp caïc säú tæû nhiãn gäöm giæîa 1 vaì N. Viãút bàòng ngän ngæî giaí (tæång tæû Pascal) thuí tuûc
xáy dæûng mäüt táûp håüp con S’  S sao cho S’ gäöm caïc säú leí.
3. Viãút thuí tuûc cho pheïp xæí lyï (duyãût) táút caí caïc pháön tæí cuía mäüt táûp håüp âaî cho.

Âãö thi Män CÄNG NGHÃÛ PHÁÖN MÃÖM Âãö säú 101
Thåìi gian laìm baìi 90 phuït. Khäng sæí duûng taìi liãûu. Ghi säú âãö thi vaìo baìi laìm. Näüp laûi âãö thi

Âàûc taí danh saïch tuyãún tênh (Linear List) viãút tàõt DSTT)
DSTT laì mäüt daîy coï thãø räùng hoàûc coï hæîu haûn caïc pháön tæí, kyï hiãûu  = <e1, e2, ..., en>. Thæï tæû caïc
pháön tæí trong mäüt DSTT laì thæï tæû cuía caïc vë trê (place) cuía chuïng, âæåüc xaïc âënh båíi haìm Succ. Nghéa laì våïi
moüi vë trê p cuía mäüt DSTT  , ta coï :  k  0 sao cho p = Succk (Head (Trong âoïHead () chè vë trê
âáöu tiãn cuía 
Mäùi vë trê coï mäüt näüi dung (content) chênh laì pháön tæí åí vë trê âoï. Säú pháön tæí hay säú vë trê cuía âæåüc
goüi laì âäü daìi (length) cuía . Nãúu n = 0, thç = . Màût khaïc haìm Succ khäng xaïc âënh åí vë trê thæï n hay Succn
(Head ()) khäng xaïc âënh.
Âäúi våïi caïc DSTT, ngæåìi ta xáy dæûng ba pheïp xæí lyï tuáön tæû trãn caïc pháön tæí :
 Tiãúp cáûn (access) âãún pháön tæí thæï k cuía DSTT.
 Loaûi boí (delete) pháön tæí thæï k cuía DSTT.
 Cheìn (insert) mäüt pháön tæí måïi taûi vë trê thæï k cuía DSTT.
Giaí sæí Element laì mäüt pháön tæí coï kiãøu âaî âæåüc âënh nghéa træåïc âoï. 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æí vaì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 caïc tiãn âãö âaî cho, hoaìn chènh (âiãön vaìo dáúu ?) caï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æî giaí (tæång tæû Pascal) caïc thuí tuûc duyãût (Scan) vaì tênh âäü daìi (Length) cuía mäüt
DSTT.

TS.Phan Huy Khánh, Tuyển chọn và In bởi : nguyen_lanit@yahoo.com, nguyenlant5bkdn@yahoo.com

You might also like