Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка.doc
Скачиваний:
11
Добавлен:
26.03.2016
Размер:
458.75 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ

ТАГАНРОГСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ

Методическое пособие

к выполнению лабораторных работ

по дисциплине

«Информационные системы»

Для студентов специальности 080801

Таганрог 2008

ВВЕДЕНИЕ

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

Пролог ориентирован не на разработку решений, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из этого описания. Свое название Пролог получил от слов «ПРОграммирование на языке ЛОГики». На самом деле Пролог не считается чистым языком логического программирования, но его создание – важный этап в этом направлении.

1. Структура программы и синтаксис языка пролог

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

Факт– простейший вид утверждения, использующийся для констатации того, что выполнено некоторое отношение между объектами.

wife(“Vera”, “Alex”)

Этот факт утверждает, что Вера является женой Алекса. Другое название для факта или отношения – «предикат». Имена индивидов в предикате – «атомы».

Второй формой утверждения в логической программе является вопрос.Вопрос – это средство извлечения информации из логической программы. С помощью вопроса выясняется, выполнено ли некоторое отношение между объектами. Синтаксические вопросы и факты выглядят одинаково, однако их можно различить по контексту. Объект, записанный в разделе goal или в окне Dialog, называетсяцелью. Простой вопрос состоит из одной цели.

В Турбопрологе константы могут иметь числовую или символьную форму. Число может быть целым или действительным: 0; -1; 123.4; 0.23Е-5. Константы, являющиеся атомами представляют собой последовательность символов, заключенных с двух сторон в двойные кавычки. При выводе на печать эти двойные кавычки обычно не печатаются. Существуют случаи, когда атомы не обязательно заключать в кавычки:

  1. атом, состоящий только из чисел, букв и символа подчеркивания и начинающиеся со строчной буквы;

  2. атом, состоящий целиком из специальных символов. К специальным символам относится:

+ - * / ^=~ : ; ?@ $ &

Заметим, что атом, начинающийся с /*, будет воспринят как начало комментария, если он не заключен в одинарные кавычки.

Как правило, в программах на Прологе используются атомы без кавычек.

Атом, который необязательно заключать в кавычки, может быть записан и в кавычках. Запись с внешними кавычками и без них определяет один и тот же атом.

Переменные

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

Синтаксис переменной довольно прост. Она должна начинаться с прописной буквы или символа подчеркивания и содержать только символы букв, цифр и подчеркивания.

Переменная, состоящая только из символа подчеркивания, называется анонимной и используется в том случае, если имя переменной несущественно.

Область действия переменных

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

Единственным исключением из правила определения области действия переменных является анонимная переменная, например, «_» в цели love(X,_). Каждая анонимная переменная есть отдельная сущность. Она применяется тогда, когда конкретное значение переменной несущественно для данного утверждения. Таким образом, каждая анонимная переменная четко отличается от всех других анонимных переменных и утверждений.

Переменные, отличные от анонимных, называются именованными, а неконкретизированные (переменные, которым не было присвоено значение) называютсясвободными.

Константы и переменные в Прологе являются термами.

Кроме того, термами являются составные термы или структуры. Составной терм содержит функтор (называемый главным функтором) и последовательность из одного или более аргументов, являющихся термами. Функторзадается своим именем, которое суть атом, и своейарностьюили числом аргументов. Синтаксически составные термы имеют вид f(t1,t2,…,tn), где f – имя n-арного функтора, а ti– аргументы. Примеры составных термов: s(0), parents(X,mary), list(a,list(b,nil)).

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