LAB 1
September 22, 2017 | Author: Cristian Rusu | Category: N/A
Short Description
lab 1...
Description
Ministerul Educaţiei al Republicii Moldova Universitatea Tehnică a Moldovei Facultatea Calculatoare, Informatică şi Microelectronică
Raport Lucrarea de laborator nr. 1 PLIA Tema: Introducere în limbajul Prolog. Mecanisme de control al procesului de backtracking.
A efectuat:
St. gr. Ti-123 Moldoveanu Sofia
A verificat:
Lazu Victoria
Chişinău 2015
Scopul lucrării Însuşirea principiilor fundamentale de programare a limbajului Prolog Se va citi breviarul teoretic. Se atrage atenția asupra faptului că toate cunoștințele din această lucrare vor fi necesare și la efectuarea celorlalte lucrări. Se vor studia exemplele propuse, încercând găsirea altor posibilități de soluționare a acestora. Se vor utiliza și alte scopuri(interogări) pentru a testa definițiile predicatelor introduse. Se va elabora un arbore genealogic şi o bază de cunoştinţe Prolog care ar descrie relaţiile existente în familia dumneavoastră proprie care ar permite cercetarea acestor relaţii prin utilizarea scopurilor externe. Arborele genealogic elaborat trebuie să conţină cel puţin trei niveluri. Pentru cercetarea relaţiilor existente în familie se vor utiliza nu mai puţin de şase scopuri. Însușirea noțiunilor privind mecanismele specifice limbajului Prolog pentru controlul procesului de backtracking: cut și fail Citiţi breviarul teoretic. Se atrage atenţia asupra faptului că toate cunoştinţele din această lucrare vor fi necesare şi la efectuarea celorlalte lucrări. Lansaţi la executare programul elaborat în lucrarea 1 şi cercetaţi schimbările semanticii procedurale: o prin schimbarea ordinii propoziţiilor – fapte; o prin schimbarea ordinii propoziţiilor - reguli; (două variante) o prin schimbarea subscopurilor în reguli; (două variante) o trageţi concluzii. Rezolvaţi următoarele probleme propuse şi urmăriţi execuţia lor corectă. o Elaboraţi şi testaţi un program pentru determinarea unei valori minime din două numere (X şi Y), fără utilizarea predicatului cut. o Elaboraţi şi testaţi un program pentru determinarea unei valori minime din două numere (X şi Y), utilizând predicatul cut roşu şi cut verde. o Care vor fi răspunsurile programului ▪ р( 1). ▪ р( 2) :- !. ▪ р( 3). ◦ Efectuaţi o analiză comparativă între utilizarea predicatelor cut în spaţiul bazei de cunoştinţe şi spaţiul scopurilor pentru întrebările formulate în lista de scopuri ce urmează: ▪ р( X). ▪ р( X), p(Y). ▪ р( X), !, p(Y). ◦ Doi copii pot juca un meci într-un turneu de tenis dacă au aceeaşi vârstă. Fie următorii copii şi vârstele lor: copil(peter,9). copil(paul,10). copil(chris,9). copil(susan,9). Definiţi un predicat din care rezultă toate perechile de copii care pot juca un meci într-un turneu de tenis. Introduceţi schimbările corespunzătoare în programul din punctul 2., utilizând cut verde cel puţin în două reguli din baza de cunoştinţe. Introduceţi schimbările corespunzătoare în programul din punctul 2., utilizând cut roşu în reguli din baza de cunoştinţe. Trageţi concluzii. Prezentaţi darea de seamă.
Boris
Oxana
Lidia
Elena
IonC
Selena
Gherghe Junior
IonG
Gheorghe
Elizaveta
Vladimi r
Tatian a
NicolaieG
Stefan
IonI
Mirce a
Baza de cunoștințe și scopurile arborelui genialogic %lab 1 femeie(elizaveta). femeie(lidia). femeie(elena). femeie(oxana). femeie(tatiana). femeie(selena). barbat(gheorghe). barbat(boris). barbat(vladimir). barbat(ionI). barbat(ionC). barbat(gheorgheJunior). barbat(ionG). barbat(nicolai). barbat(stefan). barbat(mircea). parinti(boris,lidia,ionC). parinti(boris,lidia,elena). parinti(gheorghe,elizaveta,vladimir). parinti(gheorghe,elizaveta,tatiana). parinti(ionC,oxana,selena). parinti(vladimir,elena,gheorgheJunior). parinti(vladimir,elena,ionG). parinti(vladimir,elena,nicolai). parinti(ionI,tatiana,stefan). parinti(ionI,tatiana,mircea). tata(X,Z):-parinti(X,_,Z),barbat(X). mama(Y,Z):-parinti(_,Y,Z),femeie(Y). bunel(X,Z):-parinti(X,_,Y),(parinti(Y,_,Z);parinti(_,Y,Z)). bunica(X,Z):-parinti(_,X,Y),(parinti(Y,_,Z);parinti(_,Y,Z)). parinte(X,Y):-parinti(X,_,Y);parinti(_,X,Y). frate(X,Y):-parinti(Z,W,X),parinti(Z,W,Y),barbat(X),not(X=Y). sora(X,Y):-parinti(Z,W,X),parinti(Z,W,Y),femeie(X),not(X=Y). matusa(X,Y):-parinte(Z,Y),(frate(X,Z);sora(X,Z)),femeie(X). unchi(X,Y):-parinte(Z,Y),(frate(X,Z);sora(X,Z)),barbat(X). verisori(X,Y):-parinte(Z,X),parinte(W,Y),(frate(Z,W);sora(Z,W)),not(X=Y). parinti2(X,Y):-parinti(X, Y, _),!. pereche(Barbat, Femeie):-parinti(Barbat,Femeie,_),barbat(Barbat),femeie(Femeie). nora(Parinte, Nora):-femeie(Nora),parinte(Parinte, Sot),barbat(Sot),pereche(Sot, Nora). ginere(Parinte, Ginere):- barbat(Ginere),parinte(Parinte, Sotie),femeie(Sotie),pereche(Ginere, Sotie).
Baze de cunostinte de calcularea minim si a celor copii care pot sa mearga in turneu.
%lab 2 %calculeaza min fara cut min(X, Y) :- X =< Y, write(X). min(X, Y) :- X > Y,write(Y). %calculez minim cu cut verde min1(X, Y) :- X =< Y,write("X="),write(X),!. min1(X, Y) :- X > Y,write("Y="),write(Y). %calculez minim cu cut rosu min2(X, Y) :- X =< Y, write(X),!. min2(X, Y) :- write(Y). copil(peter,9). copil(paul,10). copil(chris,9). copil(susan,9). turneu(Copil1, Copil2) :- copil(Copil1, Virsta), copil(Copil2, Virsta), not(Copil1 = Copil2), !.
Concluzii Prolog este un limbaj potrivit pentru a putea modela un sistem inteligent artificial. Mecanismul de backtracking al limbajului Prolog este foarte simplu dar, cum este organizat acesta poate efectua un șir de operații/algoritmi. În urma creerei acestui laborator am înțeles mai bine crearea programelor in prolog și crearea unui program inteligent.
View more...
Comments