Главная
Каталог
Библиотека
Избранное
Порталы
Библиотеки вузов
Отзывы
Новости
 
12+
 
Предварительный просмотр документа

TURBO PROLOG: Учебное пособие

Автор/создатель: Терёхин В.В.
Год: 2005 
Учебное пособие посвящено изучению языка искусственного интеллекта TURBO PROLOG. Разделы пособия: начала работы на Турбо-Прологе; основные понятия языка; основы программирования; повторение и рекурсия; использование списков.
Показать полное описание документа
Популярные ресурсы рубрик:
РЕЙТИНГ

Оценка пользователей: 4.6
Количество голосов: 9
Оцените ресурс:
5 4 3 2 1

ОТЗЫВЫ


Популярные ресурсы по теме

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра. Изображения (картинки, формулы, графики) отсутствуют.
Министерство Образования Российской Федерации Кемеровский государственный университет В. В. Терёхин 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 цели программы. Мощные внутренние унификационные процедуры (работа которых будет пояснена в гл. 2) будут затем искать решение поставленной задачи. Сила Турбо-Пролога заключается в его возможностях поиска и сопос- тавления. Внутренние унификационные процедуры бесстрастно перебирают все возможные комбинации правил, пытаясь удовлетворить заданную про- граммистом цель. Пролог, как видим, базируется на естественных для человека логических принципах, и поэтому, чем больше вы им занимаетесь, тем он становится все более привлекательным. Кому предназначена эта документация ? Это пособие написано для всех, кто интересуется Турбо-Прологом, вне зависимости от того, является ли он новичком или профессиональным программистом. От вас не требуется знания ни процедурных языков (на- пример, Бэйсик, Паскаль или Си), ни декларативных языков (например, Лисп). В книге изложены основные концепции и методы, необходимые для написания программ на Турбо-Прологе. С ее помощью вы научитесь мыс- лить категориями Пролога. Если вы не работали с Турбо-Прологом вообще, эта книга именно для вас. "Использование Турбо-Пролога" позволит понять, что представляет со- бой программирование на декларативном языке, как проектируются и пи- шутся на нем программы. Логические предикаты и правила - это основные средства программирования для всех версий Пролога. Если система Турбо-Пролог у вас уже имеется, и вы пробовали с ней работать, то книга пригодится и в этом случае. Она покажет, как проекти- ровать и реализовать прикладные программы, предназначенные для реше- ния различных задач. Турбо-Пролог - это осуществленная реализация языка программи- рования высокого уровня Пролог компиляторного типа. Ее отличает боль- шая скорость компиляции и счета. Турбо-Пролог предназначен для выдачи ответов, которые он логически выводит при посредстве своих мощных внутренних процедур. Так, программа на Турбо-Прологе в несколько строк, может заменить несколько страниц текста при программировании на каком-либо другом языке. Благодаря наличию мощных средств сопоставле- ния, Турбо-Пролог пригоден не только для использования в приложениях, относящихся к области искусственного интеллекта и обработке естественно- языковых конструкций, но также применим в таких традиционных областях, как, например, управление базами данных. Турбо-Пролог предназначен для машин класса IBM PC и совмести- мых с ними. 1.2 Пакет системы Турбо-Пролог Пакет компилятора Турбо-Пролог состоит из двух дистрибутивных дисков и Руководства пользователя, насчитывающего свыше 200 страниц. 6 Один диск имеет имя PROGRAM DISK, другой - LIBRARY&SAMPLE PROGRAMS. В табл.1 приведены описания файлов, содержащихся на обоих дистрибутивных дисках. Таблица 1.1. Файлы дистрибутивных дисков версии 1.1 ___________________________________________________________ 1.Содержимое диска PROGRAM DISK: PROLOG.EXE основной файл системы Турбо-Пролог. PROLOG.OVL оверлейный файл, используемый системой при запуске, при создании .EXE-файлов и при выполнении не- которых других функций. PROLOG.SYS файл, содержащий информацию о цвете, расположении окон системы, также как и информацию об используемых системой директориях. PROLOG.ERR файл с сообщениями об ошибках PROLOG.HLP файл с текстом применяемых в системе подсказок (обраще- ние к нему осуществляется при помощи функциональной клавиши F1). GEOBASE.PRO демонстрационная программа базы данных и по географии США GeoBASE. GEOBASE.INC GEOBASE.DBA данные для программы GeoBase. GEOBASE.HLP текст подсказок программы GeoBase. README.COM программа для выдачи на экран содержимого файла README. README текстовой файл, содержащий необходимую для работы информацию, не включенную в руководство поль- зователя Турбо-Пролога. 2.Содержимое диска LIBRARY&SAMPLE PROGRAMS: PROLOG.LIB файлы, используемые системой Турбо-Пролог и при создании выполнимых файлов. INIT.OBJ EXAMPLES директория, содержащая программы, используемые в раз- деле обучения Руководства пользователя. ANSWERS директория, содержащая ответы на упражнения из Руководства. PROGRAMS директория, содержащая демонстрационные программы. ________________________________________________________ 7 1.2.1 Главное меню системы Турбо-Пролог Главное меню Турбо-Пролога высвечивает 7 доступных пользовате- лю опций (команд) в верхней части экрана. Первая буква названия каждой из команд выделена при помощи увеличенной яркости; на репродукциях книги это, к сожалению, не видно. Выделение имеет целью напоминать, что для задания команды достаточно нажать лишь первую букву ее названия. Команды определяются 7 функциями Турбо-Пролога, каковыми явля- ются: 1. Запуск программы на счет (Run). 2. Трансляция программы (Compile). 3. Редактирование текста программы (Edit). 4. Заданий опций компилятора (Options). 5. Работа с файлами (Files). 6. Настройка системы в соответствии с индивидуальными потребно- стями (Setup). 7. Выход из системы (Quit). Переход от одной команды к другой прост и удобен. Существует два способа задания команд. Первый требует нажатия клавиши, соответствую- щей первой букве названия выбранной команды. Так, для выбора команды Edit необходимо нажать E. (Нет никакой разницы, какая буква была введе- на большая или маленькая, т. е. использование Shift не обязательно.) Для окончания работы с командой используется клавиша Esc. Второй способ со- стоит в перемещении по меню при помощи стрелок; переход к работе с вы- бранной командой осуществляется нажатием Enter. Главное меню содержит четыре окна. В левом верхнем углу рас- полагается окно редактора Турбо-Пролога ( Editor ), в правом верхнем углу - окно диалога (Dialog), в левом нижнем окно сообщений (Message), в правом нижнем - окно трассировки (Trace). Если вы используете цветной монитор, то по умолчанию для окна редактора задается голубой цвет, для окна диало- га - красный и черный - для окон сообщений и трассировки. Верхняя строка окна редактора содержит информацию о вы- свечиваемом в этом окне файле. Line 1 и Col 1 свидетельствуют о том, что курсор в настоящий момент располагается в первой позиции первой стро- ки. Значения этих индикаторов строки и позиции меняются вслед за изме- нением положения курсора. Надпись Indent сигнализирует о том, что вклю- чен режим автоматического выравнивания строк, а надпись Insert - о том, что задан режим вставки. WORK.PRO является заданным по умолчанию именем рабочего файла; .PRO есть заданное по умолчанию расширение для файлов, содержащих программы на Турбо-Прологе. Если вы набьете в ре- дакторе какой-либо текст и запишите его на диск без изменения имени файла, то файл с вашим текстом получит имя WORK.PRO. 8 1.2.2 Запуск на счет программы, написанной на Турбо-Прологе Программа, работу с которой мы сейчас начинаем, имеет целью дать необходимые навыки в использовании меню системы и основных команд ре- дактора. Программа называется WELCOME.PRO. Действия, которые сле- дует предпринять, чтобы создать эту программу, не зависят от того, рабо- таете ли вы на машине с винчестерским диском, или на машине с двумя дисководами для гибких дисков. Перейдите при помощи стрелки к команде главного меню Edit и на- жмите клавишу Enter (либо просто введите латинскую букву E).При этом в левом верхнем углу окна Editor появится мерцающая черточка - курсор ре- дактора. Теперь редактор Турбо-Пролога готов принять вводимый вами с клавиатуры текст. Набейте текст программы WELCOME.PRO: predicates hello goal hello. clauses hello :- write("Welcome to Turbo Prolog!"), nl. Когда вы доходите до конца очередной строки, нажимайте клавишу Enter для перехода на следующую. Для удаления неверного символа нужно прибегнуть к помощи клавиши BackSpace. Выравнивание строк в Турбо- Прологе, так же как и в других языках, преследует цель придания программе несколько большей наглядности и не влияет на ее выполнение. 1.2.3 "Добро пожаловать в систему Турбо-Пролог!" Вы ввели в компьютер вашу первую программу на Турбо-Прологе. Для того чтобы запустить ее на счет, сначала требуется покинуть редактор системы, а для этого нужно нажать клавишу Esc. Курсор редактора при этом исчезнет, а курсор главного меню станет указывать на команду Edit. За- дайте теперь команду Run и пронаблюдайте за двумя появившимися во время трансляции программы строками в окне сообщений Message и за ре- зультатом работы программы в окне диалога Dialog. Первая строка в окне сообщений указывает на то, что началась трансляция программы WELCOME.PRO. Трансляция задается автомати- чески при задании команды Run, т. е. нет необходимости прибегать к по- мощи специальной команды Compile. Турбо-Пролог позволяет адресовать результат трансляции либо на диск, либо в оперативную память. При задании Run программа транслиру- ется в оперативную память. Транслировать программу на диск пока вы лишь учитесь работать на Турбо-Прологе, нет необходимости. Но в даль- нейшем вы можете создавать и объектные файлы для совместного редакти- рования с другими объектными модулями, и выполнимые файлы, которые 9 можно запускать на счет вне среды Турбо-Пролога. Как вы, вероятно, за- метили, Турбо-Пролог транслирует столь малую программу очень и очень быстро, за какие-то доли секунды. Вторая строка в окне сообщений сигнали- зирует о трансляции предиката hello. * Упражнение 1.1. Запустите на счет программу WELCOME пару раз подряд и попракти- куйтесь переходить от одной команды к другой, пока не почувствуете себя в этом деле достаточно уверенно. Теперь можно окончить сеанс работы с Турбо-Прологом, если вы этого хотите, конечно. Если в рабочий файл были внесены хоть какие-то из- менения, система спросит, нужно ли записывать на диск новый исправлен- ный вариант файла. Для обозначения положительного ответа необходимо нажать клавишу Y. Если команда Quit была задана случайно, ее можно от- менить при помощи Esc. 1.2.4 Сохранение программного файла Для того, чтобы записать на диск программу и таким образом сохра- нить ее, необходимо выйти из редактора (если вы находитесь в режиме редактирования), нажав клавишу Esc, а затем выбрать команду Files и под- команду Save во вновь появившемся меню (либо нажав S, либо используя стрелки и клавишу Enter). В результате этих действий на экране возникнет небольшое окно, в котором будет высвечено либо заданное по умолчанию имя файла (как, например, WORK.PRO), либо то имя, которое вы присвоили файлу сами. Имя файла можно оставить без изменений, а можно и отредак- тировать. В нашем случае следует ввести имя WELCOME.PRO, а затем нажать Enter. Если на диске уже есть файл с указанным именем (более ранняя вер- сия редактируемой программы или какая-либо иная программа), то в ре- зультате операции записи на диск расширение имени этого файла будет сме- нено на .BAK, чтобы пометить старый вариант файла. Не забывайте сохра- нять отредактированный файл перед тем, как окончить сеанс работы с Турбо- Прологом. В противном случае модифицированный вариант программы бу- дет утерян. Достаточно частое сохранение рабочего файла на диск очень полезно. В случае отказа электропитания, или программного сбоя компьюте- ра вы всегда будете иметь достаточно "свежий" вариант программы. Неко- торые программисты записывают очередные версии программы под разны- ми именами. Генерация таких многочисленных "поколений" программных файлов может также быть полезной, так как позволяет проследить все этапы развития программы. 10
Яндекс цитирования