Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:prolog:prolog_lab:wprowadzenie [2009/02/24 13:49] holownia |
pl:prolog:prolog_lab:wprowadzenie [2019/06/27 15:50] (aktualna) |
* 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]]. |
| |
===== -. SWI Prolog ===== | ===== -. SWI Prolog ===== |
| |
| |
==== Ć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''). |
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''). |
* oraz //celu// (ang. //goal//). | * oraz //celu// (ang. //goal//). |
| |
==== Ćwiczenie: prosty program ==== | ==== 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//). |
| |
| |
==== Ćwiczenie: Uruchamianie programu ==== | **Ćwiczenie** |
| |
W powłoce SWI należy wczytać powyższy program: | W powłoce SWI należy wczytać powyższy program: |
Po ukazaniu się 1. odpowiedzi należy wcisnąć klawisz średnika (;). | Po ukazaniu się 1. odpowiedzi należy wcisnąć klawisz średnika (;). |
| |
==== Ćwiczenie: Wyświetlanie bazy wiedzy ==== | ==== Wyświetlanie bazy wiedzy ==== |
| |
| **Ćwiczenie** |
| |
Sprawdzić działanie predykatu ''listing/0''. | Sprawdzić działanie predykatu ''listing/0''. |
?- rodzic(_,robert). | ?- rodzic(_,robert). |
| |
==== Ćwiczenie: Zadawanie celu (pytań) ==== | ==== Zadawanie celu (pytań) ==== |
| |
| **Ćwiczenie** |
| |
Systemowi można teraz zadawać pytania, cele do zrealizowania. | Systemowi można teraz zadawać pytania, cele do zrealizowania. |
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: |
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: |
| |
| |
==== Ć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> |
| |
| |
==== Ć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: |