Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:prolog:prolog_lab:programy [2009/10/21 12:02]
ikaf trace/0
pl:prolog:prolog_lab:programy [2019/06/27 15:50] (aktualna)
Linia 123: Linia 123:
  
 W powyższym programie predykat ''​addrule/​0''​ dodaje (''​delrule/​0''​ usuwa) dynamicznie regułę: W powyższym programie predykat ''​addrule/​0''​ dodaje (''​delrule/​0''​ usuwa) dynamicznie regułę:
-<​code ​prolog>+<​code>​
 b(X,​Y):​-a(X),​a(Y). b(X,​Y):​-a(X),​a(Y).
 </​code>​ </​code>​
Linia 144: Linia 144:
 Uruchomienie programu ze wskazanego pliku (''​plik.pl''​) z poziomu systemu operacyjnego można zrealizować za pomocą: Uruchomienie programu ze wskazanego pliku (''​plik.pl''​) z poziomu systemu operacyjnego można zrealizować za pomocą:
  
-  swipl -t halt -s plik.pl +  swipl -s program.pl -g go -t halt
  
 ===== -. Śledzenie pracy programu ===== ===== -. Śledzenie pracy programu =====
Linia 152: Linia 151:
  
 Trace points: Trace points:
-  * trace/0 - <del>ustawia trace point na wszystkich predykatach</​del>​, w wersji swi-prolog używanej na laboratorium,​ ''​trzce/​0''​ śledzi **następny zadany cel**, np.+  * trace/0 - ustawia trace point na wszystkich predykatach,​ w wersji swi-prolog używanej na laboratorium,​ ''​trace/​0''​ śledzi **następny zadany cel**, np.
 <code prolog> <code prolog>
-?- trace,​kobieta(K).+?- trace,​kobieta(K),​rodzic(K,​_).
 </​code>​ </​code>​
   * trace/1 - ustawia trace point na wskazanym predykacie,   * trace/1 - ustawia trace point na wskazanym predykacie,
Linia 248: Linia 247:
   * ''​delta/​4''​ -- obliczający deltę, argumenty kolejno: a, b, c, wynik,   * ''​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.   * ''​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://gollem.science.uva.nl/SWI-Prolog/​Manual/arith.html|funkcje matematyczne]]. ​+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=arith|funkcje matematyczne]], w szczególności do obliczenia pierwiastka używa się ''​sqrt/​1''​. 
  
 ===== -. Rekurencja w Prologu ===== ===== -. Rekurencja w Prologu =====
Linia 268: Linia 268:
  
 Wpisz, przetestuj i przemyśl działanie programu rekurencyjnie liczącego silnię. Wpisz, przetestuj i przemyśl działanie programu rekurencyjnie liczącego silnię.
 +Uruchom program w trybie śledzenia wykonywania (trace).
  
 +**Ćwiczenie**
 +
 +Opierając się na silni napisz program wypisujący [[http://​pl.wikipedia.org/​wiki/​Ci%C4%85g_Fibonacciego|Ciąg Fibonacciego]].
  
 ===== - Wybrane problemy rozwiązane w Prologu ===== ===== - Wybrane problemy rozwiązane w Prologu =====
 +
 +==== Świat klocków ====
 +Problem [[wp>​Blocks_world]]
 +
 +Wczytaj {{:​pl:​prolog:​prolog_lab:​blocks.pl|}}
 +
 +Narysuj na kartce zamodelowany świat.
 +Jakie pytania można zadać?
 +<code prolog>
 +above(b1,​b2).
 +above(b3,​b5).
 +left(b1,​b7).
 +left(b3,​b3).
 +</​code>​
 +
 +
 +**Ćwiczenie**
 +
 +Opisz w programie taki świat:
 +<​code>​
 +a1
 +a2
 +a3     c1 c3
 +a4  a5 c2 c4
 +</​code>​
  
 ==== Wieże Hanoi ==== ==== Wieże Hanoi ====
Linia 337: Linia 366:
 Uwaga: w Prologu operator ''​\=''​ to nieidentyczność,​ czy też niemożliwość uzgodnienia termów. Uwaga: w Prologu operator ''​\=''​ to nieidentyczność,​ czy też niemożliwość uzgodnienia termów.
  
 +==== Dla Zainteresowanych ====
 +Więcej ciekawych problemów [[reprezentacja_wiedzy#​ciekawe_problemy|na kolejnych zajęciach]]
 +oraz w [[prolog:​pllib:​start|bibliotece programów]].
  
 ===== Obserwacje ===== ===== Obserwacje =====
pl/prolog/prolog_lab/programy.1256119369.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (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