Documente Academic
Documente Profesional
Documente Cultură
Lab 2
Lab 2
Laborator 2
VISUAL PROLOG
mediu de programare complet, bazat pe limbajul de programare Prolog contine tot ce este necesar pentru implementarea aplicatiilor: mediu grafic de dezvoltare, compilator, linkeditor si depanator include o biblioteca ce ofera acces la API, punand la dispozitia programatorului instrumente pentru: interfata utilizator grafica, baze de date ODBC/OCI, precum si Internet (socket, ftp, http, cgi etc.).
ENTITATILE
Un program Prolog contine urmatoarele entitati:
fapte despre obiecte si relatiile existente intre aceste obiecte reguli despre obiecte si relatiile dintre ele, care permit deducerea (inferarea) de noi fapte pe baza celor cunoscute intrebari (interogari), numite si scopuri, despre obiecte si relatiile dintre ele, la care programul raspunde pe baza faptelor si regulilor existente
FAPTE
sunt predicate de ordinul intai de aritate n considerate adevarate aritate = nr de argumente stabilesc relatii intre obiectele universului problemei faptele sunt relatii sau proprietti pe care programatorul le cunoaste ca fiind adevrate.
REGULI
O regula Prolog exprima un fapt care depinde de alte fapte si este de forma: S :- S1, S2, Sn. Si, i = 1,n si S au forma faptelor Prolog S, care defineste regula, se numeste antet de regula S1, S2, Sn formeaza corpul regulii si reprezinta conjunctia de scopuri care trebuie satisfacute pentru ca antetul regulii sa fie satisfacut :- = if , = and ; = or
REGULI
Cu un formalism asemanator celui de la fapte putem sa extindem stadiul relatiilor si sa stabilim reguli dupa cum urmeaza:
X este bunicul lui Z, daca X este tatal lui Y si Y este tatal lui Z.
BAZA DE CUNOSTINTE
SCOPURI
Obtinerea consecintelor sau a rezultatului unui program Prolog se face prin fixarea unor scopuri care pot fi adevarate sau false, in functie de continutul bazei de cunostinte Prolog. Scopurile sunt predicate pentru care se doreste aflarea valorii de adevar in contextul faptelor existente in baza de cunostinte. Scopurile pot fi vazute ca intrebari, deci rezultatul unui program Prolog este raspunsul la o intrebare (sau la o conjunctie de intrebari). Acest raspuns poate fi afirmativ, yes, sau negativ, no. In cazul unui raspuns afirmativ la o intrebare, poate furniza si alte informatii din baza de cunostinte.
VARIABILE
argumentele faptelor si intrebarilor pot fi: obiecte particulare, numite si constante sau atomi simbolici obiecte generice numite variabile numele argumentelor variabile incepe cu litera mare (sau cu liniuta de subliniere) constantele simbolice incepe cu litera mica variabilele Prolog sunt locale => daca doua clauze contin
fiecare cate o variabila numita X, atunci vor exista, de fapt, doua variabile distincte X
variabila anonima _ se poate utiliza in locul oricarei alte variabile. Diferena dintre o variabila anonima si o variabila obisnuita este aceea ca o variabila anonima nu va primi niciodata valoare.
CLAUSES
Clauses contine fapte si reguli argumentele unei clauze sunt in ordine bine definita incepe cu cuvantul cheie CLAUSES atat faptele, cat si regulile trebuie sa se termine cu punct (.) "Popescu lucreaza la biroul aprovizionare"
lucreaza('Popescu', biroul_aprovizionare).
PREDICATES
contine fiecare predicat ce apare citat in clauze si precizeaza tipul argumentelor este un fel de catalog al tuturor predicatelor utilizate (ca un fel de sectiune a declaratiilor de functii in C) Fiecare predicat apelat in clauze trebuie sa respecte numele si argumentele unui predicat descris in predicates! Exemplu:
masc(symbol)
DOMAINS
In sectiunea domains se poate realiza redenumirea unor domenii standard pentru a le da o semantica mai precisa, precum si declararea unor noi structuri de date. Exemple:
DATABASES
reprezinta o sectiune speciala pentru declararea unor fapte care se doresc a fi o parte a unei baze de date dinamice
uneori este necesara actualizarea faptelor din program (modificare, stergere, adaugare) in timpul rularii programului -> faptele constituie o baza de date dinamica sau interna.
GOAL
Dupa ce s-au furnizat cateva fapte i reguli unui program Prolog, acestuia i se pot pune intrebari, numite interogari. Acestea sunt plasate in sectiunea goal Prolog va incerca intotdeauna sa raspunda la o interogare prin cercetarea faptelor cautand de la inceput spre sfarsit.
GOAL
Este Ferdinand tatal Elizabetei? Cine este tatal lui Mihai? Este Ferdinand bunicul lui Mihai?
bunic(Mihai, Ferdinand).
CONSTANTS
permite declararea unor constante (constante simbolice). sectiunea poate sa apara oriunde in program, cu conditia sa fie declarata constanta inainte de utilizarea ei. constanta e vizibila in toate clauzele, dar valoarea constantei nu se poate modifica in timpul executiei programului. Forma generala:
CAUTAREA SOLUTIEI
Sistemul mentine un scop curent, care este mereu tratat de la stanga la dreapta. Exemplu: bunic(X, Y), mama(Y, Z).
Sistemul va incerca sa rezolve subscopul bunic(X, Y) inainte sa rezolve mama(Y, Z). Daca primul subscop nu poate fi rezolvat, nu are cum sa existe solutie la intregul scop ca atare cel de-al doilea subscop nici nu este abordat. Cand se rezolva un subscop particular, faptele si regulile sunt tratate de sus in jos.
EXEMPLU
parinte(pam, bob). parinte(tom, bob). parinte(tom, liz). parinte(bob, ann). parinte(bob, pat). parinte(pat, jim).
CATEVA INTEROGARI
parinte(bob, pat).
parinte(X, liz). parinte (bob, X). parinte(X, Y).
ALTE FAPTE
feminin(pam). masculin(tom). masculin(bob). feminin(liz). feminin(pat). feminin(ann). masculin(jim). sex(pam, feminin). sex(tom, masculin). sex(bob, masculin). urmas(liz, tom).
Pentru toti X si toti Y, Y este urmas al lui X daca X este parinte al lui Y.
urmas(Y, X) :-
parinte(X, Y).
X = tom si Y = liz
ALTE RELATII
relatia mama, definita astfel: mama (X, Y) :- parinte (X,Y), feminin (X). relatia bunic, definita astfel: bunic (X, Z) :- parinte (X, Y), parinte(Y, Z).
relatia sora, definita astfel: sora (X, Y) :parinte (Z, X), parinte (Z, Y), feminin (X).
INCA 2 INTEROGARI