На главную | Где купить | Авторам и заказчикам | Вакансии | Реклама | Издательство | Каталог | Статьи наших авторов | Контакты | Прайс листы

Современное логическое программирование на языке Visual Prolog 7.5.

Автор Марков В.
Название Современное логическое программирование на языке Visual Prolog 7.5.
Серия Внесерийные книги
ISBN 978-5-9775-3487-1
Формат 70×100/16, 7БЦ
Объем 544
Тематика
Оптовая цена
    Вернуться к описанию книги

Полное содержание

Предисловие 13
О содержании 14
Благодарности 15
О языке 16
О приоритетах 17
Поддержка 17

ЧАСТЬ I. ОСНОВНЫЕ ЭЛЕМЕНТЫ ЯЗЫКА VISUAL PROLOG

19

Глава 1. Лексика языка Visual Prolog

21
1.1. Алфавит 21
1.2. Комментарии 21
1.3. Символы разметки текста 22
1.4. Лексемы 22
1.4.1. Ключевые слова 22
1.4.2. Знаки пунктуации 22
1.4.3. Операции 23
1.4.4. Идентификаторы 23
1.4.5. Литералы 23
Целые числа 24
Вещественные числа 24
Символы 25
Строки 25
Двоичные данные 26
Списки 27
Составной терм 27

Глава 2. Термы

28
2.1. Понятие термов 28
2.2. Переменные 29
2.3. Списки 30
2.4. Операция сопоставления с образцом 31
2.4.1. Сопоставление термов 32
2.4.2. Сопоставление списков 33
2.5. Операция унификации 34
2.6. Операция «должно унифицироваться» 36
2.7. Неразрушающее присваивание в Visual Prolog 37

Глава 3. Операции языка

38
3.1. Арифметические операции и операции сравнения и сопоставления 38
3.2. Целочисленное деление 39

Глава 4. Типы, домены, подтипы

40
4.1. Типы данных 40
4.2. Встроенные домены 41
4.3. Домены-синонимы 45
4.4. Подтипы и категориальный полиморфизм 45
4.5. Домены, определяемые пользователем 46
4.5.1. Целочисленные подтипы 46
4.5.2. Вещественные подтипы 47
4.5.3. Списочные домены 48
4.5.4. Составные домены 48

Глава 5. Константы

50
5.1. Объявление пользовательских констант 50
5.2. Встроенные константы 51

ЧАСТЬ II. ЯЗЫК VISUAL PROLOG

53

Глава 6. Предикаты

55
6.1. Понятие предиката 55
6.2. Логические операции над предикатами 56
6.3. Логические формулы 58
6.4. Правила вывода предикатов 59
6.4.1. Вывод предиката из другого предиката 59
6.4.2. Формулы вычисления предикатов 61
6.5. Факты 64
6.6. Машина логического вывода 65
6.7. Работа механизма поиска с возвратом 66
6.8. Чистый Пролог 74

Глава 7. Предикаты в Visual Prolog

75
7.1. Объявление и определение предикатов 75
7.1.1. Режимы детерминизма 75
7.1.2. Шаблон потоков 77
7.1.3. Определение предикатов.. 78
7.2. Объявление и определение функций. 80
7.3. Объявление и определение фактов 82
7.3.1. Режимы детерминизма факта 82
7.3.2. Определение фактов 83
7.3.3. Факты-переменные 83
7.4. Операции над разделами базы фактов 87
7.5. Операции над фактами 88
7.6. Встроенные предикаты Visual Prolog 89
7.6.1. Предикаты для работы с фактами базы данных. 89
7.6.2. Предикаты контроля потока параметров 90
7.6.3. Предикаты локализации места выполнения программы в исходном тексте 91
7.6.4. Предикаты контроля компиляции исходного текста 91
7.6.5. Предикат сравнения термов 92
7.6.6. Предикаты преобразования типов.. 92
7.6.7. Предикаты обработки эллипсиса 96
7.6.8. Предикаты получения размера домена 97
7.6.9. Предикат получения размера терма 98
7.6.10. Предикаты объявления/проверки домена переменной 98
7.6.11. Предикат обработки ошибки 99
7.6.12. Предикаты управления выполнением программы 99

Глава 8. Модули

101
8.1. Область видимости 102
8.2. Структура модуля 102
8.3. Использование модулей в проекте 104
8.3.1. Библиотека констант и доменов 104
8.3.2. Библиотеки предикатов 105
8.3.3. Глобальные переменные проекта 105

Глава 9. Отсечение и отрицание

108
9.1. Принцип работы отсечения 108
9.1.1. Область видимости отсечения 109
9.1.2. Использование отсечений 109
9.2. Зеленые и красные отсечения 111
9.3. Динамическое отсечение 112
9.4. Отрицание 113

Глава 10. Циклы с откатом

115
10.1. Структура цикла с откатом 115
10.2. Реализация циклов с откатом 117
10.3. Использование изменяемых переменных в циклах с откатом 122
10.4. Циклы с откатом на основе отрицания 125

Глава 11. Рекурсия

127
11.1. Структура рекурсии 127
11.2. Реализация рекурсии 130
11.3. Мемоизация 138

Глава 12. Ввод/вывод

140
12.1. Ввод/вывод в консольном приложении 140
12.1.1. Основные функции ввода с клавиатуры 140
12.1.2. Основные предикаты вывода на экран 141
12.1.3. Использование предиката hasDomain 142
12.2. Файловый ввод/вывод 143
12.3. Потоковый ввод/вывод 144
12.3.1. Потоковый ввод/вывод в цикле с откатом 146
12.3.2. Потоковый ввод/вывод в рекурсивном цикле 147
12.4. Строковые потоки 148
2.4.1. Поток ввода строк 149
12.4.2. Поток вывода строк 151

Глава 13. Списки

153
13.1. Представление списков в памяти компьютера 153
13.2. Встроенные операции над списками 154
13.2.1. Объявление списочных доменов 157
13.3. Реализация очереди и дека 157
13.4. Принципы рекурсивной обработки списков 158
13.4.1. Построение списков из элементов 158
13.4.2. Построение реверсивных списков из элементов 159
13.4.3. Сканирование списка 160
13.4.4. Модификация списка 161
13.4.5. Синхронная обработка списков 161
13.5. Примеры рекурсивной обработки списков 162
13.5.1. Определение длины списка 162
13.5.2. Построение списка 164
13.5.3. Соединение списков 165
13.5.4. Реверс списка 167
13.6. Ввод/вывод списков целиком 167
13.6.1. Терминальный ввод/вывод списков 167
13.6.2. Файловый ввод/вывод списков 168
13.6.3. Потоковый ввод/вывод списков 168
13.7. Поэлементный ввод/вывод списков 169
13.7.1. Поэлементный ввод/вывод списков в цикле с откатом 169
13.7.2. Поэлементный ввод/вывод списков в рекурсивном цикле 170
13.8. Предикат выборки элементов списка.. 171
13.9. Коллектор списков.. 172
13.10. Представление базы фактов списками фактов 174
13.10.1. Когерентность базы фактов и списка фактов 174
13.10.2. Домен фактов внутренней базы данных 175
13.10.3. Создание списка фактов внутренней базы данных 175
13.10.4. Восстановление внутренней базы данных из списка фактов 175
и обратно 176

Глава 14. Параметрический полиморфизм

178
14.1. Полиморфизм параметров предикатов 178
14.2. Полиморфизм параметров доменов 179
14.2.1. Полиморфный списочный домен класса core 182

Глава 15. Эллипсис

183

Глава 16. Предикаты второго порядка и анонимные предикаты

185
16.1. Предикатные и функциональные домены 185
16.2. Анонимные предикаты и функции 189
16.2.1. Определения анонимных предикатов 190
16.2.2. Использование анонимных предикатов и функций 190
16.2.3. Замыкание 195
16.2.4. Каррирование 195
16.3. Высокоуровневые предикаты и функции класса list 197

Глава 17. Императивные конструкции

205
17.1. Разрушающее присваивание 205
17.2. Ветвление 206
17.3. Условные выражения 207
17.4. Цикл foreach 207
17.5. Циклы с заданным числом повторений 210

Глава 18. Обработка исключительных ситуаций

211
18.1. Явный вызов исключений 211
18.2. Обработка исключений 213

Глава 19. Классы

218
19.1. Структура класса 218
19.1.1. Параметры состояния класса и объекта 221
19.2. Объекты 221
19.2.1. Создание объектов 221
19.2.2. Объектные предикаты 222
19.2.3. Объектные свойства 223
19.2.4. Удаление объектов 225
19.3. Классы 226
19.3.1. Конструкторы 226
19.3.2. Состояние класса 227
19.4. Наследование кода и поддержка интерфейсов.. 228
19.5. Сохранение объектов 230
19.6. Операции над всеми живущими объектами 231
19.7. Примеры использования классов 232

Глава 20. Обобщенное программирование

239
20.1. Обобщенные интерфейсы 239
20.2. Обобщенные классы 240
20.3. Обобщенные реализации 241
20.4. Пример обобщенной очереди 242

ЧАСТЬ III. СРЕДСТВА ПРОФЕССИОНАЛЬНОГО ПРОГРАММИРОВАНИЯ

245

Глава 21. Многопоточность

247
21.1. Основные операции с потоками 247
21.1.1. Создание потоков 247
21.1.2. Завершение потоков 248
21.1.3. Приостановка и возобновление потоков 248
21.1.4. Примеры создания потока 249
21.2. Мониторы 251
21.3. Защита 253

Глава 22. Доступ к API-функциям Windows

256
22.1. Описание типов данных API-функций доменами Visual Prolog 256
22.2. Объявления предикатов для вызова API-функций.. 258
22.3. Использование пакета windowsAPI 260
22.4. Использование API-функций из библиотеки Windows 262

Глава 23. Разработка и использование DLL

265
23.1. Создание DLL-проекта 266
23.2. Описание экспортируемых предикатов и функций DLL-проекта 267
23.3. Использование DLL-проекта 268

Глава 24. Отладка приложений

271
24.1. Отладчик Visual Prolog 271
24.2. Просмотр значений переменных средствами языка 274
24.3. Контроль стека и кучи 275

ЧАСТЬ IV. ПРЕДСТАВЛЕНИЕ И ОБРАБОТКА ДАННЫХ В VISUAL PROLOG

277

Глава 25. Графы

279
25.1. Представление ориентированных графов. 279
25.2. Представление неориентированных графов 282
25.3. Поиск «сначала вглубь» 283
25.4. Поиск «сначала вширь» 285

Глава 26. Деревья

288
26.1. Представление деревьев в Visual Prolog 288
26.2. Операции над деревьями 290
26.2.1. Добавление вершины 290
26.2.2. Поиск вершины 291
26.2.3. Удаление вершины 291
26.3. Красно-черные деревья 294

Глава 27. Массивы

299
27.1. Класс binary 299
27.1.1. Создание массивов binary 299
27.1.2. Основные операции над массивами binary 300
27.2. Класс arrayM 301
27.2.1. Создание одномерных массивов 301
27.2.2. Основные операции над одномерными массивами 301
27.3. Класс array2M 303
27.3.1. Создание двумерных массивов 303
27.3.2. Основные операции над двумерными массивами 303
27.4. Класс arrayM_boolean 304
27.4.1. Создание одномерных булевых массивов 304
27.4.2. Основные операции над одномерными булевыми массивами 304
27.5. Способы обработки массивов 305

Глава 28. Символьные преобразования

307
28.1. Этапы анализа текстов 307
28.2. Основы анализа текстов на Visual Prolog 308
28.2.1. Простой лексический анализ 308
28.2.2. Простой синтаксический анализ 308
28.3. Анализ математических выражений 309
28.4. Парсер математических выражений с произвольной грамматикой 315
28.5. Символьное дифференцирование выражений 322
28.6. Калькулятор 329
Способ 1 329
Способ 2 330
Способ 3 331
28.7. Задания для самостоятельного решения 333

Глава 29. Интерпретатор программ

335
29.1. Лексический анализ 335
29.2. Синтаксический анализ 341
29.3. Интерпретатор программ 346
29.4. Задания для самостоятельного решения 353

Глава 30. Практические рекомендации

355
30.1. Выбор способа представления и обработки данных 355
30.2. Управление памятью в Visual Prolog 7 356
30.2.1. Стек вызовов 356
Управляемый детерминизм 357
Задание произвольного размера стека вызовов 361
30.2.2. Динамическая память 363
Отказ от глобального стека в Visual Prolog 7 364
Многопоточность 365
30.2.3. Системная память 365

ЧАСТЬ V. ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ

367

Глава 31. Введение в Visual Prolog

369
31.1. Создание консольного проекта 369
31.2. Запуск программы 373
31.3. Расширение области видимости 376
31.4. Управление выводом в консоли 376
31.5. Использование классов PFC 377

Глава 32. Поиск с откатом на фактах

382
32.1. Цвета автомобилей 382
32.2. Точки на плоскости 385
32.3. Двенадцать месяцев 390
32.4. Зеленые и красные отсечения 390

Глава 33. Поиск с откатом на правилах

392
33.1. Родственные отношения 392
33.2. Моделирование комбинационных схем 397
33.3. Фигуры на плоскости 400
33.4. Ребус 405

Глава 34. Рекурсивные правила

408
34.1. Арифметика 408
34.2. Ряды 413
34.3. Длинная арифметика 415
34.4. Перевод чисел из одной системы счисления в другую 416
34.5. Обработка строк 423

Глава 35. Рекурсивные правила на списках

429
35.1. Списки 429
35.2. Математика 434
35.3. Треугольник Паскаля 435
35.4. Длинная арифметика 437
35.5. Преобразователь чисел из одной системы счисления в другую 439
35.6. Монеты 439
35.7. Домино 441
35.8. Ребус 442
35.9. Ребус с произвольными словами 444
35.10. Ребус с произвольными словами произвольной длины 446
35.11. Расстановка N ферзей на доске NxN 448
35.12. Кувшины 452
35.13. Строки. Баланс скобок 454
35.14. Строки. Транслитерация 455
35.15. Списки. Поиск в ширину подсписка в списке 456

Глава 36. Внутренняя база данных

459
36.1. Лексика русского языка 459
36.2. Искусственная жизнь 462
36.3. Представление базы данных списком фактов 466

Глава 37. Задачи на графах

468

Глава 38. Задачи на деревьях

473

Глава 39. Задачи на массивах

478
39.1. Решето Эратосфена 478
39.2. Сравнение частотных букварей текстов 481
   
ПРИЛОЖЕНИЯ 485
Приложение 1. Описание свойств и предикатов класса console 487
Свойства 487
Предикаты 487
Приложение 2. Описание предикатов класса file 491
Приложение 3. Описание конструкторов класса inputStream_file 495
Приложение 4. Описание конструкторов класса outputStream_file 497
Приложение 5. Пакет stream 500
Описание предикатов класса inputStream 500
Описание предикатов класса outputStream 501
Описание предикатов класса stream. 501
Приложение 6. Меню Visual Prolog 503
Приложение 7. Быстрые клавиши меню Visual Prolog. 509
Приложение 8. Панель инструментов Visual Prolog 512
Приложение 9. Описание предикатов класса std 514
Приложение 10. Описание класса string 517
Константа 517
Домены 517
Предикаты 517
Приложение 11. Описание электронного архива, сопровождающего книгу 534
Предметный указатель 535


На главную | Где купить | Авторам | Вакансии | Реклама | Издательство | Каталог | Статьи наших авторов | Контакты
© 2001–2020 Издательство «БХВ-Петербург».
Все права защищены. Частичное или полное копирование текстов, слоганов и фотоизображений без письменного согласия Правообладателя запрещено.