Prolog Programowanie.pdf

(266 KB) Pobierz
C:\Andrzej\PDF\ABC nagrywania p³yt CD\1 strona.cdr
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Prolog. Programowanie
SPIS TRECI
KATALOG KSI¥¯EK
Autorzy: W. F. Clocksin, C. S. Mellish
T³umaczenie: Tomasz ¯mijewski
ISBN: 83-7197-918-5
Tytu³ orygina³ u: Programming in Prolog
Format: B5, stron: 274
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Programowanie w Prologu ró¿ni siê zasadniczo od programowania w jêzykach
strukturalnych, takich jak Pascal czy C i jêzykach obiektowych jak Java. Dla wielu osób
zaczynaj¹cych przygodê z Prologiem zaskoczeniem jest fakt, ¿e pisanie programu
w tym jêzyku nie polega na kodowaniu algorytmu. Programista opisuje obiekty i zwi¹zki
miêdzy nimi, a tak¿e podaje warunki, jakie powinno spe³niaæ szukane rozwi¹zanie.
System sam przeprowadza obliczenia w oparciu o podane zale¿noci logiczne, za
programista jedynie czêciowo mo¿e wp³ywaæ na sposób dzia³ania programu.
Ksi¹¿ka „Prolog. Programowanie” to podrêcznik tego niezwyk³ego jêzyka
programowania stosowanego przy rozwi¹zywaniu problemów z ró¿nych dziedzin:
od logiki matematycznej i symbolicznego rozwi¹zywania równañ przez analizê jêzyka
naturalnego, a¿ do zagadnieñ zwi¹zanych ze sztuczn¹ inteligencj¹. Zawiera ona:
• Wprowadzenie do Prologu
• Podstawowe struktury danych
• Nawracanie, sterowanie nawracaniem za pomoc¹ symbolu odciêcia
• Operacje wejcia/wyjcia
• Predykaty
• Sk³adniê regu³ gramatycznych i analizê jêzyka naturalnego
• Wiele przyk³adowych programów
Wszystkim rozdzia³om towarzysz¹ æwiczenia. Uzupe³nieniem tekstu ksi¹¿ki s¹ dodatki
omawiaj¹ce m.in. rozwi¹zania æwiczeñ i ró¿nice miêdzy najwa¿niejszymi wersjami
Prologu.
„Prolog. Programowanie” to ksi¹¿ka dla studentów matematyki i informatyki, a tak¿e
dla wszystkich zainteresowanych programowaniem opartym na regu³ach logicznych.
Jeli chcesz podj¹æ wyzwanie i nauczyæ siê Prologu, jest ksi¹¿ka dla Ciebie.
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
319787327.003.png 319787327.004.png 319787327.005.png 319787327.006.png 319787327.001.png 319787327.002.png
Spis treci
Wstp ...............................................................................................7
Rozdział 1. Wprowadzenie .................................................................................11
Prolog....................................................................................................................11
Obiekty i relacje .....................................................................................................12
Programowanie.......................................................................................................13
Fakty.....................................................................................................................14
Zapytania...............................................................................................................16
Zmienne.................................................................................................................17
Koniunkcje.............................................................................................................19
Reguły...................................................................................................................23
Podsumowanie i %wiczenia ......................................................................................28
Rozdział 2. Prolog z bliska.................................................................................31
Składnia.................................................................................................................31
Stałe ................................................................................................................32
Zmienne...........................................................................................................32
Struktury..........................................................................................................33
Znaki.....................................................................................................................34
Operatory...............................................................................................................35
Równo+% i unifikacja...............................................................................................37
Arytmetyka ............................................................................................................38
Spełnianie celów — podsumowanie..........................................................................42
Udane spełnienie koniunkcji celów.....................................................................42
Cele i nawracanie..............................................................................................45
Unifikacja ........................................................................................................47
Rozdział 3. Korzystanie ze struktur danych.........................................................49
Struktury a drzewa..................................................................................................49
Listy......................................................................................................................51
Przeszukiwanie rekurencyjne...................................................................................54
Odwzorowania .......................................................................................................57
Porównywanie rekurencyjne....................................................................................60
Ł4czenie struktur....................................................................................................62
Akumulatory ..........................................................................................................66
Struktury ró5nicowe................................................................................................68
Rozdział 4. Nawracanie i odcicie......................................................................71
Generowanie wielu rozwi4za7..................................................................................72
Odci8cie.................................................................................................................75
4
Prolog. Programowanie
Typowe zastosowania odci8cia.................................................................................80
Potwierdzanie wyboru reguły.............................................................................80
U5ycie odci8cia z predykatem fail ......................................................................84
Ko7czenie generowania mo5liwych rozwi4za7 i ich sprawdzanie ..........................86
Niebezpiecze7stwa wynikaj4ce ze stosowania odci8cia ..............................................89
Rozdział 5. Wej&cie i wyj&cie.............................................................................91
Czytanie i pisanie termów........................................................................................92
Czytanie termów...............................................................................................92
Pisanie termów .................................................................................................93
Czytanie i pisanie znaków .......................................................................................96
Czytanie znaków...............................................................................................96
Pisanie znaków.................................................................................................97
Wczytywanie zda7..................................................................................................98
Czytanie z plików i pisanie do plików.....................................................................101
Otwieranie i zamykanie strumieni.....................................................................102
Zmiana bie54cego strumienia wej+ciowego i wyj+ciowego..................................103
Konsultowanie................................................................................................104
Deklarowanie operatorów......................................................................................105
Rozdział 6. Predykaty wbudowane ...................................................................107
Wprowadzanie nowych klauzul..............................................................................107
Sukces i pora5ka...................................................................................................109
Klasyfikacja termów .............................................................................................110
Przetwarzanie klauzul jako termów ........................................................................111
Tworzenie składników struktur i si8ganie do nich ....................................................114
Wpływ na nawracanie ...........................................................................................118
Tworzenie celów zło5onych...................................................................................119
Równo+%..............................................................................................................122
Wej+cie i wyj+cie..................................................................................................122
Obsługa plików.....................................................................................................124
Wyliczanie wyra5e7 arytmetycznych......................................................................124
Porównywanie termów..........................................................................................126
Badanie działania Prologu .....................................................................................127
Rozdział 7. Przykładowe programy ...................................................................129
Sortowany słownik w formie drzewa......................................................................129
Przeszukiwanie labiryntu.......................................................................................132
Wie5e Hanoi.........................................................................................................135
Program magazynowy...........................................................................................136
Przetwarzanie list..................................................................................................137
Zapis i przetwarzanie zbiorów................................................................................140
Sortowanie...........................................................................................................142
U5ycie bazy danych..............................................................................................145
random ..........................................................................................................145
gensym ..........................................................................................................146
findall ............................................................................................................147
Przeszukiwanie grafów..........................................................................................149
Odsiej Dwójki i odsiej Trójki.................................................................................153
Ró5niczkowanie symboliczne ................................................................................155
Odwzorowywanie struktur i przekształcanie drzew..................................................157
Przetwarzanie programów .....................................................................................160
Literatura .............................................................................................................163
Spis treci
5
Rozdział 8. Usuwanie błdów w programach prologowych.................................165
Układ programów .................................................................................................166
Typowe bł8dy.......................................................................................................168
@ledzenie programu...............................................................................................171
@ledzenie i punkty kontrolne..................................................................................177
Sprawdzanie celu ............................................................................................179
Sprawdzanie przodków....................................................................................180
Zmiana poziomu +ledzenia...............................................................................181
Zmiana sposobu spełnienia celu........................................................................182
Inne opcje ......................................................................................................183
Podsumowanie ...............................................................................................184
Poprawianie bł8dów..............................................................................................184
Rozdział 9. U-ycie reguł gramatycznych w Prologu ...........................................187
Parsowanie...........................................................................................................187
Problem parsowania w Prologu ..............................................................................190
Notacja reguł gramatyki ........................................................................................194
Dodatkowe argumenty ..........................................................................................196
Dodatkowe warunki..............................................................................................199
Podsumowanie .....................................................................................................201
Przekształcanie j8zyka na logik8.............................................................................202
Ogólniejsze zastosowanie reguł gramatyki ..............................................................204
Rozdział 10. Prolog a logika...............................................................................207
Krótkie wprowadzenie do rachunku predykatów......................................................207
Posta% klauzulowa.................................................................................................210
Zapis klauzul........................................................................................................215
Rezolucja i dowodzenie twierdze7..........................................................................216
Klauzule Horna ....................................................................................................220
Prolog..................................................................................................................220
Prolog i programowanie w logice ...........................................................................222
Rozdział 11. Projekty w Prologu.........................................................................225
Łatwiejsze projekty...............................................................................................225
Projekty zaawansowane ........................................................................................227
Dodatek A Odpowiedzi do niektórych 1wicze2..................................................231
Dodatek B Klauzulowa posta1 programów .......................................................235
Dodatek C Przeno&ne programy w standardowym Prologu................................241
Przeno+no+% standardu Prologu ..............................................................................241
Ró5ne implementacje Prologu................................................................................242
Czego si8 wystrzega% ............................................................................................243
Definicje wybranych predykatów standardowych ....................................................244
Przetwarzanie znaków.....................................................................................245
Dyrektywy .....................................................................................................247
Wej+cie i wyj+cie strumieniowe........................................................................247
Ró5ne ............................................................................................................249
Dodatek D Ró-ne wersje Prologu.....................................................................251
Dodatek E Dialekt edynburski.........................................................................255
Dodatek F micro-Prolog ..................................................................................263
Skorowidz......................................................................................267
Rozdział 1.
Wprowadzenie
Prolog
Prolog to komputerowy jzyk programowania. Jego pocztki sigaj roku 1970, od tego
czasu u ywano go w aplikacjach zwizanych z przetwarzaniem symbolicznym, w ta-
kich dziedzinach, jak:
relacyjne bazy danych,
logika matematyczna,
rozwizywanie problemów abstrakcyjnych,
przetwarzanie jzyka naturalnego,
automatyzacja projektowania,
symboliczne rozwizywanie równa&,
analiza struktur biochemicznych,
ró ne zagadnienia z dziedziny sztucznej inteligencji.
Osoby dopiero zaczynajce swoj przygod z Prologiem s zaskoczone tym, e pisanie
programu w Prologu nie polega na opisywaniu algorytmu, jak to ma miejsce w trady-
cyjnych jzykach programowania. Zamiast tego programi)ci Prologu zajmuj si ra-
czej formalnymi relacjami i obiektami zwizanymi z danym problemem, badajc, które
relacje s „prawdziwe” dla szukanego rozwizania. Tak wic Prolog mo e by. uwa any
za jzyk opisowy i deklaratywny . Programowanie w Prologu polega przede wszystkim
na opisaniu znanych faktów i relacji dotyczcych problemu, w mniejszym stopniu na
podawaniu kolejnych kroków algorytmu. Kiedy programujemy w Prologu, sposób
pracy komputera cz)ciowo wynika z deklaratywnej semantyki Prologu, cz)ciowo
z tego, e Prolog na podstawie danego zbioru faktów mo e wnioskowa. nowe fakty,
a jedynie cz)ciowo na podstawie jawnie podanych przez programist instrukcji ste-
rujcych.
Zgłoś jeśli naruszono regulamin