logo

Programe Prolog

Folosind predicatele încorporate, secvența de obiective sau specificarea unui scop la promptul de sistem ar fi de puțină valoare în sine. Pentru a scrie un program Prolog, în primul rând, utilizatorul trebuie să scrie un program care este scris în limbajul Prolog, să încarce acel program și apoi să specifice o secvență de unul sau mai multe obiective la prompt.

Pentru a crea un program în Prolog, modalitatea simplă este să-l tastați în editorul de text și apoi să-l salvați ca fișier text, cum ar fi prolog1.pl .

Următorul exemplu arată un program simplu al Prolog. Programul conține trei componente, care sunt cunoscute sub numele de clauze. Fiecare clauză se încheie cu un punct.

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

Folosind predicatul încorporat ' consulta' , programul de mai sus poate fi încărcat în sistemul Prolog.

?-consult('prolog1.pl').

Acest lucru arată că fișierul prolog1.pl există, iar programul prolog este corect din punct de vedere sistemic, ceea ce înseamnă că are clauze valide, scopul va reuși și pentru a confirma că programul a fost citit corect, produce una sau mai multe linii de ieșire. de exemplu.,

?-
# 0.00 secunde pentru a consulta prolog1.pl
?-

excepție de aruncare java

Alternativa de „consultare” este „Încărcare”, care va exista în opțiunea de meniu dacă sistemul Prolog are o interfață grafică cu utilizatorul.

Când programul este încărcat, clauza va fi plasată într-o zonă de stocare, iar acea zonă de stocare este cunoscută ca baza de date Prolog. Ca răspuns la solicitarea sistemului, specificați o secvență de obiective și va determina Prolog să caute și să folosească clauzele necesare pentru a evalua obiectivele.

Terminologie

În programul următor, trei rânduri arată clauzele.

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

Folosind punctul, fiecare clauză va fi reziliată. Programele Prolog au o secvență de clauze. Faptele sau regulile sunt descrise de aceste clauze.

Exemplu de fapte este câine (rottweiler) și pisica (munchkin) . Ei înseamnă că ' rottweiler este un câine' și ' munchkin este o pisică'.

Câinele este numit predicat. Câinele conține un singur argument. cuvantul ' rottweiler' cuprinsă între paranteze ( ). Rottweiler este numit atom.

Exemplul de regulă este linia finală a programului.

 animal(A) :- dog(A). 

Caracterul două puncte(:-) va fi citit ca „dacă”. Aici A este o variabilă și reprezintă orice valoare. Într-un mod natural, regula poate fi citită ca „Dacă A este un animal, atunci A este un câine”.

Clauza de mai sus arată că rottweiler este un animal. O astfel de deducere se poate face și prin Prolog:

?- animal(rottweiler).
da

Ca să implice asta munchkin este un animal, nu există dovezi în acest sens.

?- animal (munchkin).
Nu

Mai multă terminologie

Evaluarea unui termen de obiectiv determină dacă este sau nu satisfăcut. De asemenea, înseamnă că obiectivul se evaluează ca fiind adevărat sau fals.

Rețineți că atunci când un utilizator introduce un obiectiv, uneori acesta poate fi interpretat ca o comandă. De exemplu,

?- oprire. „Este folosit pentru a ieși din sistemul Prolog”.

Uneori poate fi privită ca o întrebare precum:

?- animal(rottweiler). & 'Este rottweilerul un animal?'

Următorul program arată un alt exemplu despre animale. Acesta cuprinde opt clauze. Comentariul este afișat de tot textul dintre /* și */.

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

Câinele predicat și pisica predicat au ambele patru clauze. Să presupunem că într-un fișier text „animal.pl”, programul a fost salvat și rezultatul este generat prin încărcarea programului și la promptul de sistem, introducem o secvență de obiective, după cum urmează:

?- consult('animals1.pl'). prompt de sistem
# 0,01 secunde pentru a consulta animale.pl animale.pl încărcat folosind consultarea

?- câine (rottweiler).
da

?- câine (boxer).
Nu

?- câine (A).
A = rottweiler se întrerupe - tasta de întoarcere este apăsată de utilizator

?- câine (B).
B = rottweiler; pauze? prese de utilizator;
B = pudel; pauze? prese de utilizator;
B = buldog; pauze? prese de utilizator;
B = dobermann Fără pauză? Va merge pe linia următoare

?- pisica (A). A = sfinx; pauza? prese de utilizator;
A = Bengal se întrerupe? utilizatorul apasă pe revenire

?- ascultare(caine). Va enumera toate clauzele care definesc predicatul câine

/* câine/1 */

câine (rottweiler).
câine (pudel).
câine (buldog).
câine (dobermann).
da
?-

În acest exemplu, sunt introduse diverse funcții noi ale Prolog. Interogarea este după cum urmează:

?- câine (A).

Înseamnă că găsiți valoarea lui A și va fi numele câinelui. Răspunsul lui Prolog este următorul:

A = rottweiler

Alte posibile răspunsuri ale lui A sunt următoarele, pudel, buldog, dobermann. Va provoca o pauză Prolog și, din această cauză, trebuie să așteptăm ca utilizatorul să apese tasta „întoarcere” înainte de a afișa promptul de sistem ?-.

Putem introduce următoarea interogare după cum urmează:

?- câine (B).

Această interogare este aceeași ca înainte. Interogarea de mai sus înseamnă că „găsiți valoarea lui B și va fi numele unui câine”. Răspunsul lui Prolog este următorul:

B = rottweiler

actrița indiană rani mukerji

Prolog se va întrerupe din nou. De această dată, tasta punct și virgulă (;) este apăsată de utilizator. Acum Prolog va găsi o valoare alternativă a lui B care satisface câinele obiectiv (B). Acesta va răspunde după cum urmează:

B = pudel

Prolog se va întrerupe din nou. Tasta punct și virgulă (;) este apăsată din nou de utilizator. Prolog produce o soluție suplimentară după cum urmează:

deconectați-vă de la contul Google pe Android

B = buldog

Prolog se va întrerupe din nou. Tasta punct și virgulă (;) este apăsată din nou de utilizator. Prolog produce o soluție suplimentară după cum urmează:

B = dobermann

Prolog recunoaște că nu mai există o soluție disponibilă, fără întrerupere, dar promptul de sistem? - trecând imediat la ieșire.

Un nou predicat încorporat este introdus în acest exemplu. Precizarea scopului

?- listare (caine)

În scopul de mai sus, Prolog va enumera toate cele patru clauze care definesc predicatul câine. Acestea vor defini în aceeași ordine în care au fost încărcate în baza de date.

Utilizarea variabilelor în interogare este prezentată de următorul exemplu. Secvența obiectivului este următoarea:

?-pisică (A), câine (B).

Acest lucru ne va oferi toate combinațiile posibile de pisică și câine.

?-pisică (A), câine (B).
A = sfinx,
B = rottweiler;

A = sfinx,
B = pudel;

A = sfinx,
B = buldog;

A = sfinx,
B = dobermann;

etc.

În schimb, succesiunea obiectivelor este următoarea:

?-pisică(A), câine(A).

Acest lucru va oferi toate animalele care sunt atât o pisică, cât și un câine (în baza de date, nu există un astfel de animal). Aici A este „orice valoare” atât în ​​pisica (A) cât și în câine (A), dar ambele trebuie să aibă aceeași valoare.

?-pisica (A), câine (A).
Nu