Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:dydaktyka:krr:lab_termy [2014/03/19 09:15]
gjn [Arytmetyka w Prologu] doc do arthm
pl:dydaktyka:krr:lab_termy [2017/07/17 10:08]
Linia 1: Linia 1:
-====== Termy i reprezentacja wiedzy w Prologu ====== 
- 
-===== Prosty program diagnostyczny ===== 
- 
-Program realizuje prosty system diagnostyczny (w praktyce wnioskujący wstecz system ekspertowy). 
-Jest to kompletny program wyposażony w: 
-  * bazę wiedzy o problemie 
-  * mechanizm wnioskowania - wyszukiwanie rozwiązań 
-  * dynamiczną modyfikację/​rozbudowę bazy wiedzy 
-  * obsługę plików (i/o) 
-  * interfejs (prosty) użytkownika 
- 
-System: {{pl:​prolog:​prolog_lab:​car.pl}} 
- 
-Plik pomocniczy: ​ {{pl:​prolog:​prolog_lab:​getyesno.pl}} 
- 
-Przeanalizuj działanie programu, spróbuj dodać kolejną, własną przyczynę awarii, związane z nią reguły diagnostyczne i wyjaśnienie. 
- 
-=====  Arytmetyka w Prologu ===== 
- 
-W Prologu nie można w sposób //​bezpośredni//​ wykonywać obliczeń arytmetycznych. Służy do tego predykat //is//. 
- 
- 
-**Ćwiczenie** 
- 
-1. Sprawdzić działanie: 
- 
-<code prolog> 
-?- X is 2 + 2. 
-?- Y is 2.5 + ( 4 / 2). 
-?- Z is 2 + 0.001. 
-</​code>​ 
- 
-Uwaga: 
- 
-<code prolog> 
-?- A is 3. 
-?- B is A + 4. 
-?- A is 3, B is A + 4. 
-</​code>​ 
- 
-Operacje arytmetyczne:​ 
- 
-<code prolog> 
-?- X is 2 + 2. 
-?- X is 2 * 3. 
-?- X is 4 / 2. 
-?- X is 4 / 3. 
-?- X is 4 // 3. 
-</​code>​ 
-Uwaga na //​podstawianie//:​ 
- 
-<code prolog> 
-?- X is 2 + 5. 
-?- X = 2 + 5. 
-?- 2 + 5 =:= 1 + 4. 
-?- 2 + 5 =:= 3 + 4. 
-?- 2 + 5 =:= 4 + 4. 
-</​code>​ 
- 
-Przećwiczyć użycie operatorów:​ 
- 
-<code prolog> 
-?- 2 < 3. 
-?- 2 > 3. 
-?- 3 > 3. 
-?- 3 >= 3. 
-?- 3 =< 3. 
-</​code>​ 
- 
-2. Napisz program obliczający wynik [[http://​pl.wikipedia.org/​wiki/​R%C3%B3wnanie_kwadratowe|równania kwadratowego]] ([[wp>​Quadratic Equation]]) ''​ax^2 + bx + c = 0''​ w dziedzinie liczb rzeczywistych. 
-Zaimplementuj predykaty: ​ 
-  * ''​delta/​4''​ -- obliczający deltę, argumenty kolejno: a, b, c, wynik, 
-  * ''​kwadrat/​4''​ -- obliczający wynik równania kwadratowego,​ argumenty kolejno: a, b, c, wynik. 
-Zwróć uwagę na niedeterminizm w predykacie ''​kwadrat/​4'',​ który znajduje zero, jedno, albo dwa rozwiązania;​ mogą się przydać [[http://​www.swi-prolog.org/​pldoc/​man?​section=funcsummary|funkcje matematyczne]]. ​ 
- 
-===== Termy ===== 
- 
-Termy to: 
-  * stałe '​ala'​ 
-  * szukane (zmienne logiczne) '​Ala'​ 
-  * struktury (dowolnie) złożone '​mezczyzna(jas)',​ '​ksiazka(tytul(it),​ autor(king))'​ 
- 
-Prolog dopasowuje termy z użyciem mechanizmu unifikacji. 
-Wpisz, po kolei na konsoli i przemyśl dokładnie każde z poniższych zapytań: 
- 
-<code prolog> 
-?- a=a. 
-?- a=b. 
-?- a(b)=a(b). 
-?- a(b)=a(c). 
-?- a(b)=a(C). 
-?- a(C)=a(b). 
-?- a(C)=a(C). 
-?- C=a. 
-?- C=C. 
-?- C=a(c). 
-?-  k(s(g),​Y) ​ =  k(X,​t(k)). ​ 
-</​code>​ 
- 
-Korzystając z programu o rodzinie z 1. zajęć: 
-<code prolog> 
-?- rodzic(kasia,​robert). 
-?- rodzic(kasia,​X). 
-?- rodzic(kasia,​X),​write(X). 
-?- rodzic(kasia,​X),​X=robert,​write('​udalo sie!'​). 
-?- X=robert,​rodzic(kasia,​X),​write('​udalo sie!'​). 
-</​code>​ 
- 
-Wpisz poniższy program do pliku geoman.pl 
-<code prolog> 
-vertical(line(point(X,​Y),​point(X,​Z))). 
-horizontal(line(point(X,​Y),​point(Z,​Y))). ​ 
-</​code>​ 
-Jak pozbyć się ostrzeżeń (bez zmiany jego działania)?​ 
- 
-Zadaj poniższe pytania: 
-<code prolog> 
-?-  vertical(line(point(1,​1),​point(1,​3))). ​ 
-?-  vertical(line(point(1,​1),​point(3,​2))). ​ 
-?-  horizontal(line(point(1,​1),​point(2,​Y))). ​ 
-?-  horizontal(line(point(2,​3),​P)). ​ 
-</​code>​ 
- 
-===== Przykład: Zamówienia ===== 
- 
-Wczytaj i przeanalizuj program {{:​pl:​prolog:​prolog_lab:​custord.pl|}} 
- 
-Zrealizuje odpowiadającą mu część ćwiczeń ze strony [[http://​www.amzi.com/​AdventureInProlog/​a3simple.php]] 
- 
-===== Przykład: System klasyfikujący ===== 
-Wczytaj program {{:​pl:​prolog:​prolog_lab:​birds.pl|}} 
- 
-Realizuje on regułową klasyfikację ptaków. 
-Program używa prawie tylko mechanizmów które znasz (pojawiają się listy przy menu, ale "​niegroźnie"​). 
- 
-Dodaj reguły pozwalające na identyfikację ptaka którego znasz. 
- 
-===== Przykład: Gra przygodowa ===== 
- 
-Wczytaj program {{:​pl:​prolog:​prolog_lab:​nani.pl|}} 
- 
-Opis gry i sytuacji gracza [[http://​www.amzi.com/​AdventureInProlog/​a2facts.php|znajdziesz tutaj]]. 
- 
-Opis struktur danych [[http://​www.amzi.com/​AdventureInProlog/​a9struct.php|jest tu]] 
- 
-Program używa prawie tylko mechanizmów które znasz (pojawiają się listy, ale "​niegroźnie"​). 
- 
-Przeanalizuj przykłady [[http://​www.amzi.com/​AdventureInProlog/​a10unif.php|unifikacji]]. 
- 
-===== Materiały ===== 
-  * [LPN] [[http://​www.learnprolognow.org/​lpnpage.php?​pagetype=html&​pageid=lpn-htmlch2|Unifikacja]] 
-  * [AIP] [[http://​www.amzi.com/​AdventureInProlog/​a9struct.php|Struktury danych]] 
  
pl/dydaktyka/krr/lab_termy.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0