logo

Prolog programok

A beépített predikátumok használatával a célok sorrendje, vagy egy cél megadása a rendszerpromptban önmagában csekély értékű lenne. Prolog program írásához először a felhasználónak egy Prolog nyelven írt programot kell írnia, be kell töltenie azt, majd a promptban meg kell adnia egy vagy több célból álló sorozatot.

Egy program létrehozásához a Prologban az egyszerű módja, hogy beírja a szövegszerkesztőbe, majd elmenti szöveges fájlként, pl. prolog1.pl .

A következő példa a Prolog egyszerű programját mutatja be. A program három összetevőt tartalmaz, amelyeket záradékoknak nevezünk. Minden záradék egy ponttal fejeződik be.

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

A beépített predikátum használata konzultál , a fenti program a Prolog rendszerbe tölthető.

?-consult('prolog1.pl').

Ez azt mutatja, hogy a prolog1.pl fájl létezik, és a prolog program szisztematikusan helyes, ami azt jelenti, hogy érvényes záradékai vannak, a cél sikeres lesz, és a program helyes beolvasásának megerősítésére egy vagy több sort állít elő. például.,

?-
# 0,00 másodperc a prolog1.pl
?-

gépirat foreach ciklus

A 'consult' alternatívája a 'Betöltés', amely a menüben fog megjelenni, ha a Prolog rendszer grafikus felhasználói felülettel rendelkezik.

A program betöltésekor a záradék egy tárolóterületre kerül, és ezt a tárolóterületet Prolog adatbázisnak nevezik. A rendszerkérésre válaszul adjon meg egy célsorozatot, és a Prolog megkeresi és használja a célok értékeléséhez szükséges záradékokat.

Terminológia

A következő programban három sor mutatja a tagmondatokat.

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

A pont használatával minden záradék megszűnik. A Prolog programok záradéksorozattal rendelkeznek. A tényeket vagy szabályokat ezek a záradékok írják le.

Például tények van kutya (rottweiler) és macska (munchkin) . azt jelentik, hogy' rottweiler egy kutya' és' munchkin egy macska'.

A kutyát állítmánynak nevezik. A kutya egy érvet tartalmaz. szó' rottweiler zárójelben( ). A Rottweilert atomnak nevezik.

A szabály példája a program utolsó sora.

 animal(A) :- dog(A). 

A kettőspont(:-) karakter 'if'-ként lesz beolvasva. Itt A egy változó, és bármilyen értéket képvisel. Természetes módon a szabály így olvasható: „Ha A egy állat, akkor A egy kutya”.

A fenti záradék azt mutatja, hogy a rottweiler egy állat. Ilyen levonást a Prolog is végezhet:

?- állat (rottweiler).
Igen

Arra utalni munchkin állat, erre nincs bizonyíték.

?- állat(munchkin).
Nem

További terminológia

A célkifejezés értékelése meghatározza, hogy az teljesül-e vagy sem. Ez azt is jelenti, hogy a célt igazra vagy hamisra értékelik.

Ne feledje, hogy amikor egy felhasználó célt ad meg, az néha parancsként értelmezhető. Például,

?- állj meg. 'A Prolog rendszerből való kilépésre szolgál.'

Néha olyan kérdésnek is tekinthetjük, mint pl.

?- állat (rottweiler). & 'A rottweiler állat?'

A következő program egy másik példát mutat be az állatokról. Nyolc záradékot tartalmaz. A megjegyzést a /* és */ közötti összes szöveg mutatja.

 /* 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.*/ 

Mind a predikátum kutyának, mind a macskának négy záradéka van. Tételezzük fel, hogy egy 'animal.pl' szövegfájlban a program el lett mentve, és a kimenetet a program betöltésével generáltuk, és a rendszerpromptnál a következő célsorozatot adjuk meg:

?- consult('animals1.pl'). Rendszer prompt
# 0,01 másodperc, hogy konzultáljon animals.pl animals.pl segítségével a konzultáció

?- kutya(rottweiler).
Igen

?- kutya(bokszoló).
Nem

?- kutya(A).
A = rottweiler szünetel – a visszatérés gombot megnyomja a felhasználó

?- kutya(B).
B = rottweiler; szünetek ? felhasználói prések ;
B = uszkár; szünetek ? felhasználói prések ;
B = bulldog; szünetek ? felhasználói prések ;
B = dobermann Nincs szünet? A következő sorba kerül

?- macska(A). A = szfinx; szünet ? felhasználói prések;
A = bengáli szünetek? a felhasználó megnyomja a visszatérést

?- hallgat(kutya). Felsorolja az összes olyan záradékot, amely meghatározza a dog predikátumot

/* kutya/1 */

kutya (rottweiler).
kutya (uszkár).
kutya (bulldog).
kutya (dobermann).
Igen
?-

Ebben a példában a Prolog különféle új szolgáltatásait mutatjuk be. A lekérdezés a következő:

?- kutya(A).

Ez azt jelenti, hogy keresse meg az A értékét, és ez lesz a kutya neve. A Prolog válasza a következő:

A = rottweiler

Az A további lehetséges válaszai a következők: uszkár, bulldog, dobermann. Ez a Prolog szünetet okozza, és emiatt meg kell várnunk, hogy a felhasználó megnyomja a 'return' gombot, mielőtt kiadja a ?- rendszerpromptot.

A következő lekérdezést a következőképpen adhatjuk meg:

?- kutya(B).

Ez a lekérdezés ugyanaz, mint az előző. A fenti lekérdezés azt jelenti, hogy „keresse meg a B értékét, és ez egy kutya neve lesz”. A Prolog válasza a következő:

B = rottweiler

sonu nigam

A Prolog ismét szünetel. Ezúttal a pontosvessző (;) billentyűt nyomja meg a felhasználó. Most a Prolog keres egy alternatív B értéket, amely kielégíti a célkutyát (B). A következőképpen válaszol:

B = uszkár

A Prolog ismét szünetel. A pontosvessző (;) billentyűt ismét megnyomja a felhasználó. A Prolog egy további megoldást készít az alábbiak szerint:

B = bulldog

A Prolog ismét szünetel. A pontosvessző (;) billentyűt ismét megnyomja a felhasználó. A Prolog egy további megoldást készít az alábbiak szerint:

B = dobermann

A Prolog felismeri, hogy nincs több elérhető megoldás, ha nem szünetelteti, de a rendszer kéri ?- azonnal a kimenetre lépve.

Ebben a példában egy új beépített predikátum kerül bemutatásra. A cél megadása

?- lista (kutya)

A fenti célban a Prolog mind a négy kitételt felsorolja, amelyek meghatározzák a kutyát. Ugyanabban a sorrendben határozzák meg, ahogyan az adatbázisba betöltötték.

A változók lekérdezésben való használatát a következő példa mutatja be. A célok sorrendje a következő:

?-macska(A),kutya(B).

Ez megadja nekünk a macska és a kutya összes lehetséges kombinációját.

?-macska(A),kutya(B).
A = szfinx,
B = rottweiler;

hány hónap van a Q3-ban

A = szfinx,
B = uszkár;

A = szfinx,
B = bulldog;

A = szfinx,
B = dobermann;

stb.

Ezzel szemben a célok sorrendje a következő:

?-macska(A), kutya(A).

Ez minden olyan állatot megad, amely macska és kutya is (az adatbázisban nincs ilyen állat). Itt A „bármilyen érték” a cat(A) és a kutya(A) esetében is, de mindkettőnek azonos értékkel kell rendelkeznie.

?-macska(A),kutya(A).
Nem