You are on page 1of 27

TRNG I HC BCH KHOA H NI

BO CO

TM HIU V CC M HNH LP TRNH


Mn hc: K Thut Lp Trnh
Ging vin: V c Vng
Email: vuongvd@gmail.com
M lp hc: xxxxxx

Thc hin
Sinh vin:
M s sinh vin:
Email:

Trang 1
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

Mc lc
I. Li ni u ..................................................................................................................................................... 3
II. Tng quan v cc m hnh lp trnh ph bin................................................................................................ 4
1. Imperative Programming........................................................................................................................... 4
2. Functional Programming ........................................................................................................................... 5
2.1 c im ............................................................................................................................................. 5
V d 1 ....................................................................................................................................................... 6
3. Object-oriented Paradigm ......................................................................................................................... 7
V d 1 ....................................................................................................................................................... 8
V d 2 ....................................................................................................................................................... 8
V d 3 ....................................................................................................................................................... 9
4. Visual Programming ................................................................................................................................ 10
4.1 c im ni bt ca phng php lp trnh trc quan ..................................................................... 11
5. Parallel Programming .............................................................................................................................. 11
5.1 Qu trnh song song ha gm ba giai on bc chnh ...................................................................... 12
6. Distributed Programming ........................................................................................................................ 12
7. Extreme Programming............................................................................................................................. 13
7.1 u im ............................................................................................................................................ 13
7.2 Phng thc tin hnh XP ................................................................................................................. 14
8. Concurrent Programming ........................................................................................................................ 14
8.1 c im ........................................................................................................................................... 14
III. Logic programming..................................................................................................................................... 15
1. c im ................................................................................................................................................. 15
2. Ngn ng PROLOG .................................................................................................................................. 16
2.1 Gii thiu........................................................................................................................................... 16
2.2 Cc yu t c bn ca Turbo Prolog ................................................................................................... 16
2.3 Cu trc ca mt chng trnh Prolog ............................................................................................... 17
2.4 Cc nguyn tc ca ngn ng Prolog.................................................................................................. 19
2.5 B k t, t kho ............................................................................................................................... 20
2.6 Cc kiu d liu ................................................................................................................................. 20
2.7 Cc hm xut nhp chun .................................................................................................................. 23
2.8 K thut quy ................................................................................................................................. 24
2.9 Mt s v d v chng trnh prolog .................................................................................................. 25
IV. Li kt ........................................................................................................................................................ 27
V. Ti liu tham kho ...................................................................................................................................... 27

Trang 2
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

I. Li ni u
Bt k mt ngn ng lp trnh no cng u mang tnh logic cao v tun theo nhng quy chun c bn
v ton hc. Tuy vy, mi ngn ng li c nhng phng thc ring thc hin nhng quy chun , c bit
l trn cc lnh vc nh hm (function), bin (variable), phng thc (method) v i tng (object). Bn cnh
s a dng ca ngn ng lp trnh, cng dn c rt nhiu m hnh lp trnh c ra i, trong ph bin nht
c th k n nh: Lp trnh hng i tng (object-oriented programming), lp trnh th tc (procedural
programming) v lp trnh cu trc (structured programming). Mi mt m hnh lp trnh li c nhng c
trng ring v cch s dng cng nh tnh tru tng ha i vi cc qu trnh xc nh.
Cc nhm khc nhau trong cng ngh phn mm xng cc phng php khc nhau, cc ngn ng
lp trnh khc nhau tc l cc m hnh lp trnh khc nhau. Mt s ngn ng c thit k h tr mt m
hnh c th (Java h tr lp trnh hng i tng trong khi Haskell h tr lp trnh chc nng). Mt s ngn
ng khc li h tr nhiu m hnh (nh Python v Common Lisp).
Mt s m hnh lp trnh cm cc thao tc m chnh ngn ng c. Chng hn, lp trnh cu trc
khng cho php s dng lnh goto. Quan h gia cc m hnh lp trnh v cc ngn ng lp trnh c th phc
tp v mt ngn ng c th h tr nhiu m hnh lp trnh. Th d nh C++ c thit k h tr cc phn t
ca lp trnh th tc, lp trnh hng i tng v lp trnh tiu bn.
Mc d vy, nhng ngi thit k v nhng ngi lp trnh s quyt nh lm th no xy dng mt
chng trnh dng cc phn t ca m hnh no . Ngi ta c th vit mt chng trnh hon ton theo kiu
lp trnh th tc trong C++, cng c th vit chng trnh hon ton hng i tng, hay vit chng trnh c
cc phn t ca c hai m hnh.
thi k u, cng ngh phn mm hon ton da trn nhng thao tc lp trnh bng m nh phn
hoc m my, m i din l cc gi tr 0 v 1. iu ny khin cho qu trnh thit k, kim sot s hot ng
cng nh sa li i vi mt ng dng tr nn v cng rc ri v khng hiu qu. Chng ta coi nhng phng
thc lp trnh thi im ny thuc m hnh lp trnh bc thp (low-level programming paradigm). V sau,
cng vi s pht trin ca cng ngh, nhng hn ch ca giai on u tin dn c xa b vi s ra i ca
cc ngn ng lp trnh th h th 3 l COBOL, Fortran v BASIC, ng thi, mt m hnh lp trnh mi cng
xut hin v vn tip tc c s dng hiu qu v ph bin cho n ngy nay, l m hnh lp trnh th tc
(procedural paradigm). Dn dn, chng ta chng kin s pht trin mnh m v s lng ca cc m hnh lp
trnh, m c bn c th k n cc m hnh sau:
Lp trnh cu trc - Structured programming.
Lp trnh mnh lnh - Imperative programming.
Lp trnh truyn bo - Message passing programming.
Lp trnh th tc - Procedural programming.
Lp trnh chc nng - Functional programming.
Lp trnh trc quan - Visual programming.
Lp trnh song song - Parallel programming.
Lp trnh phn tn - Distributed programming.
Lp trnh tng tranh - Concurrent programming.
Lp trnh bc gi tr - Value-level programming.
Lp trnh iu khin theo lung - Flow-driven programming.
Trang 3
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

Lp trnh v hng - Scalar programming.


Lp trnh cng ch - Constraint programming.
Lp trnh nh hng i tng - Component-oriented programming (nh OLE) .
Lp trnh hng i tng - Object-oriented programming.
Lp trnh cc - Extreme programming.
Lp trnh nh dng - Aspect-oriented programming (nh AspectJ) .
Lp trnh k hiu - Symbolic programming (nh Mathematica) .
Lp trnh nh hng bng - Table-oriented programming (nh FoxPro ca Microsoft) .
Lp trnh ng - Pipeline programming (nh dng lnh UNIX) .
Lp trnh hu i tng - Post-object programming.
Lp trnh nh hng ch th - Subject-oriented programming.
Lp trnh phn x - Reflective programming.
Lp trnh dng d liu - Dataflow programming.

II. Tng quan v cc m hnh lp trnh ph bin


1. Imperative Programming
First do this and next do that

Da theo cng ngh phn cng s v tng ca Von Neumann.


Thc thi cc bc tnh ton theo th t c quy nh bi cc cu trc iu khin. Cc bc ny cn
c gi l cc lnh.
Gia tng s thay i trng thi chng trnh nh mt hm theo thi gian.
Tng t nh vic ta thc hin cc thao tc quen thuc mi ngy, nh nu n, sa xe.
Cc lnh c trng: Assignment, IO, Procedure Calls.
Cc ngn ng i din: Fortran, Algol, Pascal, Basic, C.
Tru tng ha vic s dng cc hm gi th tc - c th c coi nh mt cu lnh. iu ny cn
c gi l lp trnh th tc (Procedural programming).

V d
int giai_thua(int n)
{
int i, nResult;
nResult = 1;
while (n > 0)
{
nResult *= n;
n -= 1;

Trang 4
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


}
return nResult;
}

Vi n = 5, gi tr ca cc bin trong on chng trnh trn thay i nh sau:


n
5
4
3
2

nResult
1
5
20
60

120

2. Functional Programming
Evaluate an expression and use the resulting value for something
2.1. c im
Nguyn l v tng: Ton hc v l thuyt v hm.
Cc gi tr c to l khng th bin i.
Tru tng ha mt biu thc thnh mt hm v ngc li, mt hm c th c tnh ton nh mt
biu thc.
Hm l lp gi tr u tin.
Hm l nhng gi tr hon chnh, tng t nh s, danh sch...
Thch hp vi nhng tnh ton theo yu cu.
M ra nhng kh nng mi.
Functional Programming l th loi lu i nht trong ba paradigm lp trnh chnh. Ngn ng FP u
tin l IFP, c pht minh vo nm 1955, mt nm trc khi c Fortran. Sau , LISP ra i nm 1958, mt
nm trc khi c COBOL. C Fortran v COBOL u l nhng ngn ng imperative (hay cn gi l procedural).
Chng c bit thnh cng khi c ng dng vo tnh ton khoa hc v nghip v, v tr thnh paradigm
thng tr trong sut 30 u ca k nguyn thng tin. Vo nhng nm 1970, Object-Oriented paradigm bt u
pht trin. Cng vi s trng thnh ca cc ngn ng lp trnh hng i tng, OO tr thnh paradigm
c s dng ph bin nht cho n ngy hm nay.
T nhng nm 1950, mc d vn pht trin mnh m v lin tc vi cc i din nh SML, OCaml, APL v Clean,
th FP vn ch c s dng cho mc ch hc thut v nghin cu l ch yu. Imperative t c thnh cng
bc u nh vo nhng ch th n gin. OO thnh cng nh vo kh nng m hnh ha cc bi ton phc tp.
Cn FP c kh nng g, ti sao d ra i sm nhng li khng mang li thnh cng nh mong i?

Trang 5
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


FP xem chng trnh l mt tp hp cc hm nhn vo i s v tr v gi tr. Khng ging nh
Imperative, FP khng to ra hiu ng ph v s dng qui thay cho vng lp. Hm trong FP rt ging vi hm
trong ton hc v n khng lm thay i trng thi ca chng trnh.
Mt i lng khi c gn gi tr th khng bao gi thay i gi tr .
Hm khng sa i gi tr ca i s c truyn vo, v gi tr do hm tr v hon ton l mt gi tr
mi.
V mt k thut ci t bn di, khi gi tr c gn vo mt vng nh th c nh du l s
dng v khng ghi ln na. to ra kt qu tr v, cc hm sao chp gi tr ri chnh sa trn cc bn sao
, khng lm nh hng n gi tr ban u, ri tr v bn sao c chnh sa. Cc i lng khng cn
c hm no tham chiu n s t ng b hy gii phng b nh (y l tng ca b thu gom rc
trong Java v.NET).
C s ton hc cho FP rt tng minh, cung cp gii php logic v ngn gn cho cc vn tnh ton.
Tuy nhin, do n khng linh hot thay i trng thi v chuyn s dng qui khin ngi ta a chung cc
paradigm khc hn x l cc thao tc tnh ton thng dng.
V d 1
int giai_thua(int n)
{
if (n == 1)
{
return n;
}
else
{
return n * giai_thua(n - 1);
}
}

Vi n = 5, ta c th t tnh ton ca on chng trnh trn nh sau:

Trang 6
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

giai_thua(5)
= 5 * giai_thua(4)
= 5 * 4 * giai_thua(3)
= 5 * 4 * 3 * giai_thua(2)
= 5 * 4 * 3 * 2 * giai_thua(1)
=5 *4 *3 *2 *1
=5 *4 *3 *2
=5*4*6
= 5 * 24
= 120

3. Object-oriented Paradigm
Send messages between objects to simulate the temporal evolution of a set of real world phenomena
Khi nim hng i tng c xy dng trn nn tng ca khi nim lp trnh c cu trc v s tru
tng ha d liu. S thay i cn bn ch, mt chng trnh hng i tng c thit k xoay quanh d
liu m chng ta c th lm vic trn , hn l theo bn thn chc nng ca chng trnh. iu ny hon ton
t nhin mt khi chng ta hiu rng mc tiu ca chng trnh l x l d liu. Suy cho cng, cng vic m my
tnh thc hin vn thng c gi l x l d liu. D liu v thao tc lin kt vi nhau mt mc c bn
(cn c th gi l mc thp), mi th u i hi th kia c mc tiu c th, cc chng trnh hng i
tng lm tng minh mi quan h ny.
Lp trnh hng i tng (Object Oriented Programming - gi tt l OOP) hay chi tit hn l Lp trnh
nh hng i tng, chnh l phng php lp trnh ly i tng lm nn tng xy dng thut gii, xy
dng chng trnh. Thc cht y khng phi l mt phng php mi m l mt cch nhn mi trong vic lp
trnh. phn bit, vi phng php lp trnh theo kiu cu trc m chng ta quen thuc trc y, hay cn
gi l phng php lp trnh hng th tc (Procedure-Oriented Programming), ngi lp trnh phn tch mt
nhim v ln thnh nhiu cng vic nh hn, sau dn dn chi tit, c th ho c cc vn n gin,
tm ra cch gii quyt vn di dng nhng thut gii c th r rng qua d dng minh ho bng ngn
ng gii thut (hay cn gi cc thut gii ny l cc chng trnh con). Cch thc phn tch v thit k nh vy
chng ta gi l nguyn l lp trnh t trn xung (top-down), th hin qu trnh suy din t ci chung cho
n ci c th.
Cc chng trnh con l nhng chc nng c lp, s ghp ni chng li vi nhau cho chng ta mt h
thng chng trnh gii quyt vn t ra. Chnh v vy, cch thc phn tch mt h thng ly chng
trnh con lm nn tng, chng trnh con ng vai tr trung tm ca vic lp trnh, c hiu nh phng
php lp trnh hg v th tc. Tuy nhin, khi phn tch thit k mt h thng khng nht thit phi lun
lun suy ngh theo hng lm th no gii quyt cng vic, chng ta c th nh hng t duy theo
Trang 7
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


phong cch vi mt s i tng c, phi lm g gii quyt c cng vic t ra hoc phong ph hn,
lm ci g vi mt s i tng c , t cng c th gii quyt c nhng cng vic c th. Vi
phng php phn tch trong i tng ng vai tr trng tm ca vic lp trnh nh vy, ngi ta gi l
nguyn l lp trnh t di ln (Bottom-up).
Lp trnh hng i tng lin kt cu trc d liu vi cc thao tc, theo cch m tt c thng ngh v
th gii quanh mnh. Chng ta thng gn mt s cc hot ng c th vi mt loi hot ng no v t
cc gi thit ca mnh trn cc quan h .
V d 1
d hnh dng hn, chng ta th nhn qua cc cng trnh xy dng hin i, nh sn vn ng c mi che
hnh vng cung, nhng kin trc thm m vi ng nt hnh cong. Tt c nhng sn phm xut hin cng
vi nhng vt liu xy dng.
Ngy nay, khng ch chng ln nhau nhng vin gch, nhng tng to nn nhng qun th kin
trc (nh Thp Chm Nha Trang, Kim T Thp,...), m c th vi b-tng, st thp v khng nhiu lm nhng
vin gch, ngi xy dng cng c th thit k nhng cng trnh kin trc tuyt m, nhng to nh hin i.
Chnh cc cht liu xy dng lm nh hng phng php xy dng, cht liu xy dng v nguyn l kt
dnh cc cht liu li vi nhau cho chng ta mt i tng kho st, Cht liu xy dng v nguyn l kt
dnh cc cht liu li vi nhau c hiu theo ngha d liu v chng trnh con tc ng trn d liu .
V d 2
Chng ta bit rng mt chic xe c cc bnh xe, di chuyn c v c th i hng ca n bng cch quo tay
li. Tng t nh th, mt ci cy l mt loi thc vt c thn g v l. Mt chic xe khng phi l mt ci cy,
m ci cy khng phi l mt chic xe, chng ta c th gi thit rng ci m chng ta c th lm c vi mt
chic xe th khng th lm c vi mt ci cy. Chng hn, tht l v ngha khi mun li mt ci cy, cn chic
xe th li chng ln thm c khi chng ta ti nc cho n.
Lp trnh hng i tng cho php chng ta s dng cc qu trnh suy ngh nh vy vi cc khi nim
tru tng c s dng trong cc chng trnh my tnh. Mt mu tin (record) nhn s c th c c ra,
thay i v lu tr li; cn s phc th c th c dng trong cc tnh ton. Tuy vy khng th no li vit mt
s phc vo tp tin lm mu tin nhn s v ngc li hai mu tin nhn s li khng th cng vi nhau c.
Mt chng trnh hng i tng s xc nh c im v hnh vi c th ca cc kiu d liu, iu cho
php chng ta bit mt cch chnh xc rng chng ta c th c c nhng g cc kiu d liu khc nhau.
Chng ta cn c th to ra cc quan h gia cc kiu d liu tng t nhng khc nhau trong mt
chng trnh hng i tng. Ngi ta thng t nhin phn loi ra mi th, thng t mi lin h gia
cc khi nim mi vi cc khi nim c, v thng c th thc hin suy din gia chng trn cc quan h .
Hy quan nim th gii theo kiu cu trc cy, vi cc mc xy dng chi tit hn k tip nhau cho cc th h
sau so vi cc th h trc. y l phng php hiu qu t chc th gii quanh chng ta. Cc chng trnh
hng i tng cng lm vic theo mt phng thc tng t, trong chng cho php xy dng cc cc c
Trang 8
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


cu d liu v thao tc mi da trn cc c cu c sn, mang theo cc tnh nng ca cc c cu nn m chng
da trn , trong khi vn thm vo cc tnh nng mi.
Lp trnh hng i tng cho php chng ta t chc d liu trong chng trnh theo mt cch tng
t nh cc nh sinh hc t chc cc loi thc vt khc nhau. Theo cch ni lp trnh i tng, xe hi, cy ci,
cc s phc, cc quyn sch u c gi l cc lp (Class).
Mt lp l mt bn mu m t cc thng tin cu trc d liu, ln cc thao tc hp l ca cc phn t
d liu. Khi mt phn t d liu c khai bo l phn t ca mt lp th n c gi l mt i tng
(Object). Cc hm c nh ngha hp l trong mt lp c gi l cc phng thc (Method) v chng l cc
hm duy nht c th x l d liu ca cc i tng ca lp . Mt thc th (Instance) l mt vt th c thc
bn trong b nh, thc cht l mt i tng (ngha l mt i tng c cp pht vng nh).
Mi mt i tng c ring cho mnh mt bn sao cc phn t d liu ca lp cn gi l cc bin thc
th (Instance variable). Cc phng thc nh ngha trong mt lp c th c gi bi cc i tng ca lp
. iu ny c gi l gi mt thng ip (Message) cho i tng. Cc thng ip ny ph thuc vo i
tng, ch i tng no nhn thng ip mi phi lm vic theo thng ip . Cc i tng u c lp vi
nhau v vy cc thay i trn cc bin th hin ca i tng ny khng nh hng g trn cc bin th hin
ca cc i tng khc v vic gi thng ip cho mt i tng ny khng nh hng g n cc i tng
khc.
Nh vy, i tng c hiu theo ngha l mt thc th m trong cc d liu v th tc tc ng
ln d liu c ng gi li vi nhau. Hay i tng c c trng bi mt s thao tc (operation) v
cc thng tin (information) ghi nh s tc ng ca cc thao tc ny.
V d 3
Khi nghin cu v ngn xp (stack), ngoi cc d liu vng cha ngn xp, nh ca ngn xp, chng ta phi ci
t km theo cc thao tc nh khi to (create) ngn xp, kim tra ngn xp rng (empty), y (push) mt
phn t vo ngn xp, ly (pop) mt phn t ra khi ngn xp. Trn quan im ly i tng lm nn tng, r
rng d liu v cc thao tc trn d liu lun gn b vi nhau, s kt dnh chng chnh l i tng chng ta
cn kho st.
Cc thao tc trong i tng c gi l cc phng thc hay hnh vi ca i tng . Phng thc
v d liu ca i tng lun tc ng ln nhau v c vai tr ngang nhau trong i tng, Phng thc ca i
tng c qui nh bi d liu v ngc li, d liu ca i tng c t trng bi cc phng thc ca
i tng. Chnh nh s gn b , chng ta c th gi cng mt thng ip n nhng i tng khc nhau.
iu ny gip ngi lp trnh khng phi x l trong chng trnh ca mnh mt dy cc cu trc iu khin tu
theo thng ip nhn vo, m chng trnh c x l vo thi im thc hin.
Tm li, so snh lp trnh cu trc vi chng trnh con lm nn tng:
Chng trnh = Cu trc d liu + Thut gii

Trang 9
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

Trong lp trnh hng i tng chng ta c:


i tng = Phng thc + D liu
chnh l 2 quan im lp trnh ang tn ti v pht trin trong th gii ngy nay.

4. Visual Programming
Nh chng ta bit, mi loi my tnh (s dng loi CPU Central Processing Unit xc nh) ch c th
hiu v thc hin trc tip c cc lnh cng nh chng trnh theo mt loi ngn ng dnh ring c gi
l ngn ng my. Tuy nhin, nu trin khai cc ng dng trong thc t m phi vit chng trnh trc tip
bng ngn ng my th s rt phc tp, i hi thi gian v cng sc rt ln, nhiu khi khng th thc hin
c. V vy, ngi ta tm cch xy dng mt ngn ng lp trnh ring gn vi cc ngn ng t nhin, thun li
cho vic trin khai cc ng dng. Khi thc hin cc chng trnh bng ngn ng ny phi qua mt bc dch
chng trnh sang ngn ng my n c th thc hin. T trc n nay c rt nhiu ngn ng lp trnh
c ra i v phc v c lc cho vic trin khai cc ng dng trn my tnh.
Trong giai on u, cc ngn ng lp trnh tuy d s dng hn ngn ng my nhng rt kh vi cc
lp trnh vin v cha mnh d dng trin khai cc thut ton. Chng trnh cha c tnh cu trc cht
ch v mt d liu cng nh t chc chng trnh. V vy, vic trin khai cc ng dng trong thc t bng cc
ngn ng lp trnh ny l rt kh khn.
Giai on 2 l thi k ca cc ngn ng lp trnh c cu trc. Cc ngn ng lp trnh ny c c im l
c tnh cu trc cht ch v mt d liu v t chc chng trnh. Mt lot cc ngn ng lp trnh c cu trc ra
i v dc s dng rng ri nh : PASCAL, C, BASIC...
Giai on 3 l thi k ca lp trnh hng i tng v phng php lp trnh c bc bin i mnh.
Trong cc ngn ng lp trnh c cu trc th mt ng dng bao gm hai thnh phn ring l d liu v chng
trnh. Tuy chng c quan h cht ch nhng l hai i tng ring bit. Trong phng php lp trnh hng i
tng th mi mt i tng lp trnh s bao hm c d liu v phng thc hnh ng trn d liu . V vy,
vic lp trnh s n gin v mang tnh k tha cao, tit kim c thi gian lp trnh.
Tuy nhin, vi cc phng php lp trnh trn u i hi lp trnh vin phi nh rt nhiu cu lnh vi
mi lnh c mt c php v tc dng ring, khi vit chng trnh phi t lp ni cc lnh c mt chng
trnh gii quyt tng bi ton ring bit.
Trong xu hng pht trin mnh m hin nay ca tin hc, s ngi s dng my tnh tng ln rt
nhanh v my tnh c s dng trong hu ht cc lnh vc ca i sng nn i hi cc ngn ng lp trnh
cng phi n gin, d s dng v mang tnh i chng cao. Chnh v vy phng php lp trnh trc quan ra
i.
c im ca cc ngn ng lp trnh trc quan l d s dng, trin khai cc ng dng mt cch nhanh
chng.

Trang 10
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


4.1. c im ni bt ca phng php lp trnh trc quan
Cho php xy dng chng trnh theo hng s kin (Event-Driven Programming, ngha l mt chng
trnh ng dng c vit theo kiu ny p ng da theo tnh hung xy ra lc thc hin chng trnh.
Tnh hung ny bao gm ngi s dng n mt phm tng ng, chn la mt nt lnh hoc gi mt
lnh t mt ng dng khc chy song song cng lc.
Ngi lp trnh trc tip to ra cc khung giao din (interface), ng dng thng qua cc thao tc trn
mn hnh da vo cc i tng (ojbect) nh hp hi thoi hoc nt iu khin (control button),
nhng i tng ny mang cc thuc tnh (properties) ring bit nh : mu sc, Font ch.. m ta ch
cn chn la trn mt danh sch cho sn.
Khi dng cc ngn ng lp trnh trc quan ta rt t khi phi t vit cc lnh, t chc chng trnh... mt
cch rc ri m ch cn khai bo vic g cn lm khi mt tnh hung xut hin.
My tnh s da vo phn thit k v khai bo ca lp trnh vin t ng to lp chng trnh.
Nh vy vi k thut lp trnh trc quan, lp trnh vin ging nh mt nh thit k, t chc to ra cc
biu mu, ngh cc cng vic cn thc hin v my tnh s da vo xy dng chng trnh. Hin nay
cc ngn ng lp trnh, h qun tr c s d liu theo hng trc quan thng dng nh: Visual Basic, Visual
Foxpro, Visual C, Delphi...

5. Parallel Programming

Trang 11
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

Tnh ton song song (Parallel Computing) l vic chia mt cng vic ra thnh cc cng vic nh v cho
cc cng vic ny thc hin ng thi vi nhau bi cc h thng c nhiu b vi x l (multiprocessor) hay b vi
x l a nhn (multicore) nhm gim thi gian thc hin cng vic xung. Vic lp trnh tch ra cc cng
vic nh v sp xp x l song song th c gi l lp trnh song song.
S lng transistor trong b vi x l s tng ln gp i sau mi 24 thng. Gordon Moore - sng lp vin ca
tp on Intel.
Cng vi nh lut Moore, cc my tnh hin nay c trang b cc b vi x l a nhn mnh m.
Tuy nhin, tn dng c sc mnh i hi cc lp trnh vin phi tn dng c ht cc nhn trong b
vi x l. V vy, thay v lp trnh tun t nh trc y ch s dng mt nhn ca b vi x l th ngi lp trnh
vin ngy nay phi dng k thut lp trnh song song tn dng hiu sut ca b vi x l a nhn.
Vic lp trnh song song khng phi lc no cng mang li hiu sut cao cho chng trnh. i vi cc
cng vic ch tn t hiu sut th vic dng lp trnh song song s khng mang li kt qu nh mong i do
khong thi gian khi to v qun l cc tin trnh song song gy nn.
Trong qu trnh lp trnh song song, lp trnh vin kh trnh khi vic cc tin trnh cng s dng chung
mt d liu iu ny s gy ra xung t d liu hoc lm d liu b sai lch do lp trnh vin cn phi ch
v p dng cc k thut lp trnh gii quyt vn ny.
B vi x l c nhiu nhn s tng tc chng trnh song song tuy nhin khng c ngha l n s tng ln
100% trn mt nhn (core) c thm vo. Thm ch chng trnh song song khng h tng hiu sut ln trong
mt s trng hp. V vy lp trnh vin phi bit quyt nh khi no s dng lp trnh song song bng cch s
dng cc cng c o lng xc nh c tc thc thi ca chng trnh.
Lp trnh song song l mt cng vic rt phc tp so vi lp trnh tun t thng thng, ngi pht
trin phi thc hin mt qu trnh song song ha, bin i cc chng trnh tun t thnh chng trnh song
song c kh nng tn dng ti a sc mnh ca h thng.
5.1. Qu trnh song song ha gm ba giai on bc chnh
Phn chia chng trnh thnh cc cng vic con (Sub-task decomposition).
Phn tch s ph thuc (Dependence analysic).
nh thi cc cng vic (Task scheduling).

6. Distributed Programming
Lp trnh phn tn l mt dng ca lp trnh song song (tnh ton song song). Lp trnh song song to ra
mi lin h gia my tnh v cc n v tnh ton, khin chng hot ng ng thi i vi mt vn c th
(d bo thi tit chng hn). Cc n v tnh ton c th t rt gn nhau hoc tch ri nhau. Khi cc n v
tnh ton c t tch ri, ta gi l lp trnh phn tn. Vi m hnh lp trnh ny, cc n v tnh ton
thng rt khc nhau, cng nh s khc nhau gia cc h iu hnh v thit lp mng my tnh. Nhng yu t
khin cho vic lp trnh cc tnh ton ca my tnh tr nn tng i phc tp v kh khn.

Trang 12
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


Lp trnh mng phn tn, thng c 2 khi nim chnh: peer to peer v client - server... peer to peer l
lp trnh ngang hng gia 2 my tnh... cn lp trnh client - server l lp trnh cho php n my client kt ni ti
m my server - y cng l m hnh chng ta s gp nhiu trong thc t
C th chia lp trnh mng thnh 3 cp , cn c theo mc thn thin vi developer v kh nng
trin khai:
Mc thp nht l lp trnh s dng socket - c th truyn tng byte, tng stream ln trn mng, ng
dng ny thng gp trong cc ng dng mng c nh (vd: trong 2 my tnh, trong 1 mng LAN...).
Mc cao hn l lp trnh s dng, trin khai ng dng theo m hnh dch v (service) - qun l mng
theo m hnh: kt ni, to tham chiu client trn server v tr v, gi hm v truyn d liu thng qua
proxy ca i tng tr v t server (vd: RMI trn Java hay Remoting trn.NET...), m hnh ny thng
gp trong cc ng dng mng c trung bnh v ln, i hi tnh performance cao (vd: cc ng dng
mng i hi kt ni nhiu - lin tc v s dng din rng nh cc dch v chat, game online...), u
im chnh ca m hnh ny l tnh performance cao, bo mt, nhng nhc im l tnh a nn
(multiplatform) v tnh kh chuyn cha cao (server v client phi cng 1 cng ngh pht trin.)
Mc cao nht l trin khai ng dng theo m hnh trin khai trn web, in hnh nht ta c th thy l
cc web application v web service, mi nht gi c cng ngh WCF ca M$ (tng hp tt c trong 1)...
m hnh ny cho php trin khai trn din rng, phc v lng khch hng ln... nhng cng c nhc
im l tnh performance cha cao, b lai, n c kh nng mm do (flexibility) cao (server v client
khng cn s dng chung mt cng ngh). Chng ta thng thy nhng ng dng loi ny trong cc
ng dng c cung cp t mt nh cung cp no (vd: cc s liu chng khon, thi tit ).

7. Extreme Programming
Lp trnh cc (eXtreme Programming vit tt l XP) l mt trong nhng nhm cc phng php pht
trin phn mm mt cch linh hot. XP s dng cc nhm lm vic kt hp gm nhng ngi lp trnh, khch
hng v cc nh qun tr pht trin phn mm c cht lng cao trong thi gian nhanh chng. Mt chng
trnh chy c l thc o u tin ca tin trnh theo XP. XP c th pht trin v tn ti c l do s hiu
bit ngy mt tin b v cc vn ang gii quyt v cng l v cc cng c sn c cho php ta thay i c
ci gi ca s thay i (cost-of-change) ( ang l dng hm m trc y ). XP gi cho ci gi phi tr ny
mc thp do vy s thc y mi trng sn xut phn mm.
7.1. u im
Nh ta bit hu ht cc phng php u xem xt vic pht trin phn mm nh l mt quy trnh
gia cng vi tin trnh vit phn mm i theo mt con ng:
Nhu cu (th trng) Phn tch Thit k Vit code Th nghim Bo tr.
Cch tip cn ny c mt s tha nhn quan trng l ta bit c sn phm cui cng trc khi
tin trnh bt u. Nhng hu ht cc d n phn mm hin i khng th tho mn ci s tha nhn ny.
Khch hng s a ra mt cch y nhng ci g mi v ngi sn xut cn nhng thng tin phn hi mt
cch lin tc nh gi li cc la chn ca h. Ngi lp trnh cn phi c mt phng n lun sn sng
n nhn nhng thay i trong Nhu cu h c th i ph c vi cc thng tin phn hi. Nu bn lm
Trang 13
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


vic trong mt mi trng m cc Nhu cu c ch thay i v cc khch hng s c li t vic
bn giao phn mm sm v thng xuyn th chc chn nn xem xt XP. Cc nhm lm theo XP s thng
xuyn nhn ra rng h ang bn giao cc sn phm phn mm cht lng cao vi s lng rt ln v nhanh
hn trc y rt nhiu.
7.2. Phng thc tin hnh XP
XP l mt phng php c kh nng thch nghi, thch ng. iu c ngha l s khng c hai d n XP
no ging nhau c. XP cung cp mt tp hp cc thc hnh v c s dng nh l im khi u, v sau
c lm cho thch ng ph hp vi cc rng buc ca tng d n ring. Sau y l mt tp hp cc nguyn
tc c mong i:
Lin lc: mt XP team ln mnh da trn cc kin thc, s hiu bit bi ton v hiu bit phn mm
c chia s. Cc phng php gii quyt vn c trao i trc tip. Nhng th cn tr n cng
vic u c loi b.
n gin ho: cng vic cn gim ti thiu phc tp t c hiu qu cao nht.
Thng tin phn hi thng cc i lm d n v khch hng ca h khng nhn ra nhng vn rc
ri cho ti khi sp bn giao sn phm. Nhng cc XP teams thng xuyn ly feedback trong qu
trnh lm vic, test, bn giao sn phm Khi s control c cc vn pht sinh.
Th mnh: cc i lm phn mm thnh cng cn phi kim sot c ngay c khi xut hin cc li. XP
a ra 12 phng n thc hnh, v im mnh ca XP chnh l kt hp c cc phng n ny li.
Mi mt phng n tuy n gin nhng rt cn thit phi nm vng, s gp phn lm gim bt ng
k ci gi ca s thay i.

8. Concurrent Programming
Lp trnh tng tranh l mt trong nhng k thut quan trng v cng l mt thch thc. Mt mt, n
em li kh nng s dng hiu qu cho nhng h thng song song v phn tn. Mt khc, nhng ri ro trong
vic tng tc gia cc tin trnh thc hin ng thi c th gy ra nhng li phn mm khng d dng tm
ra.
Trong lp trnh tng tranh, mt s dng lnh c th c thc hin ng thi. Mi dng lnh
l mt chng trnh tun t, ngoi tr mt thc t l cc dng lnh c th giao tip v gy tr
ngi ln nhau. Mi mt dng lnh l mt lung ( thread ), cc chng trnh tun t cn gi l
chng trnh n lung, cn chng trnh vit theo phng php tng tranh l chng
trnh a lung.
8.1. c im
Ngi dng c th tng tc vi cc ng dng khi tin trnh ang thc thi.
Nhng tin trnh chy thi gian di lm tr hon cc tin trnh ngn.
Cc chng trnh phc tp c thc hin tt hn trn cc b x l a lung.
Nhng tin trnh i hi iu kin tin quyt c th tm dng v i n khi p ng c tip tc
x l.
Trang 14
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

III. Logic programming


Answer a question via search for a solution

1. c im

M hnh lp trnh logic hon ton khc vi cc m hnh cn li.


M hnh ny c bit ph hp vi nhng lnh vc lin quan n vic rt ra nhng kin thc t nhng
s kin v quan h c bn lnh vc tr tu nhn to. C v nh m hnh ny khng gn vi nhng lnh
vc tnh ton ni chung.
Tr li 1 cu hi thng qua vic tm cc gii php.
Cc c trng:
V nguyn tc v tng : T ng kim chng trong tr tu nhn to
Da trn cc chn l- tin axioms,cc quy lut suy din - inference rules, v cc truy vn queries.
Chng trnh thc hin t vic tm kim c h thng trong 1 tp cc s kin, s dng 1 tp cc lut
a ra kt lun.
Trong lp trnh logic, ta c th s dng cc v t nh ngha cc khi nim ca tt c cc mn
khoa hc khc.

V d nh ngha mt s nguyn t: S nguyn t N l mt s nguyn ln hn 1, ch chia ht cho 1 v


chnh n. xt xem s N c phi l s nguyn t hay khng, ngi ta thng s dng du hiu nhn bit: S
nguyn t l mt s nguyn dng, khng chia ht cho mi s nguyn t nh hn n v 2 l s nguyn t nh
nht.
Du hiu ny c th m t bng cc v t nh sau:
2 l mt s nguyn t.
N l mt s nguyn t nu N>0, M l s nguyn t no , M<N v N khng chia ht cho M.
Khi m t bi ton di dng logic v t, ta c th yu cu h thng tm kim cc li gii lin quan n
cc khai bo . Bi ton cn gii c xem l mc tiu m h thng phi chng minh trn c s cc tri thc
c khai bo.
Nh th, ton b cc k hiu ca ngn ng lp trnh suy v mt cng thc c bit:
Pht sinh t mt yu cu.
Nhm chng minh mt mc tiu. tr li cho cu hi h thng xem n nh l mt ch v c
chng minh ch bng cch to nhng suy din trn c s cc tri thc khai bo.
Mt ngn ng logic c th c dng trong giai on c t yu cu ca quy trnh xy dng mt sn
phm phn mm. Hn th na, logic v t cho php biu din hu ht cc khi nim v cc nh l trong cc b
mn khoa hc.

Trang 15
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

2. Ngn ng PROLOG
2.1. Gii thiu
Prolog l mt ngn ng cp cao, c c im gn vi ngn ng t nhin, t nhng ngi mi hc n
nhng lp trnh vin chuyn nghip u c th tip cn mt cch nhanh chng, vit ra mt chng trnh ng
dng hu ch.
Prolog ra i vo nm 1973 do C.Camerauer (i hc Marseilles, Php) v nhm ng s pht trin. T
n nay, qua nhiu ln ci tin, c bit hng Borland cho ra i phn mm TURBO PROLOG vi nhiu u
im, thun tin cho ngi s dng. gii quyt mt s vn , ta nhn thy s dng ngn ng Prolog cho ta
chng trnh gn nh hn nhiu so vi cc ngn ng khc.
Khc vi nhng ngn ng cu trc nh Pascal, hay C m ta lm quen, Prolog l mt ngn ng m t,
vi mt s s kin v quy lut suy din m t, Prolog s suy lun cho ta cc kt qu.
2.2. Cc yu t c bn ca Turbo Prolog
Trong mt chng trnh Prolog, ta cn khai bo cc yu t sau y: i tng, quan h gia cc i
tng, s kin v cc lut.
2.2.1. i tng
Gm c cc hng v bin. Hng mang gi tr cho sn u chng trnh hoc trong qu trnh vit ta
a vo; Cc bin c gi tr thay i s c gn gi tr khi chy chng trnh. Tn bin l mt k t hoa hoc
mt chui k t, bt u bng mt k t hoa.
C mt loi bin c bit gi l bin t do, bin ny khng c tn v ngi ta dng k hiu _ (du gch
di) thay cho tn bin.
Quan h gia cc i tng
Quan h gia cc i tng c dng di hnh thc v t.
V d
Thich(X,Y) l v t din t cu X thch Y trong ngn ng t nhin.
Blue(car) l v t din t cu Car is blue.
Nh vy cc v t s bao gm tn ca v t v cc i s ca n. Cc i s c t trong ngoc v
phn cch nhau bi du phy.
2.2.2. S kin v lut
S kin l mt v t din t mt s tht.
V d
2 l mt s nguyn t l mt s kin v n din t s tht 2 l mt s nguyn t.

Trang 16
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


Lut l v t din t quy lut suy din m ta cng nhn ng. Lut c trnh by di dng mt mnh
. V d suy din s nguyn N bt k l mt s nguyn t ta vit: N l mt s nguyn t nu N>0, M l s
nguyn t no , M<N v N khng chia ht cho M.
2.3. Cu trc ca mt chng trnh Prolog
Mt chng trnh Prolog thng gm c 3 hoc 4 on c bn: clauses, predicates, domains v goal.
Phn goal c th b i, nu ta khng thit k goal trong chng trnh, th khi thc hin, h thng s yu cu ta
nhp goal vo.
2.3.1. Phn Domains
y l phn nh ngha kiu mi da vo cc kiu bit. Cc kiu c nh ngha y s c s
dng cho cc i s trong cc v t. Nu cc v t s dng i s c kiu c bn th c th khng cn phi nh
ngha li cc kiu . Tuy nhin cho chng trnh sng sa, ngi ta s nh ngha li c cc kiu c bn.
C php: <danh sch kiu mi> = <kiu bit> hoc <danh sch kiu mi> = <danh sch kiu bit>
Trong cc kiu mi phn cch nhau bi du phy, cn cc kiu bit phn cch nhau bi du chm
phy.
V d
Domains
ten, tac_gia, nha_xb, dia_chi = string
nam, thang, so_luong = integer
dien_tich = real
nam_xb = nxb(thang, nam)
do_vat = sach(tac_gia, ten, nha_xb, nam_xb); xe(ten, so_luong); nha(dia_chi, dien_tich)

Trong v d trn, ta nh ngha cc kiu mi, trong cc kiu mi ten, tac_gia, nha_xb, dia_chi da
vo cng mt kiu bit l string; cc kiu mi nam, thang, so_luong da vo cng mt kiu bit l integer;
kiu mi dien_tich da vo kiu bit l real; kiu mi nam_xb da vo kiu nxb c xy dng t cc kiu
bit l thang, nam; cn kiu do_vat li da vo cc kiu sach, xe, nha m cc kiu ny li da vo cc kiu
bit.
2.3.2. Phn Predicates
y l phn bt buc phi c. Trong phn ny chng ta cn phi khai bo y cc v t s dng
trong phn Clauses, ngoi tr cc v t m Turbo Prolog xy dng sn.
2.3.2.1. C php
<Tn v t> (<danh sch cc kiu>)
Cc kiu l cc kiu c bn hoc l cc kiu c nh ngha trong phn domains v c vit phn
cch nhau bi du phy.
Trang 17
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

V d
Predicates
so_huu (ten, do_vat)
so_nguyen_to(integer)

Trong v d trn ta khai bo hai v t. Trong v t so_huu (ten, do_vat) ch mt ngi c tn l ten
s s hu mt do_vat no . Cn v t so_nguyen_to(integer) xt xem mt s integer no c phi l s
nguyn t hay khng.
2.3.3. Phn Clauses
y l phn bt buc phi c dng m t cc s kin v cc lut, s dng cc v t khai bo trong
phn predicates.
2.3.3.1. C php
<Tn v t>(<danh sch cc tham s>) <k hiu>
<Tn v t 1>(<danh sch cc tham s 1>) <k hiu>

<Tn v t N>(<danh sch cc tham s N>) <k hiu>


Trong : Tn v t phi l cc tn v t c khai bo trong phn predicates. Cc tham s c th l
cc hng hoc bin c kiu tng thch vi cc kiu tng ng c khai bo trong cc v t trong phn
predicates; cc tham s c vit cch nhau bi du phy. Cc k hiu bao gm:
:- (iu kin nu).
, (iu kin v).
; (iu kin hoc).
. (kt thc v t)
V d
Clauses
so_nguyen_to(2):-!.
so_nguyen_to(N):-N>0,
so_nguyen_to(M),
M<N,
N MOD M <>0.
so_huu(Nguyen Van A, sach(Do Xuan Loi, Cau truc DL, Khoa hoc Ky thuat, nxb(8,1985))).

Trang 18
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


Ch : Nu trong cc tham s ca mt v t c bin th bin ny phi xut hin t nht 2 ln trong v t
hoc trong cc v t dng suy din ra v t . Nu ch xut hin mt ln th bt buc phi dng bin t
do.
V d
din t s kin: T hp chp 0 ca N (N bt k) bng 1, ta khng th vit Tohop(N,0,1) v bin N ch xut
hin ng mt ln trong v t ny, do ta phi vit Tohop(_,0,1).
2.3.4. Phn Goal
Bao gm cc mc tiu m ta yu cu Turbo Prolog xc nh v tm kt qu. y l phn khng bt buc
phi c. Nu ta vit sn trong chng trnh th gi l goal ni; Nu khng, khi chy chng trnh Turbo
Prolog s yu cu ta nhp goal vo, lc ny gi l goal ngoi.
2.3.4.1. C php
Ging nh c php phn clauses. Tc l ta a vo mt hoc mt s cc v t.
Nu tt c cc tham s ca v t l hng th kt qu nhn c l Yes (ng) hoc No (sai). Nu trong
cc tham s ca v t c bin th kt qu tr v s l cc gi tr ca bin.
Ngoi cc phn ch yu ni trn, ta c th a vo cc phn lin quan n khai bo hng, cc tp tin
lin quan hoc ch th dch.
V d
Constants
Pi = 3.141592653

2.4. Cc nguyn tc ca ngn ng Prolog


Vic gii quyt vn trong ngn ng Prolog ch yu da vo hai nguyn tc sau: ng nht, quay lui.
2.4.1. ng nht
Mt quan h c th ng nht vi mt quan h no cng tn, cng s lng tham s, cc i lng
con cng ng nht theo tng cp.
Mt hng c th ng nht vi mt hng.
Mt bin c th ng nht vi mt hng no v c th nhn lun gi tr hng .
2.4.2. Quay lui
Gi s h thng ang chng minh goal g, trong g c m t nh sau:
g :- g1, g2, , gj-1, gj, , gn.

Trang 19
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

Khi cc gi kim chng t tri sang phi, n gj l sai th h thng s quay lui li gj-1 tm li gii khc.
2.5. B k t, t kho
Prolog dng b k t sau: cc ch ci v ch s (A Z, a z, 0 9); cc ton t (+, -, *, /, <, =, >) v cc
k hiu c bit.
2.5.1. Mt s t kho
Trace: Khi c t kho ny u chng trnh, th chng trnh c thc hin tng bc theo di;
dng phm F10 tip tc.
Fail: Khi ta dng goal ni, chng trnh ch cho ta mt kt qu (mc d c th cn nhng kt qu khc),
nhn v tt c cc kt qu khi chy goal ni, ta dng ton t Fail.
! hay cn gi l nht ct, goal ngoi lun cho ta mi kt qu, mun nhn ch mt kt qu t goal ngoi,
ta dng k hiu !.
2.6. Cc kiu d liu
Trong prolog c kiu d liu chun v kiu do ngi lp trnh nh ngha.
2.6.1. Kiu d liu chun
L kiu d liu do prolog nh ngha sn. Prolog cung cp cc kiu d liu chun l: char, integer, real,
string v symbol.
Char: L kiu k t. Hng k t phi nm gia hai du nhy n. V d: a, #.
Integer: L kiu s nguyn, tp gi tr bao gm cc s nguyn t -32768 n 32767.
Real: L kiu s thc, tp gi tr bao gm cc s thc thuc hai on: on cc s m t -10307 n 10-307 v on s dng t 10-307 n 10307.
String: L kiu chui k t. Hng chui k t phi nm gia hai du nhy kp. V d: Turbo prolog 2.0
Symbol: L mt kiu s cp, c hnh thc ging chui k t. Hng symbol c hai dng: Dy cc ch, s
v du gch di vit lin tip, k t u phi vit thng (chng hn: telephone_number); Dy cc k
t gia mt cp hai nhy kp (ging nh chi k t) .

Trang 20
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


2.6.1.2. Php ton s hc

2.6.1.3. Php ton quan h

Trang 21
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


2.6.1.4. Cc v t nh cc hm ton hc

Ton t NOT(X) : Nu X l Yes th NOT(X) l No v ngc li.


2.6.2. Cc kiu d liu do ngi lp trnh nh ngha
2.6.2.1. Kiu mu tin
2.6.2.1.1. C php
<tn kiu mu tin> = tn mu tin (danh sch cc kiu phn t)
V d 1
Domains
ten, tac_gia, nha_xb, dia_chi = string
nam, thang, so_luong = integer
dien_tich = real
nam_xb = nxb(thang, nam)
do_vat = sach(tac_gia, ten, nha_xb, nam_xb); xe(ten, so_luong); nha(dia_chi, dien_tich)
predicates
so_huu(ten,do_vat)
clauses
so_huu(Nguyen Van A, sach(Do Xuan Loi, Cau truc DL, Khoa hoc Ky thuat, nxb(8,1985))).
so_huu(Le thi B, xe(Dream II, 2)).
so_huu(Nguyen Huu C, nha(3/1 Ly Tu Trong, tp Can Tho, 100.5))

Trang 22
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


2.6.2.2. Kiu danh sch
C php
<tn kiu danh sch> = <tn kiu phn t>*
V d 1
Domains
intlist = integer*

Mt danh sch l mt dy cc phn t phn cch nhau bi du phy v t trong cp du ngoc vung.
V d 2
[]% Danh sch rng
[1,2,3] % Danh sch gm ba s nguyn 1, 2 v 3.
Cu trc ca danh sch bao gm hai phn: Phn u l phn t u tin ca danh sch v phn ui l
mt danh sch ca cc phn t cn li.
Danh sch c vit theo dng [X|Y] th X l phn t u v Y l danh sch ui. Chng hn trong danh
sch [1,2,3] th u l s nguyn 1 v ui l danh sch [2,3].
Trong danh sch cng c th dng bin t do, chng hn ta c th vit [_|Y] ch mt danh sch c
u l mt phn t no v c ui l danh sch Y.
2.7. Cc hm xut nhp chun
2.7.1. Xut ra mn hnh
Write( Arg1, Arg2, ,Argn) in ra mn hnh gi tr ca cc i s.
Writef( Formatstring, Arg1, Arg2, ,Argn) in ra mn hnh gi tr ca cc i s theo nh dng c ch
nh trong Formastring.
Trong Formastring l mt chui c th l:
%d: In s thp phn bnh thng; i s phi l char hoc integer.
%c: i s l mt s integer, in k t c m Ascci l i s , chng hn writef(%c,65) c A.
%e: In s thc di dng ly tha ca 10.
%x: In s Hexa; i s phi l char hoc integer.
%s: In mt chui hoc mt symbol.
2.7.2. Nhp vo t bn phm
Readln(X): Nhp mt chui k t vo bin X.
ReadInt(X): Nhp mt s nguyn vo bin X.
Trang 23
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

ReadReal(X): Nhp mt s thc vo bin X.


ReadChar(X): Nhp vo mt k t vo bin X.

2.8. K thut quy


quy l k thut lp trnh c s dng trong nhiu ngn ng. Trong Turbo Prolog ta s dng quy
khi mt v t c nh ngha nh vo chnh v t .
Nh ni trong chng lp trnh hm, trong chng trnh quy phi c t nht mt trng hp
dng v li gi quy phi cha yu t dn n trng hp dng. Trong Prolog, trng hp dng c th
hin bng mt s kin, yu t dn n trng hp dng th hin bng mt bin, lin h vi bin ban u bi
mt cng thc.
V d 1: Tnh n!
Predicates
Facto (integer, integer)
Clauses
Facto(0,1):- !.
Facto(N, FactN) :- N > 0, M = N 1, facto(M, factM), factN = N*factM.

v d trn ta nh ngha mt v t dng tnh gi tr giai tha ca mt s t nhin, i s th


nht l s cn tnh giai tha v i s th hai dng nhn gi tr tr v.
Trng hp dng y c xc inh bi s kin 0 giai tha l 1.
tnh N! ta tnh M! vi M= N-1. Yu t dn n trng hp dng l bin M c gi tr bng N-1.
V d 2: Xc nh mt phn t trong danh sch cc symbol
domains
symbol_list = symbol*
predicates
element1(integer,symbol_list,symbol)
element (integer,symbol_list,symbol)
clauses
% element1 khng suy din ngc c
element1(1,[X|_],X).
element1(N,[_|L],Y):-M=N-1,
element1(M,L,Y).
% element c th suy din ngc
element(1,[X|_],X).
element(N,[_|L],Y):-element(M,L,Y),
N=M+1.

S suy din thun chiu l cho danh sch v v tr, tm c phn t ti v tr , chng hn, nu ta a
vo goal element(2,[a,b,c,d],X) ta c X=b.
Trang 24
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


S suy din ngc y l cho danh sch v phn t, tm c v tr ca phn t , chng hn, nu ta
a vo goal element(N,[a,b,c,d], b) ta c N=2.
V d 3: Sp xp mt danh sch cc s nguyn
domains
list=integer*
predicates
insert(integer,list,list)
sort(list,list)
clauses
insert(E,[],[E]).
insert(E,[A|B],[E,A|B]):-E<=A.
insert(E,[A|B],[A|C]):-E>A,insert(E,B,C).
sort([],[]).
sort([X|R1],L):-sort(R1,R),
insert(X,R,L).

2.9. Mt s v d v chng trnh prolog


2.9.1. Xt xem mt s N c phi l s nguyn t hay khng.
domains
so_nguyen = integer
predicates
so_nguyen_to(so_nguyen)
Clauses
so_nguyen_to(2):-!.
so_nguyen_to(N):-N>0,
so_nguyen_to(M),
M<N,
N MOD M <>0.
goal
so_nguyen_to(13).

2.9.2. Tm cc cp c th kt bn
Gi s ta c bng s liu nh sau:

Trang 25
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI

Tiu chun kt bn l hai ngi khc phi, ngi ny hi cc tiu chun ca ngi kia v ngc li.
Hy vit chng trnh tm ra cc cp c th kt bn vi nhau.
domains
ten, g_tinh = symbol
predicates
gioi_tinh(ten, g_tinh)
dep(ten)
tot(ten)
giau(ten)
thong_minh(ten)
khoe(ten)
thich(ten,ten)
ket_ban(ten,ten)
clauses
gioi_tinh(lan,nu).
gioi_tinh(hong,nu).
gioi_tinh(thuy,nu).
gioi_tinh(anh,nam).
gioi_tinh(binh,nam).
gioi_tinh(hung,nam).
dep(lan).
dep(hong).
dep(binh).
khoe(thuy).
khoe(lan).
khoe(binh).
khoe(anh).
khoe(hung).
tot(lan).
tot(thuy).
thong_minh(hong).
thong_minh(anh).
thong_minh(hung).
thong_minh(binh).
giau(hong).
giau(thuy).
giau(hung).
thich(lan,X):-khoe(X), dep(X), thong_minh(X).
thich(hong,X):-khoe(X), thong_minh(X), giau(X).
thich(thuy,X):-khoe(X), dep(X), thong_minh(X).
thich(ann,X):-dep(X), tot(X), thong_minh(X).
thich(binh,X):-dep(X), khoe(X).
thich(hung,X):-khoe(X), tot(X), thong_minh(X).
ket_ban(X,Y):- gioi_tinh(X,M),

Trang 26
Bo co: Tm hiu v cc m hnh lp trnh

TRNG I HC BCH KHOA H NI


gioi_tinh(Y,N),
M<>N,
thich(X,Y),
thich(Y,X).

IV. Li kt
Vi lng kin thc v cng hn ch cng nh cha c nhiu thi gian tm hiu chuyn su, bo co
ny khng hy vng mang n nhng g mi m m n gin ch l s tng hp, lc dch v chnh sa li cc
bi vit c trn internet, sch in v mt s ti liu khc. Sai st v mt ni dung cng nh khim khuyt
trong cch trnh by chc chn khng th trnh khi, rt mong nhn c s thng cm v gip ca thy
bo co c hon thin hn!

V. Ti liu tham kho

What Is a Programming Paradigm? - Troy Holmes.


Programming Paradigms - Kurt Nrmark Department of Computer Science, Aalborg University,
Denmark.
Lp trnh logic ThS. Nguyn Vn Linh.
http://wikipedia.com
http://congdongcviet.com

Trang 27
Bo co: Tm hiu v cc m hnh lp trnh

You might also like