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