Материал: Терёхин В. В. Turbo Prolog

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Министерство Образования Российской Федерации

Кемеровский государственный университет

В. В. Терёхин

TURBO PROLOG

Учебное пособие

Новокузнецк 2005

1

 

Содержание

 

Содержание....................................................................................................................................

2

Глава 1. Начала работы на Турбо-Прологе.................................................................................

4

1.1

Введение...............................................................................................................................

4

1.2

Пакет системы Турбо-Пролог............................................................................................

6

1.2.1 Главное меню системы Турбо-Пролог.......................................................................

8

1.2.2 Запуск на счет программы, написанной на Турбо-Прологе.....................................

9

1.2.3 "Добро пожаловать в систему Турбо-Пролог!".........................................................

9

1.2.4 Сохранение программного файла.............................................................................

10

1.2.5 Просмотр каталога директории.................................................................................

11

1.2.6 Загрузка и редактирование программного файла ...................................................

11

1.2.7 Печать файла...............................................................................................................

12

1.4

Заключение.........................................................................................................................

12

Глава 2. Основные понятия языка Турбо-Пролог....................................................................

12

2.1

Ведение...............................................................................................................................

12

2.2

Декларативные и императивные языки...........................................................................

13

2.2.1 Логика предикатов .....................................................................................................

14

2.2.2 Пролог и логика предикатов......................................................................................

16

2.3

Управление программой...................................................................................................

18

2.3.1 Цели программы.........................................................................................................

19

2.3.2 Решение задачи...........................................................................................................

19

2.3.3 Результат доказательства цели..................................................................................

21

2.3.4 Связки и другие символы..........................................................................................

21

2.3.5 Цели и подцели...........................................................................................................

22

2.4

Внутренние подпрограммы унификации Турбо-Пролога............................................

23

2.4.1 Представление данных при помощи фактов и правил ...........................................

24

2.4.2 Обработка правил и фактов во время унификации.................................................

25

2.4.3 Откат............................................................................................................................

28

2.5

Заключение.........................................................................................................................

34

Глава 3. Основы программирования на Турбо-Прологе .........................................................

35

3.1

Введение.............................................................................................................................

35

3.2

Структура программ Турбо-Пролога...............................................................................

35

3.2.1 Описание доменов и предикатов ..............................................................................

36

3.2.2 Правила образования имен в Турбо-Прологе..........................................................

40

3.3

Предикаты и утверждения................................................................................................

40

3.3.1 Использование внешних и внутренних целей.........................................................

42

3.3.2 Предикаты и утверждения разных арностей ...........................................................

44

3.3.3 Использование правил в запросах............................................................................

48

3.3.4 Простые базы данных ................................................................................................

51

3.3.5 Отрицание ...................................................................................................................

54

3.3.6 Использование составных объектов.........................................................................

56

3.3.7 Использование альтернативных доменов................................................................

61

3.4

Арифметика в Турбо-Прологе..........................................................................................

66

3.5

Заключение.........................................................................................................................

68

Глава 4. Повторение и рекурсия ................................................................................................

69

4.1

Введение.............................................................................................................................

69

4.2

Программирование повторяющихся операций ..............................................................

69

4.3

Повторение и откат ...........................................................................................................

70

4.4

Методы повторения...........................................................................................................

72

4.4.1 Метод отката после неудачи .....................................................................................

72

4.4.2 Метод отсечения и отката (ОО) ................................................................................

78

4.4.3 Метод повтора (МП), определяемый пользователем..............................................

82

 

 

2

4.5

Методы организации рекурсии........................................................................................

86

4.5.1 Простая рекурсия........................................................................................................

86

4.5.2 Метод обобщенного правила рекурсии (ОПР) ........................................................

88

4.6

Обзор содержания главы ..................................................................................................

95

Глава 5. Использование списков................................................................................................

96

5.1

Введение.............................................................................................................................

96

5.2

Списки и Турбо-Пролог....................................................................................................

96

5.2.1 Атрибуты списка........................................................................................................

97

5.2.2 Графическое представление списков .......................................................................

98

5.3

Применение списков в программе...................................................................................

99

5.4

Использование метода с разделением списка на голову и хвост..............................

102

5.5. Различные операции над списками...............................................................................

104

5.5.1 Поиск элемента в списке..........................................................................................

105

5.5.2 Деление списков.......................................................................................................

107

5.5.3 Присоединение списка.............................................................................................

109

5.5.4 Сортировка списков.................................................................................................

111

5.6

Компоновка данных в список.........................................................................................

115

5.7. Заключение......................................................................................................................

118

3

Глава 1. Начала работы на Турбо-Прологе

1.1 Введение

Турбо-Пролог (Turbo Prolog) яляется языком искусственного интеллекта (ИИ). Разработан этот язык компанией Borland International и характеризуется высокой скоростью работы и низкой стоимостью, что делает Тур- бо-Пролог весьма популярным в широких кругах обладателей персональных компьютеров.

Для чего нужен Турбо-Пролог ?

Турбо-Пролог является компиляторно-ориентированным языком программирования высокого уровня. Он предназначен для программирования задач из области искусственного интеллекта. Как язык программирования ИИ Турбо-Пролог особенно хорош для создания экспертных систем, динамических баз данных, программ с применением естественно-языковых конструкций. Он также может быть использован и для других задач общего характера. Турбо-Пролог имеет окна, цветную графику и интерактивные средства ввода-вывода, что свидетельствует о его максимальном удобстве для пользователя прикладных программ.

Встроенные предикаты Турбо-Пролога и другие дополнительные возможности делают его пригодным для решения многих стандартных задач из сферы бизнеса, включая бухгалтерский учет, расчет зарплаты и представление графиков.

Популярность Пролога резко возросла после того, как он был выбран в качестве базового языка японской программы ЭВМ пятого поколения. Спрос на программы искусственного интеллекта, применяемые либо взамен, либо совместно с традиционными прикладными программами, постоянно увеличивается. В ходе продолжающейся эволюции применений вычислительной техники наблюдается все возрастающая потребность в создании прикладных программ на Прологе. Турбо-Пролог может прекрасно удовлетворить такую потребность.

Наряду с Турбо-Прологом в США созданы еще несколько реализаций Пролога: Arity Prolog, Prolog II, Wisdom Prolog и Micro Prolog. В отличие от них Турбо-Пролог имеет великолепный полноэкранный редактор, множество рабочих окон и интерактивный диалоговый отладчик. Он поддерживает цветную графику IBM PC, снабженного цветным графическим адаптером (CGA) и расширенным графическим адаптером (EGA). Предикаты графики и система с графическим экранным пером являются составной частью Тур- бо-Пролога. Он также снабжен средствами работы с последовательными файлами, файлами прямого доступа и двоичными файлами.

Еще одной причиной предпочтительности выбора Турбо-Пролога является то, что написанные на нем программы компилируются, в отличие от других версий Пролога, где программа интерпретируется. Интерпретатор выбирает предложения программы одно за другим и последовательно ис-

4

полняет их. Компилятор транслирует в машинные коды сразу весь текст программы. Турбо-Пролог транслирует исходный текст программы особенно быстро (быстрее всех других версий Пролога для компьютеров IBM PC). Также он позволяет легко создавать отдельные выполнимые файлы. Далее, Турбо-Пролог имеет прекрасный пользовательский интерфейс для отладки программ. Другими словами, Турбо-Пролог - это наилучший товар на рынке программного обеспечения на сегодняшний день.

Что такое Пролог ?

Название Пролог произошло от словосочетания "программирование при помощи логики" (Prolog PROgramming in LOGic). Пролог был разработан и впервые реализован в 1973 г. Алэном Колмероэ и другими членами "группы искусственного интеллекта" (Франция) Марсельского университета. Главной задачей группы было создание программы для перевода с естественного языка. С тех пор было сделано несколько расширений и усовершенствований языка, здесь можно отметить работу группы из Эдинбургского университета (Шотландия). Шотландский вариант получил название C&M Prolog в честь авторов классической работы "Программирование на Прологе" Уильяма Клоксина и Кристоффера Меллиша. Хотя официального стандарта Пролога не существует, в этой книге приведен тот его вариант, который считается неофициальным стандартом.

Турбо-Пролог имеет несколько отличий. В нем отсутствуют некоторые элементы C&M, но такие, которые встречаются только в очень сложных программах. Самым существенным отличием от упомянутого стандарта (как и от других версий языка) является наличие в Турбо-Прологе строгой типизации элементов данных. Сделанные отступления от неофициального стандарта позволили значительно увеличить скорость трансляции и счета программ. И хотя некоторые программисты возражают против этих отступлений, говоря что Турбо-Пролог не есть Пролог "в чистом виде", однако именно в таком виде язык имеет массу преимуществ, например наличие графики и возможность работы с окнами. Этих средств нет в других реализациях. Независимо от того, является ли Турбо-Пролог "чистым" Прологом или нет, он тем не менее является очень современным, полноценным и гибким языком программирования.

Турбо-Пролог и другие языки программирования Такие языки программирования, как Паскаль, Бэйсик и Си относятся к

разряду императивных или процедурных. Программа, написанная на императивном языке, состоит из последовательности команд, определяющих шаги, необходимые для достижения назначения программы. Пролог является декларативным языком. Программа на декларативном языке являет собой набор логический описаний, определяющих цель, ради которой она написана. Таким образом в Прологе отсутствуют такие явные управляющие структуры, как DO WHILE и IF ... THEN. Вместо расписывания шагов выполнения программы программист должен определить логический метод для достижения

5