W. F. Clocksin, mojeksiążki
[ Pobierz całość w formacie PDF ]
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. 12 Prolog. Programowanie Obiekty i relacje Prolog to komputerowy jzyk programowania u ywany do rozwizywania proble- mów dotyczcych obiektów i relacji midzy nimi. Kiedy na przykład mówimy, e „Jan ma ksi k”, informujemy, e istnieje relacja własno)ci midzy obiektem „Jan” a obiektem „ksi ka”. Co wicej, jest to relacja upo- rzdkowana: Jan ma ksi k, ale ksi ka nie ma Jana. Je)li zadajemy pytanie „Czy Jan ma ksi k?”, staramy si pozna. relacj. Wiele problemów mo emy opisa., wskazu- jc obiekty i ich relacje. Rozwizanie problemu polega na za daniu od komputera in- formacji o obiektach i relacjach, które mo na z naszego programu wywnioskowa.. Nie wszystkie relacje jawnie okre)laj wszystkie obiekty, które ich dotycz. Kiedy na przykład mówimy „Bi uteria jest cenna”, oznacza to, e istnieje relacja „bycia cen- nym” dotyczca bi uterii. Nie wiadomo, dla kogo bi uteria jest cenna ani dlaczego. Wszystko zale y od tego, co zamierzamy wyrazi.. Je)li tego typu relacje bdziemy modelowa. w Prologu, to liczba podawanych szczegółów zale e. bdzie od tego, ja- kiej odpowiedzi oczekujemy od komputera. Mówimy tutaj o obiektach, ale nie nale y myli. tego z popularn metodologi pro- gramowania — programowaniem obiektowym. W programowaniu obiektowym obiekt to struktura danych, która mo e dziedziczy. pola i metody z hierarchii klas, do której sama nale y. Wprawdzie pocztki programowania obiektowego mo na datowa. na )rodek lat 60., lecz popularno). zyskało w latach 80. i 90., kiedy to pojawiły si takie jzyki jak Smalltalk-80, C++ czy Java. Z kolei Prolog ewoluował niezale nie od pocztku lat 70., za) jego zacztkiem były postpy programowania w logice. Prologu nie nale y porównywa. z jzykami obiek- towymi, takimi jak C++ i Java, gdy Prolog słu y do całkiem innych zada& i całkiem inne znaczenie ma w nim słowo „obiekt”. Dziki elastyczno)ci Prologu mo liwe jest napisanie w nim programu, który bdzie interpretował podobny do Prologu jzyk obiek- towy, ale to ju całkiem inne zagadnienie. Reasumujc, kiedy mówimy o obiektach w Prologu, nie chodzi nam o struktury danych dziedziczce pola i metody z klasy, ale o byty, które mo na opisa. termami. Prolog stanowi praktyczn i wydajn implementacj szeregu aspektów „inteligentnego” wykonywania programu: braku determinizmu, równoległo)ci i wywoływania proce- dur według wzorca. Prolog zawiera ujednolicon struktur danych, term , na bazie któ- rej tworzone s wszystkie dane oraz same programy Prologu. Program prologowy składa si ze zbioru klauzul, a ka da klauzula to albo fakt opisujcy pewn informa- cj, albo reguła mówica, jak rozwizanie mo na powiza. z danymi faktami. Tak wic Prolog mo na uwa a. za pierwszy krok na drodze ku ostatecznemu celowi pro- gramowania w logice. W ksi ce tej nie bdziemy zanadto zastanawia. si nad dal- szymi implikacjami programowania w logice, nie bdzie nas te specjalnie intereso- wało, dlaczego Prolog nie jest gotowym jzykiem programowania w logice. Zamiast tego skoncentrujemy si na pisaniu przydatnych programów za pomoc istniejcych obecnie systemów standardowego Prologu. [ Pobierz całość w formacie PDF ] |