Sunteți pe pagina 1din 9

Serban Robert Marius Specializarea Automatica si Informatica Aplicata, An III, Grupa 2

1. Despre Prolog 2. Detalii program 3. Interogarile programului 4. Concluzii 5. Bibliografie

Prolog reprezint o prescurtare de la Programming n logic . Este un limbaj conceput pentru programarea logic (deci un limbaj declarativ). A fost elaborat n cursul anilor 1970 n Europa (mai ales n Fran a i Sco ia). Primul compilator de Prolog a fost creat n 1972 de c tre Philippe Roussel, la Universitatea din Marsilia. Prologul este un limbaj compilat, care utilizeaz , n locul rela iilor matematice, rela ii logice ntre mul imi de date. Exista limbaje algoritmice, orientate obiect si logice. Limbajele program rii logice (Prolog) sunt limbaje declarative. Un limbaj de programare declarativ scute te programatorul de a mai men iona procedura exact pe care trebuie s o execute calculatorul pentru a realiza o func ie. Programatorii folosesc limbajul pentru a descrie o mul ime de fapte i de rela ii astfel nct utilizatorul s poat interoga apoi sistemul pentru a ob ine un anumit rezultat. Programele Prolog opereaza cu obiecte si cu relatii intre obiecte (fapte si/sau clauze). Negatia joaca un rol foarte important in programarea in acest limbaj, deoarece orice proprietate care nu se poate deduce din entitatile programului este considerata falsa, deci negatia ei este adevarata. Prolog foloseste un model de rationament minimal numit ipoteza lumii inchise. Conform acestui model, tot ceea ce nu este stiut de program, deci afirmat explicit ca fiind adevarat in program, este considerat fals. Prologul modeleaza negatia ca esec al satisfacerii unui scop (negatia ca insucces), aceasta fiind de fapt o particularizare a ipotezei lumii inchise.

 yStructura unui program Prolog: definitii constante tipuri de obiecte definite de utilizator declaratiile predicatelor reguli yUn 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, numite si scopuri, despre obiecte si relatiile dintre ele, la care programul raspunde pe baza faptelor si regulilor existente. yBaza de cunostinte Prolog: Multimea faptelor unui program Prolog formeaza baza de cunostinte Prolog. In baza de cunostinte a unui program Prolog sunt incluse si regulile Prolog.

yScopuri: Scopurile sunt predicate pentru care se doreste aflarea valorii de adevar, in contextul faptelor existente in baza de cunostinte. Un exemplu de program Prolog (definirea unor relatii de familie): - faptul ca Tom este parinte al lui Bob se poate scrie in Prolog astfel: parinte(tom, bob). Aici parinte este numele relatiei, iar tom si bob sunt argumentele sale. Program Prolog care defineste relatii de familie: parinte(pam, bob). parinte(tom, bob). parinte(tom, liz). parinte(bob, ann). parinte(bob, pat). parinte(pat, jim). Programul consta din 6 clauze. Fiecare dintre aceste clauze declara un fapt despre relatia parinte. Spre exemplu, parinte(tom, bob) este o instantiere particulara a relatiei parinte. In general, o relatie se defineste ca fiind multimea tuturor instantierilor sale. bs.: Acest program simplu nu contine (inca) regului (ci doar fapte). Interogarea Prologului: Ex.: Vrem sa aflam daca Bob este parinte al lui Pat. Aceasta intrebare este comunicata sistemului Prolog tastandu-se la terminal: ?- parinte(bob, pat). Raspunsul Prologului va fi Yes Alte exemple de interogari: ?-parinte(liz, pat). No ?-parinte (tom, ben). no Cine este parintele lui Liz? ?-parinte(X, liz). X = tom yCine sunt copiii lui Bob? ?-parinte (bob, X). X = ann; X= pat; no yCine este parinte al cui? ?-parinte(X, Y). X = pam Y = bob; X = tom Y = bob; X = tom Y = liz;

Programul meu, realizat in limbajul Prolog, reprezinta o baza de date a unui circuit de raliuri. Aceasta cuprinde o lista de vehicule participante fiind grupata in doua categorii : Autoturisme si motociclete. Fiecare cursa va avea loc intre cel putin doua vehicule de categorii diferite. Criteriul prin care se vor alege participantii este consumul la 100 km/h pe care il are fiecare vehicul.

Baza de date :
consuma(bmw,10). consuma(audia3,7). consuma(audia4,10). consuma(audia4,26). consuma(audia5,9). consuma(renault,3). consuma(renault,6). consuma(matiz,10). consuma(hummer,16). consuma(hummer,20). consuma(mercedes,11). consuma(dacia,4). consuma(kawasaki,4). consuma(kawasaki,14). consuma(suzuki,8). consuma(suzuki,15). consuma(yamaha,9). consuma(yamaha,24). consuma(honda,6). consuma(honda,19). consuma(aprilia,20). consuma(aprilia,22). consuma(peugeot,9). consuma(peugeot,23). consuma(ducati,10).

vehicul(bmw,autoturism). vehicul(audia3,autoturism). vehicul(audia4,autoturism). vehicul(audia5,autoturism). vehicul(renault,autoturism). vehicul(matiz,autoturism). vehicul(hummer,autoturism). vehicul(mercedes,autoturism). vehicul(dacia,autoturism). vehicul(kawasaki,motocicleta). vehicul(suzuki,motocicleta). vehicul(yamaha,motocicleta). vehicul(honda,motocicleta). vehicul(aprilia,motocicleta). vehicul(peugeot,motocicleta). vehicul(ducati,motocicleta). motocicleta(A):-vehicul(X,motocicleta),consuma(X,A),write(' '+ X +' '). autoturism(A):-vehicul(X,autoturism),consuma(X,A),write(' ' +X+' ' ). concureazaM(X):-consuma(X,A),autoturism(A). compara:-motocicleta(A),autoturism(A),write(' consuma '+A). concureazaA(X):-consuma(X,A),motocicleta(A).

Combinatiile posibile ale acestui program sunt urmatoarele : 1) O motocicleta poate concura cu un singur autoturism

2) O motocicleta poate concura cu doua sau chiar trei autoturisme cu acelasi consum

3) Un autoturism poate concur cu o singura motocicleta cu acelasi consum

4) Un autoturism poate concur cu doua sau chiar trei motociclete cu acelasi consum

In concluzie, putem spune ca acest simplu program ne poate ajuta la gasirea concurentilor raliului fara ati da batai de cap.

Bibliografie :
- Introducere in programarea logica Limbajul PROLOG Nicolae Tandareanu; - http://www.scribd.com/doc/14475721/Limbaj-Prolog