Prolog Programlama Diline Giriş – 1

0
687
prolog
prolog

Önceki yazımızda Prolog hakkında genel bilgi vermiştik. Artık, Prolog programlama diline giriş – 1 dersinden itibaren programlama kısmına daha çok önem vereceğiz. Basit bir prolog programı genelde fact (gerçek) ve rule ‘dan (kural) oluşur. İlk örneğimizde basit gerçekler ve kurallar yazarak çeşitli sorgular göndereceğiz. Örnekleri en iyi biçimde anlamanız için predicate (yüklem) ve propositional (önermeler) mantığını iyi bilmekte fayda var.

Programlamaya geçmeden Prolog’ta dosya oluşturuken veya programlarken Türkçe karakter kabul etmediği bilmekte ve fact’in gerçek predicate’in yüklem olduğunu bilmekte fayda var .

 

 

 

 

 

 

Şimdi ilk önce basit olarak predicatelere bakalım, 3 adet predicate var burda loves bunlardan birisi her tanımlama’da 2 atom almış yani loves(ahmet,ayşe). bu satır bize ahmet’in ayşe’yi sevdiğini gösteriyor.İlk 4 satırda’da aynı durum mevcut ilk önce basit bir soru soralım prolog’a 

 

 

 

Soru basit, Ozan kimi seviyor?

3. satırda’ki yüklem bize loves (ozan,ayse). dışında ozanın sevdiği birisi olmadığını gösteriyor.

4. satırda ters bir durum mevcut elif ozanı sevdiğinden cevap olarak sadece  “ayse” cevabını alıyoruz.

6.satırda eğer 2 çift yani ahmet ve ayşe birbirlerini seviyorlar ise evlenebilecekleriyle ilgili bir kural var.

If ifadesine bakmadan önce Prolog’ta “,” ve anlamına gelmektedir. Normal bir programlama dilinde ve anlamına gelen && gibi.

Prolog’ta if ifadesi :- ile gösteriliyor.

 

Bu satır bize X ve Y’nin evlenebilme yükleminin gerçekleşebilmesi için loves(X,Y) VE  loves(Y,X).  yüklemlerinin geçerli olması gerek.

 

 

Sonuç

Prolog’a bu soruyu sorduğumuzda true döndürüyor çünkü önceden belirlediğimiz gerçeklerde loves(ahmet,ayse). ve loves(ayse,ahmet). bulunuyordu. ve can_marry’nin gerçekleşmesi için loves(X,Y) , loves(Y,X). gerçekleri bulunmalıydı. Burda X ahmet Y ise ayşe veya tam tersi bir durum gerçekleştiğinden bu sorgu doğru değer döndürüyor.

Bu program için son olarak hates kuralına bakalım.

jealous(X,Y) burda  X kişisi Y kişisini kıskandığı  anlamına geliyor bunun gerçekleşmesi için X kişisinin sevdiği kişinin Y kişisini sevmesi gerekiyor. 8. satır bize bunu anlatıyor.

Burda basit bir sorgu gönderebiliriz Prolog’a;

 

 

 

Burda Ozan kimi kıskanabilir diye bir sorgu gönderiyoruz bize dönen tek cevap ahmet oluyor yukarıda ki gerçeklerden ozan ayşe’yi ayşe ise ahmet’i sevdiğinden ozan ahmet’i kıskanabiliyor.

Diğer yazılarda daha farklı programlar yazıp dilin güçlü yanlarını görmeye çalışacağız.

 

Facebook Yorumları