Professional Documents
Culture Documents
BO CO
Thc hin
Sinh vin:
M s sinh vin:
Email:
Trang 1
Bo co: Tm hiu v cc m hnh lp trnh
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
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
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
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
Trang 6
Bo co: Tm hiu v cc m hnh lp trnh
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
Trang 9
Bo co: Tm hiu v cc m hnh lp trnh
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
5. Parallel Programming
Trang 11
Bo co: Tm hiu v cc m hnh lp trnh
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
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
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
1. c im
Trang 15
Bo co: Tm hiu v cc m hnh lp trnh
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
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
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>
Trang 18
Bo co: Tm hiu v cc m hnh lp trnh
Trang 19
Bo co: Tm hiu v cc m hnh lp trnh
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
Trang 21
Bo co: Tm hiu v cc m hnh lp trnh
Trang 22
Bo co: Tm hiu v cc m hnh lp trnh
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
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
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
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
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!
Trang 27
Bo co: Tm hiu v cc m hnh lp trnh