Różnice

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

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pl:prolog:prolog_lab:wprowadzenie [2009/02/22 22:45]
holownia utworzono
pl:prolog:prolog_lab:wprowadzenie [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== LAB: Wprowadzenie do środowiska Prologu ====== ====== LAB: Wprowadzenie do środowiska Prologu ======
  
- +===== -. Wprowadzenie do Prologu ​=====
-===== -. WPROWADZENIE ​===== +
- +
- +
-==== Temat: Czym jest Prolog ​====+
  
 Prolog to język programowania logicznego, lub dokładniej programowania w logice (//​PROgrammation en LOGique, PROgramming in LOGic//). Prolog to język programowania logicznego, lub dokładniej programowania w logice (//​PROgrammation en LOGique, PROgramming in LOGic//).
Linia 11: Linia 7:
 Uwaga: nie należy za bardzo przejmować się hasłem o Prologu w Wikipedii -- jest //źle// napisane! Uwaga: nie należy za bardzo przejmować się hasłem o Prologu w Wikipedii -- jest //źle// napisane!
  
- +Rozwój ​języka:
-==== Rozwój: ​==== +
   * podstawy teoretyczne:​ logika ([[wp>​George_Boole]],​[[wp>​Gottlob_Frege]],​[[wp>​Alfred_Tarski]],​ i inni), [[wp>​J._Alan_Robinson]] (rezolucja),​ [[wp>]] (University of Edinburgh)   * podstawy teoretyczne:​ logika ([[wp>​George_Boole]],​[[wp>​Gottlob_Frege]],​[[wp>​Alfred_Tarski]],​ i inni), [[wp>​J._Alan_Robinson]] (rezolucja),​ [[wp>]] (University of Edinburgh)
   * implementacje:​ [[wp>​Alain_Colmerauer]],​ (University of Aix-Marseille),​ 1972; [[wp>​David_H._D._Warren]] (University of Edinburgh) 1977   * implementacje:​ [[wp>​Alain_Colmerauer]],​ (University of Aix-Marseille),​ 1972; [[wp>​David_H._D._Warren]] (University of Edinburgh) 1977
  
 +Więcej wskazówek związanych z uczeniem się Prologu można znaleźć na [[pl:​prolog:​prolog_lab#​przydatne_materialy|głównej stronie laboratorium]].
  
-==== Temat: ​SWI Prolog ====+===== -.  ​SWI Prolog ​=====
  
 Współcześnie jest dostępnych szereg implementacji Prologu, w tym swobodnie dostępne kompilatory Prologu: Współcześnie jest dostępnych szereg implementacji Prologu, w tym swobodnie dostępne kompilatory Prologu:
Linia 31: Linia 26:
  
  
-==== Ćwiczenie: ​Uruchamianie powłoki ====+==== Uruchamianie powłoki ==== 
 + 
 +**Ćwiczenie**
  
 Unix/​GNU/​Linux:​ Proszę otworzyć okno terminala, np. ''​xterm''​ i uruchomić w nim powłokę SWI przez polecenie ''​swipl''​ (może też być dostępny przez polecenie ''​pl''​). Unix/​GNU/​Linux:​ Proszę otworzyć okno terminala, np. ''​xterm''​ i uruchomić w nim powłokę SWI przez polecenie ''​swipl''​ (może też być dostępny przez polecenie ''​pl''​).
Linia 46: Linia 43:
  
  
- +==== Środowisko pracy ====
-==== Temat: ​Środowisko pracy ====+
  
 SWI dostarcza przede wszystkim zaawansowanej powłoki, wyposażonej w bibliotekę //GNU ReadLine//. SWI dostarcza przede wszystkim zaawansowanej powłoki, wyposażonej w bibliotekę //GNU ReadLine//.
Linia 55: Linia 51:
 SWI w wersji rozszerzonej o środowisko XPCE dostarcza również narzędzi programistycznych,​ takich jak wbudowany edytor //emacs//. Aby z niego skorzystać należy zamiast ''​swipl''​ wywołać ''​xpce''​ a potem w powłoce Prologu ''​emacs.''​. SWI w wersji rozszerzonej o środowisko XPCE dostarcza również narzędzi programistycznych,​ takich jak wbudowany edytor //emacs//. Aby z niego skorzystać należy zamiast ''​swipl''​ wywołać ''​xpce''​ a potem w powłoce Prologu ''​emacs.''​.
  
-==== Ćwiczenie: Środowisko pracy ====+**Ćwiczenie**
  
 Sprawdzić działanie systemu pracy z linią poleceń (GNU Readline): historia, dopełnianie,​ skrótu klawiaturowe. Przeglądnąć tryb pracy w GNU Emacs i edytor PCE Emacs (uruchomić SWI Prolog przez ''​xpce''​). Sprawdzić działanie systemu pracy z linią poleceń (GNU Readline): historia, dopełnianie,​ skrótu klawiaturowe. Przeglądnąć tryb pracy w GNU Emacs i edytor PCE Emacs (uruchomić SWI Prolog przez ''​xpce''​).
Linia 62: Linia 58:
 ===== -. Programowanie w Prologu ===== ===== -. Programowanie w Prologu =====
  
-==== Temat: ​Programowanie nieklasyczne ====+==== Programowanie nieklasyczne ====
  
 Prolog NIE jest klasycznym językiem programowania. Prolog NIE jest klasycznym językiem programowania.
Linia 82: Linia 78:
   * strategii sterowania wnioskowaniem.   * strategii sterowania wnioskowaniem.
  
-==== Temat: Pisanie ​programów ====+==== Budowa ​programów ====
  
 Elementy składniowe programu: Elementy składniowe programu:
Linia 91: Linia 87:
  
 Program składa się z: Program składa się z:
- 
   * szeregu //klauzul// (ang. //​clause//​),​ wyróżniamy:​   * szeregu //klauzul// (ang. //​clause//​),​ wyróżniamy:​
     * //fakty// (klauzule proste, formuły atomowe/​atomiczne),​     * //fakty// (klauzule proste, formuły atomowe/​atomiczne),​
Linia 97: Linia 92:
   * oraz //celu// (ang. //goal//).   * oraz //celu// (ang. //goal//).
  
-==== Ćwiczenie: Pisanie programów ​====+==== Prosty program ​==== 
 + 
 +**Ćwiczenie**
  
 Proszę przyjrzeć się poniższemu,​ prostemu programowi (klasyczny przykład //​Rodzina//​). Proszę przyjrzeć się poniższemu,​ prostemu programowi (klasyczny przykład //​Rodzina//​).
Linia 116: Linia 113:
  
  
- +==== Uruchamianie programu ====
-==== Temat: ​Uruchamianie programu ====+
  
 Do uruchomienia programu należy w powłoce załadować plik z kodem w Prologu przy pomocy predykatu ''​consult/​1''​ (skrót: ''​[nazwa].''​) Do uruchomienia programu należy w powłoce załadować plik z kodem w Prologu przy pomocy predykatu ''​consult/​1''​ (skrót: ''​[nazwa].''​)
Linia 124: Linia 120:
  
  
-==== Ćwiczenie: Uruchamianie programu ====+**Ćwiczenie**
  
 W powłoce SWI należy wczytać powyższy program: W powłoce SWI należy wczytać powyższy program:
Linia 136: Linia 132:
 Po ukazaniu się 1. odpowiedzi należy wcisnąć klawisz średnika (;). Po ukazaniu się 1. odpowiedzi należy wcisnąć klawisz średnika (;).
  
-==== Ćwiczenie: Baza wiedzy ====+==== Wyświetlanie bazy wiedzy ==== 
 + 
 +**Ćwiczenie**
  
 Sprawdzić działanie predykatu ''​listing/​0''​. Sprawdzić działanie predykatu ''​listing/​0''​.
Linia 148: Linia 146:
   ?- rodzic(_,​robert).   ?- rodzic(_,​robert).
  
-==== Ćwiczenie: Praca z programem ​====+==== Zadawanie celu (pytań) ​==== 
 + 
 +**Ćwiczenie**
  
 Systemowi można teraz zadawać pytania, cele do zrealizowania. Systemowi można teraz zadawać pytania, cele do zrealizowania.
Linia 182: Linia 182:
 Czy zamiast ''​Y''​ można wpisać inny symbol? Czy zamiast ''​Y''​ można wpisać inny symbol?
  
-==== Ćwiczenie: ​Rozbudowa programu ====+==== Rozbudowa programu ==== 
 + 
 +**Ćwiczenie**
  
 Proszę rozbudować program do poniższej, analogicznej (co do liczby osób i zależności) formy: Proszę rozbudować program do poniższej, analogicznej (co do liczby osób i zależności) formy:
Linia 210: Linia 212:
 Jeżeli koniunkcję celów oznaczamy przecinkiem,​ to jak zapytać kto jest matką, a kto ojcem roberta? Jeżeli koniunkcję celów oznaczamy przecinkiem,​ to jak zapytać kto jest matką, a kto ojcem roberta?
  
-==== Ćwiczenie: Przykład w innym języku ​====+==== Czy Prolog jest po polsku? ​==== 
 +**Ćwiczenie**
  
 Proszę spróbować dopisać do programu takie linijki: Proszę spróbować dopisać do programu takie linijki:
Linia 226: Linia 229:
  
  
-==== Ćwiczenie: ​Reguły ====+==== Reguły ​wnioskowania ​==== 
 +**Ćwiczenie**
  
-Proszę dopisać poniższe reguły i sprawdzić ich działanie.+Proszę dopisać poniższe reguły ​(klauzule złożone) ​i sprawdzić ich działanie.
  
 <code prolog> <code prolog>
Linia 248: Linia 252:
  
  
-==== Ćwiczenie: ​Reguły rekurencyjne ====+==== Reguły rekurencyjne ==== 
 +**Ćwiczenie**
  
 Rekurencja jest jednym z podstawowych mechanizmów programowania w Prologu. Proszę się przyjrzeć regułom opisującym przodka: Rekurencja jest jednym z podstawowych mechanizmów programowania w Prologu. Proszę się przyjrzeć regułom opisującym przodka:
pl/prolog/prolog_lab/wprowadzenie.1235339159.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