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

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (209.3 KB, 17 trang )

Âả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 (whilerepeat),
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 (whilerepeat),
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 : ,



×