Prolog. Programowanie

Programowanie w Prologu różni się zasadniczo od programowania w językach strukturalnych, takich jak Pascal czy C i język

633 100 4MB

Polish Pages [133] Year 2003

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Prolog. Programowanie

Table of contents :
Wstęp (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)
Łączenie struktur (62)
Akumulatory (66)
Struktury różnicowe (68)
Rozdział 4. Nawracanie i odcięcie (71)

Generowanie wielu rozwiązań (72)
Odcięcie (75)
Typowe zastosowania odcięcia (80)
Potwierdzanie wyboru reguły (80)
Użycie odcięcia z predykatem fail (84)
Kończenie generowania możliwych rozwiązań i ich sprawdzanie (86)
Niebezpieczeństwa wynikające ze stosowania odcięcia (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 zdań (98)
Czytanie z plików i pisanie do plików (101)
Otwieranie i zamykanie strumieni (102)
Zmiana bieżącego strumienia wejściowego i wyjściowego (103)
Konsultowanie (104)
Deklarowanie operatorów (105)
Rozdział 6. Predykaty wbudowane (107)

Wprowadzanie nowych klauzul (107)
Sukces i porażka (109)
Klasyfikacja termów (110)
Przetwarzanie klauzul jako termów (111)
Tworzenie składników struktur i sięganie do nich (114)
Wpływ na nawracanie (118)
Tworzenie celów złożonych (119)
Równość (122)
Wejście i wyjście (122)
Obsługa plików (124)
Wyliczanie wyrażeń 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)
Wieże Hanoi (135)
Program magazynowy (136)
Przetwarzanie list (137)
Zapis i przetwarzanie zbiorów (140)
Sortowanie (142)
Użycie bazy danych (145)
random (145)
gensym (146)
findall (147)
Przeszukiwanie grafów (149)
Odsiej Dwójki i odsiej Trójki (153)
Różniczkowanie symboliczne (155)
Odwzorowywanie struktur i przekształcanie drzew (157)
Przetwarzanie programów (160)
Literatura (163)
Rozdział 8. Usuwanie błędów w programach prologowych (165)

Układ programów (166)
Typowe błędy (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łędó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 języka na logikę (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 twierdzeń (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 ćwiczeń (231)

Dodatek B Klauzulowa postać programów (235)

Dodatek C Przenośne programy w standardowym Prologu (241)

Przenośność standardu Prologu (241)
Różne implementacje Prologu (242)
Czego się wystrzegać (243)
Definicje wybranych predykatów standardowych (244)
Przetwarzanie znaków (245)
Dyrektywy (247)
Wejście i wyjście strumieniowe (247)
Różne (249)
Dodatek D Różne wersje Prologu (251)

Dodatek E Dialekt edynburski (255)

Dodatek F micro-Prolog (263)

Skorowidz (267)

Citation preview

Spis treści Wstęp ............................................................................................... 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 Łączenie struktur ....................................................................................................62 Akumulatory ..........................................................................................................66 Struktury różnicowe................................................................................................68

Rozdział 4. Nawracanie i odcięcie...................................................................... 71 Generowanie wielu rozwiązań..................................................................................72 Odcięcie.................................................................................................................75

4

Prolog. Programowanie Typowe zastosowania odcięcia.................................................................................80 Potwierdzanie wyboru reguły .............................................................................80 Użycie odcięcia z predykatem fail ......................................................................84 Kończenie generowania możliwych rozwiązań i ich sprawdzanie ..........................86 Niebezpieczeństwa wynikające ze stosowania odcięcia ..............................................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 zdań..................................................................................................98 Czytanie z plików i pisanie do plików..................................................................... 101 Otwieranie i zamykanie strumieni..................................................................... 102 Zmiana bieżącego strumienia wejściowego i wyjściowego.................................. 103 Konsultowanie................................................................................................ 104 Deklarowanie operatorów...................................................................................... 105

Rozdział 6. Predykaty wbudowane ................................................................... 107 Wprowadzanie nowych klauzul.............................................................................. 107 Sukces i porażka................................................................................................... 109 Klasyfikacja termów ............................................................................................. 110 Przetwarzanie klauzul jako termów ........................................................................ 111 Tworzenie składników struktur i sięganie do nich .................................................... 114 Wpływ na nawracanie ........................................................................................... 118 Tworzenie celów złożonych................................................................................... 119 Równość.............................................................................................................. 122 Wejście i wyjście .................................................................................................. 122 Obsługa plików..................................................................................................... 124 Wyliczanie wyrażeń 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 Wieże Hanoi......................................................................................................... 135 Program magazynowy........................................................................................... 136 Przetwarzanie list.................................................................................................. 137 Zapis i przetwarzanie zbiorów................................................................................ 140 Sortowanie ........................................................................................................... 142 Użycie bazy danych .............................................................................................. 145 random .......................................................................................................... 145 gensym .......................................................................................................... 146 findall ............................................................................................................ 147 Przeszukiwanie grafów.......................................................................................... 149 Odsiej Dwójki i odsiej Trójki................................................................................. 153 Różniczkowanie symboliczne ................................................................................ 155 Odwzorowywanie struktur i przekształcanie drzew .................................................. 157 Przetwarzanie programów ..................................................................................... 160 Literatura ............................................................................................................. 163

Spis treści

5

Rozdział 8. Usuwanie błędów w programach prologowych................................. 165 Układ programów ................................................................................................. 166 Typowe błędy....................................................................................................... 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łędó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 języka na logikę............................................................................. 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 twierdzeń.......................................................................... 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 ćwiczeń.................................................. 231 Dodatek B Klauzulowa postać programów ....................................................... 235 Dodatek C Przenośne programy w standardowym Prologu ................................ 241 Przenośność standardu Prologu .............................................................................. 241 Różne implementacje Prologu................................................................................ 242 Czego się wystrzegać ............................................................................................ 243 Definicje wybranych predykatów standardowych .................................................... 244 Przetwarzanie znaków..................................................................................... 245 Dyrektywy ..................................................................................................... 247 Wejście i wyjście strumieniowe........................................................................ 247 Różne ............................................................................................................ 249

Dodatek D Różne wersje Prologu..................................................................... 251 Dodatek E Dialekt edynburski......................................................................... 255 Dodatek F

micro-Prolog .................................................................................. 263 Skorowidz...................................................................................... 267