Sunteți pe pagina 1din 9

Programare Logica

Recapitulare

Aceasta este o list de a ntrebri plauzibile la colocviul de Programare Logic, a a proba scris. a

Curs 1: Introducere
1. Care sunt caracteristicile programrii logice? a Ce este o fapt, o regul, i o a a s ntrebare programarea logic? n a Explicati care este structura unui program Prolog. 2. S se traduc urmtoarele armatii din limbaj natural reguli i fapte. a a a n s Andrei tie s picteze. Maria tie s programeze. Toti prietenii lui s a s a Alex tiu c picteze sau s programeze. Toti prietenii Mariei tiu s s a a s a picteze i s programeze. s a 3. S se traduc urmtoarele armatii din limbaj natural reguli i fapte. a a a n s Orice sportiv este puternic. Oricine este puternic i inteligent va reui s s viat i va ajunge faimos. Toti atorii sunt sportivi. Gheorghe n a s not este antrenor. Antrenorilor le plac toti sportivii. 4. S se traduc urmtoarele armatii din limbaj natural reguli i fapte. a a a n s Sertarul contine crti i creioane. Toate creioanele sunt colorate. Ion a s vorbete englez. Dana vorbete italiana. Ion este prieten cu Dana. s a s Doi studenti sunt prieteni dac vorbesc aceeai limb. Andrei este a s a prieten cu toat lumea. a 5. Cte reguli i cte fapte contine programul urmtor: a s a a papagal(coco). cioara(gaia). pasare(X):-impanat(X), zboara(X).

Curs 2:
1. S se indice variabilele, structurile, termenii, atomii i predicatele care a s apar programul urmtor: n a are(costel, masina(ferrari, culoare(rosie), motor(benzina))). are(florin, carte(Ion, autor(Rebreanu), an(1972))). scriitor(X) :- are(_, carte(Carte, autor(X), _)). 2. Ce este o list? a 3. Ce fel de structuri se unic cu termenii urmtori: a a (a) (b) [ ] (c) [ , ] (d) [ | ] (e) [X, X| ] 4. Se consider listele [2,2,4,3,5,6], [a,a,a,a] i [1,a,1]. a s (a) Care liste se unic cu termenul [X,_,X|_]? a (b) Care liste se unic cu termenul [X,X|_]? a (c) care liste se unic cu [_,_,_|_]? a 5. Se consider programul Prolog urmtor a a enigma(A,0,A). enigma(A,B,C):- R is A mod B, enigma(B,R,C). S se indice predicatele care apar program a n mpreun cu aritile a at lor. S se indice operatorii aritmetici i cei predeniti care apar proa s n gram. Care este rspunsul la a ntrebarea ?-enigma(81, 36, X). Care este valoarea lui D care se obtine ca rspuns la a ntrebarea ?-enigma(m,n,D) cnd m i n sunt numere a s ntregi pozitive? 6. Care este semnicatia atomului ultim(Lista, Element) denit de pro gramul urmtor: a ultim([X],X). ultim([_|T],X):-ultim(T,X). 2

7. S se precizeze care sunt constantele, variabilele, simbolurile functionale, a simbolurile predicative i aritile lor programul Prolog de mai jos: s at n esteArbore(nil). esteArbore(arb(N,X,Y)):integer(N), esteArbore(X), esteArbore(Y). 8. Se consider c prima zi a anului este luni. S se deneasc relatia a a a a zi(N, Z) care are loc dac Z este a N-a zi a anului respectiv. (Se prea supune c N este o valoare a ntre 1 i 365.) De exemplu: s ?-zi(1,Z1), zi(16, Z2), zi(20, Z3). Z1 = luni Z2 = miercuri Z3 = sambata

Curs 3: Recursivitate
1. S se scrie un predicat cmmdc(A,B,R) care calculeaz cel mai mare divizor a a comun R pentru dou numere a ntregi pozitive A i B. Se folosete denitia s s recursiv a lui Euclid: a Fie a i b dou numere s a ntregi pozitive. Dac b = 0 a atunci cmmdc(a, b) = a altfel cmmdc(a, b) = cmmdc(b, r) unde r este restul artirii mp lui a cu b. Calculul restului X al artirii a dou numere A i B se poate obtine mp a s ca rspuns la a ntrebarea ?- X is A mod B. 2. S se deneasc relatia lungime(Lista, N) care are loc dac Lista este a a a o list cu N elemente. a 3. S se denieasc relatia medie_aritmetica(ListaNumere, M) care are a a loc dac ListaNumere este o list de numere iar N este media aritmetic a a a a numerelor din list. cazul special cnd ListaNumere este lista vid, a In a a se presupune c M=0. a 4. S se deneasc relatia numere(Lista, N) care are loc dac Lista este a a a o list care contine, printre altele, N numere. Recunoaterea numerelor se a s poate face cu predicatul number(X). Exemplu:

?-numere([a,1,b,7,pasare(cocor),5],N). N = 3 . 5. S se deneasc recursiv relatia este_multime(L) care are loc dac L este a a a o list care ecare element apare o singur dat. a n a a 6. S se deneasc folosind metoda cu acumulator, relatia factorial(N,R) a a care are loc dac N este un numr natural i R = 1 2 . . . N. a a s 7. S se deneasc folosind metoda cu acumulator, relatia suma(ListaNumere,N) a a care are loc dac N este o list de numere ar N este suma elementelor listei. a a

Curs 4
1. Se consider predicatul pn/1 denit de programul urmtor a a pn([N]):-integer(N), !. pn([_|T]):-pn(T). Reamintim faptul c integer(N) are loc dac N este un numr a a a ntreg. (a) Care este semnicatia lui pn(Lista)? (b) Care este rspunsul la a ntrebarea ?-pn([a,1,x,2,y]). (c) S se ilustreze arborele de derivare care produce rspunsul la a a ntrebare. (d) Ce tip de tietur este folosit acest program: verde sau roie? a a a n s 2. Deniti cu ajutorul predicatului de tiere predicatul ff(X,Y) care are loc a dac i numai dac X i Y sunt numere iar Y = f (X), unde as a s x dac x 0, a 2 + x2 10 dac 0 < x 7, a f (x) = (x 1) (7 x 5) dac 7 < x. a 3. Se consider denite a ntr-un program Prolog relatiile animal(X). inoata(X). % X este animal. % X noat. a

(a) Care este semnicatia predicatului r(X) denit mai jos: r(X) :- animal(X), inoata(X), !, fail. r(X) :- animal(X). (b) Ce rspunsuri veti obtine la a ntrebarea: ?- r(X). dac programul contine faptele a 4

animal(cal). animal(pisica). animal(rata). animal(gaina). inoata(cal). inoata(rata). (c) Ce tip de tietur produce ! denitia lui r(X): roie sau verde? a a n s Explicati rspunsul dat. a 4. Se consider programul Prolog urmtor a a % fapte care caracterizeaza relatia de prietenie prieten(radu, elena). prieten(elena, mihai). prieten(zoe, viorel). (a) S se deneasc, folosind combinatia tiere-eec, relatia neprieten(X,Y) a a a s care are loc dac nu se tie c X i Y sunt prieteni. a s a s (b) Care sunt rspunsurile la a ntrebrile a i. ?-neprieten(radu, elena). ii. ?-neprieten(geo, zoe). 5. S se deneasc folosind predicatul de tiere pentru conrmarea alegerii a a a unei reguli, relatia suma2(N,R) are are loc dac N este un numr natural a a iar R = 12 + 22 + . . . N2 . Pentru cazul de baz cnd N=0 se presupune c a a a R=0. 6. S se deneasc folosind tieturi roii, relatia rel(X,Y,Z) care este denit a a a s a felul urmtor pentru numerele X, Y i Z: n a s (a) Dac X Y atunci Z este X. a (b) Altfel, dac Y < X Y + 10 atunci Z este 1. a (c) Altfel, dac Y + 10 < X atunci Z este Y. a

Curs 5: Predicate predenite


1. Se consider dat baza de fapte a a nota(popescu,Baze de Date,9.). nota(popescu,Programare Functionala,7.). nota(popescu,Programare Logica,8.). nota(albu,Algebra,9.). nota(albu,Teoria Relativitatii,5.). nota(albu,Analiza Matematica,8.). nota(rosu,Geografie,10.). 5

nota(rosu,Filozofie,10.). nota(rosu,Istorie,10.). nota(hagi,Management,9.). nota(hagi,Fotbal,10.). nota(hagi,Antrenor,8.). (a) S se deneasc un program medie_generala(X,M) care calculeaz a a a media general M a persoanei X. Exemple de rulare a programului: a ?- medie_generala(rosu, M). M = 10. ?- medie_generala(hagi, M). M = 9. ?- medie_generala(albu, M). M = 7.33 (Sugestie: apelul findall(N,nota(X,_,N),L) instantiaz variabila a L cu lista tuturor notelor persoanei X care sunt mentionate baza n de fapte. Valoarea lui M este media aritmetic a numerelor din lista a L.) (b) S se deneasc relatia geografiSiFilozofi(L) care are loc dac L a a a este lista tuturor persoanelor care au primit o not i la geograe i as s la lozoe. (c) S se deneasc relatia geografiSauFilozofi(L) care are loc dac a a a L este lista tuturor persoanelor care au primit o not la geograe saui a la lozoe. (d) S se deneasc relatia decari(L) care are loc dac L este lista pera a a soanelor care au primit nota 10 la o materie.

Curs 6: Operatii de intrare/ieire s


1. S se deneasc citire_speciala(Fisier1, Fisier2) care citete toti a a s termenii din sierul Fisier1 i scrie Fisier2 doar termenii de forma s n student(X,informatica). (Sugestie: folositi predicatele see, seen, tell i told.) s 2. S se deneasc citire_speciala(Fisier1,Fisier2) care rescrie tot a a continutul lui Fisier1 Fisier2 n nlocuind toate literele mari cu litere mici. Toate celelalte caractere rmn neschimbate. Tineti cont de faptul a a c codurile ASCII ale literelor mici a ncep de la 97 (caracterul a) i se s termin cu 122 (caracterul z), iar codul ASCII al unei litere mari este a n 32 unde n este codul ASCII al literei mici corespunztoare. a (Sugestie: folositi predicatele de intrare/ieire la nivel de caracter.) s

Cursuri 7-8: Logica predicatelor de ordinul I


(Rspunsuri la primele 5 a ntrebri se gsesc la sfritul Cursului 8) a a as 6

1. S se exprime form clauzal cunotintele urmtoare: a n a a s a Unor pacienti le plac toti doctorii. Nici unui pacient nu-i plac arlatanii. s Nici un doctor nu este arlatan. s Folositi principiul rezolutiei pentru a demonstra c dac primele dou a a a armatii sunt adevrate atunci i a treia armatie este adevrat. a s a a 2. S se aduc formulele urmtoare form clauzal: a a a n a a (a) (p(a, b) p(x)) r(a, x). (b) (p q) (s(a) r(b)). (c) p (q (r p)). 3. S se transforme formulele urmtoare forme clauzale: a a n (a) (x)(p(x) (y)q(x, y)). (b) (x)(((y)p(x, y)) ((z)q(z) r(x))). (c) (x)(y)((z)p(x, y, z) ((u)q(x, u) (x)q(y, x))). 4. Se presupun adevrate urmtoarele armatii: a a Sfntul Petru este iubit de oricine care iubete pe cineva. Nu exist a s a persoan care s nu iubeasc pe nimeni. a a a Folositi principiul rezolutiei pentru a demonstra c Sfntul Petru este iubit a a de toat lumea. a 5. Se consider programul Prolog a parinte(vali,gelu). parinte(ada,gelu). parinte(ada, mia). parinte(gelu,lina). parinte(gelu,misu). parinte(misu,roco). str(X,Z):-str(X,Y),parinte(Y,Z). str(X,Z):-parinte(X,Z). S se construiasc o derivatie care dovedete faptul c [X=ada,Y=lina] a a s a este un rspuns la a ntrebarea ?-str(X,Y). 6. S se aduc formula urmtoare form clauzal: a a a n a a xyzt.((r(f (x, y), g(x, z)) r(f (t, y), y)) r(z, x)). 7. S se aduc formula (x.y.p(x, y))(x.y.p(x, y)) form prenex echivaa a n a lent. a 7

Curs 9-10
Un arbore binar este o structur recursiv denit astfel: a a a Cazul de baz: Constanta nil este un arbore binar. a Cazul recursiv Dac A1 i A2 sunt arbori binari, D un termen oarecare i K a s s un numr, atunci arb(K, D, A1 , A2 ) este un arbore binar. a K reprezint cheia nodului respectiv, D reprezint datele din nod, A1 este suba a arborele stng, iar A2 este subarborele drept. a 1. Ce conditie trebuie s satisfac un arbore binar pentru a arbore de a a cutare? S se deneasc relatia arbore_cautare(A) care ia ca argument a a a de intrare un arbore binar i s ntoarce true doar dac A este un arbore de a cutare. a 2. S se deneasc predicatul cheie_minima(A, K) care ia ca argument de a a intrare un arbore binar de cutare A i instantiaz K cu cheia cea mai mic a s a a din arborele A. 3. S se deneasc predicatul cheie_maxima(A, K) care ia ca argument de a a intrare un arbore binar de cutare A i instantiaz K cu cheia cea mai mare a s a din arborele A. Se presupune c arborele A dat ca argument de intrare nu a este nil. 4. S se deneasc predicatul inserez(K,D,A,B) care are loc dac B este a a a arborele binar de cautare obtinut prin introducerea arborele binar de n cautare A unui nod cu cheia K si datele D. 5. S se deneasc predicatul are_cheie(A,K) care are loc dac i numai a a a s dac A este un arbore binar de cutare care contine un nod cu cheia K. a a 6. S se deneasc predicatul elim(K,A,B) dac B este arborele binar de a a a cutare obtinut prin eliminarea nodului cu cheia tt K din arborele binar a de cutare A. Dac A nu contine un astfel de not, atunci arborele B va a a coincide cu arborele A. Aplicatii referitoare la grafuri. 1. Se consider graful orientat urmtor. a a
a b c d

S se scrie un program care descrie prin fapte graful ilustrat, precum i a s denitiile urmtoarelor relatii: a (a) conectat(X,Y) care ia ca ca argumente de intrare dou noduri X i a s Y, i care are loc dac i numai dac exist o secvent de arcuri de s as a a a la nodul X la nodul Y. Deniti acest predicat aa fel at s se n s nc a termine ntotdeuna. 8

(b) cale(X,Y,C) care ia ca argumente de intrare dou noduri X i Y i a s s instantiaz C cu o list care reprezint o cale simpl de la nodul X la a a a a nodul Y. De exemplu, [b,c,d] este o cale de la nodul c la nodul d. 2. Se consider o baz de fapte de forma a(X,Y) care indic existenta unui a a a arc de la nodul X la nodul Y. S se deneasc predicatele urmtoare: a a a (a) vecini(X,L) care ia ca argument de intrare un nod X i instantiaz s a L cu lista nodurilor Y pentru care exist un arc a(X,Y) baza de a n fapte. (b) noduri(L) care instantiaz L cu lista tuturor nodurilor care apar ca a surs sau destinatie a unui arc baza de fapte. a n Sugestie: folositi predicate de executie dinamic a a ntrebrilor (vezi cura sul 5).

Curs 11: Baze de date


1. Se consider o baz de fapte pentru relatiile a a cazat(Id, Camin, Camera) student(Id,Nume,Facultate,An). care contin informatii despre toti studentii nscrii la facultate precum s i despre Id-urile persoanelor cazate cmine. Se presupune c ecare s n a a student are un numr unic de identicare Id. a (a) S se deneasc relatia student(Id,Nume,Facultate) care are loc a a dac exist un student cu Id-ul i numele respectiv a a s nscris la facultatea respectiv. a (b) S se deneasc relatia cazat(Id) dac exist cineva cu Id-ul resa a a a pectiv cazat un cmin. n a (c) S se deneasc relatia extern(Id, Nume, Facultate) care descrie a a toti studentii care nu stau la cmin, a mpreun cu Id-ul i facultatea a s pe care o urmeaz. a (d) S se deneasc relatia adresa(Id,Nume,Camin,Camera) pentru stua a dentii nscrii la facultate care stau cmin. s n a (e) S se deneasc relatia student1(Id,Nume,Camin) pentru studentii a a nscrii anul I la facultate care stau cmin. s n n a

S-ar putea să vă placă și