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:lab_prolog_ansic [2007/11/20 16:09]
kosmo
pl:prolog:lab_prolog_ansic [2007/11/27 16:18]
kosmo
Linia 1: Linia 1:
- 
-====== Wstęp ====== 
- 
-Prolog można łatwo zintegrować z językiem //ANSI C//. 
- 
-W [[http://​www.swi-prolog.org/​|SWI]] służy do tego podstawowy [[http://​gollem.science.uva.nl/​SWI-Prolog/​Manual/​foreign.html|interfejs do C]] 
- 
-Preliminaria:​ 
-  * znajomość Prologu 
-  * znajomość ANSI C 
- 
-====== Cel Lab ====== 
- 
-====== Ćwiczenia ====== 
- 
- 
- 
- 
- 
- 
-===== Etap 1: Podstawy ===== 
-  * Uwagi na początek: 
-      * Praktycznie wszystkie funkcje interfejsu Prolog <-> C SWI-Prologu zwracają ''​TRUE''​ w przypadku powodzenia i ''​FALSE''​ 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. ​ 
- 
-  * Uruchamianie i zatrzymywanie SWI-Prologu:​ 
-Interpreter Prologu uruchamia funkcja ''​[[http://​gollem.science.uva.nl/​SWI-Prolog/​Manual/​foreigninclude.html#​PL_initialise()|int PL_initialise(int ​  argc, char *argv[])]]'',​ a zatrzymuje ''​[[http://​gollem.science.uva.nl/​SWI-Prolog/​Manual/​foreigninclude.html#​PL_cleanup()|void PL_cleanup(int status)]]''​. Wszystkie wywołania Prologu (poza jednym wyjątkiem opisanym w dalszej części ćwiczenia) muszą zawierać się pomiędzy tymi funkcjami. 
- 
-  * Uruchamianie konsoli SWI-Prologu:​ 
-SWI-Prolog udostępnia funcję ''​[[http://​gollem.science.uva.nl/​SWI-Prolog/​Manual/​foreigninclude.html#​PL_toplevel()|int PL_toplevel()]]''​ umożliwającą uruchomienie standardowej konsoli kompilatora z poziomu programu w C. 
- 
-<code c> 
-#include <​SWI-Prolog>​ 
- 
-int main(int argc, char *argv) { 
-    int retval; 
- 
-    retval = PL_initialise(argc,​ argv); 
-    if (retval == FALSE) 
-        return(1); 
- 
-    retval = PL_toplevel();​ 
- 
-    PL_cleanup(retval);​ 
-    return(retval);​ 
-} 
-</​code>​ 
- 
- 
- 
-===== Etap 2: Ładowanie kodu Prologu i uruchamianie predykatów z poziomu C ===== 
- 
-<code c> 
-#include <​SWI-Prolog>​ 
- 
-int main(int argc, char *argv) { 
-    int retval; 
- 
-    retval = PL_initialise(argc,​ argv); 
-    if (retval == FALSE) 
-        return(1); 
- 
- 
-    retval = PL_toplevel();​ 
- 
-    PL_cleanup(retval);​ 
-    return(retval);​ 
-} 
-</​code>​ 
- 
-===== Etap 3: Predykaty w C ===== 
- 
-===== Prolog z C ===== 
- 
-===== Unix: polecenia systemowe ===== 
-[[http://​www.swi-prolog.org/​packages/​clib.html|pakiet Clib]] 
- 
-===== Unix: sockety ===== 
-[[http://​www.swi-prolog.org/​packages/​clib.html|pakiet Clib]] 
- 
-====== Źródła ====== 
- 
-  * [[http://​gollem.science.uva.nl/​SWI-Prolog/​Manual/​Contents.html|Podręcznik SWI]] 
-  * [[http://​gollem.science.uva.nl/​SWI-Prolog/​Manual/​foreign.html|interfejs do C]] 
-  * [[http://​www.swi-prolog.org/​packages/​clib.html|pakiet Clib]] 
- 
-inne 
- 
-przyklady 
- 
-narzedzia 
  
pl/prolog/lab_prolog_ansic.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