Ин Ц., Соломон Д. И57 Использование Турбо-Пролога: Пер. с англ. - М.: Мир, 1993.-608 с., ил. ISBN 5-03-001181-1 Книга американских авторов представляет собой руководство по применению системы программирования Турбо-Пролог. В качестве примеров рассматриваются разработка естественно-языковых и экспертных систем, многооконный интерфейс с пользователем, машинная графика. Система программирования Турбо-Пролог предназначена для работы в операционной среде MS DOS или PC DOS на персональных ЭВМ PC (XT, AT), EC 1841, ЕС 1842. ЕС 1845 и т. п. Дм программистов, в том числе начинающих.
Предисловие редактора перевода
Эффективность усилий математиков и программистов, направленных на построение систем искусственного интеллекта, во многом определяется доступными инструментальными средствами, в частности языками программирования, используемыми для составления "думающих" программ. Не вдаваясь в дискуссию о том, "Может ли машина мыслить ?", "Что есть мысль и мышление ?", отметим одно безусловно привлекательное с практической точки зрения свойство систем искусственного -интеллекта, которое им настойчиво стремятся придать разработчики. Речь идет о возможности системы автоматически находить последовательность своих действий (вычислений) для получения ответов на вопросы пользователя, исходя из некоторой исходной информации, являющейся формальным описанием моделируемой реальности. Ведущая роль в воплощении этой идеи принадлежит языку программирования Пролог.
Два момента вызывают особое беспокойство программистов-практиков, работающих с этим языком. Первый из них - эффективность получающихся программ, осуществляющих в процессе достижения цели (ответа на поставленный вопрос) перебор большого числа логических следствий из исходных данных. Второй - трудность усвоения языка начинающими пользователями. Пролог относится к так называемым декларативным языкам, требующим от автора умения составить формальное описание ситуации, пользуясь понятиями объектов различных типов и отношений между ними. Программа, составленная на этом языке, не содержит детального описания последовательности шагов, ведущих к результату. Это дело мощных внутренних процедур логического анализа, используемых в реализации языка. Как следствие, невелика предсказуемость поведения программы.
В предлагаемой читателю книге детально излагается язык Турбо-Пролог (подмножество Пролога). Отмеченная выше неэффективность прологовских программ удачно преодолевается разработчиками фирмы Borland International. Отказавшись от некоторых возможностей стандартного языка, разработчики реализовали компилируемый вариант Пролога. При этом трансляция и выполнение программ заметно ускоряются.
Методические трудности, связанные с обучением использованию Пролога начинающих программистов, успешно преодолеваются авторами на основе последовательного применения простого принципа - делай, как мы. Множест-
во постепенно усложняющихся программ, упражнений для самостоятельного выполнения практически гарантирует (при наличии доступа к современной персональной ЭВМ) привитие читателю навыков программирования на своеобразном и красивом языке. Читатель, работающий с Прологом, познакомится с опытом реализации конкретных экспертных систем, с возможностью использования в системе Турбо-Пролог мощных графических средств персональных ЭВМ фирмы IBM, экранных окон, с реализацией общения с ЭВМ на упрощенном естественном языке.
• Книга может быть использована как учебное пособие при подготовке специалистов в области искусственного интеллекта, информационно-поисковых систем.
Перевод выполнен О .Л.Кондратьевым (Предисловие, гл. 1, 3, 5, 7, 9, И, приложения, индекс) и Д.Ю.Буланже (гл. 2, 4, 6, 8, 10, 12) при участии М.Е.Янковского.
Б.Г. Сушков
ОГЛАВЛЕНИЕ
Предисловие редактора перевода ...................................................... 5
Благодарности.........................................................t.............. 7
Предисловие ......................................................................... 8
Для чего нужен Турбо-Пролог? ........................................................ 8
Что такое Пролог? ................................................................... 9
Турбо-Пролог и другие языки программирования........................................ 10
Кому предназначена эта книга? ....................................................... 10
Что включено в настоящую книгу? ..................................................... 11
Глава 1. Начала работы на Турбо-Прологе............................................. 14
1.1. Введение....................................................................... 14
1.2. Пакет системы Турбо-Пролог ..................................................... 14
1.2.1. Турбо-Пролог версии 1.1..................................................... 16
1.2.2. Установка системы Турбо-Пролог версии 1.1 ................................... 16
1.3. Запуск Турбо-Пролога........................................................... 19
1.3.1. Главное меню системы Турбо-Пролог........................................... 21
1.3.2. Запуск на счет программы, написанной на Турбо-Прологе ....................... 22
1.3.3. "Добро пожаловать в систему Турбо-Пролог!" .................................. 24
1.3.4. Сохранение программного файла ............................................... 26
1.3.5. Просмотр каталога директории ................................................ 27
1.3.6. Загрузка и редактирование программного файла................................ 28
1.3.7. Печать файла................................................................ 31
1.4. Заключение ..................................................................... 31
Глава 2. Основные понятия языка Турбо-Пролог ......................................... 32
2.1. Введение ........................................................................ 32
2.2. Декларативные и императивные языки.............................................. 32
2.2.1. Логика предикатов............................................................. 33
2.2.2. Пролог и логика предикатов ........................... ........................ 36
2.3. Управление программой...........................................................38
2.3.1. Цели программы ............................................................... 39
2.3.2. Решение задачи............................................................... 40
2.3.3. Результат доказательства цели ................................................ 42
2.3.4. Связки и другие символы...................................................... 44
2.3.5. Цели и подцели ................................................................ 45
2.4. Внутренние подпрограммы унификации Турбо-Пролога ................................ 45
2.4.1. Представление данных при помощи фактов и правил .............................. 46
2.4.2. Обработка правил и фактов во время внутренней унификации ..................... 48
2.4.3. Откат........................................................................52
2.5. Заключение ............•.......................................................... 61
Глава 3. Основы программирования на Турбо-Прологе ................................... 62
3.1 Введение........................................................................ 62
3.2. Структура программ Турбо-Пролога .............................................. 62
3.2.1: Описание доменов и предикатов ............................................... 64
3.2.2. Правила образования имен в Турбо-Прологе .................................... 68
3.3. Предикаты и утверждения ........................................................ 69
3.3.1. Использование внешних и внутренних целей .................................... 71
3.3.2. Предикаты и утверждения разных арностей ..................................... 76
3.3.3. Использование правил в запросах............................................. 83
3.3.4. Простые базы данных ......................................................... 87
3.3.5. Отрицание ................................................................... 90
3.3.6. Использование составных объектов ............................................ 93
3.3.7. Использование альтернативных доменов ........................................ 103
3.4. Арифметика в Турбо-Прологе ..................................................... 111
3.5. Заключение ..................................................................... 114
Глава 4. Повторение и рекурсия ...................................................... 115
4.1. Введение ....................................................................... 115
4.2. Программирование повторяющихся операций ........................................ 115
4.3. Повторение и откат............................................................. 116
4.4. Методы повторения.............................................................. 119
4.4.1. Метод отката после неудачи ................................................... 119
4.4.2. Метод отсечения и отката..................................................... 128
4.4.3. Метод повтора, определяемый пользователем .................................... 135
4.5. Методы организации рекурсии .................................................... 139
4.5.1. Простая рекурсия............................................................. 139
4.5.2. Метод обобщенного правила рекурсии ........................................... 142
4.6. Заключение..................................................................... 152
Глава 5. Использование списков ...................................................... 153
5.1. Введение....................................................................... 153
5.2. Списки и Турбо-Пролог .......'................................................... 153
5.2.1. Атрибуты списка ............................................................. 154
5.2.2. Графическое представление списков........................................... 155
5.3. Применение списков в программе ................................................. 158
5.4. Использование метода с разделением списка на голову и хвост .................. 161
5.5. Различные операции над списками................................................ 166
5.5.1. Поиск элемента в списке ..................................................... 166
5.5.2. Деление списков ............................................................. 169
5.5.3. Присоединение списка ........................................................ 173
5.5.4. Сортировка списков .......................................................... 176
5.6. Компоновка данных в список ..................................................... 182
5.7. Заключение ..................................................................... 187
Глава 6. Использование строк ........................................................ 188
6.1. Введение....................................................................... 188
6.2. Множество символов Турбо-Пролога ............................................... 188
6.3. Ипольэование кодов ASCII для "записи" символов................................. 189
6.4. Присваивание переменным строковых значений ..................................... 189
6.5. Длина строки...............................................................--- 195
6.6. Конкатенация строк............................................................. 198
6.7. Создание подстрок .............................................................. 202
6.8. Преобразование данных.......................................................... 205
6.9. Преобразования, определяемые пользователем ..................................... 208
6.10. Создание символьных префиксов................................................. 211
6.11. Преобразование строк в список символов ........................................ 212
6.12. Специальные строки Турбо-Пролога .............................................. 216
6.13. Формирование атомов из строк .................................................. 220
6.14. Преобразование строк в списки атомов с функторами............................. 225
6.15. Заключение .................................................................... 228
Глава 7. Использование файлов на внешних носителях .................................. 230
7.1. Введение ....................................................................... 230
7.2. Конфигурация компьютера........................................................ 230
7.2.1. Физические и логические устройства .......................................... 231
7.2.2. Стандартная конфигурация устройств.......................................... 232
7.2.3. Расширенная конфигурация устройств .......................................... 237
7.3. Предикаты Турбо-Пролога для работы с файлами................................... 238
7.3.1. Описание файлового домена ................................................... 239
7.3.2. Запись в файл ................................................................ 239
7.3.3. Чтение из файла............................................................. 241
7.3.4. Модификация существующего файла ............................................. 241
7.3.5. Дозапись в конец уже существующего файла .........'........................... 242
7.4. Средства проектирования программ .............................................. 243
7.5. Использование предикатов для работы с файлами .................................. 245
7.5.1. Создание нового файла ..................................... .................. 245
7.5.2. Чтение из уже существующего файла ........................................... 247
7.5.3. Запись в файл данных, вводимых с клавиатуры ............ ..................... 250
7.5.4. Чтение файла на диске с последующей выдачей на экран и принтер ............. 254
7.5.5. Создание файла, содержащего символьную информацию ........................... 258
7.5.6. Считывание символов из файла ................................................ 262
7.6. "Дружественные пользователю" программы для обработки файлов ................. 264
7.6.1. Запись данных в файл ........................................................ 264
7.6.2. Чтение из_файла............................................................. 270
7.7. Дозапись данных в файл................................................'......... 274
7.8. Использование файлов прямого доступа ........................................... 278
7.8.1. Запись в файл прямого доступа ......................_......................... 279
7.8.2. Чтение из файла прямого доступа............................................. 283
7 .,9 Заключение.......................................................,.............. 286
Глава 8. Использование окон, графики, звука .,....................................... 288
8.1. Введение......................................................-................. 288
8.2. Использование предикатов для работы с окнами ................................... 289
8.2.1. Создание окон предикатом makewlndow .......................................... 289
8.2.2. Использование других предикатов для работы с окнами.......................... 295
8.3. Использование окон для ввода и вывода .......................................... 297
8.4. Программы, использующие окна................................................... 298
8.4.1. Вывод текста в окно.......................................................... 298
8.4.2. Создание нескольких окон .......................,............................. 300
8.4.3. Создание перекрывающихся окон ................................................ 306
8.4.4. Создание меню при помощи окон................................................ 307
8.5. Использование графики в программе.............................................. 311
8.5.1. Разрешающая способность изображения и режимы графического адаптера ........... 313
8.5.2. Предикат graphics
..................................................................................... 314
8.5.3. Предикат makewlndow и графический режим...........................'........... 316
8.5.4. Предикаты line и dot......................................................... 319
8.5.5. Сводка по графическим режимам и значениям параметров ......................... 320
8.6. Изображение объектов предикатами line и dot .................................... 321
8.6.1. Изображение окружности ....................................................... 322
8.6.2. Реализация простых изображений ,............---.............................. 323
8.7. Деловая графика ................................................................. 327
8.7.1. Линейный график.............................................................. 327
8.7.2. Простая столбиковая диаграмма..............................................,. 333
8.7.3. Круговая диаграмма........................................................... 336
8.8. Использование графики черепашки ................................................ 343
8.8.1. Предикаты графики черепашки .................................................. 344
8.8.2. Графические рисунки .......................................................... 346
8.8.3. Абстрактные рисунки. Движущаяся спираль ...................................... 349
8.9. Использование звука и музыки................................................... 351
8.9.1. Предикаты генерации звука.................................................... 351
8.9.2. Музыкальные фрагменты........................................................ 353
8.9.3. Несложная программа компьютерного обучения с музыкальными фрагментами ........ 353
8.10. Заключение .................................................................... 358
Глава 9. Создание динамических баз данных ........................................... 360
9.1 Введение..........................................'.............................. 360
9.2. Основные сведения о базах данных............................................... 361


Hosted by uCoz