Mant ksal programlama prolog
Download
1 / 46

Mant?ksal Programlama-Prolog - PowerPoint PPT Presentation


  • 243 Views
  • Uploaded on

Mantıksal Programlama-Prolog. Prolog-bildirimsel (declarative) dildir. Bildirimsel cümleler,örneğin P if Q and R and S biçimindedir. Bu cümle yordamsal (procedural) biçimde böyle yazılabilir: P’yi çözmek için Q’yü çöz,sonra R’i, sonra S’i çöz. Prolog dili –temel kavramlar

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Mant?ksal Programlama-Prolog' - bryony


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Prolog bildirimsel declarative dildir
Prolog-bildirimsel (declarative) dildir.

Bildirimsel cümleler,örneğin

P if Q and R and S

biçimindedir.

Bu cümle yordamsal (procedural) biçimde böyle yazılabilir:

P’yi çözmek için Q’yü çöz,sonra R’i, sonra S’i çöz.


Mant ksal programlama prolog

  • Prolog dili –temel kavramlar

  • Genellikle yapay zeka sorunlarını çözmek için oluşturulmuştur. İlk kez 1972 yılında Marseilles Üniversitesinde çalıştırılmıştır.

  • "Prolog" adı "programming in logic“ kelime-lerinden alınmıştır.

  • Prolog’un temelini yüklemler mantığı oluşturmaktadır. Mantıksal çıkarım kuralını uygulamakla programın amacına (çözüme) ulaşılıyor.


Mant ksal programlama prolog

Temel kavramlar (devamı)

  • Tanım: Cümle (clause) iki kısımdan oluşmaktadır. Baş kısım ve metin. Cümlede okun gösterdiği kısım baş kısımdır. Sol taraf ise metindir. Horn cümlesi, baş kısmında en fazla bir literal (öneri/yüklem) bulunan cümledir.

    Örnek :Aşağıdaki cümleler Horn cümleleridir

    a) P (X), Q (Y) → W (X,Y)

    b) R (X, Y), Q (Y) → ?

  • (a)’da W (X, Y) cümlenin başı, P (X), Q (Y) ise metnidir. (b)’de R(X, Y), Q(Y) metindir. Baş kısım null cümledir.

  • (b) cümlesi R (X, Y), Q (Y) ‘nin doğru olup-olmadığını veya hangi X ve Y değerleri kümesinin R (X, Y) ∧ Q (Y) ifadesini doğru yaptığını sorguluyor

  • Tanım : Mantıksal program, Horn cümlelerinden oluşan programdır


Temel kavramlar devam
Temel kavramlar (devamı)

Yordam tanımı

Prolog yordam çağırma yöntemiyle çalışıyor. Prolog programı yordamların tanımından ve onların değerlendirilmesinden oluşuyor.

Örnek: a :- b, c.

Bu cümle yordamın tanımıdır. Biz a’yı değerlendirmeliyiz ve bunun için b ve c’yi değerlendirmemiz gerekiyor..”Değerlendirme” , ifadenin doğru ve ya yanlış olmasını belirlemektir. Bu cümle mantıksal olarak böyle de okuna bilirdi:

a if (b and c)

anlıyor(bob, prolog) :- var(bob, mantık).

anne(X, Y) :- ebeveyn(X, Y),kadın(X).

mutlu(U) :- öğrenci(U), kayıtlıdır(U,yapay_zeka), sınav_var(yapay_zeka).

“ve” ile bağlanmış tüm mantıksal birimler birinci dereceden yüklemlerdir.

Prolog’da “if“ “:-” ile , “ve” “virgülle” “veya” “;” ile ifade ediliyor.


Hesaplama
Hesaplama

  • Örnek:a :- b, c. (bu örnekte a cümlenin başı, “b,c” metnidir.

  • Sorgular ? -ile başlar (Prolog yorumlayıcıları çoğunlukla böyle çalışıyor).

  • Yürütülmek için ilk çağrılan a’dır. Yordamın çağrılması a’nın yerine cümlenin metin kısmını koymakla gerçekleştiriliyor.

  • ?- b, c, d, e.

  • Sorgu verildiği zaman Prolog, baş kısmı sorgunun baş kısmı ile eşleşen cümleyi buluyor ve çağrıyı bu cümlenin metni ile değiştiriyor. Bu anlamda Prolog yorumlayıcısı türeme sorgular zinciri üretmiş oluyor ki, buna hesaplama denir. Hesaplamanın her adımı bir yordam çağırma işlemidir.


Prolog dilinin s zdizimi
Prolog dilinin sözdizimi

  • Prolog programı yazarken ilk önce nesneler ve onlar arasındaki ilişkiler tanımlanır. Nesneler arasındaki ilişkiye yüklem denir. Bilinen olgular ve ilişkiler gerçeklerdir. Gerçekler (.) ile biter.

  • insan(ahmet).

  • kirmizi(gül).

  • Sever(ahmet,gül).


Prolog dilinin s zdizimi kurallar
Prolog dilinin sözdizimi-kurallar

  • Kurallar, gerçek olguları kullanarak bir sonuca varmak için kullanılır.

  • sever(yasin,Hersey):-sever(esra,Hersey).

    Yasin,Esra’nın sevdiği her şeyi sever

  • (:- ) simgesi eğer anlamında olup bir kuralın iki parçasını birleştirir.

  • Sabitler,yani değeri sabit olan nesneler küçük harfle, değişkenler büyük harfle başlar. Sabitler tırnak arasında da (büyük-küçük harflere bakmaksızın) ifade edile bilir.Değişkeni (_) ile de ifade etmek mümkündür


Prolog dilinin s zdizimi sorgular
Prolog dilinin sözdizimi-sorgular

sever(cengiz, masa_tenis).

sever(mehmet,yüzme).

sever(yavuz,futbol).

sever(Levent,Spor):-sever(yavuz,Spor).

Levent,bir spor türünü eğer Yavuz da seviyorsa sever

Levent’in yüzmeyi sevip sevmediğini öğrenmek için

sever(levent,yüzme) sorgusunu kullanmak yeterlidir.

GOAL satırına bu sorguyu yazarsak No yanıtını alırız



Ders saati bilgi taban devam

1. Yazı tahtası ,ders saatlerinde hocaların yazmak için kullandıkları bir nesnedir

Yüklemler mantığında bu cümle böyle yazılır:

Object (board) ∧ Writes-on ( X, board, Time ) ∧ Teacher (X)

→Equal (Time, classhour).

2. Hoca , ders saatinde yazı tahtası üzerinde yazı yazan kişidir

∀ X ( Person(X) ∧ Writes-on (X, board, classhour) → Teacher (X) )

3. Öğrenci ders saatinde sandalyede oturan kişidir

∀Y ( Person (Y) ∧ Sits-on (Y, bench, Time) ∧ Equal (Time, classhour) →Student (Y) )

4. Eğer en azından bir kişi ders saatinde sandalyede oturmuşsa ve ikinci bir kişi aynı zamanda yazı tahtasında yazı yazıyorsa bu zaman = ders saati)

∃ Y ( ( Person (Y) ∧ Sits-on (Y, bench, classhour )) ∧

∃ X (Person (X) ∧ Writes-on (X, board, Time)) → Equal (Time, classhour) )

1. Yazı tahtası ,ders saatlerinde hocaların yazmak için kullandıkları bir nesnedir

Yüklemler mantığında bu cümle böyle yazılır:

Object (board) ∧ Writes-on ( X, board, Time ) ∧ Teacher (X)

→Equal (Time, classhour).

2. Hoca , ders saatinde yazı tahtası üzerinde yazı yazan kişidir

∀ X ( Person(X) ∧ Writes-on (X, board, classhour) → Teacher (X) )

3. Öğrenci ders saatinde sandalyede oturan kişidir

∀Y ( Person (Y) ∧ Sits-on (Y, bench, Time) ∧ Equal (Time, classhour) →Student (Y) )

4. Eğer en azından bir kişi ders saatinde sandalyede oturmuşsa ve ikinci bir kişi aynı zamanda yazı tahtasında yazı yazıyorsa bu zaman = ders saati)

∃ Y ( ( Person (Y) ∧ Sits-on (Y, bench, classhour )) ∧

∃ X (Person (X) ∧ Writes-on (X, board, Time)) → Equal (Time, classhour) )

“Ders saati” bilgi tabanı (devamı)


Bilgi taban ndaki c mlelerin prolog dilinde yaz l
Bilgi tabanındaki cümlelerin Prolog dilinde yazılışı

  • 1. Object (board) ∧ Writes-on ( X, board, Time ) ∧ Teacher (X)

  • →Equal (Time, classhour).

  • 2. ∀ X ( Person(X) ∧ Writes-on (X, board, classhour) → Teacher (X) )

  • 3. ∀Y ( Person (Y) ∧ Sits-on (Y, bench, Time) ∧ Equal (Time, classhour) →Student (Y) )

  • ∃ Y ( ( Person (Y) ∧ Sits-on (Y, bench, classhour )) ∧ ∃ X (Person (X) ∧ Writes-on (X, board, Time)) → Equal (Time, classhour))


Mant ksal programlama prolog

  • /* “DERS saati “ için Prolog programı */

    Time, X, Y, Z, W, board, classhour, bench = symbol

    Teacher (X)

    Writes-on (X, board, Time )

    Equal (Time, classhour)

    Person (X) Person (Y) Person (Z) Person (W)

    Sits-on (Y, bench, Time) Sits-on (Z, bench, Time)

    Student (Y)

    Student (Z)

    Object (W)


Mant ksal programlama prolog

  • bilgi tabanında aşağıdaki cümlelerin de olduğunu varsayalım.

    father (X, Y):-child (Y, X), male (X).

    son (Y, X ) :-child (Y, X), male (Y).

  • Bunlar Horn cümleleridir. The above two clauses being horn clauses are constituents of a Logic Program.

  • Bilgi tabanında aşağıdaki verilerin de yeraldığını varsayalım:

    child (ram, ratha).

    male (ram).

    male(ratha)



Mant ksal programlama prolog

Clauses varsayalım

Object (board). 1

Writes-on (john, board, classhour). 2

Sits-on (mita, bench, classhour) 3

Sits-on (rita, bench, classhour). 4

Person (john). 5

Person (mita). 6

Person (rita). 7

Equal (Time, classhour):- Object (board), Writes-on (X, board, Time), Teacher(X). 8

Equal (Time, classhour):-Person (Y),Sits-on (Y, bench, classhour), Person (X ),Writes-on (X, board, Time). 9

Teacher (X):-Person (X),Writes-on (X, board, classhour). 10

Student (Y) :-Person (Y),Sits-on (Y, bench, Time), Equal (Time, classhour). 11


Mant ksal programlama prolog

geriye izleme varsayalım (backtracking.)

sorgu: Teacher (X)?

Teacher (X) ←Person (X),Writes-on (X, board, classhour) cümlesininamacı (Teacher (X)) sağlaması için

altamac (Person (X)) sağlanmalıdır.

PROLOG Person (X) altamacı için Person( ) yüklemini arayacak. 5.cümlede eşleşme bulacak ve X’i john ile değişecek. PROLOG 5.cümleyi “işaretleyecek”.

Daha sonra kalan cümleler içinde Writes-on (X, board, classhour).

altamacının sağlanması için Writes-on (john, board, classhour) aranacak. Ama bu yüklem 2.yerde olduğundan arama başarısız olacak. Bu sebepten Prolog işaretlenmiş yerden yukarıya dönecek ve Writes-on (john, board, classhour) yüklemini bulacak. Altamaçlara ulaşıldığı için amaca da ulaşılmıştır.

Çözüm: Teacher (john).


Mant ksal programlama prolog

Teacher (X) varsayalım ←Person (X),Writes-on (X, board, classhour).

Person (john).


Mant ksal programlama prolog

Person(X)’ten aşağıdaki hükümlerde write_on(john,board,classhour) eşlenmesi sağlanmadığından yukarıya (geriye) izleme gerçekleştiriliyor


Mant ksal programlama prolog

Eşleşme 2. cümlede sağlanıyor write_on(john,board,classhour) eşlenmesi sağlanmadığından yukarıya (geriye) izleme gerçekleştiriliyor



Mant ksal programlama prolog

Goal: ulaşılmıştır ?teacher (X)

Programın Yanıtı: teacher (john).

Goal: ?equal (Time, classhour)

Programın Yanıtı: Yes.

Goal: ?father (X,Y)

Yanıt: father(ratha,ram)

Goal: ?son(Y,X)

Yanıt: son(ram,ratha).


Liste list
Liste (List) ulaşılmıştır

  • Liste karmaşık termlerin özel türüdür

    [a,b,c]

    [elma,portakal,kayısı]

    [a,1,b,1,c,2]

    []

    [ebeveyn (fred,mary), ebeveyn (sandra,mary)]

    [ebeveyin (fred,mary),6,7,8]

    • Listelerin kendileri listeler içere biliyor

    [a,[1,2,3],b,[4,5,6]]

    [[kırmızı,yeşil,mavi]]

    [[]]

    [1,2,[3,[4,5],6],7]


Liste devam
Liste (devamı) ulaşılmıştır

  • “|” operatörü listenin başını onun diğer kısmından (kuyruk-tail) ayırıyor

  • | ?- [A|B]=[a,b,c,d].

  • A = a

  • B = [b, c, d]

  • yes

  • | ?- [a|Rest]=[a,b,c,d].

  • Rest = [b, c, d]

  • yes

  • | ?- [a,b|Rest]=[a,b,c,d].

  • Rest = [c, d]

  • yes


Liste devam1
Liste (devamı) ulaşılmıştır

  • Liste (boş liste dışında) baş(head) ve kuyruk (tail) kısımlardan oluşuyor

  • [a,b,c]

  • Listenin başı – a

  • Listenin kuyruğu -[b,c]

  • Listenin kuyruğu listedir ve listenin başı öğedir(element).

  • Yalnız bir öğeden oluşan listenin kuyruğu boş öğedir.

  • Örnek : [a] listesinde

    baş a

    kuyruk []


Liste rnekler
Liste-örnekler ulaşılmıştır

  • | ?- [G,H|K]=[a,b,c,d].

  • G = a

  • H = b

  • K = [c, d]

  • Yes

  • | ?- [A|B]=[].

  • No

  • | ?- [A|B]=[x].

  • A = x

  • B = []

  • Yes

  • | ?- [A,B|[]]=[a,b].

  • A = a

  • B = b

  • yes


Liste rnekler1
Liste-örnekler ulaşılmıştır

  • | ?- [A,B,C|D]=[x,y,z,w].

  • A = x

  • B = y

  • C = z

  • D = [w]

  • Yes

  • | ?- [A,B,C|D]=[x,y,z].

  • A = x

  • B = y

  • C = z

  • D = []

  • Yes

  • | ?- [A,B,C|D]=[x,y].

  • no


Liste rnekler2
Liste (örnekler) ulaşılmıştır

  • | ?- X=[a,b,c],L=[d|X].

  • X = [a, b, c]

  • L = [d, a, b, c]

  • yes

  • | ?- X=[a,b,c],L=[d,e|X].

  • X = [a, b, c]

  • L = [d, e, a, b, c]

  • yes

  • | ?- L=[a|[M]].

  • L = [a, M]

  • yes



Mant ksal programlama prolog

YOL programı ulaşılmıştır

bursa

aydın

çanakkale

% Author:

% Date: 04/14/2005

yol(canakkale, izmir).

yol(izmir,aydin).

yol(izmir,bursa).

yol(bursa,izmir).

yol(aydin,antalya).

yol(canakkale,bursa).

uzunyol(X,Y):-yol(X,Y).

uzunyol(X,Y):-uzunyol(X,Z),yol(Z,Y),write(Z),!.

izmir

antalya

?- uzunyol(canak,Y).

Y = izmir ;

Y = bursa ;

izmir

Y = aydin ;

No


Mant ksal programlama prolog

?- yol(izmir,X). ulaşılmıştır

X = aydin ;

X = bursa ;

?- uzunyol(bursa,antalya).

izmiraydin

Yes

uzunyol(bursa,canak).

izmir

No


Mant ksal programlama prolog

Sonsuz döngünün (kendini yineleme) önlenmemesi durumu ulaşılmıştır

?- uzunyol(canak,X).

X = izmir ;

X = bursa ;

izmir

X = aydin ;

izmir

X = bursa ;

bursa

X = izmir ;

izmiraydin

X = antalya ;

izmirbursa

X = izmir ;

bursaizmir

X = aydin ;

izmir

X = bursa ;

izmiraydinizmirbursaizmir

X = aydin ;

izmir

X = bursa ;

bursaizmiraydin

X = antalya ;

izmirbursa

X = izmir ;

izmiraydinizmirbursaizmiraydin

X = antalya


Mant ksal programlama prolog

Yol_araç programı ulaşılmıştır

yol(canak, izmir,tren).

yol(izmir,aydin,araba).

yol(izmir,bursa,yaya).

yol(bursa,izmir,yaya).

yol(aydin,antalya,ucak).

yol(canak,bursa,araba).

uzunyol(X,Y):-yol(X,Y,K),write(K).

uzunyol(X,Y):-uzunyol(X,Z),yol(Z,Y,K),write(Z),write(K),!.

?- uzunyol(canak,antalya).

tren araba tren izmir araba aydin ucak


Rnek listenin eksi de erli elemanlar n n elenmesi
Örnek: Listenin eksi değerli elemanlarının elenmesi ulaşılmıştır

Bu program listedeki eksi değerli elemanları eleyerek yeni liste oluşturuyor

liste=integer*.

eksileri_ele(liste,liste).

eksileri_ele([],[]).

eksileri_ele([Bas|Kuyruk],IslenmisKuyruk):-Bas<0,!,eksileri_ele(Kuyruk,IslenmisKuyruk).

eksileri_ele([Bas|Kuyruk],[Bas|IslenmisKuyruk]):-eksileri_ele(Kuyruk,IslenmisKuyruk).

SWI-Prolog console for thread 2

1 ?- eksileri_ele([2,-5],Yeni).

Yeni = [2].

2 ?- eksileri_ele([2,-45,3,3,4,-5,-45],Yeniliste).

Yeniliste = [2, 3, 3, 4].


Mant ksal programlama prolog

Listenin Elemanlar sayısının hesaplanması ulaşılmıştır

Programın temel çalışma mantığı böyledir: Liste boş [] ise, listedeki eleman sayısı 0’dır. Boş değilse eleman sayısı Kuyruk_uzunluk+1 ile bulunabilir. Liste _uzunluk yüklemi kendisini çağırarak listenin uzunluğunu bulur.

liste=integer*.

liste_uzunluk(liste,integer).

liste_uzunluk([],0).

liste_uzunluk([_|Kuyruk],Eleman_sayisi):- liste_uzunluk(Kuyruk,Kuyruk_uzunluk),

Eleman_sayisi is Kuyruk_uzunluk+1.

SWI-Prolog console for thread 2

1 ?- liste_uzunluk([1,2],Eleman_sayisi).

Eleman_sayisi = 2.

2 ?- liste_uzunluk([1,2,5,7],Eleman_sayisi).

Eleman_sayisi = 4.


Mant ksal programlama prolog

“Patron” programı ulaşılmıştır

amir(ali,ahmet).

amir(ahmet,mehmet).

amir(mehmet,veli).

amir(veli,fatma).

amir(ayse,ahmet).

amir(aysun,mehmet).

patron(X,Y):-amir(X,Y).

patron(X,Y):-amir(X,Z),patron(Z,Y).

?- patron(ali,X).

X = ahmet ;

X = mehmet ;

X = veli ;

X = fatma ;

No


Mant ksal programlama prolog

üç renk sorunu ulaşılmıştır

% Author:

% Date: 04/14/2005

d(red,blue).

d(red,green).

d(green,red).

d(blue,red).

d(blue,green).

colorable(W,NT,SA,Q,NSW,V):-d(W,NT),d(W,SA),d(NT,Q),d(Q,NSW),d(NT,SA),d(NSW,V),

d(NSW,SA),d(V,SA).

?- colorable(W,NT,SA,Q,NSW,V).

W = red

NT = blue

SA = green

Q = red

NSW = blue

V = red


Renk sorunu bir ba ka z m
Üç renk sorunu (bir başka çözüm) ulaşılmıştır

color(A,B,C,D,E):-next(A,B),

next(C,D),

next(A,C),

next(A,D),

next(B,C),

next(B,E),

next(C,E),

next(D,E).

next(X,Y):-selectcolor(X),selectcolor(Y), X \== Y.

selectcolor(red).

selectcolor(green).

selectcolor(blue).

selectcolor(yellow).

SWI-Prolog console for thread 2

1 ?- color(X,Y,Z,K,L).

X = red,

Y = green,

Z = blue,

K = green,

L = red |


Lgin akrabal k program
“İlginç akrabalık” programı ulaşılmıştır

Ahmet,Ayşe adında genç bir kızı olan Fatma ile evlenmiş.

Bu evlilikten Ahmet’in Mehmet adında bir oğlu olmuştur.

Ahmet’in babası Ayşe’yi beğenmiş ve onunla evlenmiştir.


Mant ksal programlama prolog

ulaşılmıştır İlginç akrabalık” programı

Ahmet,Ayşe adında genç bir kızı olan Fatma ile evlenmiş. Bu evlilikten Ahmet’in Mehmet adında bir oğlu olmuştur. Ahmet’in babası Ayşe’yi beğenmiş ve onunla evlenmiştir.

% Author:

% Date: 04/14/2005

koca(ahmet,fatma).

koca(ali,ayse).

anne(fatma,ayse).

anne(fatma,mehmet).

baba(ali,ahmet).

baba(ahmet,mehmet).

anne(X,Y):-koca(Z,X),baba(Z,Y).

baba(X,Y):-koca(X,Z),anne(Z,Y).

dede(X,Y):-baba(X,Z),baba(Z,Y).

dede(X,Y):-baba(X,Z),anne(Z,Y).

kardes(X,Y):-baba(Z,X),baba(Z,Y).

kardes(X,Y):-anne(Z,X),anne(Z,Y).

kardes(X,Y):-baba(Z,X),anne(K,Y),koca(Z,K).

dayi(X,Y):-baba(Z,Y),kardes(X,Z).


Mant ksal programlama prolog

İlginç akrabalık” programı ulaşılmıştır

?- dede(ali,X). /* Ali kimin dedesidir

X = mehmet ;

X = ayse /* Ali, Ayşe’nin dedesi ve kocasıdır

?- dayi(X,Y). /

X = ahmet /*Ahmet, Mehmet’in hem dayısı, hem babasıdır

Y = mehmet ;

X = ahmet /*Ahmet, Ayşe’nin hem dayısı, hem babasıdır

Y = ayse ;



Bulmaca
Bulmaca ulaşılmıştır

  • Ali,Akif ve Ahmet’in bazı özellikleri verilmiştir.Bu özelliklere göre onların tüm özelliklerini(boyunu,arabasının rengini ve ne tür müzik sevdiğini) bulmalı

  • Ortaboylunun arabası sarıdır;

  • Uzunboylu türkü sever;

  • Alinin arabası mavidir;

  • Ahmet uzunboyludur;

  • Kırmızı arabası olan pop sever;

  • Akif rep sever.


Bulmaca program
Bulmaca programı ulaşılmıştır

  • ad(ali).

  • ad(akif).

  • ad(ahmet).

  • boy(uzun).

  • boy(orta).

  • renk(kirmizi).

  • renk(mavi).

  • renk(sari).

  • muzik(rep).

  • muzik(turku).

  • muzik(pop).

  • kisi1(X,Y,Z,K):-ad(X),boy(Y),renk(Z),muzik(K),Y=orta,Z=sari.

  • kisi2(X,Y,Z,K):-ad(X),renk(mavi),boy(Y),muzik(K),X=ali.

  • kisi3(X,Y,Z,K):-ad(ali),renk(mavi),muzik(K),boy(Y).

  • kisi4(X,Y,Z,K):-ad(X),boy(Y),renk(Z),muzik(K),X=ahmet,Y=uzun.

  • kisi(X1,Y1,Z1,K1,X2,Y2,Z2,K2,X3,Y3,Z3,K3):-kisi1(X1,Y1,Z1,K1),kisi2(X2,Y2,Z2,K2),kisi3(X3,Y3,Z3,K3),!.


Prolog da aritmetik i lemlere rnek
Prolog’da aritmetik işlemlere örnek ulaşılmıştır

carpı,toplam=integer.

toplama_yap(toplam,toplam,toplam).

carpı_yap(carpı,carpı,carpı).

toplama_yap(X,Y,Toplam):-Toplam is X+Y.

carpı_yap(X,Y,Carpı):-Carpı is X*Y.

ishlem(X,Y,Son):-toplama_yap(X,Y,Son);carpı_yap(X,Y,Son)

Örnek:

1 ?- ishlem(10,34,X).

X = 44 ;

X = 340.

islem yüklemi 10 ve 34 sayıları üzerindeki işlemlerin sonuçlarını gösteriyor. 44 sayısından sonraki “;” sonraki çözümü göstermek içindir.

eşitlik “is” ile ifade ediliyor


Prolog yorumlay c lar
Prolog yorumlayıcıları ulaşılmıştır

Bu adreslerden prolog yorumlayıcılarını indire bilirsiniz:

http://goanna.cs.rmit.edu.au/~winkoff/wp/

W-Prolog , Java’da çalışan basit yorumlayıcıdır. W_Prolog’un grameri çok sınırlıdır.Çevrimiçi çalıştırıla bilir.

http://www.swi-prolog.org

SWI özgür yazılımdır, bedava indirilip kurula bilir. Geniş imkanlı yorumlayıcıdır.