- •Основные Элементы ТурбоПролога.
- •Структуры Пролога, разделы программы
- •Способы объявления предикатов в программе Пролог
- •Объявление предикатов
- •Утверждения и правила. Факты и правила.
- •Раздел goal
- •Этапы программирвоания на тп
- •Декларативный и процедурный смысл программы
- •Сопоставление
- •Арифметика в тп
- •Арифметические функции в тп
- •Рекурсия
- •Рекурсия и эффективность
- •Стандартные предикаты
- •Стандартные предикаты ввода-вывода
- •Отсечение
- •Отрицание (not)
- •Использование составных объектов
- •Списки. Описание. Голова и хвост списка.
- •Стандартные предикаты для работы со строками Определение длины строки
- •Конкатенация строк
- •Разделение строки на две части
- •Описание файловых доменов
- •Запись в файл
- •Чтение из файла
- •Дозапись в конец существующего файла
- •Создание меню с помощью окон Определение окна
- •Быстрое переключение между двумя окнами
- •Очистка текущего окна
- •Удаление текущего окна
- •Создание динамических баз данных. Статические и динамические базы данных
- •Способы занесения информации в динамическую базу данных
- •Предикаты для работы с базами данных
Способы объявления предикатов в программе Пролог
Существует 4 способа объявления типов данных (доменов);
name =d , где name – имена объектов стандартного типа, d – один из типов (char, symbol, integer, real, string)
list = element*, где list – список элементов element, element – элемент, лписанный в разделе domains или один из стандартных типов, * - список.
num1=f1 (d11, …, d1M); f2 )d21, …, d2N) Тип num1 включает сложные объекты, которые объявляются путем установления пунктора и описаний всех входящих в него компонент. collection = book (author, title) record (artist, album, type). Один оператор раздела domains описысвает только один уровень дерева. books = book (title, author (name, surname)) – неверно.
file = name1; name2; … Используется для обращения к файлам по символическим именам. В разделе domains может быть тоько один оператор этого типа. Симолические имена файлов, если их несколько, задаются в качестве альтернативы.
Объявление предикатов
Предикат (отношение) – в общем случае эта стуктура выглядит так:
predname (comp1, …, compN), где predname – имя предиката, comp1, …, compN – имя компонент.
domains
fio=string
den, god = integer
mes = symbol
predicates
anketa (fio, den, mes, god)
Если в предикатах испоьзуется только стандартные типы данных, то раздел domains может отсутствовать.
anketa (string, integer, symbol, integer)
Предикат может состоять только из одного имени, то есть не иметь компонент. Допускается многократное объявление предиката с одним и тем же именем. Альтернатива необяазтельно должна иметь одинаковое число компонентов.
Утверждения и правила. Факты и правила.
Здесь размещаются предложения (утверждения). Они представляют собой факт ил правило, соответствующее одному из объявленных предикатов. Факт – простейший вид утверждения, который устанавливает отношения между объектами.
anketa (“Иванов”, 8, august, 1958).
Факт содержит содержит атом anketa, который является именем предиката и в () после него список соответствующих термов, соответствующих компонентам этого предиката. Факт всегда заканчиваетяс точкой. Факт содержит условие, которое являетяс верным. Правило сотоит из заголовка и тела, соединенных символом :- (если). Правила заканчиваются точкой. Заголовок являетяс одним из ранее описанных предикатов, в которых в качестве компонентов может быть переменные. Заголовок правила описывает факт, для определения которого предназначено это правило. Тело правила описывает цель, которая должна быть последовательно согласована с фактом для того, чтобы заголовок правила был истинным. Тело содержит список термов, разделенных запятыми или ; ( :- if) (. and) (; or).
Переменная означает один и тот же объект только в пределах одного правила.
Раздел goal
Записывается третий тип предложения, состоит из одного или нескольких целевых утверждений, разделенных «,» и оканчивающихся «.». Пролог система, рассматривает вопросы как цели, к которы нужно стремиться . Ответ на вопрос оказывается или положительным или отрицательным в зависимости от того, может быть цель достигнута или нет. Если на вопрос существует несколько ответов, то система может найти и выдать все из них. В разделе goal может быть только один вопрос, на который будет выдано только одно решение. Для получения всех решений можно удалит цель из из программы и задать цель на подсказку ТП в окне. Применение внешних целей бывает полкзно при записи коротких вопросов, а также для получения всег набора допустимых значений.