logo

Giriş Programları

Yerleşik yüklemleri, hedef dizisini kullanmak veya sistem isteminde bir hedef belirlemek kendi başına çok az değere sahip olacaktır. Bir Prolog programı yazmak için öncelikle kullanıcının Prolog dilinde yazılmış bir program yazması, bu programı yüklemesi ve ardından komut isteminde bir veya daha fazla hedef dizisini belirtmesi gerekir.

Prolog'da bir program oluşturmanın basit yolu, onu metin düzenleyicisine yazmak ve ardından aşağıdaki gibi bir metin dosyası olarak kaydetmektir. prolog1.pl .

Aşağıdaki örnekte Prolog'un basit bir programı gösterilmektedir. Program, cümlecikler olarak bilinen üç bileşen içerir. Her cümle nokta kullanılarak sonlandırılır.

 dog(rottweiler). cat(munchkin). animal(A) :- cat(A). 

Yerleşik yüklemi kullanma ' danışmak , yukarıdaki program Prolog sistemine yüklenebilir.

?-consult('prolog1.pl').

Bu, prolog1.pl dosyasının var olduğunu ve prolog programının sistematik olarak doğru olduğunu gösterir; bu, geçerli cümlelere sahip olduğu, hedefin başarılı olacağı ve programın doğru şekilde okunduğunu doğrulamak için bir veya daha fazla satır çıktı ürettiği anlamına gelir. Örneğin.,

?-
# prolog1.pl'e başvurmak için 0,00 saniye
?-

java veri yapıları

'Consult'un alternatifi 'Yükle'dir ve eğer Prolog sistemi grafiksel bir kullanıcı arayüzüne sahipse menü seçeneğinde bulunacaktır.

Program yüklendiğinde, cümle bir depolama alanına yerleştirilecektir ve bu depolama alanı Prolog veritabanı olarak bilinir. Sistem istemine yanıt olarak bir hedef dizisi belirtin; bu, Prolog'un hedefleri değerlendirmek için gerekli cümleleri aramasına ve kullanmasına neden olacaktır.

Terminoloji

Aşağıdaki programda üç satır cümleleri göstermektedir.

 dog(rottweiler). cat(munchkin). animal(A) :- cat(A). 

Nokta işareti kullanıldığında her madde sonlandırılacaktır. Prolog programlarında bir dizi cümle bulunur. Gerçekler veya kurallar bu maddelerde açıklanmaktadır.

Nın bir örneği gerçekler dır-dir köpek(rottweiler) Ve kedi(munchkin) . Şunu demek istiyorlar rottweiler bir köpektir' ve ' ufaklık bir kedi'.

Köpeğe yüklem denir. Köpek bir argüman içeriyor. Kelime ' Rottweiler' parantez içine alınmış ( ). Rottweiler'a atom denir.

Kural örneği programın son satırıdır.

 animal(A) :- dog(A). 

İki nokta üst üste(:-) karakteri 'if' olarak okunacaktır. Burada A bir değişkendir ve herhangi bir değeri temsil eder. Doğal olarak kural şu ​​şekilde okunabilir: 'Eğer A bir hayvansa, o zaman A bir köpektir'.

Yukarıdaki madde gösteriyor ki rottweiler bir hayvandır. Böyle bir kesinti Prolog tarafından da yapılabilir:

?- hayvan(rottweiler).
Evet

Bunu ima etmek ufaklık bir hayvandır, buna dair hiçbir kanıt yoktur.

?- hayvan(munchkin).
HAYIR

Daha Fazla Terminoloji

Bir hedef teriminin değerlendirilmesi, bu terimin karşılanıp karşılanmadığını belirler. Bu aynı zamanda hedefin doğru veya yanlış olarak değerlendirildiği anlamına da gelir.

Bir kullanıcı bir hedef girdiğinde bunun bazen bir komut olarak yorumlanabileceğini unutmayın. Örneğin,

?-dur. 'Prolog sisteminden çıkmak için kullanılır.'

Bazen şöyle bir soru olarak kabul edilebilir:

?- hayvan(rottweiler). & 'Rottweiler bir hayvan mıdır?'

Aşağıdaki program hayvanlarla ilgili başka bir örneği göstermektedir. Sekiz maddeden oluşuyor. Yorum, /* ile */ arasındaki metnin tamamında gösterilir.

 /* Another Program of Animal */ Dog(rottweiler). cat(sphynx). dog(poodle). dog(bulldog). cat(bengal). dog(dobermann). cat(himalayan). cat(singapura). /* This Prolog program consists of various clauses. It is always terminated using the full stop.*/ 

Yüklem köpeği ve yüklem kedinin her ikisinin de dört cümleciği vardır. Programın 'animal.pl' metin dosyasına kaydedildiğini ve programın yüklenmesiyle çıktının oluşturulduğunu ve sistem komut isteminde aşağıdaki gibi bir hedef dizisi girdiğimizi varsayalım:

?- danışın('animals1.pl'). Sistem istemi
# 0,01 saniyede, hayvanlar.pl'e danışmak için hayvanlar.pl danışma kullanılarak yüklendi

?- köpek(rottweiler).
Evet

?- köpek(boksör).
HAYIR

?-köpek(A).
A = rottweiler duraklatılır - kullanıcı tarafından geri dönüş tuşuna basılır

?-köpek(B).
B = rottweiler; duraklamalar mı? kullanıcı basar;
B = kaniş; duraklamalar mı? kullanıcı basar;
B = buldog; duraklamalar mı? kullanıcı basar;
B = dobermann Duraklama yok mu? Bir sonraki satıra geçecek

?- kedi(A). A = sfenks; Duraklat ? kullanıcı basar;
A = Bengal duraklıyor mu? kullanıcı geri dön tuşuna basar

?- dinliyor(köpek). Köpek yüklemini tanımlayan tüm cümleleri listeleyecektir.

/* köpek/1 */

köpek(rottweiler).
köpek(kaniş).
köpek(buldog).
köpek(dobermann).
Evet
?-

Bu örnekte Prolog'un çeşitli yeni özellikleri tanıtılmaktadır. Sorgu aşağıdaki gibidir:

?-köpek(A).

Bu, A'nın değerini bulduğunuzda köpeğin adı olacağı anlamına gelir. Prolog'un cevabı şu şekilde:

A = rottweiler

A'nın diğer olası cevapları şu şekildedir; kaniş, bulldog, dobermann. Bu, Prolog'un duraklamasına neden olacaktır ve bu nedenle, sistem istemini ?- vermeden önce kullanıcının 'return' tuşuna basmasını beklememiz gerekir.

Bir sonraki sorguyu şu şekilde girebiliriz:

?-köpek(B).

Bu sorgu öncekiyle aynı. Yukarıdaki sorgu 'B'nin değerini bulun, bu bir köpeğin adı olacaktır' anlamına gelir. Prolog'un cevabı şu şekilde:

B = rottweiler

java concat dizesi

Prolog tekrar duraklayacak. Bu sefer kullanıcı tarafından noktalı virgül (;) tuşuna basılır. Şimdi Prolog, hedef köpek(B)'yi karşılayan alternatif bir B değeri bulacaktır. Şöyle cevap verecektir:

B = kaniş

Prolog tekrar duraklayacak. Kullanıcı tarafından tekrar noktalı virgül (;) tuşuna basılır. Prolog aşağıdaki gibi başka bir çözüm üretir:

B = buldog

Prolog tekrar duraklayacak. Kullanıcı tarafından tekrar noktalı virgül (;) tuşuna basılır. Prolog aşağıdaki gibi başka bir çözüm üretir:

B = dobermann

Prolog, duraklamadan başka kullanılabilir çözüm olmadığını anlar, ancak sistem istemi ?- hemen çıktıya geçerek.

Bu örnekte yeni bir yerleşik yüklem tanıtılmıştır. Hedefin belirtilmesi

?- listeleme(köpek)

Yukarıdaki amaçta Prolog, köpek yüklemini tanımlayan dört cümlenin tümünü listeleyecektir. Veritabanına yüklendikleri sırayla tanımlanacaklardır.

Değişkenlerin sorguda kullanımı aşağıdaki örnekte gösterilmiştir. Gol sırası şu şekildedir:

kat timpf ağırlığı

?-kedi(A),köpek(B).

Bu bize bir kedi ve bir köpeğin olası tüm kombinasyonlarını verecektir.

?-kedi(A),köpek(B).
A = sfenks,
B = rottweiler;

A = sfenks,
B = kaniş;

A = sfenks,
B = buldog;

A = sfenks,
B = dobermann;

vesaire.

Buna karşılık, hedef sırası aşağıdaki gibidir:

?-kedi(A), köpek(A).

Bu, hem kedi hem de köpek olan tüm hayvanları verecektir (veritabanında böyle bir hayvan yoktur). Burada A, hem kedi(A) hem de köpek(A)'da 'herhangi bir değer'dir, ancak her ikisinin de aynı değere sahip olması gerekir.

?-kedi(A),köpek(A).
HAYIR