This shows you the differences between two versions of the page.
pp:22:laboratoare:prolog:intro [2022/05/08 09:39] bot.pp created |
pp:22:laboratoare:prolog:intro [2022/05/13 09:18] (current) ionut.balasescu [Resurse] |
||
---|---|---|---|
Line 167: | Line 167: | ||
</code> | </code> | ||
- | Se observă definirea atât printr-un fapt(linia 5), cât și printr-o regulă (linia 6) a predicatului //iubeste(?Cine, ?PeCine)//. | + | Se observă definirea atât printr-un fapt (linia 5), cât și printr-o regulă (linia 6) a predicatului //iubeste(?Cine, ?PeCine)//. |
===== Operatori ===== | ===== Operatori ===== | ||
Line 173: | Line 173: | ||
* Aritmetici: ''%%+%%'' ''%%-%%'' ''%%*%%'' ''%%/%%'' | * Aritmetici: ''%%+%%'' ''%%-%%'' ''%%*%%'' ''%%/%%'' | ||
* Relaționali: ''%%=\=%%'' ''%%<%%'' ''%%>%%'' ''%%=<%%'' ''%%>=%%'' ''%%=:=%%'' ''%%is%%'' | * Relaționali: ''%%=\=%%'' ''%%<%%'' ''%%>%%'' ''%%=<%%'' ''%%>=%%'' ''%%=:=%%'' ''%%is%%'' | ||
- | * Logici: ''%%,%%'' (si) ''%%;%%'' (sau) ''%%\+%%'' (not) | + | * Logici: ''%%,%%'' (și) ''%%;%%'' (sau) ''%%\+%%'' (negație) |
La scrierea expresiei ''%%1+2\*(X/Y)%%'', valoarea acesteia nu este calculată, ci expresia este reținută ca atare. Se poate observa că operatorii ''%%=:=%%'' și ''%%is%%'' forțează evaluarea unei expresii, pe când ''%%=%%'' verifica doar egalitatea structurală. | La scrierea expresiei ''%%1+2\*(X/Y)%%'', valoarea acesteia nu este calculată, ci expresia este reținută ca atare. Se poate observa că operatorii ''%%=:=%%'' și ''%%is%%'' forțează evaluarea unei expresii, pe când ''%%=%%'' verifica doar egalitatea structurală. | ||
Line 199: | Line 199: | ||
==== Negație ==== | ==== Negație ==== | ||
- | Operatorul unar ''%%\+%%'' folosit pentru un operand reprezintă faptul că nu se poate demonstra că operandul este adevărat. Dacă operandul conține variabile, ''%%\+%%'' denotă că nu există nicio legare pentru variabile astfel încât operandul să fie adevărat. | + | Operatorul unar ''%%\+%%'' folosit pentru un operand reprezintă faptul că nu se poate demonstra că operandul este adevărat. Dacă operandul conține variabile, ''%%\+%%'' denotă că nu există nicio legare pentru variabile astfel încât operandul să fie adevărat. Operatorul ''%%\+%%'' trebuie în mod necesar să fie urmat de spațiu (sau paranteză deschisă) |
===== Liste ===== | ===== Liste ===== | ||
Line 215: | Line 215: | ||
* predicat(+Arg1, -Arg2, ?Arg3, ..., +ArgN) | * predicat(+Arg1, -Arg2, ?Arg3, ..., +ArgN) | ||
- | Pentru a diferenția intrările (+) de ieșiri(-), se prefixează argumentele cu indicatori. Acele argumente care pot fi fie intrări, fie ieșiri se prefixează cu '?'. Instanțierea parametrilor ține de specificarea acestora: | + | Pentru a diferenția intrările (+) de ieșiri (-), se prefixează argumentele cu indicatori. Acele argumente care pot fi fie intrări, fie ieșiri se prefixează cu '?'. Instanțierea parametrilor ține de specificarea acestora: |
- | * Arg1 va fi instanțiat atunci când se va încerca satisfacerea p/3 | + | * Arg1 va fi deja instanțiat atunci când se va încerca satisfacerea p/3 |
- | * Arg2 se va instanția odată cu satisfacerea p/3 | + | * Arg2 va fi neinstanțiat atunci când se va încerca satisfacerea p/3 , și dacă predicatul este satisfăcut, Arg2 va fa fi instanțiat la finalul evaluării lui p/3; Arg2 poate fi și deja instanțiat la evaluarea lui p/3, și atunci evaluarea lui p/3 poate servi ca verificare a corectitudinii argumentului în raport cu semnificația prediatului |
- | * Arg3 va putea fi instanțiat sau nu atunci când se va satisface p/3 | + | * Arg3 va putea fi instanțiat sau nu atunci când se va încerca satisfacerea p/3 |
===== Resurse ===== | ===== Resurse ===== | ||
Line 225: | Line 225: | ||
* [[https://github.com/cs-pub-ro/PP-laboratoare/raw/master/prolog/intro/prolog-cheatsheet-1.pdf|Cheatsheet]] | * [[https://github.com/cs-pub-ro/PP-laboratoare/raw/master/prolog/intro/prolog-cheatsheet-1.pdf|Cheatsheet]] | ||
* [[https://ocw.cs.pub.ro/courses/_media/pp/22/laboratoare/prolog/intro-schelet.zip|Schelet]] | * [[https://ocw.cs.pub.ro/courses/_media/pp/22/laboratoare/prolog/intro-schelet.zip|Schelet]] | ||
- | * [[https://ocw.cs.pub.ro/courses/_media/pp/22/laboratoare/prolog/intro-solutie.zip|Soluții]] | + | * [[https://ocw.cs.pub.ro/courses/_media/pp/22/laboratoare/prolog/intro-solutii.zip|Soluții]] |
===== Referințe ===== | ===== Referințe ===== |