Professional Documents
Culture Documents
Cong Nghe Phan Mem
Cong Nghe Phan Mem
Cong Nghe Phan Mem
ii
ii
Muc luc
IV.2.
Cac tin gan ................................................................................................ 86
IV.2.1.
iu kin trc yu nht va iu kin sau manh nht cua lnh gan ......... 86
IV.2.2.
Quy tc tnh toan iu kin sau manh nht cua mt phep gan .................. 87
V. BAI TP ........................................................................................................................... 89
CHNG 4 TH NGHIM CHNG TRNH ............................................... 90
I. KHAO SAT PHN MM ..................................................................................................... 90
II. CAC PHNG PHAP TH NGHIM ..................................................................................... 92
II.1.
nh ngha va muc ch th nghim ............................................................... 92
II.2.
Th nghim trong chu ky sng cua phn mm ............................................... 94
II.2.1.
Th nghim n th.................................................................................... 94
II.2.2.
Th nghim tch hp................................................................................... 95
II.2.3.
Th nghim h thng.................................................................................. 96
II.2.4.
Th nghim hi quy.................................................................................... 97
II.3.
Dn dt cac th nghim................................................................................... 97
II.4.
Thit k cac phep th pha huy (Defect Testing) ............................................. 98
II.4.1.
Cac phng phap da trn chng trnh ................................................... 98
II.4.2.
Cac phng phap da trn c ta ............................................................ 100
II.4.3.
Kt lun .................................................................................................... 101
II.4.4.
Cac tiu chun kt thuc th nghim ......................................................... 101
II.5.
Cac phep th nghim thng k...................................................................... 102
II.5.1.
II.5.2.
M u ................................................................................................... 102
c lng n nh cua mt phn mm ............................................... 104
iii
iv
iv
CHNG 1
I.1.
dung cac lnh nhay (goto) iu khin chng trnh mt cach tuy tin. Chng
trnh la mt m ri rm khng khac g mon m si (spaghetti) cua nc Y.
Cac ngn ng lp trnh tuyn tnh khng kim soat c nhng s thay i
cua d liu. Moi d liu s dung trong chng trnh u co tnh toan cuc va co th
b thay i vao bt c luc nao. Vao giai oan nay, ngi ta xem vic lp trnh nh
mt hoat ng ngh thut nhum mau sc tai ngh ca nhn hn la khoa hoc, vi
thut ng the art of programming.
I.2.
Lp trnh co cu truc
I.3.
Tru tng hoa d liu la lam cho vic s dung cac cu truc d liu tr nn c
lp i vi vic cai t cu th. V du s du chm ng (floating point number) a
c tru tng hoa trong moi ngn ng lp trnh. NSD thao tac trn cac s du
chm ng ma khng quan tm n cach biu din nh phn trong may cua chung
nh th nao.
Lp trnh HT lin kt cac cu truc d liu vi cac phep toan. Mt cu truc
nao o th tng ng, ta co nhng phep toan nao o. V du : mt ban ghi v nhn
s co th c oc, cp nht s thay i va c ct gi, con mt s phc th c
dung trong tnh toan. Khng th vit s phc ln tp nh mt ban ghi nhn s,
cung khng th cng tr nhn chia hai ban ghi nhn s vi nhau nh cach cua s
phc.
Lp trnh HT a vao nhiu thut ng va khai nim mi, chng han khai
nim lp (class), khai nim k tha (inheritence).
u im cua lp trnh HT la lam cho vic phat trin phn mm nhanh
chong hn vi kha nng dung lai cac chng trnh cu. Mt lp mi c xem nh
lp suy din, co th c k tha cu truc d liu va cac phng phap cua lp gc
hoc lp c s.
Mt trong nhng ngn ng lp trnh HT c noi n la SMALLTALK, c
phat trin nm 1980 tai Xerox Palo Alto Recearch Center (PARC). Hin nay,
nhiu ngn ng lp trnh thng dung cung c trang b thm kha nng HT,
nh la C++, Delphi, v.v...
I.4.
Lp trnh trc quan (visual programming) c phat trin trn nn tang cua
lp trnh HT. Khi thit k chng trnh, ngi lp trnh nhn thy ngay kt
qua qua tng thao tac va giao din ngi dung (user interface) khi chng trnh
c thc hin. Ngi lp trnh co th d dang chnh sa v mau sc, kch thc,
hnh dang va cac x ly thch hp ln cac i tng co mt trong giao din.
Cac ngn ng lp trnh trc quan thng dung hin nay thng c phat trin
trong mi trng Microsoft Windows, nh Visual Basic, Visual C++, Visual
Foxpro, Java. v.v...
I.5.
Lp trnh la mt trong nhng lnh vc kho nht cua toan hoc ng dung. Ngi
ta coi lp trnh la mt khoa hoc nhm xut nhng nguyn ly va phng phap
nng cao nng sut lao ng cua lp trnh vin. Nng sut y c hiu la
tnh ung n cua chng trnh, tnh d oc, d sa, tn dung ht kha nng cua
thit b ma khng phu thuc vao thit b.
TS. PHAN HUY KHANH bin soan
Thc cht cua qua trnh lp trnh la ngi ta khng lp trnh trn mt ngn
ng cu th ma lp trnh hng ti no. Chng trnh phai c vit di dang cac
thao tac co cu truc trn cac i tng co cu truc va cac mnh nhm khng
nh tnh ung n cua kt qua.
Nhng t tng cach mang trong lp trnh th hin hai im sau :
Chng trnh va lp trnh vin tr thanh i tng nghin cu cua ly
thuyt lp trnh.
Lam th nao lam chu c s phc tap cua hoat ng lp trnh ?
II.2.
Tnh bn vng
Tnh co th m rng
II.3.
Thi ky th hai
1960 1970
10
Thi ky th ba
1970 1990
Thi ky th t
1990 tr i
Sau y la mt tranh vui v qua trnh tao ra mt san phm phn mm a kha
quen thuc i vi nhung ngi lam Tin hoc t hn 20 nm nay (theo J.
CLAVIER, Diriger un projet informatique, Edition J. C. I. Inc, Canada 1993) :
1. Ngi t hang
V du : Cng ty Cng vin
11
11
12
- Nng cao : Khach hang tm ra nhng chc nng phu cua phn mm. Bao tr
hoan thin m rng phn mm ra ngoai nhng chc nng vn co.
III.2.
Co nhiu m hnh khac nhau th hin mt chu ky sng (life cycle). Sau y
la mt chu ky sng kiu c in theo m hnh thac nc (waterfall model) gm
cac giai oan nh sau :
Tm hiu va phn tch cac yu cu (RAD Requirements analysis and
definition)
Thit k h thng va phn mm (SSD System and software design)
Cai t va kim th tng phn (IUT Inplementtation and Unit testing)
Tch hp va kim th h thng (IST Integrgion and system testing)
Tm hiu va phn tch
cac yu cu
Thit k h thng
va phn mm
Cai t va kim th
tng phn
Tch hp va kim th
h thng
Hnh 1.2. M hnh thac nc
Du rng m hnh thac nc trn y co ch li trong vic quan ly
(management), lp k hoach va lp bao cao tin phat trin phn mm nhng
ch thch hp vi mt lp h thng phn mm nao o ma thi, khng phu hp vi
cac hoat ng a ch ra trong m hnh.
Tin trnh phn mm gm cac hoat ng phc tap va bin ng ma khng th
biu din trn mt m hnh n gian. Nhng m hnh tt v tin trnh phn mm
vn con la chng chu nghin cu. Hin nay, cac m hnh tng quat khac nhau
hay tnh thc dung cua s phat trin phn mm, gn bo cht che vi nhau.
M hnh thac nc nguyn thuy (original) la mt trong nhng m hnh tng
quat mang tnh thc dung su sc.
Sau y la mt s tip cn :
13
Kt thuc
San phm
Lam mn
ban mu
thit k
nhanh
xy dng
ban mu
anh gia
cua khach hang
v ban mu
Hnh 1.3. Tip cn kiu ban mu
4. Bin oi hnh thc (formal transformation) : La s bin i cac c ta hnh
thc (formal specification) cua h thng phn mm ang xet thanh mt
chng trnh kha thi nhng bao toan c tnh chnh xac (correctness preserving transformations).
5. Lp rap h thng t cac thanh phn dung lai c (system assembly from
reusable components). Ky thut nay cho phep xy dng h thng t cac thanh
phn a co. Tin trnh phat trin h thng la s lp rap hn la s sang tao.
Hin nay, cac tip cn 1, 2, 3 c ng dung nhiu trong thc tin.
Trn thc t, cac giai oan phat trin phn mm khng phai ri ring ma la gi
ln nhau (overlap) va thng tin c cung cp ln nhau.
Trong khi thit k, nhng vn va cac yu cu gn bo vi nhau, trong khi lp
trnh, nhng vn thit k c tm thy, v.v... Luc nay, tin trnh phn mm
khng n gian la mt m hnh tuyn tnh ma bao gm mt day cac tng tac cua
cac hoat ng phat trin.
TS. PHAN HUY KHANH bin soan
13
14
Tuy nhin, mt m hnh cha cac vong lp se lam kho khn cho vic quan ly va
bao cao. Co nhiu dang m hnh trong tin trnh phn mm. Sau y la mt s m
hnh :
1. M hnh thac nc cai tin
Tm hiu va phn tch
cac yu cu
Thit k h thng
va phn mm
Cai t va kim th
tng phn
Tch hp va kim th
h thng
Khai thac va
bao tr
Hnh 1.4. M hnh thac nc cai tin
1. Tm hiu va phn tch cac yu cu: NSD h thng va ngi phat trin h thng
ban bac, trao i (consultation) vi nhau thit lp muc ch, rang buc va
cac dch vu cua h thng phn mm, lnh hi c nhng oi hoi cua bai toan.
2. Thit k h thng va phn mm : Tin trnh thit k h thng phn chia cac yu
cu thanh cac h thng phn cng, phn mm va thit lp mt kin truc h
thng toan b (overall system architecture). Vic thit k phn mm bao gm
vic th hin cac chc nng h thng phn mm (software system functions)
bin i thanh cac chng trnh kha thi.
3. Cai t va kim th tng phn : Trong giai oan nay, cac n v chng trnh
hay tp hp cac chng trnh c kim th ln lt sao cho thoa man cac c
ta tng ng.
4. Tch hp va kim th h thng : Cac n v chng trnh c tch hp va kim
th nh la mt h thng y u am bao cac yu cu t ra ban u. Sau
giai oan nay, h thng phn mm c giao cho khach hang.
5. Khai thac va bao tr (operation and maintenance) : y la mt pha dai nht
cua chu ky sng. H thng c cai t va a vao s dung thc t. Vic bao tr
bao gm vic khc phuc nhng sai sot xay ra a khng xut hin trong cac giao
oan trc o cua chu ky sng. Vic ti u hoa cac dch vu cua h thng c
xem nh la nhng yu cu mi c phat hin.
15
2. M hnh xon c
Phat trin trn tnh u vit cua vong i c in va ban mu, b sung nhung
yu t con thiu va thm cac yu t mi, phn tch rui ro.
K hoach :
Tp hp yu cu ban u va
k hoach d an
K hoach
da trn y kin
cua khach hang
Hng ti
h thng hoan chnh
anh gia cua khach hang :
Khng nh kt qua cua cng ngh
Ban mu ban u
Ban mu tng tip theo
...
la ngn ng lp trnh khng tun theo cach goi thu tuc hay goi chng trnh con
thng thng, khng s dung cac cu truc iu khin, tun t, ma da trn tp
hp cac yu t va quan h dn v kt qua yu cu. V du ngn ng vn tin
SQL thuc loai nay.
15
16
Nhu
cu
phn
mm
1980
1990
2000
17
Lam ban mu
4 GT
Thit k
Ban mu vong th n
4 GT
Ma hoa
4 GT
M hnh vong th n
Kim th
H thng hoat ng
Bao tr
17
CHNG 2
Thit k phn mm
I. Nn tang cua thit k phn mm
18
19
19
20
21
21
22
II.1.
II.2.
vic 1.1
vic 1.2.1
vic 1.2
vic 1.2.2
vic 2
vic 3
...
vic 1.2.3
23
V du 2 :
Phn tch bai toan cng hai phn s a v bai toan tm c s chung ln
nht.
cng hai phn s, trc tin cn c lc chung, tip o quy ng mu s
ly mu s chung. Cui cung tin hanh cng hai t s cua hai phn s a co chung
mu s. Vic c lc phn s c a v tm c s chung ln nht cua t s va
mu s (s dung thut toan Euclide).
quy ng mu s, cn tm bi s chung nho nht. Vic tm bi s chung nho
nht cua hai s lai c a v tm c s chung ln nht cua chung :
BSCNN(b, d) = b * d / SCLN(b,d).
a
+ c
b d
LPS(a/b)
LPS(c/d)
QMS(a/b, c/d)
a/M + b/M
BSCNN(b, d)
SCLN(a/b)
SCLN(c/d)
SCLN(b, d)
Gia chng trnh chnh va chng trnh con co ng giao tip la vic truyn
tham bin. Khng c goi chng trnh con theo kiu vt cp.
23
24
Han ch dung bin toan cuc (global variables) trong chng trnh con v se tao
thm nhng ng giao tip kho quan ly. Chng han, mt chng trnh con
nao o lam thay i mt bin toan cuc th mt ni khac, trong mt chng
trnh con khac hoc ngay trong chng trnh chnh, cung se kho nhn bit s
thay i nay.
II.3.
25
Lu tng ng
Tun t
c coi nh la mt lnh
ghep (khi), thc hin
tun t cac lnh S1, S2,
..., Sn.
S1
(Sequential)
begin
...
S1
...
M ta
Sn
Sn
end
2
Re nhanh
C?
True
S
(Branching)
a) Re nhanh thiu
if C then S
3
b) Re nhanh u
if C then S1
else S2
C1 : S1
C2 : S2
...
Cn : Sn
endcase
False
S2
False C1 ?
...
S2
Nu khng, nu C2 ung
th thc hin S2, v.v...
...
True
False Cn ?
S1
True
False C2 ?
...
Nu C1 ung th thc
hin S1.
True
Sn
Cu truc lp
(Iteration)
Kim tra iu kin
trc khi thc hin
vong lp :
S1
La chon
(Selection)
case
True
False
False
C?
True
S
25
26
27
Lu tng ng
6 Lp vi kim tra
iu kin sau khi
thc hin xong thn
vong lp :
False
do S until C
M ta
C?
True
7 Lp ht trc s ln (for)
i = <Gt_u>
i <Gt_Cui >
i = <Gt_u>
False
i <Gt_Cui >
True
False
True
i = i + Succ (i)
i = i + Pred (i)
Ngoai cac cu truc lp hay gp thng thng trn y, ngi ta con s dung cac
cu truc lp co thoat (loop exit) nh sau :
{ s dung khoa key anh du li thoat,
key khng xut hin trong S va trong C }
S1
True
C
key := False
While not key do begin
False
S2
S1
if C then key := True else S2
End
27
28
II.4.
V du 4 :
{ Vong lp nay dung Repeat }
Repeat
S
True
C1
False
False
C2
True
S
Until C1 or not C2
Chu y :Co iu kin cui vong lp co th dung
Repeat
V du 5 :
True
C1
While C1 do
False
C2
False
True
S1
S2
if C2 then S1 else S2
Chu y :Co iu kin trc vong lp co th dung
While
V du 6 :
{ y la cu truc loop-exit, co th dung While
S1
nh sau :}
False
C1
True
C2
key := False
False
True
S2
29
V du 7 :
C1
True
False
S1
C2
True
False
S2
C2
S1
If C2 then key := True
Else begin
True
False
S2
If C3 then key := True
Else begin
S3
C4
True
False
S3
If C4 then key := True
S4
Else S4
End
End
End
Until key
29
30
For
Loop Exit
Repeat
If
Tun t
While
If C = C1 then S1
else if C = C1 then S2
else if . . .
...
else if C = Cn then Sn
2. if SW
Dung hai bin phu kiu logic thc hin vong lp While ung mt ln :
Var p, q : Boolean
If C then S
p := C
While p do begin
If C then S1 else S2
S ; p := not p
End
p := C ; q := p
While p do begin
S1 ; p := not p
31
End;
While not q do begin
S2 ; q := not q
End
3. Repeat SW
Repeat S until C
S ; While not C do S
4. For SW
For I:= Gtu to GtCui
I := Gtu
do S
I := Gtu
GtCui
do S
If C then S1 else S2
Tai S1 va S2, ta co th t cac cu truc iu khin khac, chng han th S1 bi :
While C1 do S3
va th S2 bi :
Repeat S4 until C2
Ta co :
If C then
While C1 do S3
Else Repeat S4 until C2
31
32
Vi cacc phep th nh vy, cu truc cua chng trnh ngay cang phc tap va
dn n kho hiu va d sai sot. Chnh v vy ma ngi ta chu trong trin khai
chng trnh t trn xung va vit cac cu truc theo tng khi.
Cac khi co th thut voa, thut ra phan anh tnh cu truc va mc lng
nhau cua cac cu truc.
Nguyn tc : Cu truc con c vit lot vao trong (thut vao) cu truc cha. im
vao va im ra cua mi cu truc phai nm trn cung mt hang doc.
IV. Lp trnh n th
IV.1. Khai nim v n th
Y tng c ban cua lp trnh cu truc la phn ra vn ln thanh cac vn
nho hn cho n khi nhn c cac vn tng i n gian, mi vn nay
c giai quyt bi mt n th chng trnh (module). Mi n th co cac tnh
cht nh sau :
a) Tnh n thun
Ch giai quyt nhng i tng d liu co lin h vi nhau trong pham vi cua vn .
Hoat ng ch phu thuc vao d liu a vao ch khng phu thuc vao tnh trang
trc o cua no. Mi n th la mt ham d liu vao, kt qua tin oan c.
c) Tnh c lp
Cac ngn ng lp trnh bc cao nh Pascal (ky thut dung Unit), C, C++
(include cac tp chng trnh ) va hu h cac cng cu lp trnh thng gp hin
nay u cho phep lp trnh theo n th.
33
IV.2.1.Phn loai n th
Co 4 loai n th :
a) n th iu khin
n th iu khin (Director Module) co chc nng goi cac n th khac x ly.
b) n th x ly
n th x ly (Pcocessing Module) chuyn trach mt nhim vu nao o trn
vung d liu c lp. n th x ly c n th iu khin goi ti va sau khi thc
hin xong chc nng, n th x ly tra quyn iu khin tr lai cho n th iu
khin.
c) n th vao/ra
n th vao/ra (IO Module) chuyn trach vao/ra d liu, co s kim tra va x ly
sai sot. n th cung do n th iu khin goi ti ging nh hoat ng cua n
th x ly.
33
34
Gia B va D ch co mt ng
tng tac duy nht la trao i
tham bin.
F1
F2
F3
G1
Hnh 2.7. Cu truc cy thun tuy cua chng trnh va chng trnh con
35
Nguyn ly phat trin CHTR bng tinh ch tng bc (hay thit k t trn
xung) do Niclaus Wirth (tac gia cua ngn ng lp trnh Pascal) xut vao nm
1971, trong bai bao cua mnh "Program Development by Stepwise Refinement".
Ban u, CHTR la nhng cu c vit bng ngn ng t nhin (chng han
ting Vit) th hin s phn tch tng th cua ngi lp trnh.
Sau o, tai mi bc, mi cu c phn tch chi tit hn thanh nhng cu
khac. Co ngha a phn tch mt cng vic thanh nhng cng vic be hn.
- Mi cu c goi la mt c ta (Specification).
- Mi bc phn tch c goi la a tinh ch (refine) cu (cng vic) o.
S tinh ch c hng v pha ngn ng lp trnh se dung. Ngha la cang
bc sau, nhng cu ch trn ngn ng t nhin cang n gian d hiu hn va
c thay th bng cac cu lnh cua ngn ng lp trnh. Nu cu con to ra phc
tap, co th coi o la mt CHTR con va tip tuc tinh ch no.
35
36
Trong qua trnh tinh ch, cn a ra cac cu truc d liu tng ng vi tng
bc. Nh vy s tinh ch cac c ta CHTR va d liu la song song.
Phng phap tinh ch tng bc th hin t duy giai quyt vn t trn
xung, trong o s phat trin cua cac bc la hng v ngn ng lp trnh se s
dung. ay cua s i xung trong hoat ng phn tch la cac cu lnh va cac m ta
d liu vit bng ngn ng lp trnh.
Y ngha :
Vic lp trnh co s nh hng va co s ngn np trn giy nhap,
tranh mo mm th nghim mang tnh trc giac.
V.2.
V du minh hoa
V.2.1. V du 1
Nhp vao day cac ky hiu lin tip t ban phm cho n khi k t du chm (.)
c go. In ra s lng tng ch s t 0..9 a oc.
Chng han, nu nhp vao day :
Kiki1t2047655kp412.
th in ra :
s ch s 0 a oc = 1,
s ch s 1 a oc = 2,
s ch s 2 a oc = 2
...
1. Phac thao li giai
Cn in ra 10 gia tr ng vi cac ch s t 0..9. Co th dung 10 bin n ZERO,
MOT, HAI, BA... nhng tt nht nn dung mt mang co 10 phn t :
S ['0'] cha k t '0' a oc;
S ['1'] cha k t '1' a oc;
v.v...
Ta m ta nh sau :
Type day = array ['0'..'9'] of integer;
var s = day;
c: Char; {ky t c oc }
T o li giai co th c vit nh sau :
Repeat
oc_mt_k_t; {la ky t c }
if k_t_la_ch_s then m_ch_s_o;
{v du, nu oc '2' th tng s ['2'] ln 1}
Until c = du chm;
37
37
38
39
th :
2 k 16 va : -7 l 7.
39
40
biu din s kin t qun hu tai ct j vao hang i, ta dung day nguyn x
sao cho x [j] = i nu nh co mt qun hu (i, j) :
var x : array [1..8] of integer;
Vic t qun hu vao (i, j) se lam cho :
a [i] = b [i+j] = c [i-j] = false
Kim_tra_an_toan : Cho n luc nay, cha co hai qun hu nao trong s nhng
qun a t ln ban c co th n ln nhau. iu kin An_toan t qun hu vao
(i, j) la :
a [i] = b [i+j] = c [i-j] = true;
Bng cach s dung mt bin logic :
Var Antoan: Boolean;
Vic Kim_tra_an_toan c dch ra Pascal nh sau :
An toan := a [i] and b [i + j] and c [i - j];
b[2] = b[i+j] c[-6] = c[i-j]
1
...
8
a[i], i = 1
2
...
8
Hnh 2.8. Ban c vua cho bai toan tam qun hu
t qun hu vao (i, j) t_qun_hu_vao se la :
x[j]:= i;
a [i]:= false;
b [i+j]:= false;
c [i-j]:= false;
Tip tuc tinh ch bc phc tap nht la Quay_lai :
Quay_lai : la quay lai mt ct trc ct ang xet t lai qun hu cho ct
o khi tnh th hin trang la b tc.
Bc Quay_lai co dang :
Xet_lai_ct_trc;
if not a_quay_lai_qua_ct_u then begin
Bo_qun_hu__ct_o; {tc ct trc ct ang xet, (i, j) }
if ang__hang_cui_cung then begin
41
Xet_lai_ct_trc ;
if not a_quay_lai_qua_ct_u then
Bo_qun_hu__ct_o
end
end;
D dang ta thy Xet_lai_ct_trc tc la :
j = j - 1;
Con a_quay_lai_qua_ct_u th a xet trc y, tc la :
j < 1;
Thao tac Bo_qun_hu__ct_o se co dang:
i:= x [j]; a [i]:= true; b[i+j]:= true; c[i-j]:= true;
Chng trnh hoan chnh nh sau :
Program TamQunHau;
Uses Crt;
Const Hau='Q ';ov='#';
Var x: array[1..8] of Integer;
a: array[1..8] of Boolean;
b: array[2..16] of Boolean;
c: array[-7..7] of Boolean;
i,j: Integer;
antoan: Boolean;
Begin
for i:=1 to 8 do a[i]:=true;
for i:=2 to 16 do b[i]:=true;
for i:=-7 to 7 do c[i]:=true;
j:=1; i:=0;
repeat
repeat
i:=i+1;
antoan:=a[i] and b[i+j] and c[i-j];
until antoan or (i=8);
if antoan then begin
x[j]:=i;
a[i]:=false; b[i+j]:=false; c[i-j]:=false;
j:= j+1; i:= 0
end else begin
j:=j-1;
if j>=1 then begin
i:=x[j];
a[i]:=true; b[i+j]:=true; c[i-j]:=true;
if i=8 then begin
TS. PHAN HUY KHANH bin soan
41
42
Version 7.0
Q
#
#
#
#
#
#
#
#
Q
#
#
#
#
#
#
V.3.
#
#
#
#
Q
#
#
#
#
#
#
#
#
#
#
Q
#
#
#
#
#
Q
#
#
#
#
Q
#
#
#
#
#
#
#
#
#
#
#
Q
#
#
#
#
Q
#
#
#
#
Sa i chng trnh
Chng trnh vit xong chay tt cha co ngha qua trnh lp trnh a xong. Do
nhu cu, co th cn sa i lai theo mt cach nao o cho phu hp. Nh phng
phap tinh ch tng bc ma ngi lp trnh co th d dang nhn thy nhng ch
cn chnh sa trong chng trnh. y la kha nng duy tr (Maintainability) cua
phng phap.
Mt c tnh khac cua phng phap tinh ch tng bc la tnh ph cp
(portability)) cua chng trnh : ta d dang chuyn i sang mt mi trng khac,
tc la chuyn sang mt ngn ng lp trnh khac, hoc mt h thng may tnh
khac. minh hoa, ta xet bai toan 8 qun hu tng quat nh sau :
Tm tt ca cac phng an co th t 8 qun hu ln ban c sao cho khng co hai
qun nao n ln nhau.
T tinh ch ln 1 trong muc trc, ta cn co hai sa i nh sau :
43
43
44
45
H[x, y] = i
nc i thanh cng
q = false
khng co nc i
45
46
u, v:Integer;
q1: Boolean;
Begin
Khi ng_nc_i_co_th
Repeat
Chon mt_nc_i
if (u in s) and (v in s) and H[u, v]=0 then begin
H[u, v] := i;
if n < sqr(n) then begin
Try(i+1, u, v, q1);
if not q1 then H[u, v] := 0
end else q1:= true
end
Until q1 or (Ht_nc_i);
q := q1
End;
Cho n luc nay, ta cha xet n lut i cua qun ma, ngha la chng trnh
xy dng trn c lp vi lut c vua vi chu y giam nhe nhung chi tit cha cn
thit khi phat trin chng trnh.
Nh vy ta vn con hai vic cha giai quyt la : Khi ng_nc_i_co_th va
Chon mt_nc_i.
Cho trc mt toa bt ky <x, y> cua qun ma trn ban c, ta co th co tam
<u, v> c anh s t 1..8 (theo chiu ngc kim ng h) ma qun ma co th
nhay n nh hnh di y :
x
Hnh 2.9. Cac v tr khac nhau cua qun ma
co c <u, v>, t <x, y>, ta cn xac nh gia tr chnh lch theo toa . Ta
se dung hai mang mt chiu a va b, mi mang se co kch thc 8 phn t, lu
gi 8 gia tr chnh lch theo toa <x, y>, vi quy c chiu i va mang du
+, chiu i va mang du . Ta co khai bao nh sau :
Var a, b: Array[1..8] of integer;
47
2;
1;
-1;
-2;
-2;
-1;
1;
2;
b[1]:=
b[2]:=
b[3]:=
b[4]:=
b[5]:=
b[6]:=
b[7]:=
b[8]:=
1;
2;
2;
1;
-1;
-2;
-2;
-1;
47
48
49
Sau y la kt qua vi N = 5 :
Cho N = 5
Bt u = 5:59:57:30
1
15 10 21
14 9
20 5
19 2
16
22 11
13 24 17 4
25 18 3
12 23
Kt thuc = 5:59:57:36
Kt qua vi N = 6 :
Cho N = 6
Bt u = 6: 0:40:80
1
16 7
26 11 14
34 25 12 15 6
17 2
33 8
27
13 10
32 35 24 21 28 5
23 18 3
30 9
20
36 31 22 19 4
29
Kt thuc = 6: 0:41:79
49
50
Dos
Crt
Graph
cung cp cacc kha nng hoa (graphics) cho cac loai man hnh
khac nhau : Hercule, CGA, EGA, VGA...
Turbo3
Graph3
thc hin cac chng trnh con hoa theo kiu con rua (tortoise)
cua Turbo Pascal V3.0
51
52
Unit U1 ;
Interface
Uses U2 ;
Const b = c;
Implementation
end.
U1.PAS
Unit U2 ;
Interface
Const c = 10;
Implementation
end.
U2.PAS
Nu trong U2, i c=5 chng han th cn phai dch lai U2.PAS va U1.PAS (v
U1 s dung U2) va dch lai P.PAS.
53
{i cua P}
U1.i
{i cua U1}
U2.i
{i cua U2}
VI.4. V du v Unit
Vit chng trnh tnh nhiu ln din tch hnh tron vi ban knh nhp vao t
ban phm, cho n khi ban knh nhp vao la 0 th dng.
Goi chng trnh chnh la HINHTRON va Unit s dung tnh din tch hnh
tron la DTHTRON, ta co :
Program HINHTRON ; {Tp HINHTRON.PAS}
Uses Crt, DTHTRON ;
Var bk : Real ;
Begin
Write (S Pi = , Pi) ; {hng Pi khai bao trong Unit DTHTRON}
Repeat
Write (ban knh =) ; Readln (bk) ;
if bk > 0 then
Writeln (Din tch = , Dientich (bk) ) ;
Until bk = 0
End. {HINHTRON}
Unit DTHTRON ; {Tp DTHTRON.PAS}
Interface
Const Pi = 3.1415926535 ; {1/ = 0.318309886}
Function Dientich (R : Real) : Real;
Implementation
Function Dientich;
Begin
Dientich := Pi * Sqr (R)
End;
Begin {phn khi ng Inilialization}
TS. PHAN HUY KHANH bin soan
53
54
55
VI.5. Bai tp
1. S dung cac cu lnh Pascal vit chng trnh theo s khi di y bng
cach ch s dung cac cu truc iu khin c ban. Sau o hay i v dang chng
trnh ch s dung ba cu truc iu khin la tun t, iu kin if then else va
lp While.
1.
2.
True
C1
False
C1
True
False
S2
S1
S1
True
C2
False
False
C3
True
C2
False
True
3.
4.
True
C1
False
S1
True
C2
False
S1
True
C1
False
S2
S2
C2
True
False
5.
6.
S1
S1
C1
True
C1
False
False
C2
True
S2
S3
S2
C3
S3
True
False
C2
False
True
True
S4
C3
False
C4
False
True
55
56
7.
8.
S1
S1
True
C1
S2
False
S2
C2
S3
True
False
True
S3
C3
C1
False
S4
True
C2
False
S4
False
True
S5
S6
57
CHNG 3
Requirement
verification
High-level
design
Prototype
Formal
verification
Detailed
design
Program
Dynamic
verification
57
58
thc hin qua trnh V&V, ngi ta s dung cac ky thut tnh (static
techniques) va ng (dynamic techniques) kim tra h thng.
Ky thut tnh nhm phn tch biu din h thng qua vic phn tch yu cu,
phn tch thit k va hin th (listing) chng trnh. Ky thut ng la vic th
nghim(testing) chng trnh
Ky thut tnh bao gm vic thanh tra (inspection) chng trnh, phn tch va
xac minh hnh thc (formal verification) hay chng minh s ung n (prouving)
cua chng trnh.
59
II.1.
nh ly
H qua
nh , tin
(va)
or
(hoc)
(tng ng)
ab
ab
ab
ab
0
0
1
1
0
1
0
1
1
1
0
0
0
0
0
1
0
1
1
1
1
1
0
1
1
0
0
1
59
60
Stt
Quy tc suy
Tn goi
V du
lun
p
p q
pq
p
pq
p
pq
qr
p r
6
pq
p
q
q
pq
p
q
Vy cn tt la.
Vy mt tri khng nh u
II.1.2. Khai nim v chng minh tnh ung n cua chng trnh
Mt chng trnh P xac nh mt thut toan cho phep nhn vao mt tp hp d
liu L a ra mt tp hp kt qua R. Noi cach khac, vi moi d L, chng trnh
P xac nh hoc mt day hu han cac phep tnh cho ra mt kt qua P(d) R,
hoc mt day v han cac phep tnh : chng trnh b qun vi d liu d.
Mt khac, P c vit tnh mt ham f nao o t D L vao R. P ung nu va
ch nu P tnh ung ham f, ngha la nu d D, P(d) xac nh (P khng qun vi
d liu vao d) va bng f(d).
Thng thng, kim tra tnh ung n cua chng trnh, ngi ta dung
phng phap th (test) : ngi ta chon mt day cac d liu mu d1, d2, ..., dn, ri
cho P chay ln lt vi mi d liu kim tra rng P(d1) = f(d1), P(d2) = f(d2), ...,
P(dn) = f(dn).
61
61
62
E {P} S
E { begin P end } S
E {P ; Q} S
V du 13 :
Chng minh
La ung n vi khng nh u
Va khng nh cui
E (x = 1)
S (z = 3)
(1)
63
(1)
(2)
(1)
(2)
63
64
Mt trong nhng kho khn cua vic chng minh tnh ung n cua chng
trnh la tm c bt bin cho mi vong lp (ngha la mt bt bin cho phep chng
minh ung cai yu cu). Thc t khng tn tai mt phng phap co tnh h thng
va tng quan tm ra nhng bt bin nh vy.
V du 4 :
S dung bt bin cua vong lp, chng minh oan chng trnh tnh fac = n!, vi
n sau y :
i := 1; fac := 1;
while i < n do begin
i := i + 1;
fac := fac * i
end;
Goi P {begin i:= i + 1; fac := fac * i end }
Gia s iu kin E (fac = i!) (i n), ta cn chng minh E la bt bin cua
vong lp.
Ta se chng minh bng quy nap :
E ung trc khi vao vong lp, v i = 1, fac = 1 = 1! Va 1 n.
Gia s E ung vi i < n sau khi thc hin vong lp va sau o, while con c
thc thi mt ln na. Trc ht i c tng thm 1 (vi lnh gan i:= i + 1) va do
vy vn con i n. Do gia thit quy nap fac = (i 1) ! trc khi vao vong lp nn fac
se co gia tr la :
fac = (i 1)! * i = i!
T o E qua tht la bt bin cua vong lp va mnh :
(E (i < n)) {P} E ung.
T o suy ra khng nh :
E { while i < n do P } E (i n) cung ung.
V vong lp kt thuc sau khi lp n 1 ln, khi o i = n va fac = n!.
Quy tc va :
E {P} S
E E
E {P} S
E {P} S
E {P} S
E {P} S S
65
Quy tc hoc :
E {P} S
E {P} S
S S
E {P} S
E {P} S
E E {P} S S
V du5
:
Chng minh chng trnh con P tnh tch hai s nguyn m va n la ung :
P function product(m, n: Integer): Integer;
begin
{P1 } if n < 0 then a:= n else a:= n;
{P2 } k:= 0; x:= 0;
{P3 } while k < a do begin
x:= x + m;
k:= k + 1
end;
{P4 } if n < 0 then product:= x
else product:= x
end;
Ta se chng minh rng sau khi thc hin P th ham tra v gia tr la mn.
Ta chia P gm bn oan CT la {P1; P2; P3; P4} nh trn.
Goi E la iu kin u E m, n nguyn va S1 E (a = |n|).
Khi o co th ch ra E {P1} S1 la ung.
Goi S2 S1 (k = 0) (x = 0). D dang kim tra rng S1 {P2} S2 la ung.
Ta cung thy iu kin (x = mk) (k a) la mt bt bin trong vong lp P3
tng t vi ly lun quy nap trong vong lp tnh n!. Vong lp nay kt thuc sau a
bc lp khi k = a, tc x = ma tai im nay.
Goi S3 (x = ma) (a = [n]). T o suy ra S2 {P3} S3 la ung.
Cui cung co th ch ra P4 la ung vi iu kin u S3 va iu kin cui S, vi
S product = mn. Vy S3 {S4} S ung va ham tra v gia tr la mn.
T cac mnh E {P1} S1, S1 {P2} S2, S2 {P3} S3 va S3 {S4} S la ung, theo
quy tc hp thanh, ta co P cung ung, tc E { P } S ung.
Ngoai ra do ca P1, P2, P3 va P4 u dng nn P cung dng
(qed)
65
66
II.2.
N va B N+. Sau khi thc hin, q va r thoa man cac iu kin A = Bq + r, r < B, r
0, q 0. Ta co :
(a=A) (b=B) (A0) (B>0) {Div} (A=Bq+r) (q0) (r0) (r<B).
P1 (a0) (b>0) va
Q1
67
67
68
(q 1)
va
ta co :
(a=bq+r) (q 1) (rb)
va :
69
II.3.
m0 N
Chu y :
Phat biu trn co ngha rng nu w = wi trc khi thc hin P, th sau khi thc
hin P, hoc vong lp dng, hoc m(wi+1) < m(wi).
Trong trng hp nay (a chng minh c P dng), ta co th khng nh rng
vi moi day w1, w2, w3, ..., day m(w1), m(w)2, m(w)3 ... giam dn thc s trong N, la
hu han.
iu o chng minh rng day w1, w2, w3, ... la hu han, va vong lp dng.
69
70
).
m0 N
m0 N
71
Tx := y (w)
Vi moi iu kin B,
TB (w)
= constant. Ta vit Tx := y.
n(w) 1
T (f
P
i
P ( w) )
i= 0
71
72
A ,
B
Tr := r b + Tq := q + 1
Ta co :
TDiv (A, B) = Tr := a + Tq := 0 + ( A + 1) Tr b +
B
A
B
(Tr := r b + Tq := q + 1)
liu A va B.
TDiv (A, B) la bc (order) cua
A .
B
Chu y : Ngi ta thng quan tm n bc cua ham TP thay v ban thn ham TP,
v TP phu thuc vao phn cng va phn mm s dung thc thi chng
trnh P. Nh vy ch cn xac nh s ln thc hin day cac lnh hay thc
hin nht cua chng trnh. iu nay co th nhn c bng cach m s
ln lp trong mi vong lp.
SCLN(a, b) = a = b
SCLN(a, b) = SCLN(a, b a)
Nu a > b
SCLN(a, b) = SCLN(a b, b)
73
Gia s a va b la hai bin cua chng trnh nhn gia tr hai d liu ln lt A va
B. Sau khi gan, iu kin SCLN(a, b) = SCLN(A, B) thoa man.
Nu thn chng trnh cha mt vong lp cua bt bin SCLN(a, b) =
SCLN(A, B) vi iu kin kim tra dng la a = b, th ta co :
SCLN(a, b) = a = b = SCLN(A, B)
sau khi thc hin vong lp nay. Kt qua tm c la mt trong hai bin a va b.
Cn xac nh thn cua vong lp nay sao cho, mt mt, bt bin c thoa man,
mt khac, vong lp ch thc hin mt s hu han ln. Theo tnh cht cua SCLN,
nu a b, lnh :
if a > b then a := a b else b := b a
lam cho iu kin SCLN(a, b) = SCLN(A, B) tr nn bt bin. Ch con phai
chng minh rng vong lp a vit ch thc hin mt s hu han ln.
Ta thy quan h :
(a > 0) (b >0)
73
74
bi xanh bi trng
bi o
Phn
cha x ly
r w
(I)
w:= 1; b := 1; r := n;
while w <= r do
if W(w) then w:= w+1
else if B(w) then
begin HoanV(b, w); b:= b+1; w:= w+1 end
else
begin HoanV(r, w); r:= r-1 end
=N
75
(Ibis)
w:= 1; b := 1; r := n;
while w <= r do
if W(w) then w:= w+1
else if B(w) then
begin HoanV(b, w); b:= b+1; w:= w+1 end
else
begin while R(r) and w < r then r:= r-1;
HoanV(r, w); r:= r-1
end
T o a n chng trnh (tam thi chp nhn vic chng minh khng hnh
thc) :
(II)
w:= 1; b := 1; r := n;
while r <= n do
if R(r) then r:= r-1
else if W(r) then
begin HoanV(w, r); w:= w+1; r:= r-1 end
else
begin HoanV(w, r); r:= r-1;
HoanV(b, w); b:= b+1; w:= w+1
end
Phn tch :
S ln lp
=N
S ln hoan v
= ne2 = #W + 2#B
Bai tp :
T bt bin trn y, ta co th nhn c chng trnh nh sau :
TS. PHAN HUY KHANH bin soan
75
76
(IIbis)
w:= 1; b := 1; r := n;
while r <= n do
if R(r) then r:= r-1
else if W(r) then
begin HoanV(w, r); w:= w+1; r:= r+1 end
else
begin HoanV(b, r); b:= b+1;
HoanV(w, r); w:= w+1; r:= r+1
end
Chng trnh trn la sai. Hay tm mt cach phn b ban u cua mang hai
vin bi thy sai.
{
hay :
nu x y
nu khng
(x y) A(x) . . . A(y)
77
Gia s A1 la vong lp while cua chng trnh (I) va A2 la thn cua vong lp nay.
va :
Va lai :
Pb+1, w+1, r = (1 < b+1 B()) (b+1 < w+1 W())
(r < N R())
T o theo b :
Pb+1, w+1, r ~ (1 < b+1 B()) (b+1 < w W())
(r < N R()) ((b 1) B(b)) ((w b+1) W())
Ap dung tin nh ngha bi phep hoan v cho Qb+1, w+1, r :
F { hoan v(b, w) } Qb+1, w+1, r
vi :
TS. PHAN HUY KHANH bin soan
77
78
vi :
G = E1 (1 b w) (w1 r1 N) Pb, w, r ((r N) R(w))
(1 r N) (1 w N)
Thc t ta co :
Pb, w, r (b w) (w r) (1w N) (1 r N)
{ hoanv(r, w) } Pb, w, r (b w) (w r)
Ta co :
G ~ E1 (1 b w) (w r N) R(w) Pb, w, r
Va lai :
E1 W(w) B(w) (1 w N) R(w)
79
Khi gan
Ta co :
E1 (0 n N) (n < N R()) { w := 1; b := 1; r := n } Qb, w, r
va lai :
(n=N) (0 n N) (n < N R()),
do o :
E1 (n=N) { chng trnh (I) } S1
Nh vy ta a chng minh xong tnh ung n tng phn.
bwr
79
80
Chu y : Vic chng minh dng la ch ra rng kch thc cua vung cha x ly r
w giam dn mi ln thc hin A2.
chng minh vic dng cua A1, ch cn ch ra rng :
Qb, w, r (w r) (r w = m0) { A2 } (w > r) (r w < m0)
m0 N
Chu y rng :
(r w = m0) { w:= w+1 }
(r w = m01)
m0 N
d) Chng minh chng trnh (I) thoa man iu kin cua bai toan
By gi ch con phai chng minh rng iu kin mi v t B, W va R ch c
xet tnh nhiu nht mt ln cho mi vin bi cha xut hin trong S1 cung thoa
man.
Tht vy, trn, ta a suy ra c rng A2 c thc hin ung N ln (gia tr
cua r w giam 1 mi ln, giam t N1 n 0). Mt khac, vic thc hin A2 xet tnh
(nhiu nht mt ln) cac v t lin quan n ch mt vin bi. Trong qua trnh sp
xp, mau cua N vin bi la hoan toan xac nh va v co N ln thc hin, mi thc
hin cua A2 ch lin quan n 1 vin bi phn bit.
KiuConTro = 0..n;
{ kiu cua con tro, 0 la gia tr nil }
PhnT = record
NiDung: KiuPhnT;
TipTheo: KiuConTro; {tro n phn t tip theo }
end;
Danhsach = array[1..n] of PhnT;
var Ds : Danhsach;
Pu : KiuConTro;
sach }
81
Gia thit rng danh sach cha t nht mt phn t (u danh sach Pu
nil). Bai toan t ra la in ni dung danh sach theo th t ngc lai. V du, nu ta
co :
Pu
x1
x2
x3
x4
nil
k+1
...
...
(cac trng ni dung cac ban ghi k+1, ..., n c in theo chiu ngc lai)
Mi bc cua vong lp la tm phn t k va vit ni dung (k). Ba chng trnh
phn bit nhau c ban cach tip cn n k.
III.3.1.TILDA1
Ta s dung mt danh sach con tro, u tin danh sach trang thai rng, sau o
hoat ng vi hai thao tac nh sau :
put(expr) t vao nh danh sach gia tr cua biu thc expr.
get(x)
k
...
k+1
n
...
(Danhsach = ...
1 2
k 1 k )
81
82
k+1
...
n
...
(Danhsach = 12 ... k)
(cac trng ni dung cac
ban ghi k+1, ..., n a
c in theo chiu ngc
lai)
Khai nim v iu kin trc yu nht va iu kin sau manh nht cua
mt day lnh.
Cac kiu tin gan khac nhau.
IV.1.
Nu termEP th :
Cho phat biu (q > 0) { q := q+1 } (q > 0), trong o q la bin duy nht cua
chng trnh. Ta co :
WE = WS =N+ , fq := q+1(N+) = N+ {1} N+ ,
83
N+ f1q: := q+1(N+) = N
fq := q div y (N N) = N N+ WS ,
f1q: := q div y (N N) = N N+ WE
Trong trng hp WE = fP1 (WS), E la iu kin trc yu nht (la plus faible
precondition) phai c thoa man trc khi thc hin P cho S c thoa man
sau o.
Thc t, nu E {P} S va termE P th WE fP1 (WS) = WE va nh vy E E.
Mt khac, nu fP(WE) = WS , S la iu kin sau manh nht (la plus forte
postcondition) phai c thoa man sau khi thc hin P nu E la ung trc.
Thc t, nu E {P} S th fP(WE) = WS WS , nh vy S S.
Ta ky hiu hai ham fppre va fppost nh sau :
vi mt day lnh va vi mt iu kin sau, fppre tra v iu kin trc yu
nht tng ng
vi mt iu kin trc va mt day lnh, fppost tra v iu kin sau sau manh
nht tng ng.
Chu y rng cac ham fppre(P, S) va fppost(E, P) c nh ngha gn nh tng
ng.
By gi ta se trnh bay cac tnh cht cua cac ham fppre va fppost.
83
84
Bai tp :
1. Cho iu kin E va mt day lnh P, nhng iu kin nao lam thoa man fP sao cho :
E ~ pfpre(P, pfpost(E, P)) ?
85
Vic giai quyt mt s bai toan ni ting a v vic chng minh mt chng trnh
la dng. V du, ngi ta khng bit nu :
pfpre(while n<>1 do
n:=if not odd(n) then n div 2 else 3*n+1, true)~(n >= 1)
y la s gia nh (conjecture) cua Collatz.
Chu y : Cac tin va cac quy tc suy din xet muc I cho phep chng minh tnh
ung n cua cac phat biu E {P} S, trong o E pfpre(P, S). V du, ta a
chng minh tnh ung n tng phn rng :
(a 0) {Div} (a = bq + r) (q 0) (0 r < b)
85
86
{ x := a[j] }
(x = y)
1
(
x 0) ~ (x > 0), nhngpfpost(x > 0, x := 1 x) ~ (x > 0)
87
IV.2.2. Quy tc tnh toan iu kin sau manh nht cua mt phep gan
Vi lnh gan x := <bt>, ch co bin x b thay i. Nh vy, fx := <bt> la mt ham t
tp hp W cac gia tr cua cac bin cua chng trnh vao chnh no, t ng nht
cac thanh phn, tr bin x.
Ta ky hiu
a) Trng hp c bit
Nu ham thu hep fx := <bt> vao WE la toan cuc va n anh, se tn tai ham ngc
f1x := <bt>
Trong trng hp nay, co th s dung quy tc sau y tnh pfpost :
pfpost(E, x := <bt>) ~ E(x xf1x := <bt>)
ngha l1 ta nhn c iu kin sau manh nht cua mt iu kin trc E va mt
phep gan x := <bt> bi vic thay th nhng ni x xut hin trong iu kin E bi
ham ngc cua fx := <bt>.
T quy tc tnh pfpost, ta co tin gan t iu kin trc va iu kin sau
nh sau :
E { x := <bt> } E(x xf1x := <bt>)
S tn tai ham ngc cua f1 x := <bt> cho phep tm c gia tr cua x trc khi
thc hin phep gan, t cac gia tr cac bin sau khi gan.
Chu y :
87
88
thuc.
V du, chng minh (x > 0) { x := x2 } (x > 0) :
Xet quy tc t iu kin sau v iu kin trc :
(2x > 0) { x := x2 } (x > 0)
S dung quy tc iu kin trc, ta nhn c kt qua v :
(2x > 0) (x > 0)
Xet quy tc t iu kin trc v iu kin sau :
x
(x > 0) { x := x2 } ( > 0)
2
x
S dung quy tc iu kin sau, ta nhn c kt qua v : ( > 0) (x > 0)
2
Chu y : Cac tin gan a a ra trong cac v du trn co th nhn c t iu
kin sau bi tin gan muc I. Trong cac v du nay, ham fx := <bt> : W
W la n anh.
V du sau y ch ra rng nu ham fx := <bt> : W W khng la n anh,
ngi ta khng con co tnh cht nay.
V du 17 :
Ham fx := x div 2 la toan th, nhng khng n anh. Thu hep cua no vao Wx = 2y la
n anh.
Ap dung quy tc tnh pfpost, ta co tin : (x = 2y) { x := x div 2 } (2x = 2y)
tng ng vi : (x = 2y) { x := x div 2 } (x = y)
Tuy nhin, xut phat t iu kin sau (2x = 2y) va s dung tin gan muc I,
ta co tin :
x
(2 2 = 2y) { x := x div 2 } (2x = 2y)
tng ng vi :
x
(2 2 = 2y) { x := x div 2 } (x = y)
89
V. Bai tp
Bai 1 : S dung cac quy tc trn y, chng minh cac tnh cht sau :
1. Nu E {P} S va E {P} S la cac nh ly, th E E {P} S S va E E {P} S S
cung la cac nh ly.
2. Nu E {P} F va G {Q} S la cac nh ly va nu F G, th E {P ; Q} S la mt nh
ly.
3. S dung quy tc ;, chng minh rng : (y = 2) { x := y+1 ; z :=x+y } (z = 5)
4. S dung quy tc iu kin trc, chng minh rng : (q 0) { q := q + 1 } (q 0)
5. Phep th s dung trong quy tc trn y co th c vit E = S (x <bt>). Trong
iu kin c bit cua mt biu thc iu kin trc, phep th nay c nh
ngha bi :
S (x if a then e1 else e2)
(a S (x e1)) (a S (x e2))
A
B
q, trong o
A
B
A
.
B
89
CHNG 4
I. Khao sat
Khao sat (hay thanh tra) la nhung cuc hop nhm muc ch xac minh mt san
phm. Phn ln cac phng phap san xut phn mm u n nh trc nhng
cuc hop nh vy. Tuy theo ban cht cua san phm cn khao sat, ngi ta noi v
khao sat thit k toan th (global design), khao sat thit k chi tit (detailed
design), va khao sat ma ngun.
Mt kch ban mu (typical scenario) cho mt khao sat ma ngun nh sau :
1. Cn n 4 ngi gm mt chu tch, mt ngi lp trnh, mt ngi thit k va
mt khao sat (u la nhung chuyn gia v Tin hoc, ring khao sat phai co kin
thc chuyn mn v lnh vc ng dung cua san phm).
2. Cac thanh vin nhn chng trnh ngun va cac c ta trc cuc hop t ngay
oc va chun b.
3. Cuc hop keo dai khoang 1 gi 30 n khoang 2 gi.
4. Trong qua trnh hop khao sat :
Ngi lp trnh oc va giai thch chng trnh cua mnh, co th oc tng dong
lnh mt va tra li cac cu hoi c t ra.
Chng trnh c phn tch cn c trn mt danh sach cac li sai (errors)
thng dung do khao sat cung cp.
5. Cuc hop khng sa li tm thy ma ch ghi nhn qua bin ban ma thi. Chnh
ngi lp trnh se t sa li sau khi hop xong.
6. Nu khi khao sat tm thy trong chng trnh, nhiu khim khuyt (failures),
hoc nhiu li trm trong th phai tip tuc khao sat ln sau, sau khi sa li.
90
91
Mt s kch ban coi trong vic tm li sai va khuyn khch vic chay demo trc
tip ma chng trnh (hand made) ngun : khao sat mang n cuc hop cach tin
hanh va cac d liu lin quan moi ngi tin hanh th nghim. Ngi ta con goi
cach th nghim nh vy la walk throughs (chay sut).
Mt s kch ban lai coi trong vic chng minh khng hnh thc : khao sat
ngh xac minh cac tnh cht cho phep th nghim tnh ung n cua san phm.
Ngi ta noi y la vic khao sat cn c trn vic xac minh.
Vic kim lai (review) khac vi khao sat v rng vic kim lai khng oi hoi
phai hop : San phm c giao cho nhng ngi khng tham gia vao vic lp
trnh, ho co nhng khuynh hng anh gia c lp.
Co th noi phng phap khao sat co hiu qua ang k : nhng s liu tm thy
trong cac vn ban ghi nhn khoang 50% sai sot c phat hin khi khao sat.
Nhng con s di y (ly t tap ch IEEE3 nm 1992 cua Dyer M. t bai bao
Verification Based Inspection") cho thy cac sai s tm thy khi phat trin d an
5 phn mm cua hang IBM :
D an
Khao sat
Khao sat
thit k toan b
n v
h thng
50
25
25
1
2
13
49
17
17
20
27
10
20
23
20
26
22
18
36
10
18
24
24
24
91
92
Tm cach
khc phuc li sai
Khc phuc
li sai
Th nghim
lai chng
trnh
II.1.
93
93
94
nhm muc ch va am bao cng vic cua ngi lp trnh va anh gia s tin cy
cua san phm vn hanh.
II.2.
Ngi ta phn bit nhiu phng phap th nghim, tng ng vi cac giai oan
san xut phn mm khac nhau.
Th
nghim
Th nghim
big bang
Th nghim
trn xung
Th
nghim
Th nghim
h thng
Th
nghim
Th nghim tch hp
Hnh 4.2. Nhiu phng phap th nghim
II.2.1. Th nghim n th
Th nghim n th (Module testing), hay th nghim n v (Unit testing) do
ngi lp trnh t tin hanh. Phng phap nay hay c s dung trong lp trnh
cu truc (top-down programing). Cac phng phap th nghim khac do ngi th
nghim tin hanh.
Gia s goi M la mt n th cn th nghim ring bit. Khi o, xay ra hai
trng hp nh sau :
Trng hp 1 : nhng n th do M goi ti khng co mt luc th nghim.
Khi o, nhng n th do M goi ti vng mt phai c thay th bi cac chng
trnh cung mt giao din vi M. Cac chng trnh nay thc hin ung chc nng
ma chung ai din cho n th vng mt va chung c goi la cac trnh stubs
(cung).
n th M
95
n th M
Hnh 4.4. Dung trnh driver goi thc hin M
S lng cac trnh stubs va cac trnh drivers cn thit tin hanh th nghim
cac n th phu thuc vao th t cac n th c th nghim.
95
96
Phng phap nay ch cn dung mt trnh driver duy nht cho n th chnh,
nhng cn mt trnh stub cho mi n th con lai.
Day cac
th nghim
Level 1
Level 2
stubs
Level 1
Level 2
Level 2
Level 2
Level 2
Level 3
stubs
Hnh 4.5. Phng phap th nghim t trn xung
3. Phng phap th nghim t di ln
(Ascendant hay Bottom-Up Testing Method)
Bt u th nghim cac n th khng goi n cac n th khac, sau o cac
chng trnh nhn c bi s lin kt gia mt n th ch goi n cac n th a
c th nghim vi cac n th nay, v.v . . Phng phap nay oi hoi mi n th
mt trnh driver, nhng khng cn trnh stub.
Mc N
Mc N
Mc N-1
Mc N
Mc N
Mc N-1
Mc N
Mc N-1
97
cua khach hang (vi cac may tnh va h iu hanh ho ang s dung). Ngi ta goi
cac th nghim cho phin ban u tin cua phn mm do khach hang c la
chon c bit tin hanh la th nghim beta.
II.3.
Dn dt cac th nghim
97
98
Trong trng hp th hai, chnh chng trnh ang chay t phat hin ra cac
khim khuyt, vn la tm ra c cac gia tr a ra kt qua tng ng vi gia
tr a vao. iu nay co th lam bng tay vi mt c ta kha thi, vi mt phin
ban cua chng trnh, vi cung nhng vn a gp trong trng hp u. Ngi
ta cung co th vn dung cac phep th cu a lu gi.
Chu y rng dung chng trnh xac minh tnh ung n cua kt qua khng lun
lun n gian : nu xay ra co nhiu cai ra ung tng ng vi mot cai vao th phai
t kt qua do chng trnh tnh ra di dang quy tc trc khi xac minh tnh
nht quan vi kt qua d kin trong tp d liu th. iu nay khng phai lun
lun lam c. Chng han lam sao co th xac minh c rng ma sinh ra bi mt
trnh bin dch la ung n, nu ch th nghim ma o ma thi ?
II.4.
99
B
true
false
true
false
Phep phu cac iu kin cho phep cung c phep phu cac quyt nh. V du co th
phu cac quyt nh bng cach thc hin phep la chon P va Q vi :
P = true, Q = true va P = false, Q = false,
iu nay khng cho phep phn bit phep re nhanh A or B.
99
100
101
d liu c cho la phu hp vi chng trnh theo cach c ta. Nhng d liu nay
co th cung gy ra khim khuyt trong cung tnh hung.
Chu y cn th nghim cac d liu nm pham vi giap ranh gia cac lp tng
ng phat hin cac li sai kiu thng ln vi <, v.v . . .
II.4.3. Kt lun
Hin nay, ngi ta thng xy dng phep th nghim bng cach phi hp cac
th nghim chc nng va th nghim cu truc : ngi ta bt u th nghim chc
nng trc (ngay khi c ta yu cu), sau o hoan thin phep th nghim bi cac
tiu chun cu truc (bao boc cac lnh, bao boc cac quyt nh...) khi co c chng
trnh.
101
102
II.5.
II.5.1. M u
Cac phep th nghim thng k (Statistical Testing) nhm o tin cy
(reliability) cua phn mm, ngha la o xac sut chay n nh va ung n trong
nhng iu kin s dung cho trc. Cac th nghim pha huy khng cho phep anh
gia c tnh tin cy cua mt chng trnh v rng cac th nghim pha huy khng
tnh n cac iu kin s dung nh phng phap nay.
Ngi ta goi khim khuyt (failure) la nhng hin tng bt thng xay ra lam
h thng ang thc thi dn n nhng hiu qua khng phu hp vi c ta ban
u. Mt khim khuyt co th xay ra do phn cng hoc do mt sai sot trong
chng trnh. Sau y, ngi ta ch quan tm n nhng khim khuyt do li
phn mm gy nn.
103
Trong nhng iu kin s dung a cho, s xut hin thng xuyn cac khim
khuyt do cac sai sot khac nhau gy ra la rt bin ng : mt s sai sot gy ra
thng xuyn cac khim khuyt, nhng sai sot khac th rt him, co th khng bao
gi xay ra trn thc t.
Vic thc thi mt phn mm vi mt d liu c nh trc la mt qua trnh co
tnh xac nh gy ra hoc la mt kt qua ung, hoc la mt khim khuyt. Nu
ngi ta trong nhng iu kin s dung chng trnh, mi d liu co th c
cua chng trnh se cho mt xac sut nao o.
Tp hp cac d liu cung xac sut s dung nh vy c goi la mt mu s
dung (use pattern) cua chng trnh. T mt mt ct s dung a cho, ngi ta
nh ngha xac sut mt ln chay cho mt kt qua ung va xac sut mt khim
khuyt, con c goi la ty sut khim khuyt.
Vi mt m hnh c lp vi thi gian, ngi ta nh ngha tin cy
(reliability) cua mt chng trnh nh la xac sut cua s kin ln chay sau cua
chng trnh la ung , ngha la 1,xac sut cua mt khim khuyt.
Vi mt m hnh phu thuc thi gian, ngi ta nh ngha tin cy nh la
mt xac sut cua s kin chng trnh chay ung n trong thi gian t. Luc nay
tin cy la mt ham cua thi gian.
Cac m hnh phu thuc vao thi gian thng c s dung cho cac phn mm
tng h (nh la cac h iu hanh). Tip theo y, ngi ta se ch khai trin cac
m hnh c lp vi thi gian.
Khi xut hin mt khim khuyt, nu la mt khim khuyt v phn cng, th
phai sa cha, nu la mt khim khuyt v phn mm th phai chay trnh sa li
debugger.
Sa cha cac h hong thuc v phn cng la thay th nhng chi tit h
hong, thit lp lai s vn hanh n nh cua thit b nh trc. Con chay trnh
debugger la sa cac li v thit k, tng tin cy cua phn mm.
Thng ngi ta s dung ai lng lin quan n tin cy la s ln s dung
trung bnh cho n khi xay ra khim khuyt (i vi m hnh c lp vi thi
gian), hoc s dung sau mt thi gian trung bnh nao o n khi xay ra khim
khuyt (i vi m hnh phu thuc vao thi gian).
ai lng lin quan n tin cy MTTF (Mean Time To Failure : thi gian
trung bnh xay ra khim khuyt) c tnh nh sau :
Trong m hnh c lp vi thi gian :
n nh
103
104
CHNG 5
c ta phn mm
I. M u c ta phn mm
I.1.
I.1.1. c ta phn mm la g ?
c ta (specification) c nh ngha trong t in ting Vit (1997) : M ta
tht chi tit mt b phn c bit tiu biu lam ni bt ban cht cua toan th.
Theo Computer Dictionary cua Microsoft Press (1994), c ta la s m ta chi
tit : V mt phn cng, c ta cung cp thng tin v cac thanh phn, kha nng va
yu t ky thut cua may tnh. V mt phn mm, c ta m ta mi trng hoat
ng va chc nng cua chng trnh.
Theo IBM Dictionary of Computing (1994), c ta la (1) mt dang thc vn ban
chi tit cung cp cac m ta xac nh v mt h thng nhm phat trin hay hp
thc hoa. (2) Trong lnh vc phat trin h thng, c ta la m ta cach thit k, cach
b tr thit b va cach xy dng chng trnh cho h thng.
Nh vy, c ta la s m ta cac c trng nhm din at cac yu cu va cac
chc nng cua mt san phm phn mm cn thit k. c ta lin quan n cac i
tng, cac khai nim va cac thu tuc nao o cn n khi phat trin chng trnh.
c ta co cac c trng :
105
106
V du 1 :
1. Tm nghim cua phng trnh f(x) = 0 vi f(x) la mt a thc co bc cho trc
sao cho vi gia tr thc x th f(x) co gia tr bng 0.
2. Bin i mo mt ma trn vung A cp n n v dang tam giac trn, ngha la
ma trn A co cac phn t nm pha trn ng cheo chnh th bng 0.
c ta hnh thc (formal specification) c din at bng ngn ng ai s va
logic toan, rt cht che, chnh xac va khng nhp nhng (non-ambiguous).
V du 2
1. Tm nghim cua phng trnh f(x) = 0 vi f(x) la mt a thc co bc cho trc
sao cho vi gia tr thc x th f(x) co gia tr bng 0.
2. Bin i mo mt ma trn vung A cp n n v dang tam giac trn, ngha la
ma trn A co cac phn t nm pha trn ng cheo chnh th bng 0.
Cac tnh cht cua c ta hnh thc
Lp trnh th hin tng minh vic la chon cach khai trin : nghin cu
thut giai, cach vit cng thc...
c ta phai cho phep kim tra c qua trnh phat trin phn mm (cht
lng va tnh tin cy)
107
c ta
I.2.
c ta va lp trnh
107
108
109
c ta
Readln(N);
i:=0;
ChuynCt;
Readln
End.
Chay chng trnh trn se cho kt qua nh sau :
S a cn chuyn : 4
1.Chuyn mt a t 1 -> 2
2.Chuyn mt a t 1 -> 3
3.Chuyn mt a t 2 -> 3
4.Chuyn mt a t 1 -> 2
5.Chuyn mt a t 3 -> 1
6.Chuyn mt a t 3 -> 2
7.Chuyn mt a t 1 -> 2
8.Chuyn mt a t 1 -> 3
9.Chuyn mt a t 2 -> 3
10.Chuyn mt a t 2 -> 1
11.Chuyn mt a t 3 -> 1
12.Chuyn mt a t 2 -> 3
13.Chuyn mt a t 1 -> 2
14.Chuyn mt a t 1 -> 3
15.Chuyn mt a t 2 -> 3
Trong trng hp tng quat n a, s bc chuyn a se la :
20 + 21 + . . . + 2n = 2n - 1 ln.
Vi n=64, gia s thi gian chuyn mt a la t giy, th thi gian chuyn
ht 64 a cua bai toan Thap Ha ni se la :
(264 - 1) t = 1.8446744074E+19 t giy.
Mt nm co 365 24 60 60 = 31 536 000 giy, gia s t = 10-2 giy th s
nm cn chuyn 64 a la :
(1.8446744074E+19 / 31536000) 10-2 = 5.8494241735E+11 5.8 ty nm !
Bai tp : 1, 2, 3, 4, 5 trang 140-141 (Nguyn Xun Huy).
II.1.1. Dn nhp
Cho mt cun t in. Cn tra cu mt t mt trang nao o bt ky :
Duyt ln lt cac t, t u t in, cho n khi gp t cn tra cu, goi la tm
tun t (ging tp tun t)
109
110
II.2.
Cho V[1..n]. Vi i [1..n], phep truy nhp V[i] se cho gia tr phn t co ch s
i cua V. Kt qua khng xac nh nu i [1..n]
V du : V[1..5] = (7, 21, -33, 6, 8)
V[2] = 21, V[4] = 6 nhng V[0], V[7]... khng xac nh.
Vect c sp xp th t (SXTT)
Ta noi :
- Vect rng (n = 0) la vect c SXTT.
- Vect ch gm 1 phn t (n = 1) la vect c SXTT.
- Vect V[1..n], n > 1 la vect c SXTT nu
i [1..n - 1], [i] [i + 1]
Co th nh ngha qui 3 :
111
c ta
II.3.
Duyt vect
Cho V[1..n], thut toan duyt vect c vit quy nh sau :
Procedure scan (V: vect; i, n: integer);
Begin
if i < = n then begin
Operation (V[i]);
Scan (V, i + 1, n) {i := i + 1; nu bo qui }
end
end;
111
112
b) Vect c sp xp th t
Ta cn tm ch s i [1..n] sao cho thoa man :
V[1..i - 1] < phnt V[i..n]
1
phnt V[i..n]
113
c ta
113
114
luc nay ta tr lai bai toan a xet : tm phn t trong vect V[1..m - 1] hoc V[m
+1..n]. Kt thuc nu phn t = V[m]
Mt cach tng quat, ln lt xac nh day cac vect co V1, V2, ..., Vk sao cho mi
Vi co kch thc nho hn kch thc cua vect con trc o Vi - 1
y rng nu chon V1 = V[1..n], V2 = V[2..n], ..., Vk = V[k..n], ta i n phep tm
kim tun t a xet trn.
Ta se chon m la v tr gia (nu n le) cho V[1..m - 1] va V[m + 1..n] co kch
thc bng nhau, hoc chon m sao cho chung hn kem nhau mt phn t.
Khi o kch thc cua cac vect thuc day V1, V2, ..., Vk se ln lt c chia i
tai mi bc : n, n/2, ..., n/2k - 1.
Nh vy, se co ti a [ log2n] vect con khac rng.
V du : nu n = 9000, s vect con khac rng ti a se la 13, v 213 = 8192
Xy dng thut toan :
Sau mt s bc, ta co vect con V[inf.. sup] sao cho :
V[1..inf - 1] < phnt < V[sup + 1..n]
Xay ra hai trng hp :
115
c ta
inf := 1 ; sup := n ;
{V[1..inf - 1] < phnt < V[sup+1..n]}
while (inf sup) and (not OK) do begin
m := (inf + sup) div 2 ;
if V[m] = phnt then OK := true {OK, phnt V}
else {not OK}
if V[m]<phnt then inf:= m+1 {V[1..inf-1]<phnt}
else sup := m - 1 ; {V[sup + 1..n] > phnt}
{(V[1..inf - 1] < phnt < V[sup + 1..n], not OK)
(tm thy, phnt V)}
end;
{(inf = sup + 1) (tm thy),
( tm thy, V[1..inf - 1] < phnt < V[sup + 1..n])
(tm thy, phnt V)
( tm thy, V[1..inf - 1] < phnt < V[inf..n])
(tm thy, phnt V)
( tm thy, phnt V) (tm thy, phnt V)}
Nh phn := OK
end ;
Vit chng trnh trn di dang quy :
function NhPhn(V:Vect;inf,sup:integer;phnt:T):boolean;
{(V c SXTT (NhPhn, phntV) NhPhn,phntV)}
Var m : integer ;
begin
if inf > sup then NhPhn:= false
else begin
m := (inf + sup) div 2 ;
if V[m] = phnt then NhPhn:= true
else if V[m] < phnt then
NhPhn:= NhPhn(V, m+1, sup, phnt)
else NhPhn:= NhPhn(V, inf, m - 1, phnt)
end
end ;
Ham nay co th c goi vi cac gia tr inf, sup bt ky, thng thng c goi
bi dong lnh :
NhPhn (V, 1, n, phnt)
b) Phng an 2
Co th tm ra nhng phng an khac cho thut toan tm kim nh phn. Chng
han, thay v kim tra ng thc V[m] = phnt, ta kim tra khng nh :
V[1..inf - 1] < phnt V[inf..n]
Ssau o kim tra phnt = V[inf] co cu tra li.
115
116
117
c ta
III.1. M u
c ta ai s khng m ta cac yu t lin quan n thi gian thc thi cung nh
trang thai.
Ngn ng c ta trang thai lin quan n :
- Ng ngha (Semantic)
- Cu phap (syntax)
- Cac thuc tnh (Properties)
Hnh ve
Ng ngha cua cac c ta ai s lin quan n :
- Du k (signature) cua mt kiu ai s tru tng
- Hang (term) vi cac bin
- Phng trnh va cac tin
- Cac m hnh c bit ...
Cu phap cua c ta ai s
V du :
Xy dng kiu string cho cac xu ky t cung cac phep toan thng dung trn
xu nh sau :
- Tao xu rng mi (phep toan new)
- Ghep xu (append)
- Thm mt ky t vao xu (add to)
- Ly dai xu
- Kim tra xu rng (is empty)
- Kim tra hai xu bng nhau khng (=)
- Trch ky t u tin cua xu (frist)
nh ngha kiu string, ngi ta con s dung cac kiu sau :
- char : kiu cua ky t
- nat : kiu cua s nguyn
- bool : kiu gia tr logic
117
118
119
c ta
x = y hay (x = y)
Hn hp : cho phep vit cac biu thc bt ky mt cach mm deo nh add_to_ :
char, string string
t o co th vit cac hang di dang :
add c to append (x y)
Trong nhiu trng hp trn y, cac cp du ngoc du c dung phn
cach cac hang vi nhau
# _ : string not ;
is empty ? : string bool ;
first _ : string char ;
Loai phat sinh co dang :
Kiu co ch [va kiu b tr] Kiu co ch
V du :
new : _ string ;
add_ to _ : char, string string ;
y, phep toan new tao ra mt xu rng, con phep toan add _ to _ thm mt
ky t vao xu.
Cac tin c xy dng t cac phep toan dung cho cac kiu b tr gia s
c nh ngha nh sau :
true :
bool ;
false :
bool ;
not _ : bool
bool ;
119
120
not :
_ * _ : not, not
not :
_ / _ : not, not
not :
121
c ta
FV (x) = {x}
V du : FV (append (is empty ? (new), add c to x)) = {x, c}
Phep th trong mt hang t cho cac thanh phn cha bin x bi hang u, ky hiu
t [u /x], c nh ngha nh sau :
Vi x FV (t) th
(f t1 t2 ... tn) [u/ x ] = (f t1 [u/ x] t2 [u/ x] ... tn [u/ x])
y [u/ x] = u
y=x
=yyx
V du : append ( is empty ? (new), (add c to x)) [(add c to y) / x]
= append (is empty ? (new), (new), ( add c to ( add c to y)))
M ta cac thuc tnh qua cac phng trnh
Cac tin s dung trong c ta c xy dng theo logic v tr bc 1 dang
phng trnh (pt)
Mt phng trnh hp thc co v trai va v phai cung kiu hang :
AX spec = {t = t | t : s t : s}
Trong v du v a kiu string, phep toan is empty ? c nh ngha theo
phng trnh :
is empty ? (new) = true ;
Co ngha mt xu va mi tao ra la rng - sau o, vic thm mt ky t mi vao
xu se cho kt qua la false :
is empty ? (add c to x) = false ;
Tnh quy cua phng trnh :
append (x, add c to y) = add c to (append (x, y)) ;
ch ra rng vic ghep mt xu vi xu c tao ra bng cach thm mt ky t
vao xu nay th cung co gia tr nh ghep hai xu trc ri sau o thm mt ky t
vao xu kt qua. iu o hp ly v ta co tnh cht cua phng trnh :
append (x, new) = x ;
ngha la ghep mt xu nao o vi xu rng cung cho ra kt qua chnh xu o
Ta co cac tin v xu ky t nh sau :
Axioms
is empty ? (new) = true ;
is empty ? (add c to x) = false ;
# new = 0 ;
# (add c to x) = x (x) = + 1;
TS. PHAN HUY KHANH bin soan
121
122
Cac tin iu kin tch cc (positive conditional axions) la m rng cua cac
phng trnh, chung la cac mnh Horm v tnh bng nhau, co dang :
t1 = t1 t2 = t2 ... tn = tn t = t
V du : is empty ? (x) = flase first (add c to x) = first (x) ;
is empty ? (x) = true first (add c to x) = c ;
c ta
123
M t = t
III.5.3. M hnh ng d
M hnh nay la mt thng ai s cac hang ng d nh ngha bi cac quy tc
sau y :
- t = t la tin khi o t ~ t
- Phan xa : t ~ t
- i xng : t ~ t t ~ t
- Bc cu : t = t t ~ t t ~ t
- Kha th : (cu thanh - substitutivite)
t1 ~ t1 t2 ~ t2 ... tn ~ tn (ft1t2 ... tn) ~ (ft1t2 ... tn)
- Thay th : cho x la bin, u la hang t ~ t t [u/ x] ~ t [u/ x]
Qua trnh khai trin mt c ta
Khai trin mt c ta la vn kho khn. Nhng nh ngha v cu phap cac
chc nng mong i khng la kho khn nhng tnh ung n cua chung lai khng
kim chng c d dang.
123
124
III.6.1. Ly thuyttng ng
Ly thuyt tng ng (cua mt c ta) c xy dng t cac tin cua c
ta, la tp hp cac nh ly hp thc qua cac quy tc sau y :
- Phan xa : t = t
- i xng : t = t t = t
- Bc cu : t = t t = t t = t
- Kha th : t = t t2 = t2 ... tn = tn
(ft1, t2, ..., tn) = (ft1, t2, ..., tn)
- Phep th : cho x la bin va u la hang
t1 = t1 t2 = t2 ... tn = tn t = t
khi o t1 [u/ x] = t1 [u/ x] ... tn [u/ x] = tn [u/ x]
t [u/ x] = t [u/ x]
- Phep ct : Cond1 (u = u) cond2 t = t
va cond x = x, khi o :
cond1 cond cond2 t = t
Cac qui tc cua ly thuyt tng ng th hin cac thuc tnh bng nhau (phan
xa, i xng va bc cu), thuc tnh ham (kha th), cac bin (phep th) va thay th
cac v bng nhau (phep ct). Cac quy tc nay xac nh phep suy din EQ, nh
ly sau y minh hoa kch chc chn va tnh ro cua phep suy din
nh ly : ly thuyt tng ng
vi mt c ta spec, t = t, Ax spec EQ t = t
Mod (Ax spec) t = t
c ta
125
Cng thc Mod (Ax spec) t = t ch ra rng phng trnh la hp thc trong
moi cach lp tynh co th. Tuy nhin co th xay ra mt s trng hp c bit khi
m hnh khng hp ly, luc o co th true = false.
Ta co th chng minh rng thuc tnh
succ (succ (0)) - succ (succ (0)) = 0
la hp thc (valid), nhng thuc tnh
succ (succ (succ (0))) - succ (succ (0)) = 0
Khng la hp thc trong c ta ang xet, v rng sau khi suy din, ta nhn
c succ (0) = 0 la khng hp thc.
Ta co th thy rng x - x = 0 khng chng minh c trong ng canh ang xet
mc du nh ly nay to ra hin nhin trong c ta. T o, ta co th b sung thm
mt s gia thit cho m hnh tng kha nng chng minh co th.
125
126
c ta
127
not (false)
true
Tuy nhin, nguyn ly hng v vit lai khng u chng minh moi thuc tnh
tng ng. Ta co th minh hoa iu o trong c ta cac s t nhin mt cach n
gian nh sau :
Interface
Sort not ;
Operations
0 : not ;
_ _ : not not ;
_ + _ : not not not ;
Body
Axions
ax10+x=x;
a x 2 : x + (- x) = 0 ;
...
T c ta trn, ta co th xy dng cac quy tc :
0 + x ??? x
x + (- x) ??? 0
- 0 ??? 0
127
128
Cn chu y rng trong trng hp nay, vic hng cac quy tc t trai qua phai
cha u, v nu mun chng minh - 0 = 0 th phai cn ap dung tin 1 t phai
qua trai, sau o ap dung tin 2 t trai qua phai, nh vy se khng tng ng
vi vic la chon nh hng ???.
Ro rang vic nh hng la mt c ch chng minh cha y u, c bit i vi
cac tin v cac phep tnh sinh. C ch nay co th y u trong nhiu tnh hung
thc t.
Trong trng hp cac tin khng nh hng nh phep giao hoan, cac ky
thut c ta c phat trin thc hin vit lai (h vit lai kiu modun kt hp giao hoan)
Cac phep toan phat sinh (xy dng)
Theo nh ngha, mt m hnh c phat sinh bi mt tp hp con w cac phep
toan nu moi gia tr cua m hnh nay nhn c bi mt hang c xy dng t
cac b sinh w. nh ngha nay cho phep, theo dnh ly quy nap, ch xem xet cac b
sinh trong cac chng minh bng cach ch chng minh quy napchung (bi v moi
hang at c bi cac vic t hp cac b sinh)
129
c ta
Operation
f : not bool ;
Body
Axioms
f (succ (x)) = false ;
where
x : not ;
End ;
V du trn khng ro rang khi thm nh ngha ham f trn cac n th v not va
bool. Cac tin v n th cua ham f se lam xao trn cac kiu a nh ngha. Ta
thy mt gia tr mi f (0) kiu se khng c xac nh v khng co tin nao ch
ra f (0) la true hay false.
chg (2, 5)
(1.1)
129
130
ng vi iu kin (1.1)
V du s kt hp cac iu kin sau y c ta phep toan thay i chg :
q (x) = y
q (a) = q (a) nu a x (1.2)
Nh vy ta a ngm n tha nhn rng q va q ch nh cac ham. Trong v du
nay, vi b nh 3 a ch, min xac nh cua ham la tp hp {1, 2, 3} tng quat cac
a ch va min gia tr la cac gia tr co th lu tr c trong b nh ang xet,
(1.3)
chng han la tp hp cac s nguyn {-231, ..., 231}
Mt cach tng quat, goi A la tp hp cac a ch, V la tp hp cac gia tr, ta co:
qAV
(1.4)
(1.7)
131
c ta
q (x) = y
q (a) = q (a) vi x a va a A
Ngi ta noi q xac nh trang thai (state) cua h thng, mt iu kin nh (1.4)
la mt bt bin cua h thng, (1.7) la c ta lnh lam chuyn (tin trin) trang
thai cua h thng. y ta s dung cac bin co anh du nhay ch trang thai
cua h thng sau khi chuyn i. Ta cung noi mt c ta la chp nhn c
(plausible) nu c ta o bao toan bt bin cua h thng.
Nhn xet
D dang chng minh nh ly (1.6) nhng cung d dang bc lai nh ly bng
cach xet phan v du sau :
1 0
2 0
chg (2, 5)
3 0
Ro rang v du trn thoa man cac iu kin (1.4) va (1.5) nhng khng thoa man
(1.4)
Thc ra, lnh chg (2, 5) thay i ni dung a ch x (cho gia tr y) nhng vn
gi nguyn cac a ch khac, ngha la kch thc b nh khng thay i.
IV.2. Ham
Trn y, ta a vn dung quan im toan hoc v ham, sau y ta tip tuc lam
ro mt s khai nim va tnh cht cua quan im nay.
Cho hai tp hp X va Y, biu thc X X biu din tp hp cac ham toan phn
(total) vi min xac nh (ngun) la X va min tr (ch) la Y. Tng t, biu thc
X Y biu din tp hp cac ham b phn (partical) t ngun X vao ch Y. S
khac nhau gia chung la ch, mt ham b phn khng hoan toan xac nh cho
moi gia tr cua ngun X.
Nu f la mt ham b phn th ky hiu dom (f) (domain) la tp hp con cua X ma
f xac nh. Trong trng hp ham toan phn, mim xac nh va ngun la ng
nht. V du ham q muc trn la ham toan phn vi ngun X = {1, 2, 3} va ch Y =
{-231, ..., 231}, ta co th vit :
q {1, 2, 3} {-231, ..., 231}
Tuy nhin y la mt ham b phn t tp s nguyn Z vao chnh no v cac tp
hp ngun va ch cua q u la tp hp con cua Z.
qZZ
luc nay dom (q) = {1, 2, 3}
TS. PHAN HUY KHANH bin soan
131
132
2 0
chg (2, 5)
3 0
dom (q) = 1, 2, 3}
ran (q) = { 0, 5 }
(2.1)
keo theo
dom (f) = X
(2.4)
133
c ta
Ta co : f + g = (f \ dom (g)) g
(2.5)
T (2.3) ta co :
(f \ dom (g)) (x)
(f + g) (x) =
(2.6)
hay
(f + g) (x) = f (x) nu x dom (f) - dom (g)
g (x) nu x dom (g)
HNH VE
V du : { 1 0, 2 0, 3 0 } + { 2 5 }
= ({ 1 0, 2 0, 3 0 } \ { 2 } { 2 0 }
= { 1 0, 3 0 } { 2 5 }
= { 1 0, 2 5, 3 0 }
Ly do c ban a vao cac phep toan \, va + thay v s dung mt cach h
thng nhng nh ngha cua chung (2.3), (2.4) va (2.7) trong vic hnh thc hoa la
ch t co th chng minh d dang day cac tnh cht ai s se s dung v sau.
Sau y la mt s tnh cht :
(f g) \ S = (f \ G) (g \ S)
(f + g) \ S = (f \ S) + (g \ S)
(f \ S) \ T = f \ (S T)
fg=gf
(f g) h = f (g h)
dom (f g) = dom (f) dom (g)
(2.8)
133
134
q1
q1 op
q2
...
qn - 1
op
qn rst
qn
135
c ta
qAV
(3.1)
(3.2)
q chg (x, y) q
Ta thy thao tac thay i b nh xut hin nh mt s m rng, mc c ta,
cua phep toan chg :
(p, q) rst (p, q)
q = p
q = q
(3.3)
(3.4)
D dang chng minh rng ca ba phep toan nay u chp nhn c, ngha la
sau khi thc hin chung, ta co (3.1). Noi cach khac, p va q c thay th bi p va
q trong (3.1), vi gia thit rng (3.1) a c kim chng trc khi thc hin
chung.
Rt cuc, ta phai chng minh rng vic kt hp cac iu kin sau y :
(p, q) vld (p1, q1)
(p1, q1) op (p2, q2)
...
(pn - 1, qn - 1) op (pn, qn)
(pn, qn) rst (p, q)
dn n q = q
Tht vy, theo (3.4), ta co :
p1 = q
va theo (3.2) va (3.4) do op la mt trong hai phep toan mod (x, y) hoc rst, ta co
:
pn = ... p1
Cui cung, theo (3.3) :q = pn
Ro rang phep hp thc hoa la trong sut v dn n q = q theo (3.4)
Sau y la mt v du v cac phep toan trn :
TS. PHAN HUY KHANH bin soan
135
136
1 0
2 0
3 0
mod (1, 1)
1 1
2 0
3 0
mod (2, 2)
1 1
2 2
3 0
mod (1, 3)
1 3
2 2
3 0
vld
1 3
2 2
3 0
mod (3, 1)
1 3
2 2
2 1
not
1 3
2 2
3 0
Phn tip theo se lam mn m hnh nay, ngha la a vao cac bin trang thai
mi th hin cac rang buc v phn cng va phn mm.
137
c ta
m D
(4.1)
a
2
6
5
8
1
4
m
1
2
3
2
5
5
Trong v du trn, cung trong cac v du trn v sau, ta tip tuc s dung cac gia
tr V nh trc.
Bng cach kt hp cac bang a va n vi m, ta nhn c cac bang p va q cua h
thng cu :
q
1
2
3
p
5
8
1
5
4
1
137
138
(4.2)
Ta co th kim chng ngay c rng nhng thay i cua bin la co y ngha (ro
rang v cac ham a, n va m la toan phn) va cht che vi bt bin (3.1) ch ro rng p
va q du thuc tp hp A V
Phep bin i mod dc ta bi cac iu kin (3.2) se c trin khai bi mt phep
toan mi mod1. Phep mod1 se ghi mt gia tr mi, mt a chma khng thuc vao
min tr (range) cua n cung nh min tr cua a, noi cach khac, a ch nay ch phu
thuc vao tp hp :
ran (n) ran (a)
hay ro hn, thuc tp hp D - (ran (n) ran (0)), tp hp c t tn la L
(Liberty).
Nu L , mt iu kin trc dc t ra, th ta co th chon mt a ch bt
ky u, vi c ta sau :
(a, n, m) mod1 (x, y) (a, n, m)
xA
yV
L
a = a
n = n + { x u }
m = m + { u y }
(4.3)
trong o
L = ran (n) ran (a)
uL
Ta cn chng minh rng c ta (4.3) la chp nhn c, ngha la :
((4.1) va (4.3)) keo theo (4.1) (4.4)
Mnh (4.4) trn y la hin nhin. Tip theo ta cn chng minh phep mod1
phu hp (ung) vi phep mod a c ta (3.2) nh sau :
((4.2), (4.2) va (4.3)) keo theo (3.2) (4.5)
Mnh nay khng hin nhin, tng ng vi s giao hoan di y :
HNH VE
Noi cach khac, nu cac gia tr cua cac bin (a, n, m) va (a, n, m) thoa man c
ta (4.3), th khi tr v cac bin cu (p, q) va (p, q) (cac bin a b thay i tr thanh
cac bin (a, n, m) va (a, n, m) bi cac phep bin i (4.2) va 4.2)) cac gia tr cua
cac bin (p, q) va (p, q) thoa man c ta (3.2).
139
c ta
(4.6)
m = m
(a, n, m) vld1 (a, n, m)
a = n
n = n
(4.7)
m = m
Nhn vao cac cng thc, ta thy a khng chep lai cac gia tr nhng ch co cac
a ch co th co theo mt s tit kim ang k v thi gian nhng khng ln lm
v khng gian nh. Gia thit vi 4096 trang va a ch cua D la 2 bytes, mi bang a
va n se chin 8 Kbytes.
H thng mi hoat ng qua v du sau :
n
1 1
2 2
3 3
mod1 (1, 1)
1 4
L = { 4, 5, 6 }
2 2
u=4L
3 3
139
140
(5.2)
(5.4)
(5.5)
{xy}o{xu}={xy}
(5.6)
141
c ta
(m + { u y }) o a = m o a
vi cac gia thit :
u ran (n) ngha la { u } ran (n) =
(5.8)
(5.9)
141
142
d ran (a)
common (chung)
new (mi)
d ran (a)
free (t do)
(6.1)
Ta co bt bin sau y :
RA - RN = adr (ol)
RA RN = adr (cm)
RN - RA = adr (nw)
RA RN = adr (fr)
(6.2)
HNH VE
Trong o :
RA = ran (a)
RN = ran (n)
adr (z) = {x D / s (x) = Z}
vi Z {fr, nw, cm, ol}
Cui cung bt bin th ba ch ro rng ca hai ham n va a u n anh, ngha la
hai a ch cua A phn bit se lun lun tng ng vi cac a ch cua D phn bit
qua cac ham nay.
Tp hp cac ham t A vao D nh vy c ky hiu
bi A D nh vy
143
c ta
nAD
aAD
By gi se la nh ngha ba ham chuyn tip ln lt la f, g va h s dung khi
thay i (cho cac a ch cua D lin quan), khi ng lai thay cho hp thc hoa (cho
moi a ch cua D) :
f = {fr nw,
nw fr, thay i
cm ol}
g = {fr fr,
nw fr,
cm cm,khi ng lai
ol cm}
h = {fr fr,
nw cm,
cm cm,hp thc hoa
ol fr}
Ta co c ta cua 3 phep toan mi mod2, rst2, va vld2 xut hin nh la cac m
rng tng ng t muc 4 :
(a, n, m, s) mod2 (x, y) (a, n, m, s)
(a, n, m) mod1 (x, y) (a, n, m)
(6.5)
s = s + {u f (s (u)), v f (s) (v))}
xem (4.3)
trong o :
L = { Z D |s (z) = fr }
uL
v = n (x)
(a, n, m, s) rst2 (a, n, m, s) (6.6)
s = gos
xem (4.6)
xem (4.7)
s = hos
Sau y la mt qua trnh chuyn i cua h thng
CHA
Chng minh
143
144
(7.10)
u RA
v RN
Trong o u va c nh ngha (6.5) va RA, RN c nh ngha (6.2)
chng minh (7.1)
c ta
145
145
146
147
c ta
t = t
(8.5)
(a, n, m, s, t) vld3 (a, n, m, s, t)
(a, n, m, s) vld2 (a, n, m, s) xem (6.7)
t = s
D dang chng minh rng ca ba c ta trn la phu hp va chp nhn c. Mt
khac ta thy rng phep khi ng lai tai sinh b nh trong t a va ch t a ma
thi.
Trin khai ln th t va ln th nm
Ta se ma hoa cac gia tr fr, nw, cm va ol nh ham n anh k nh sau :
k = {(0, 0) fr,
(0, 1) ol,
(1, 0) cm,
(9.1)
(1, 1) nw}
Sau o ta biu din cac ham s va t nh ba chui bit nh sau :
b D {0, 1} biu din s
c D {0, 1}
d {0, 1} biu din t
(9.2)
vi x D
(9.3)
(9.4)
(9.5)
Ta co 3 c ta mi nh sau :
(a, n, m, b, c, d) mod4 (x, y) (a, n, m, b, c, d)
(a, n, m) vld1 (a, n,m)
b = b
(9.8)
c = z
xem (4.7)
d = b
By gi ta ch cn tom tt lai nhng g a lam cho n luc nay, ngha la mt
mt, sao chep lai cac c ta (4.3), (4.6) va (4.7) vao bn trong cua (9.6), (9.7) va
(9.8), mt khac, nhom cac bt bin (4.1), (6.1), (6.2), (6.3), (8.1), (8.2) va (9.2)
iu nay lam c bng cach kh cac bin tr thanh d tha (cha s va t) bi
cac phep thay i bin (9.3).
TS. PHAN HUY KHANH bin soan
147
148
(9.9)
(6.3)
nAD
(6.3)
mDV
(4.1)
b D {0, 1}
(9.2)
c D {0, 1}
(9.2)
d D {0, 1} (9.2)
d D {0, 1} (9.2)
wN
(9.9)
RA - RN = {x D / b (x) = 0 va c (x) = 1}
(6.2)
(6.2)
RA RA {x D / b (x) = 0 va c (x) = 0}
(6.2)
RA = {x D / d (x) = 1}(9.2)
W = | RA RN |
(9.10)
Trong o
RA = ran (a)
RN = ran (n)
Sau y la cac c ta c tom tt bng cach thay th cac danh sach dai cac
bin bi hai bin trang thai state va trang thai co du nhay () state
state mod5 (x, y) state
xA
yV
w0
a = a
n = n + {x u}
c ta
149
m = m + {u y}
b = b + {u b (u) v b (v)} (9.12)
c = c + {u c (u), v c (v)}
d = d
(b (v) = 1 & c (v) = 0) w = w - 1
Trong o
u {Z D | b (z) = 0 & c (z) = 0}
v = n (x)
state rst5 state
a = a
n = a
m = m
b = d
(9.13)
c = z
d = d
w = | D | - | A |
state vdl5 state
a = n
n = n
m = m
b = b
(9.14)
c = z
d = b
w = | D | - | A |
Trong o Z D {0}
Sau y la qua trnh bin i cu th
IV.8. c ta lam g ?
Sau y ta se tra li cu hoi v muc ch (cho ai, cho cai g) cua cac cng vic
ma ta a lam. Vai tro u tin cua mt c ta la cho phep m ra cac tranh lun v
tai c ta tai c ta cp n. Thc t, khac vi mt chng trnh, mt c
khng phai vit ra may tnh co th hiu c ma cho nhng NSD co th hiu
va tin tng vao tnh ung n cua ni dung a c ta.
T c ta luc u muc 3 cho n cac c ta tip theo cac muc 4, 6, 8 va 8, ta
a s dung cac rang buc mi luc mt mang tnh thc tin. Ta a khng nh c
tnh ung n cua c ta bi cac chng minh nh ly phu hp va chp nhn c :
bao toan tnh bt bin.
By gi vn la s dung cac c ta lp trnh. Trong muc nay, ta se lp
trnh cho cac trng hp c ta (9.12), (9.13) va (9.14), bng cach s dung ngn
TS. PHAN HUY KHANH bin soan
149
150
151
c ta
(10.3)
151
152
153
c ta
Mt s thi
I. c ta (Specification)
1. Cho ma trn vung A cp nn. Vit c ta th hin : a) Mi phn t trn
ng cheo chnh la phn t ln nht trn cung hang i qua phn t o. b)
Mi phn t trn ng cheo phu la phn t nho nht trn cung ct i qua
phn t o.
2. Mt xu (string) w c goi la i xng (palindrome) nu w = wR hay oc
xui ngc oc ngc u nh nhau (wR la xu ao ngc cua w). V du cac
xu omo, mannam, ... u la i xng. Vit c ta th hin cac xu i
xng.
3. a thc cp n c vit di dang Toan hoc la :
Pn(x) = a0 + a1x1 + a2x2 + ... + anxn
Vit c ta th hin phep cng, so sanh hai a thc Pn(x) va Qm(x), nhn a
thc vi mt hng s a Pn(x) va nhn hai a thc Pn(x) Qm(x).
4. Cac phn s (hay s hu ty) c biu din bi danh sach (n, d), vi n la t s va d
la mu s, la nhng s nguyn (d 0). Vit c ta xy dng cac ham x ly phn s:
rut gon, tr, chia va so sanh hai phn s, cng, nhn hai phn s va chuyn i
phn s thanh s thc.
C1
S1
Sai
ung
S1
C1
Sai
ung
Sai
C2
S2
Sai
S2
C2
ung
153
154
Sai
S1
C1
ung
Sai
C1
S1
ung
Sai
S2
S3
C2
ung
Sai
S2
S3
C2
ung
ung
C1
S1
Sai
Sai
C1
S2
S1
ung
C2
Sai
ung
C2
ung
Sai
S3
S2