Prolog Programlama Dili

Slides:



Advertisements
Benzer bir sunumlar
Prolog1 M.Fatih Amasyalı
Advertisements

Prolog2 M.Fatih Amasyalı
BİL551 – YAPAY ZEKA Prolog Dili
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
YAPAY ZEKA P ROLOG 1. Prolog’un özellikleri PROgrammig in LOGic Semboller üzerinde çalışma Gerçekler ve kurallardan oluşur Büyük küçük harfe duyarlıdır.
Prof. Dr. Ahmet Arıkan Gazi Ü niversitesi Gazi Eğitim Fakültesi OFMAE Bölümü Matematik Eğitimi Anabilim Dalı.
Mastarlar.
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
PROLOG. Prolog Programlarının özellikleri: - Programming in Logic teriminin kısaltılmasıyla adlandırılmıştır. - Semboller üzerinde çalışma prensibi üzerine.
Hazırlayan: Emrah GURSAN Giri ş & Tarihçe Bilgisayar, 'simgeleri işlemek için kullanılan bir makine‘ olarak tanımlanmaktadır. Görünüşte yalın.
Determinant Bir kare matrisin tersinir olup olmadığına dair bilgi veriyor n- boyutlu uzayda matrisin satırlarından oluşmuş bir paralel kenarın hacmine.
BİLGİSAYAR PROGRAMLAMA MATLAB Yrd.Doç.Dr. Cengiz Tepe.
Öğretim Teknolojileri ve Materyal Geliştirme
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
OLASILIK TEOREMLERİ Permütasyon
9. HAFTA 25 Nisan2016. Fonksiyon M-Dosyaları Fonksiyon dosyaları ilk satırda “function” kelimesi bulunan “.m” uzantısı bulunan dosyalardır. MATLAB içinde.
Bağlama ve Kapsam Kavramları
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Bölüm 2 C Dilinin Temelleri
BİLGİSAYAR PROGRAMLAMA DERSİ
KONULAR BÖLÜM: Kesirler, Ondalık Kesirler, Yüzde
SAYILAR ve RAKAMLAR.
Excel 2007.
Fonksiyonel Programlama
Problem Çözme ve Algoritmalar
Yapay Sinir Ağı Modeli (öğretmenli öğrenme) Çok Katmanlı Algılayıcı
MODEL YETERSİZLİKLERİNİ DÜZELTMEK İÇİN DÖNÜŞÜMLER VE AĞIRLIKLANDIRMA
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H05
DOĞAL SAYILAR TAM SAYILAR
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
TANIMLAYICI İSTATİSTİKLER
Yapay Zeka ve Uzman Sistemler
Yapay Zeka ve Uzman Sistemler
Fluvyal Jeomorfoloji Yrd. Doç. Dr. Levent Uncu.
Kırınım, Girişim ve Müzik
KÜMELER HAZIRLAYAN : SELİM ACAR
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
PROBLEM ÇÖZME VE ALGORİTMALAR
Bilgisayar Mühendisliğine Giriş
3.hafta METODLAR.
PARAMETRİK HİPOTEZ TESTLERİ
Bölüm 7 İfadeler ve atamalar.
Okul Öncesi Dönemde Fen Eğitimi
NİŞANTAŞI ÜNİVERSİTESİ
Arduino Programlama Dili
Bölüm 4: Kontrol Yapıları I (Seçim Yapma)
Komut düzeyi kontrol yapıları
YAPISAL PROGRAMLAMA Hafta-4
DİL GELİŞİMİ KURAMLARI - I
Bilgisayar Bilimi Koşullu Durumlar.
KALITIM VE ÇEVRE I. Kalıtım II. Çevre
Tezin Olası Bölümleri.
Bilgisayar Mühendisliğine Giriş
BENZETIM 3. Ders Prof.Dr.Berna Dengiz Monte Carlo Benzetimi
NİŞANTAŞI ÜNİVERSİTESİ
Fonksiyonlar ve Alt Programlar
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Bilgisayar Bilimi Fonksiyon Yazma.
Değerler ve Değişkenler
DİL GELİŞİMİ KURAMLARI - II
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
İleri Algoritma Analizi
OLASILIK Uygulamada karşılaşılan olayların birçoğu kesin olmayan diğer bir ifadeyle belirsizlik içeren bir yapıya sahiptir. Olasılık kavramı kesin olmayan.
RASTGELE DEĞİŞKENLER Herhangi bir özellik bakımından birimlerin almış oldukları farklı değerlere değişken denir. Rastgele değişken ise tanım aralığında.
Çağdaş Gelişmeler Işığında Ana Dili Öğretimi
Sunum transkripti:

Prolog Programlama Dili Hafta_7 Prolog Programlama Dili

Prolog Programlama Dili Prolog = “PROgramming in LOGic” Prolog mantıksal ve dekleratif (bildirgesel) bir programlama dilidir. Prosedürel programlamada adım adım ne yapılması gerektiği kodlanır. (Ör: C, Pascal, Java vs.) Dekleratif programlamada bir durum tanımlanır. Bu tanıma göre yorumlayıcı ya da derleyici bir çözüm üretir. Prolog kodları bir yorumlayıcı tarafından yorumlanarak sonuç elde edilir; Tamamen mantık tabanlıdır bir dildir. Problem çözümü için mantıklı bir çözüm bulunur ve problem çözülür.

Prolog Programlama Dili Problemlerin çözümünü tanımlama yerine çıkarım yapılır. Doğal dille düşünülen şeylerin kodlanması kolaydır. Gerçekler ve kurallardan oluşur. Büyük - küçük harfe duyarlıdır. Sabitler için Küçük harfler, Değişkenler için Büyük harfler kullanılır. (değişkenler daima büyük harf veya bir ‘_’ ile başlar.) Program çıktıları çok sadedir.

Prolog Programlama Dili PROLOG Programlama Dilinde Olmayan Özellikler: Aşağıdaki maddeler Prosedürel Programlama Dillerinde bu yapılar vardır aksine PROLOG' da yoktur ve bu yapıların olmaması işleri zorlaştırmaz. For döngüleri Repeat While döngüleri IF..THEN yapısı Go to komutu Diziler öz yinelemeli fonksiyonlarla yukarıdakiler sağlanabilir

Prolog Programlama Dili Prolog, program satırları içinde sorulan bir soruyu veya hipotezi doğrulamak için, doğruluğu önceden bilinen ve veri olarak yüklenmiş olan bilgi kümesini sorgulayıp hipotezin doğruluğu hakkında karar vermeye çalışır. PROLOG Gerçekler (Facts), Kurallar (Rules) ve Sorgular (Queries) olmak üzere 3 yapıdan oluşur. Gerçekler, koşulsuz olarak doğru olan "şeyleri" tanımlar. Kurallar, koşullara bağlı olarak doğru olan "şeyleri" tanımlar. Sorgular, kullanıcının veri tabanını sorgulamak için kurduğu cümlelerdir.

Prolog Programlama Dili Prolog ile program yazarken, ilk önce nesneler ve bu nesneler arasındaki ilişkiler tanımlanır. Prolog mantığında bir ilişki, bu ilişkinin ismi ve bunu takiben parantez içinde yazılan nesne veya nesnelerden oluşan basit ifadelerle özetlenir. ‘Ahmet gülleri sever’ cümlesindeki Ahmet ve gül kelimeleri nesne, ‘sevmek’ ise bu iki nesne arasındaki ilişkidir. Bu ilişkinin ne zaman doğru olacağını belirleyen ifadeye ise Kural denir. Konuşma Dili Prolog’daki Karşılığı Ahmet bir insandır. insan(Ahmet). Gül kırmızıdır. kirmizi(gul). Ahmet, gülü kırmızı ise sever. sever(Ahmet, gul) if kirmizi(gul).

Prolog Programlama Dili Yaşar Emel’i sever. Emel Cemal’i sever. Yaşar kedileri sever. Prolog’daki karşılıkları: sever(yasar, emel). sever(emel, cemal). sever(yasar, kediler). sever : ilişkinin ismi yasar ve emel : ilişkinin nesneleri (atomlar) . : sonlandırıcı

Prolog Programlama Dili Aile Ağacı parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat,jim).

Prolog Programlama Dili Yaşar, Emel’in sevdiği her şeyi sever. Haluk kırmızı olan her şeyi sever. Prolog’daki karşılıkları: sever(yasar, hersey):-sever(emel, hersey). sever(haluk, hersey):- kirmizi(hersey). :- sembolü, prosedürel dillerdeki if(eğer) anlamında olup, bir kuralın iki parçasını birleştirir.

Prolog Programlama Dili Prolog Sorguları: Prolog’a bazı gerçekler tanıtıldıktan sonra, artık bu gerçeklerle ilgili sorular sormaya başlanabilir. ?- iliski(a,b). a ve b arasında iliski isminde bir ilişki var mı? cevap YES yada NO ?- iliski(A,b). b ile iliski adlı ilişkiyi doğrulayan A lar nelerdir? cevap varsa A lar yoksa NO A: değişken a, b: atom (sabit) (değişkenler daima büyük harf veya bir ‘_’ ile başlar.)

Prolog Programlama Dili İlişkileri sorgulamak Bob, Pat’in ebeveyni mi? ?- parent(bob, pat). yes Tom, Ben’in ebeveyni mi? : ?- parent(tom, ben). no

Prolog Programlama Dili İlişkileri sorgulamak Liz’in ebeveyni kimdir? ?- ebeveyn(Kim, liz). Prolog’un cevabı : Kim = tom Bob’un çocukları kimlerdir? ?- ebeveyn(bob, Cocuk). Cocuk = ann ; Cocuk = pat ; no

Prolog Programlama Dili İlişkileri sorgulamak Kimler kimlerin çocuğudur? ?- ebeveyn (Ebeveyn, Cocuk). Ebeveyn = pam Cocuk = bob; Ebeveyn = tom Cocuk = liz; … Çözümler listesini yarıda kesmek için enter Devam ettirmek için ;

Prolog Programlama Dili İlişkileri sorgulamak Jim’in büyük ebeveyni (grandparent) kimdir? Bilgi tabanında büyük ebeveyn diye bir ilişki tanımlı değil. Büyük ebeveyn ilişkisi iki ebeveyn ilişkisinin «ve» lenmesiyle elde edilebilir. ?- parent(Y, jim), parent(X, Y). X=bob Y=pat

Prolog Programlama Dili İlişkileri sorgulamak Torun ilişkisi de benzer biçimde tanımlanabilir. tom, X’in ebeveyni, X, Y’nin ebeveyni ise Y, tom’un torunudur. ?- parent(tom,X), parent(X, Y). X=bob Y=ann; Y=pat; no

Prolog Programlama Dili Çocuk ilişkisi parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat, jim). offspring(bob, pam). offspring(bob, tom). offspring(liz, tom). offspring(ann, bob). offspring(pat, bob). offspring(jim, pat).

Prolog Programlama Dili Kurallar Kurallar iki parçadan oluşur: head : böyledir (sonuç, çıkarım) body : eğer

Prolog Programlama Dili Kuralların Çalışması Veritabanı: parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). offspring(Y, X) :- parent(X, Y). Sorgu: offspring(liz, tom). Çalışma Mekanizması: offsprings ilişkisi için gerçek ara Yok => offsprings ilişkisi için kural varsa uygula Kuralda X tom’la , Y liz’le eşleştirilerek kuralın bir gerçeklemesi bulunur: offspring(liz,tom) :- parent(tom,liz). parents(tom,liz). gerçeği aranır. Bulunduğunda kuralın eğer kısmı doğrulandığından böyledir kısmı da doğrulanmış olur ve prolog “yes” cevabını verir

Prolog Programlama Dili Örnek: Anne ilişkisi Tüm X ve Y ler için, X, Y’nin annesidir Eğer X, Y’nin ebeveyni ise ve X kadınsa. İlişkinin Prolog’da ifadesi : mother(X, Y) :- parent(X, Y), female(X).

Prolog Programlama Dili Örnek: Kız kardeş ilişkisi Tüm X ve Y ler için, X, Y’nin kız kardeşidir Eğer X ve Y aynı ebeveyne sahip ise ve X bayansa İlişkinin Prolog’da ifadesi : sister(X, Y) :- parent(Z, X), parent(Z, Y), female(X). Sorgu: sister(X,pat).

Prolog Programlama Dili Örnek: Hala ilişkisi Tüm X ve Y ler için, X, Y’nin halasıdır Eğer Z, Y’nin ebeveyni ise ve Z, erkek ise ve X, Z’in kız kardeşi ise İlişkinin Prolog’da ifadesi : sister(X, Y) :- parent(Z, X), parent(Z, Y), female(X). hala(X,Y) :- parent(Z,Y), male(Z), sister(X,Z).

Prolog Programlama Dili Direkt Ata İlişkisi Tüm X ve Z ler için, X, Z’nin atasıdır eğer X, Z’nin ebeveyni ise Prolog ifadesi: predecessor(X, Z) :- parent(X, Z).

Dolaylı (Endirekt) Ata İlişkisi Prolog Programlama Dili Dolaylı (Endirekt) Ata İlişkisi

Prolog Programlama Dili Dolaylı Ata Programı predecessor(X,Z) :- parent(X,Z). predecessor(X,Z) :- parent(X,Y), parent(Y,Z). predecessor(X,Z) :- parent(X,Y1), parent(Y1,Y2), parent(Y2,Z). parent(Y2,Y3), parent(Y3, Z). … Problemleri: Uzun … Büyük büyük büyük … Ataları bulamaz.

Prolog Programlama Dili Yeni Ata Programı Çözüm: öz yineleme kullanmak Tüm X ve Z ler için, X, Z’nin Ata’sıdır Eğer Y diye bir kişi varsa ve (1) X, Y’nin ebeveyni ise ve (2) Y, Z’nin Ata’sı ise Prolog ifadesi: predecessor(X, Z) :- parent(X, Y), predecessor(Y, Z). 25

Prolog Programlama Dili Sonuç Ata İlişkisi parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat,jim). predecessor(X, Z) :- parent(X, Z). predecessor(X, Z) :- parent(X, Y),predecessor(Y, Z). HEDEF / SORGU ?-predecessor(tom, pat). PR1 PR2 26

Prolog Programlama Dili Doğal Dil vs. Prolog Bütün çocuklar kısadır. kisa(X):-cocuk(X). Bütün erkek çocuklar arabaları sever. sever(X,araba):-erkek(X),cocuk(X). Bütün çocukların annesi vardır. var(X,anne):-cocuk(X). Sebzeyi hiçbir çocuk sevmez. sevmez(X,Y):-sebze(Y), cocuk(X). Çocuğunu döven öğretmeni hiçbir anne sevmez. sevmez(X,Y):-anne(X,Z),ogretmen(Y,Z),dover(Y,Z).

Prolog Programlama Dili Doğal Dil vs. Prolog Bütün insanlar canlıdır. Ahmet insandır. Dolayısıyla Ahmet canlıdır. canli(X):-insan(X). insan(ahmet). ?-canli(ahmet). Ahmet 20 metre zıplayabilir. Birisi X metreye zıplayabilirse daha azlarına da zıplayabilir. ziplar(ahmet,20). ziplar(X,Y):-ziplar(X,Z),Z>Y. ?-ziplar(ahmet,15). Kendi kalesine gol atan futbolcuyu kendi takımının taraftarları sevmez, karşı takımınkiler sever. sevmez(Y,X):- futbolcu(X), taraftar(Y), aynitakim(X,Y), kendikalesinegolatar(X). sever(Y,X):- futbolcu(X), taraftar(Y), karsitakim(X,Y), kendikalesinegolatar(X).

Prolog Programlama Dili SWI Prolog’la çalışmak SWI prolog kurulur. http://www.swi-prolog.org Gerçekler ve kurallar .pl uzantılı bir dosyaya kaydedilir.

Prolog Programlama Dili SWI Prolog’la çalışmak .pl uzantılı dosyanın üzerine çift tıklanarak

Prolog Programlama Dili Yada SWI prolog açıldıktan sonra file menüsünden dosya ‘consult’ edilerek

Prolog Programlama Dili Gerçek ve kurallar Prolog’a yüklenir. Artık sorgular komut satırından girilerek çalıştırılabilir.

Prolog Programlama Dili Prolog’da Veri Türleri Prolog bir veri türünü onun şeklinden tanır. Atom Sayı Değişken Prolog herhangi bir veri tanımına ihtiyaç duymaz. Sabitler gibi düşünülebilir

Prolog Programlama Dili Atomlar Atom’lar aşağıdakilerden oluşan string’lerdir. Büyük harf A, B, …, Z Küçük harf a, b, …, z Rakam 0, 1, …, 9 Özel karakterler + - * / < > = : . & _ ~

Prolog Programlama Dili Atomlar Atom’lar 3 farklı şekilde oluşturulabilir: Harf, rakam ve altçizgi (‘_’) den oluşan küçük harfle başlayan string’ler ile: anna nil x25 x_25AB x_ x___y alpha_beta_procedure sarah_jones

Prolog Programlama Dili Atomlar Özel karakterlerden oluşan string’ler ile: <---> ======> … .:. ::= Özel anlamı olan string’ler kullanılmamalı: :-

Prolog Programlama Dili Atomlar Tek tırnak (’) arasına alınan karakterler ile: ‘Tom’ ‘South_America’ ‘Sarah Jones’ Büyük harfle başlayan Atom’lar oluşturmak için kullanılabilir. Değişkenlerden bu şekilde ayrılabilirler.

Prolog Programlama Dili Sayılar Prolog’da iki tür sayı kullanılabilir Tamsayılar (integer) 1 0 -97 1313 En büyük ve en küçük sayı prolog derleyicisine bağlıdır. Ondalıklı sayılar (real) 3.14 100.2 -0.0035 Genelde tamsayılar kullanılır. Ondalıklı sayılar pek fazla kullanılmaz => Çünkü: topla(X,Y,Z):-Z is X+Y. ?- topla(2,0.3,C). C = 2.3 ; No ?- topla(200,0.0003,C). C = 200.0 ;

Prolog Programlama Dili Değişkenler Harf, rakam ve altçizgi (‘_’) den oluşan büyük harfle ya da altçizgi ile başlayan string’lerdir: X Result Object2 Participant_list ShoppingList _x23 _23

Prolog Programlama Dili Değişkenler Anonim değişken: isimlendirilmemiş değişkenlerdir. Sadece altçizgi ile ifade edilirler: hasachild(X) :- parent(X, Y). hasachild(X) :- parent(X, _). Her altçizgi karakteri yeni bir anonim değişkeni ifade eder. somebody_has_a_child :- parent(_, _). %r1 X Y Anonim değişkenlerin değerleri çıkış olarak verilmez. ?- parent(ali,Y). : ali’in çocuğu var mı? Ve varsa çocuklarının isimleri nedir? ?- parent(ali,_). : sadece ali’in çocuğu var mı?

Prolog Programlama Dili Değişken ve Atom’ların Faaliyet Alanları (Scope) Bir değişkenin değeri bir cümlecik içinde sabittir Bir atomun değeri tüm program boyunca sabittir

Prolog Programlama Dili Aşırı Yükleme Aynı isimde farklı ilişkiler olabilir: point(1, 1), point(1, 1, 1), point(1, 1, 1, 1), … +(X,Y,Z):-Z is X+Y. +(X,Y,Z,F):-F is X+Y+Z. ?- +(200,0.03,7.2,G). G = 207.23 ; No ?- +(200,0.03,G). G = 200.03 ;

Prolog Programlama Dili Ve , veya ; P :- Q; R. P doğrudur Eğer Q doğruysa veya R doğruysa Aynı ifadeyi aşağıdaki şekilde de yazabiliriz: P :- Q. P :- R.

Prolog Programlama Dili Ve , veya ; Ve, veya’dan daha yüksek önceliklidir. Aşağıdaki iki ifade aynı sonucu verir: P :- Q, R; S, T, U. P :- (Q, R); (S, T, U). Aynı ifadeyi aşağıdaki şekilde de yazabiliriz: P :- Q, R. P :- S, T, U.

Prolog Programlama Dili Hedefleri Birleştirme araba(chrysler,130000,3,kirmizi,12000). araba(ford,90000,4,gri,25000). araba(ferrari,30000,5,siyah,30000). kamyon(mercedes,10000,2,mavi,20000). kamyon(ford,50000,8,sari,28000). kamyon(volvo,35000,2,siyah,35000). arac(Marka,Kilometresi,Yas,Renk,Fiyat):- araba(Marka,Kilometresi,Yas,Renk,Fiyat); kamyon(Marka,Kilometresi,Yas,Renk,Fiyat). 45

Prolog Programlama Dili Fiyatı 25000’den az olan araçlar: ?- arac(Marka,KiloMetre,Yasi,Renk,Fiyat), Fiyat<25000. Marka = chrysler KiloMetre = 130000 Yasi = 3 Renk = kirmizi Fiyat = 12000 ; Marka = mercedes KiloMetre = 10000 Yasi = 2 Renk = mavi Fiyat = 20000 ; No 46

Prolog Programlama Dili Hedef Birleştirme Hasta mı? tahlil(ahmet,tahlil1,90). tahlil(ahmet,tahlil2,25). tahlil(ahmet,tahlil3,10). yuksektansiyon(X) :- (tahlil(X,tahlil1,Y),Y>100); (tahlil(X,tahlil2,Z),Z<30). kalphastasi(X) :- yuksektansiyon(X), tahlil(X,tahlil3,Q), Q<20. ?-kalphastasi(ahmet).

Turnuva oyuncu(ahmet,10). oyuncu(mehmet,12). oyuncu(ali,10). ?- oyuncu(B,10),oyuncu(B2,10),B\==B2. B = ahmet B2 = ali ; B2 = huseyin ; B = ali B2 = ahmet ; B = huseyin No oyuncu(ahmet,10). oyuncu(mehmet,12). oyuncu(ali,10). oyuncu(huseyin,10). 10 yaşındaki çocuklar arasında oynanabilecek maçlar nelerdir? Sayı ve string’ler arası Karşılaştırma : == eşit \== eşit değil

Prolog Programlama Dili Cümleciklerin ve Kuralların Sıralaması Kurallar ve cümleciklerin sırası değiştirilebilir Örneğin, Ata ilişkisi iki kuraldan oluşmakta ve ilişkilerden biri iki cümlecikten oluşmaktadır: predecessor(X, Y) :- parent(X, Y). predecessor(X, Z) :- parent(X, Y), predecessor(Y, Z). Olası versiyonlar: Cümleciklerin yerini değiştirerek, Kuralların yerini değiştirerek.

Prolog Programlama Dili Cümleciklerin ve Kuralların Sıralaması Orijinal Versiyon pred1(X, Z) :- parent(X, Z). pred1(X, Z) :- parent(X, Y), pred1( Y, Z). Versiyon a: Kuralların yerini değiştir pred2(X, Z) :- parent(X, Y), pred2( Y, Z). pred2(X, Z) :- parent(X, Z).

Prolog Programlama Dili Cümleciklerin ve Kuralların Sıralaması Versiyon b: İkinci kuraldaki cümleciklerin yerini değiştir pred3(X, Z) :- parent(X, Z). pred3(X, Z) :- pred3( X, Y), parent(Y, Z). Versiyon c: Hem kuralların hem cümleciklerin yerini değiştir pred4(X, Z) :- pred4( X, Y), parent(Y, Z). pred4(X, Z) :- parent(X, Z).

Prolog Programlama Dili 4 versiyonun verdiği cevaplar ?- pred1(tom, pat). yes ?- pred2(tom, pat). Yes ?- pred3(tom, pat). ?- pred4(tom, pat). Stack overflow!!!

Prolog Programlama Dili Aritmetik & Karşılaştırma +, -, *, /, mod is: hesaplamaya zorlamak (force) için: X = 1 + 2. X=1+2 X is 1 + 2. X=3 Karşılaştırma operatörleri X > Y büyük X < Y küçük X >= Y büyük veya eşit X =< Y küçük veya eşit X =:= Y eşit mi? X =\= Y farklı mı? 53

Prolog Programlama Dili X’den 1’e yaz yazdir(M):- not(M=0), write(M), write(' '), K is M-1, yazdir(K). yazdir(8). 8 7 6 5 4 3 2 1 No 54

Prolog Programlama Dili X kere h yaz hyaz(X):- not(X=0), Y is X-1, put(104), hyaz(Y). ?- hyaz(3). hhh No 55

Prolog Programlama Dili guc(X,Y,Z)  XY=Z guc(X,1,X). guc(X,Y,Z):- Y>1, G is Y-1, guc(X,G,T), Z is X*T. ?- guc(3,4,G). G = 81 ; No

Prolog Programlama Dili fact(N,F)  N!=F fact(0,1). fact(N,F) :- N>0, G is N-1, fact(G,T), F is N * T. ?- fact(5,E). E = 120 ; No

Prolog Programlama Dili topla(X,Y)  Y = 1+2+...+X topla(1,1). topla(N,F) :- N>1, G is N-1, topla(G,T), F is N + T.