Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:prolog:lab_prolog_ansic [2007/11/27 15:34] kosmo |
pl:prolog:lab_prolog_ansic [2019/06/27 15:50] (aktualna) |
| |
====== Ćwiczenia ====== | ====== Ćwiczenia ====== |
| |
| |
| |
| |
* Praktycznie wszystkie funkcje interfejsu Prolog <-> C SWI-Prologu zwracają wartość różną od 0 w przypadku powodzenia i zerową w przypadku błędu. | * Praktycznie wszystkie funkcje interfejsu Prolog <-> C SWI-Prologu zwracają wartość różną od 0 w przypadku powodzenia i zerową w przypadku błędu. |
* Nawet drobne błędy w użyciu API Prologu mogą zaowocować znaczącą destabilizacją całego programu bądź jego niewytłumaczalmnym działaniem. | * Nawet drobne błędy w użyciu API Prologu mogą zaowocować znaczącą destabilizacją całego programu bądź jego niewytłumaczalmnym działaniem. |
* Programy należy kompilować przy pomocy załączonego pliku {{:pl:prolog:prolog_lab:Makefile-lab-ansic.txt|Makefile}}. Należy go skopiować pod nazwą //Makefile// do katalogu, w którym będą zapisywane programy tworzone podczas tego ćwiczenia. Po wydaniu komendy //make// wszystkie pliki *.c zostaną skompilowane i skonsolidowane z Prologiem. | * Programy w C należy kompilować przy pomocy załączonego pliku {{:pl:prolog:prolog_lab:Makefile-lab-ansic.txt|Makefile}}. Należy go skopiować pod nazwą //Makefile// do katalogu, w którym będą źródła programów tworzonych podczas tego ćwiczenia. Po wydaniu komendy //make// wszystkie pliki *.c zostaną skompilowane i skonsolidowane z Prologiem. |
| |
* Uruchamianie i zatrzymywanie SWI-Prologu: | * Uruchamianie i zatrzymywanie SWI-Prologu: |
* **Zadanie:** | * **Zadanie:** |
Należy napisać program w C, który za pomocą predykatu //[[http://gollem.science.uva.nl/SWI-Prolog/Manual/consulting.html#consult/1|consult/1]]// wczyta program w Prologu, a następnie wykona predykat z załadowanego pliku. | Należy napisać program w C, który za pomocą predykatu //[[http://gollem.science.uva.nl/SWI-Prolog/Manual/consulting.html#consult/1|consult/1]]// wczyta program w Prologu, a następnie wykona predykat z załadowanego pliku. |
| |
| |
| |
| |
* **Zadanie:** | * **Zadanie:** |
Należy napisać w języku C predykat przyjmujący jako argument tekst, który zostanie wypisany na ekranie w ozdobych nawiasach (''-=[ ]=-""), a następnie przetestować jego działanie przy pomocy konsoli Prologu. | Należy napisać w języku C predykat przyjmujący jako argument tekst, który zostanie wypisany na ekranie w ozdobych nawiasach (''-=[ ]=-''), a następnie przetestować jego działanie przy pomocy konsoli Prologu. |
| |
| |
| |
===== Unix: Polecenia Systemowe ===== | ===== Unix: Polecenia Systemowe ===== |
SWI-Prolog posiada mechanizmy pozwalajace na interację z systemem operacyjnym na którym pracuje. Do najprostrzych należy predykat //[[http://gollem.science.uva.nl/SWI-Prolog/Manual/system.html#shell/1|shell/1]]//, który pozwala na uruchomienie dowolnej aplikacji z poziomu Prologu. | [[http://www.swi-prolog.org|SWI-Prolog]] posiada mechanizmy pozwalajace na interację z systemem operacyjnym na którym pracuje. Do najprostrzych należy predykat //[[http://gollem.science.uva.nl/SWI-Prolog/Manual/system.html#shell/1|shell/1]]//, który pozwala na uruchomienie dowolnej aplikacji z poziomu Prologu. |
Na [[http://www.swi-prolog.org/packages/clib.html#sec:2|głębszą interackcję]] pozwala biblioteka [[http://www.swi-prolog.org/packages/clib.html|SWI-Prolog C-library]]. | Na [[http://www.swi-prolog.org/packages/clib.html#sec:2|głębszą interackcję]] pozwala biblioteka [[http://www.swi-prolog.org/packages/clib.html|SWI-Prolog C-library]]. |
| |
Należy napisać w Prologu program uruchamiający __jednocześnie__ 4 xtermy. | Należy napisać w Prologu program uruchamiający __jednocześnie__ 4 xtermy. |
| |
===== Unix: sockety ===== | |
[[http://www.swi-prolog.org/packages/clib.html|pakiet Clib]] | |
| |
| ===== Unix: Sockety ===== |
| [[http://www.swi-prolog.org/packages/clib.html|SWI-Prolog C-library]] pozwala także na komunikację sieciową, udostępniająć sieciowe API systemu operacyjengo jako predykaty. W [[http://www.swi-prolog.org/packages/clib.html#sec:4|Dokumentacji]] podane są kompletne przykłady implementacji serwerów i klientów napisanych w Prologu. |
| |
| * **Zadanie:** |
| Należy napisać w Prologu aplikację pobierającą poprzez protokół HTTP plik tekstowy i wyświetlający go na ekranie. Minimalne żądanie HTTP ma postać: |
| <code> |
| GET /ścieżka/do/pliku.txt<znak końca linii> |
| <znak końca linii> |
| </code> |
| Po wysłaniu żądania serwer wysyła nagłówki i zawartość pliku rozdzielone pustą linią a następnie zamyka połączenie. |
| |
| |
* [[http://gollem.science.uva.nl/SWI-Prolog/Manual/Contents.html|Podręcznik SWI]] | * [[http://gollem.science.uva.nl/SWI-Prolog/Manual/Contents.html|Podręcznik SWI]] |
* [[http://gollem.science.uva.nl/SWI-Prolog/Manual/foreign.html|Foreign Language Interface]] | * [[http://gollem.science.uva.nl/SWI-Prolog/Manual/foreign.html|Foreign Language Interface]] |
* [[http://www.swi-prolog.org/packages/clib.html|Pakiet Clib]] | * [[http://www.swi-prolog.org/packages/clib.html|SWI-Prolog C-library]] |
| |