kef laio 7 logikìc programmatismìc: h gl¸ssa prologcgi.di.uoa.gr/~prondo/languages/ch6.pdf ·...
TRANSCRIPT
![Page 1: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/1.jpg)
Kef�laio 7
Logikìc Programmatismìc:
H Gl¸ssa Prolog
P. Rontogi�nnhc
Ejnikì kai Kapodistriakì Panepist mio Ajhn¸n
Tm ma Plhroforik c kai Thlepikoiwni¸n
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 2: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/2.jpg)
Basik� StoiqeÐa Gl¸ssac Prolog
OrismoÐ (statements): EpiteloÔn to rìlo entol¸nstic klassikèc gl¸ssec programmatismoÔ
Gegonìta
Kanìnec
Erwt seic
'Oroi (terms): Monadik dom dedomènwn Prolog
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 3: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/3.jpg)
Gegonìc
EÐnai to aploÔstero eÐdoc orismoÔ, pou uposthrÐzei hProlog.
Parèqei trìpo èkfrashc thc sqèshc pou isqÔeian�mesa se ontìthtec.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 4: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/4.jpg)
Par�deigma Gegonìtoc
Gegonìc
father (john, mary).
Ekfr�zei ìti o john eÐnai patèrac thc mary ìti h sqèshfather isqÔei an�mesa sta �toma john kai mary.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 5: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/5.jpg)
OrismoÐ
Sqèseic ìpwc to father onom�zontaikathgor mata.
Oi ontìthtec mary kai john onom�zontai orÐsmatatou kathgor matoc.
'Ena kathgìrhma mazÐ me ta orÐsmata pouperilamb�nei onom�zetai atomikìc tÔpoc.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 6: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/6.jpg)
Sqèsh Plus
SÔnolo gegonìtwn
plus(0,0,0).
plus(0,1,1).
plus(1,0,1).
plus(2,0,2).
plus(0,2,2).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 7: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/7.jpg)
Sqèsh Plus
OrÐzei thn prìsjesh fusik¸n arijm¸n
Den mporeÐ na oristeÐ apokleistik� me th qr shgegonìtwn
ApaiteÐtai �peiroc arijmìc gegonìtwn, (ìpwc
parap�nw)
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 8: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/8.jpg)
Metablhtèc
H Prolog epitrèpei th qr sh metablht¸n se
Gegonìta, kanìnec kai erwt seic
Oi metablhtèc arqÐzoun p�nta me kefalaÐo gr�mma
H qr sh metablht¸n epitrèpei thn èkfrash sunìlougegonìtwn
Par�deigma
plus(0,X,X).
Ekfr�zei thn idiìthta tou oudèterou stoiqeÐou thcprìsjeshc.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 9: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/9.jpg)
Erwt seic
Parèqoun th dunatìthta exagwg c plhroforÐac apìèna logikì prìgramma.
DiereunoÔn thn isqÔ miac sqèshc an�mesa seorismènec ontìthtec.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 10: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/10.jpg)
Par�deigma
Er¸thsh
?-father(john, mary).
Diereun� an h sqèsh father isqÔei an�mesa sta �tomajohn kai mary.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 11: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/11.jpg)
Par�deigma
Er¸thsh
An èqei dojeÐ sthn Prolog to gegonìc:
father(john, mary).
Tìte h ap�nthsh sthn er¸thsh ?-father(john, mary).
ja eÐnai YES.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 12: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/12.jpg)
Metablhtèc kai Erwt seic (1)
Er¸thsh
?-father(X,mary).
Diab�zetai wc: {Up�rqei k�poio prìswpo X to opoÐo eÐnaipatèrac thc mary?}
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 13: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/13.jpg)
Metablhtèc kai Erwt seic (2)
MÐa er¸thsh mporeÐ na epistrèyei perissìterec apìmÐa apant seic.
Par�deigma
An èqoume d¸sei sthn Prolog dÔo gegonìta
father(john, mary).
father(john, ann).
Tìte h er¸thsh: ?-father(john, X).
Ja epistrèyei dÔo lÔseic X=mary kai X=ann
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 14: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/14.jpg)
SÔnjetec Erwt seic
Er¸thsh
?-father(X,mary), father(X,ann)
Anazht� to prìswpo pou eÐnai patèrac thc mary kai thcann.
H sÔnjeth er¸thsh apoteleÐtai apì upoerwt seic(kl seic). Oi kl seic se mÐa sÔnjeth er¸thshqwrÐzontai metaxÔ touc me kìmma, pou èqei thn ènnoialogikoÔ {kai}.
Gia na alhjeÔei mÐa sÔnjeth er¸thsh prèpei naalhjeÔoun ìlec oi aploÔsterec erwt seic, pou thnapoteloÔn.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 15: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/15.jpg)
Kanìnec
Epitrèpoun ton orismì nèwn sqèsewn wc sun�rthsh�llwn sqèsewn.
Par�deigma
son(X,Y):-father(Y,X), male(X).
OrÐzei th sqèsh son wc sun�rthsh twn sqèsewn father
kai male.Diab�zetai wc: {O X eÐnai giìc tou Y an o Y eÐnai patèractou X kai o X eÐnai gènouc arsenikoÔ}.
To sÔmbolo {:-} diab�zetai san {e�n}, en¸ to {,}wc {kai}.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 16: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/16.jpg)
AnadromikoÐ Kanìnec
Par�deigma
ancestor(X,Y):-parent(X,Y).
ancestor(X,Y):-parent(X,Z), ancestror(Z,Y).
H sqèsh ancestor (prìgonoc) mporeÐ na orisjeÐ me qr shdÔo kanìnwn, ek twn opoÐwn o ènac eÐnai anadromikìc.
Genik�, ènac kanìnac èqei th morf
H:-B1,...,Bn.
ìpou to H lègetai kefal tou kanìna kai oi atomikoÐtÔpoi B1,...,Bn, apoteloÔn to s¸ma tou kanìna.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 17: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/17.jpg)
'Oroi
Basik dom ston logikì programmatismì
Stajer� (ìpwc john), metablht (ìpwc X) sÔnjetocìroc
O sÔnjetoc ìroc apoteleÐtai apì èna sunarthsiakì
sÔmbolo (functional symbol), pou efarmìzetai se
akoloujÐa apì ìrouc.
Par�deigma
list(a,nil)
ìpou list to sunarthsiakì sÔmbolo kai a,nil stajerèc
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 18: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/18.jpg)
'Oroi
Qr sh gia kwdikopoÐhsh sÔnjetwn morf¸nplhroforÐac
Par�deigma
Orismìc kathgor matoc book, pou lamb�nei sanparamètrouc ìrouc gia perigraf twn qarakthristik¸nthc ènnoiac biblÐo. Me ton trìpo autì dhmiourgeÐtai mÐaapl b�sh dedomènwn:
book(author(surname(stoll), name(robert)),
subject(logic)).
book(author(surname(kleene), name(steven)),
subject(mathematics)).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 19: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/19.jpg)
'Oroi
Diafor� an�mesa sta
book (ìnoma kathgor matoc)
author, surname, name, subject (sunarthsiak�sÔmbola)
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 20: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/20.jpg)
Par�deigma
Er¸thsh
Anaz thsh onomatepwnÔmwn, pou èqoun gr�yei biblÐa selogik
?-book(author(surname(X), name(Y)),
subject(logic)).
Er¸thsh
An den endiafèroun ta mikr� onom�twn suggrafèwn, her¸thsh mporeÐ na tejeÐ:
?-book(author(surname(X), ), subject(logic)).
'Opou me { } sumbolÐzontai oi ìroi twn opoÐwn h tim denmac endiafèrei.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 21: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/21.jpg)
'Oroi
Graf programm�twn ìqi mìno me qr sh kanìnwn kaigegonìtwn
Par�deigma
Orismìc thc sqèshc nat(X), h opoÐa alhjeÔei ìtan Qfusikìc arijmìc.
'Enac trìpoc eÐnai na sumfwnhjeÐ h anapar�stashtwn fusik¸n arijm¸n antÐ gia 0, 1, 2, . . . me0, s(0), s(s(0)), . . .
To sunarthsiakì sÔmbolo s ekfr�zei thn ènnoia tou{epìmenou arijmoÔ}.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 22: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/22.jpg)
Par�deigma
To prìgramma gia to nat gr�fetai:
Prìgramma
nat(0).
nat(s(X)):-nat(X).
Parìmoia orÐzontai kai �llec sqèseic p�nw se fusikoÔcarijmoÔc.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 23: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/23.jpg)
Par�deigma
To plus(X,Y,Z) eÐnai alhjèc an to Z eÐnai to �jroismatwn X kai Y.
Prìgramma
plus(0,X,X).
plus(s(X),Y,s(Z)):-plus(X,Y,Z).
Jètontac thn er¸thsh: ?-plus(s(0), s(0),K).
PaÐrnoume thn ap�nthsh K = s(s(0)).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 24: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/24.jpg)
OrÐsmata
Sthn Prolog den gÐnetai kajorismìc poia apì taorÐsmata enìc kathgor matoc eÐnai eÐsodoi kai poiaèxodoi.
Poll� progr�mmata èqoun diaforetikèc qr seic
Par�deigma: An tejeÐ h er¸thsh:?-plus(X,s(0), s(s(s(0)))).
DÐnetai h ap�nthsh X=s(s(0)), pou antistoiqeÐ stonarijmì, pou lamb�netai an afairèsoume apì to trÐtoìrisma to deÔtero.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 25: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/25.jpg)
Ektèlesh Programm�twn Prolog
'Estw to prìgramma
Prìgramma
grandparent(X,Y):-parent(X,Z), parent(Z,Y).
parent(tom,jim).
parent(jim,george).
'Otan tejeÐ h er¸thsh:?-grandparent(A,B). o mhqanismìcektèleshc thc Prolog ekteleÐ anaz thsh lÔsewn thc morf ctou dèntrou, pou akoloujeÐ.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 26: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/26.jpg)
Dèntro ektèleshc thc er¸thshc
grandparent(A,B)
parent(A,Z),parent(Z,B)
parent(jim,B)
�
{A=tom,Z=jim}
parent(george,B)
fail
{A=jim,Z=george}
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 27: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/27.jpg)
Ektèlesh Programm�twn Prolog
Arqik� o mhqanismìc thc Prolog anazht� stoprìgramma kathgìrhma me to ìnoma grandparent
¸ste na tairi�zei me th dedomènh er¸thsh.
Mìlic brejeÐ prìtash, pou afor� autì tokathgìrhma, antikajist� thn dedomènh er¸thsh me tos¸ma thc prìtashc kai dhmiourgeÐtai nèa (sÔnjeth)er¸thsh parent(A,Z), parent(Z,B).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 28: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/28.jpg)
Mhqanismìc Ektèleshc Prolog
'Estw ìti èqoume èna prìgramma kai mÐa er¸thsh thcmorf c ?− A1, . . . , An. Tìte:
H Prolog exet�zei e�n ikanopoioÔntai ìloi oi stìqoiA1, . . . , An xekin¸ntac apì to A1 kai phgaÐnontac procto An.
Gia na ikanopoi sei èna apì ta Ai h Prolog,
dialègei thn pr¸th prìtash sto prìgramma thc
opoÐac h kefal tairi�zei me to Ai,
kai antikajist� to Ai me to s¸ma thc prìtashc
aut c (afoÔ pr¸ta to tropopoi sei kat�llhla).
H diadikasÐa suneqÐzetai mèqri na mhn up�rqei plèon�llh kl sh, pou na prèpei na ikanopoihjeÐ.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 29: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/29.jpg)
Apl� Anadromik� Progr�mmata se Prolog
Me th qr sh ìrwn gr�fontai apl� kai ekfrastik�progr�mmata, ìpwc to
Prìgramma
plus(0,X,X).
plus(s(X),Y,s(Z)):-plus(X,Y,Z).
'Omoia orÐzetai gia ton pollaplasiasmì fusik¸narijm¸n
Prìgramma
times(0,X,0).
times(s(X),Y,Z):-times(X,Y,W), plus(W,Y,Z).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 30: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/30.jpg)
Sqìlia
H parap�nw sqèsh qrhsimopoieÐ dÔo basik�axi¸mata tou pollaplasiasmoÔ:
0 · X = 0(X + 1) · Y = X · Y + Y
O orismìc tou pollaplasiasmoÔ qrhsimopoieÐ autìnthc prìsjeshc
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 31: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/31.jpg)
Majhmatikèc Sqèseic Fusik¸n Arijm¸n
Me qr sh tou orismoÔ tou pollaplasiasmoÔ dÐnetai hsqèsh gia to paragontikì enìc fusikoÔ arijmoÔ
Prìgramma
factorial(0,s(0)).
factorial(s(N),F):-factorial(N,F1),times(s(N),F1,F).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 32: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/32.jpg)
Majhmatikèc Sqèseic Fusik¸n Arijm¸n
Sqèsh between(X,Y,Z): alhjeÔei ìtan X eÐnai ènacfusikìc arijmìc mikrìteroc Ðsoc apì ton Y kai o Y eÐnaimikrìteroc Ðsoc apì ton Z.
Prìgramma
between(0,0,Z).
between(0,s(Y),s(Z)):-between(0,Y,Z).
between(s(X),s(Y),s(Z)):-between(X,Y,Z).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 33: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/33.jpg)
Sqìlia
Oi fusikoÐ arijmoÐ anaparÐstantai me polÔ pio bolikìtrìpo sthn Prolog (ìpwc kai stic upìloipec gl¸ssecprogrammatismoÔ).
H anapar�stash, pou qrhsimopoi jhke staparap�nw progr�mmata den eÐnai genik� bolik kaiapotelesmatik . Uiojet jhke gia na deiqjoÔn oiarqikèc dunatìthtec thc Prolog.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 34: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/34.jpg)
Anadromikìc Programmatismìc me LÐstec
LÐsta
PolÔ qr simh dom dedomènwn gia programmatismì seProlog
Ken - sumbolÐzetai me []
Perièqei stoiqeÐa, p.q. h [a,b,c] eÐnai mh ken lÐsta
To pr¸to stoiqeÐo lÐstac onom�zetai kefal (head)H lÐsta pou prokÔptei an afairèsoume thn kefal ,
onom�zetai our� (tail)O telest c | apoteleÐ eidik anapar�stash, pou
deÐqnei �mesa thn kefal kai thn our� miac lÐstac. H
lÐsta [a,b,c] gr�fetai wc [ a|[b,c] ] kai h [a] wc
[a|[ ]].
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 35: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/35.jpg)
Par�deigma 7.1
Oi lÐstec Prolog mporoÔn na perièqoun sa stoiqeÐatouc kai �llec lÐstec, all� kai polÔplokouc ìrouc,ìpwc
[[ ]] epitrept lÐsta
[[1,X], s(s(X))]
Oi [ a| [ 1|[2] ] ] kai [X,Y|[a]] eÐnai isodÔnamec metic lÐstec [a,1,2] kai [X,Y,a] antÐstoiqa.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 36: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/36.jpg)
Par�deigma 7.2
H sqèsh member(X,Y) eÐnai alhj c, ìtan to X eÐnaistoiqeÐo thc lÐstac Y.
Prìgramma
member(X,[X|Y]).
member(X,[Y|Z]):-member(X,Z).
To nìhma tou progr�mmatoc eÐnai: {To X eÐnai mèloc miaclÐstac an eÐnai h kefal thc lÐstac an eÐnai mèloc thcour�c thc lÐstac}.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 37: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/37.jpg)
Par�deigma 7.3
H sqèsh append(X,Y,Z) eÐnai alhj c, ìtan to Z eÐnai hlÐsta, pou prokÔptei apì thn sunènwsh twn list¸n X kaiY.
Prìgramma
append([ ],Y,Y).
append([X|Xs],Ys,[X|Zs]):-append(Xs,Ys,Zs).
H dom tou parap�nw progr�mmatoc eÐnai parìmoia meaut tou progr�mmatoc gia ton orismì thc sqèshc plus.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 38: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/38.jpg)
Par�deigma 7.4
Suqn� ston programmatismì se PrologqrhsimopoioÔntai aplèc sqèseic, dh orismènec gia nagrafoÔn pio polÔploka progr�mmata.
Sqèseic ìpwc h member kai h append
qrhsimopoioÔntai sqedìn se opoiod pote meg�loprìgramma grafteÐ se Prolog.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 39: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/39.jpg)
Par�deigma 7.4
Sqèsh reverse(X,Y) orÐzetai sa sun�rthsh thc append.EÐnai alhj c, ìtan h lÐsta Y eÐnai h antÐstrofh thclÐstac X:
Prìgramma
reverse([ ],[ ]).
reverse([X|Xs],Ys):-reverse(Xs,Rs),
append(Rs,[X],Ys).
To nìhma tou parap�nw progr�mmatoc eÐnai: {HantÐstrofh thc ken c lÐstac eÐnai h ken lÐsta.H antÐstrofh mh-ken c lÐstac mporeÐ na paraqjeÐantistrèfontac thn our� thc kai proskoll¸ntac stotèloc thc antestrammènhc our�c thn kefal thc arqik clÐstac.}
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 40: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/40.jpg)
Par�deigma 7.4
To prohgoÔmeno par�deigma mporeÐ na grafeÐ kai qwrÐcth qr sh thc append, all� me prosj kh enìc bohjhtikoÔkathgor matoc tou reverse1, pou diajètei èna epiplèonìrisma:
Prìgramma
reverse(Xs, Ys):-reverse1(Xs,[ ],Ys).
reverse1([ ],Ys, Ys).
reverse1([X|Xs],A,Ys):-reverse1(Xs,[X|A],Ys).
To ìrisma A onom�zetai susswreut c (accumulator)diìti susswreÔei b ma-b ma to telikì apotèlesma (dhlad thn antÐstrofh lÐsta).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 41: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/41.jpg)
Anadromikìc Programmatismìc me Dèntra
Dèntra
PolÔ qr simoc tÔpoc dedomènwn
AnaparÐstantai me qr sh ìrwn (monadik dom dedomènwn Prolog)
Qr sh tou sunarthsiakoÔ sumbìlou tree me treic
paramètrouc:
tree(Element, Left, Right)
To stoiqeÐo Element eÐnai h rÐza tou sugkekrimènou
dèntrou, to Left to aristerì upìdentro kai to Right
to dexÐ upodèntro.To kenì dèntro anaparÐstatai me th stajer� void.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 42: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/42.jpg)
Par�deigma
Par�deigma
Dèntro me koruf a, aristerì paidÐ b kai dexÐ paidÐ cgr�fetai wc:
tree(a, tree(b,void,void), tree(c,void, void))
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 43: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/43.jpg)
Par�deigma
Prìgramma gia èlegqo tou an ènac dedomènoc ìroc eÐnaipr�gmati duadikì dèntro (an�logo tou kathgor matocnat)
Prìgramma
binary tree(void).
binary tree(tree(E,L,R)):-binary tree(L),
binary tree(R).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 44: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/44.jpg)
Par�deigma
Prìgramma gia èlegqo tou an èna dedomèno stoiqeÐoan kei se èna dèntro ìqi. To prìgramma eÐnai an�logome to member , pou orÐsjhke gia tic lÐstec:
Prìgramma
tree member(X, tree(X, , )).
tree member(X, tree(Y,L,R)):-tree member(X,L).
tree member(X, tree(Y,L,R)):-tree member(X,R).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 45: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/45.jpg)
Par�deigma
To parap�nw prìgramma elègqei an èna dedomènostoiqeÐo eÐnai tautìshmo me thn koruf tou dedomènoudèntrou.
An nai, to prìgramma stamat� me epituqÐa.
An ìqi, to prìgramma suneqÐzei anadromik� thdiereÔnhsh sto aristerì kai to dexÐ upodèntro.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 46: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/46.jpg)
Kathgor mata
Ousiastik� {diasqÐzoun} èna dedomèno dèntro me mÐaprokajorismènh seir�.
To apotèlesma thc di�sqishc epistrèfetai se mÐalÐsta.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 47: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/47.jpg)
Par�deigma
H preorder di�sqish enìc duadikoÔ dèntrou orÐzetai apì toakìloujo kathgìrhma:
Prìgramma
preorder(void,[ ]).
preorder(tree(X,L,R),Xs):-preorder(L,Ls),
preorder(R,Rs),
append([X|Ls],Rs,Xs).
Kat� thn preorder di�sqish enìc dèntrou katagr�fetaiarqik� h rÐza tou dèntrou kai katìpin episkeptìmasteanadromik� pr¸ta to aristerì upodèntro kai met� to dexÐ.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 48: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/48.jpg)
Par�deigma
Me an�logo trìpo gr�fetai prìgramma, pou ulopoieÐ thndi�sqish inorder:
Prìgramma
inorder(void,[ ]).
inorder(tree(X,L,R),Xs):-inorder(L,Ls),
inorder(R,Rs),
append(Ls,[X|Rs],Xs).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 49: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/49.jpg)
Par�deigma
Prìgramma gia thn postorder di�sqish:
Prìgramma
postorder(void,[ ]).
postorder(tree(X,L,R),Xs):-postorder(L,Ls),
postorder(R,Rs),
append(Ls,Rs,Ms),
append(Ms,[X],Xs).
Ta parap�nw progr�mmata diafèroun mìno wc proc tontrìpo, pou gÐnetai h sunènwsh twn epimèroucapotelesm�twn (append).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 50: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/50.jpg)
Telestèc
Sunarthsiak� sÔmbola
Qr sh se epexergasÐa pio polÔplokwn dom¸n apì ìtioi lÐstec kai ta dèntra
Sthn èkfrash 1+3, to + eÐnai telest c
IsodÔnamh èkfrash +(1,3) kai ìqi o arijmìc 4, ìpwc
sumbaÐnei se �llec gl¸ssec programmatismoÔ
H prìsjesh ja pragmatopoioÔtan an o ìroc 1+3
tan ìrisma sto eidikì kathgìrhma is thc Prolog gia
upologismì arijmhtik¸n ekfr�sewn
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 51: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/51.jpg)
Telestèc (2)
Oi telestèc +,-,*,/,... den lamb�noun sugkekrimènonìhma apì thn Prolog
QrhsimopoioÔntai gia na grafoÔn efarmogèc mekomyì kai sunoptikì trìpo
Sto epìmeno par�deigma oi telestècqrhsimopoioÔntai, gia th diatÔpwsh thc diadikasÐacparag¸gishc sunart sewn
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 52: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/52.jpg)
Parag¸gish
Prìgramma
derivative(N,X,0):-nat(N).
derivative(X,X,s(0)).
derivative(X^s(N),X,s(N)*(X^N)).
derivative(sin(X),X,cos(X)).
derivative(cos(X),X,-sin(X)).
derivative(e^X,X,e^X).
derivative(log(X),X,1/X).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 53: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/53.jpg)
Parag¸gish
Prìgramma
derivative(F+G, X, DF+DG):-
derivative(F,X,DF),derivative(G,X,DG).
derivative(F-G, X, DF-DG):-
derivative(F,X,DF),derivative(G,X,DG).
derivative(F*G, X, F*DG+G*DF):-
derivative(F,X,DF),derivative(G,X,DG).
derivative(1/F, X, -DF/(F*F)):-
derivative(F,X,DF).
derivative(F/G, X, G*DF-F*DG/(G*G)):-
derivative(F,X,DF), derivative(G,X,DG).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 54: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/54.jpg)
Parag¸gish
To prìgramma upologÐzei thn par�gwgo mÐacmeg�lhc kathgorÐac sunart sewn.
Oi telestèc, pou qrhsimopoioÔntai ekfr�zoun pr�xeicmetaxÔ sunart sewn.
Thn èkfrash F*G, o programmatist c thnkatalabaÐnei san pollaplasiasmì sunart sewn kaiautì eÐnai dunatì kaj¸c h Prolog den dÐneiprokajorismèno nìhma se sÔmbola, ìpwc to *.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 55: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/55.jpg)
Parag¸gish
An sto parap�nw prìgramma dojeÐ h er¸thsh
?-derivative(cos(x)*(x^s(s(0))),x,D).
H opoÐa anazht� thn par�gwgo thc sun�rthshc cos x · x2
Ja l�boume thn ap�nthsh
D=cos(x)*(s(s(0))*x^s(0))+x^s(s(0))*(-sin(x))
H opoÐa antistoiqeÐ sth sun�rthsh cos x · 2x + x2 · (− sin x).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 56: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/56.jpg)
Arijmhtikèc pr�xeic kai Prolog
K�je gl¸ssa programmatismoÔ parèqei idiaÐtereceukolÐec sth qr sh kai epexergasÐa arijm¸n.
H Prolog diajètei
Eidik� kathgor mata, gnwst� wc kathgor matasust matoc (system predicates).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 57: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/57.jpg)
Kathgor mata Prolog
Basikì kathgìrhma to is, pou qrhsimopoieÐtai sthmorf V is E.
H Prolog upologÐzei thn tim tou E kai an aut h tim sumfwneÐ me to V, tìte epitugq�nei.
An V metablht , tìte lamb�nei thn tim tou E.
'Otan E perièqei metablhtèc me �gnwsth tim thstigm thc ektèleshc, o diermhnèac thc Prolog dÐneim numa l�jouc.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 58: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/58.jpg)
Par�deigma 7.5
H er¸thsh
?-8 is 5+3 epitugq�nei
H er¸thsh
?-5+3 is 8 apotugq�nei
diìti h Prolog blèpei to aristerì mèloc thc san tonìro +(5,3) kai den upologÐzei thn tim tou.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 59: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/59.jpg)
Par�deigma
H er¸thsh
?-X is 5+3
ja d¸sei thn ap�nthsh Q = 8
H er¸thsh
?-X is 2+Y
ja d¸sei m numa l�jouc,diìti h arijmhtik tim tou dexioÔ mèlouc den mporeÐna upologisjeÐ lìgw thc metablht c Y.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 60: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/60.jpg)
Kathgor mata thc Prolog gia arijmhtikèc
pr�xeic
X =:= Y Oi arijmhtikèc timèc twn X kai Y eÐnai ÐdiecX == Y Oi arijmhtikèc. timèc twn X kai Y eÐnai
diaforetikècX < Y H arijmhtik tim tou X eÐnai mikrìterh
apì aut tou Y
X =< Y H arijmhtik tim tou X eÐnai mikrìterh Ðsh apì aut tou Y
X > Y H arijmhtik tim tou X eÐnai megalÔterhapì aut tou Y
X >= Y H arijmhtik tim tou X eÐnai megalÔterh Ðsh apì aut tou Y
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 61: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/61.jpg)
Kathgor mata
Me qr sh twn prohgoÔmenwn kathgorhm�twn mporoÔnna xanagrafoÔn kathgor mata pou orÐsjhkan meqr sh twn ìrwn
(p.q. 0, s(0), s(s(0)) . . .)
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 62: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/62.jpg)
Kathgor mata
To kathgìrhma plus mporeÐ na orisjeÐ wc:
Prìgramma
plus(X,Y,Z):-Z is X+Y
Meionèkthma: Q�netai h antistreyimìthta k�poiwnprogramm�twn
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 63: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/63.jpg)
Kathgor mata
H er¸thsh
?-plus(A,B,8)
ja d¸sei m numa l�jouc (kai ìqi ìla ta zeÔghfusik¸n me �jroisma 8).
Autì sumbaÐnei giatÐ h parap�nw er¸thsh an�getaiapì to mhqanismì thc Prolog sthn er¸thsh
?-8 is A+B
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 64: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/64.jpg)
Kathgor mata
Me qr sh kathgorhm�twn sust matoc mporoÔn nagrafoÔn progr�mmata, pou ekteloÔn arijmhtikèc pr�xeicme to sunhjismèno trìpo:
Prìgramma
sumlist([ ],0).
sumlist([I|L],Sum):-sumlist(L,S), Sum is S+I.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 65: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/65.jpg)
Apokop
Progr�mmata Prolog
Anapotelesmatik�, giatÐ to dèntro
anaz thshc eÐnai arket� meg�lo
Endiafèron
'Uparxh lÔshc probl matoc
'Oqi gia thn posìthta eÐdoc lÔsewn
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 66: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/66.jpg)
Apokop
Den eÐnai aparaÐthto o mhqanismìc ektèleshc thcProlog na diasqÐsei olìklhro to dèntro anaz thshc,all� èna mèroc tou.
O programmatist c kajodhgeÐ to mhqanismìanaz thshc proc apofug peritt¸n anazht sewn meth bo jeia thc apokop c (cut) (sÔmbolo {!}).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 67: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/67.jpg)
Par�deigma 7.6
'Estw er¸thsh thc morf c
?- A, B, C.
Kai to akìloujo tm ma progr�mmatoc
Prìgramma
B : −A1, · · · , Ak, !, Ak+1, · · · , An.B : −D1, · · · , Dm.B : −F1, · · · , Fk.
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 68: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/68.jpg)
Rìloc Apokop c
'Otan o mhqanismìc ektèleshc thc Prolog per�sei apìthn apokop , tìte
ta A1, · · · , Ak den prìkeitai na xanaexetastoÔn gia
epiplèon lÔseic
oi enallaktikèc prot�seic gia to B, pou up�rqoun
sto prìgramma met� thn prìtash, pou perièqei thn
apokop , den prìkeitai na exetastoÔn
K�poiec lÔseic apokìptontai apì th diadikasÐa
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 69: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/69.jpg)
Par�deigma 7.7
'Estw to prìgramma:
Prìgramma
father(tom,jim).
male(jim).
son(X,Y):-father(Y,X), male(X).
son(george, jim).
son(john, nick).
Kai h er¸thsh
?-son(S,F).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 70: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/70.jpg)
Par�deigma 7.7
O mhqanismìc thc Prolog ja d¸sei treic lÔseic:
{ S=jim, F=tom }
{ S=george, F=jim }
{ S=john, F=nick }
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 71: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/71.jpg)
Par�deigma 7.7
An to prìgramma antikatastajeÐ me to:
Prìgramma
father(tom,jim).
male(jim).
son(X,Y):-father(Y,X), !, male(X).
son(george, jim).
son(john, nick).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 72: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/72.jpg)
Par�deigma 7.7
O mhqanismìc ektèleshc thc Prolog dÐnei th lÔsh
{S=jim, F=tom}.
Oi �llec dÔo lÔseic apokìptontai lìgw tou sumbìlou !,pou den epitrèpei thn exètash twn enallaktik¸nprot�sewn gia to son(S,F).
P. Rontogi�nnhc Logikìc Programmatismìc
![Page 73: Kef laio 7 Logikìc Programmatismìc: H Gl¸ssa Prologcgi.di.uoa.gr/~prondo/LANGUAGES/ch6.pdf · Suqn ston programmatismì se Prolog qrhsimopoioÔntai aplèc sqèseic, dh orismènec](https://reader033.vdocument.in/reader033/viewer/2022041413/5e198ec2ef737019700d6623/html5/thumbnails/73.jpg)
Sqìlia
H apokop qrhsimopoieÐtai sun jwc ìtan gnwrÐzoumeìti to prìblhma èqei mÐa kai monadik lÔsh kaiepijumoÔme ton periorismì �skopou yaxÐmatoc. Taprogr�mmata eÐnai ètsi pio apotelesmatik�.
H apokop den an kei sto logikì tm ma thc Prologkai gi' autì endèqetai na dhmiourg sei dusnìhtaprogr�mmata. Lanjasmènh qr sh thc perikìpteilÔseic qr simec kai epijumhtèc.
P. Rontogi�nnhc Logikìc Programmatismìc