Чтение онлайн

на главную - закладки

Жанры

Неизвестно

Шрифт:

(а + в)*(с - 5)

В соответствии с введенным к настоящему моменту синтаксисом, такое выражение, используя символы *, + и - в качестве функторов, можно записать следующим образом:

*( +( а, в), -( с, 5) )

Рис. 2. 5. Древовидная структура, соответствующая арифметическому

выражению (а + w)*(s - 5).

Это,

конечно, совершенно правильный прологовский терм, однако это не та форма, которую нам хотелось бы иметь, при записи арифметических выражений. Хотелось бы применять обычную инфиксную запись, принятую в математике. На самом деле Пролог допускает использование инфиксной нотации, при которой символы *, + и - записываются как инфиксные операторы. Детали того, как программист может определять свои собственные операторы, мы приведем в гл. 3.

В качестве последнего примера рассмотрим некоторые простые электрические цепи, изображенные на рис. 2.6. В правой части рисунка помещены древовидные представления этих цепей. Атомы r1, r2, r3 и r4– имена резисторов. Функторы пар и посл обозначают соответственно параллельное и последовательное соединение резисторов. Вот соответствующие прологовские термы:

посл( r1, r2)

пар( r1, r2)

паp( rl, пap( r2, r3) )

пар( r1, посл( пар( r2, r3), r4) )

 

Рис. 2. 6. Некоторые простые электрические цепи и их представление: (а) последовательное соединение резисторов rl и r2; (b) параллельное соединение двух резисторов; (с) параллельное соединение трех резисторов; (d) параллельное соединение r1 и еще одной цепи.

Упражнения

2. 1. Какие из следующих выражений представляют собой правильные объекты в смысле Пролога? Что это за объекты (атомы, числа, переменные, структуры)?

(а) Диана

(b) диана

(с) 'Диана'

(d) _диана

(e) 'Диана едет на юг'

(f) едет( диана, юг)

(g) 45

(h) 5( X, Y)

(i) +( север, запад)

(j) три( Черные( Кошки) )

Посмотреть ответ

2. 2. Предложите представление для прямоугольников, квадратов и окружностей в виде

структурных объектов Пролога. Используйте подход, аналогичный приведенному на рис. 2.4. Например, прямоугольник можно представить четырьмя точками (а может быть, только тремя точками). Напишите несколько термов конкретных объектов такого типа с использованием предложенного вами представления.

Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

2. 2. Сопоставление

В предыдущем разделе мы видели, как используются термы для представления сложных объектов данных. Наиболее важной операцией над термами является сопоставление. Сопоставление само по себе может производить содержательные вычисления.

Пусть даны два терма. Будем говорить, что они сопоставимы, если:

(1) они идентичны или

(2) переменным в обоих термах можно приписать в качестве значений объекты (т.е. конкретизировать их) таким образом, чтобы после подстановки этих объектов в термы вместо переменных, последние стали идентичными.

Например, термы дата( Д, М, 1983) и дата( Д1, май, Y1) сопоставимы. Одной из конкретизации, которая делает эти термы идентичными, является следующая:

Д заменяется на Д1

М заменяется на май

Y1 заменяется на 1983

Более компактно такая подстановка записывается в привычной форме, т. е. в той, в которой пролог-система выводит результаты:

Д = Д1

М = май

Y1 = 1983

С другой стороны, дата( Д, М, 1983) и дата( Д1, Ml, 1944) не сопоставимы, как и термы дата( X, Y, Z) и точка( X, Y, Z).

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

Рассмотрим еще раз сопоставление двух дат. Запрос на проведение такой операции можно передать системе, использовав оператор '=':

?- дата( Д, М, 1983) = дата( Д1, май, Y1).

Мы уже упоминали конкретизацию Д = Д1, М = май, Y1 = 1983, на которой достигается сопоставление. Существуют, однако, и другие конкретизации, делающие оба терма идентичными. Вот две из них:

Д = 1

Д1 = 1

Поделиться:
Популярные книги

Пространство. Компиляция

Кори Джеймс С. А.
Пространство
Фантастика:
научная фантастика
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Пространство. Компиляция

Паутина грез

Эндрюс Вирджиния
5. Кастил
Любовные романы:
современные любовные романы
7.89
рейтинг книги
Паутина грез

Последний герой

Грэйдо Эллениэль и Эстель
2. Последний герой
Фантастика:
фэнтези
юмористическое фэнтези
6.60
рейтинг книги
Последний герой

Ричард Длинные Руки (Книга 1)

Орловский Гай Юлий
1. Ричард Длинные Руки
Фантастика:
научная фантастика
7.76
рейтинг книги
Ричард Длинные Руки (Книга 1)

#Бояръ-Аниме. Газлайтер. Том 13

Володин Григорий Григорьевич
13. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
фэнтези
7.33
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 13

Разговоры запросто

Роттердамский Эразм
Научно-образовательная:
философия
5.00
рейтинг книги
Разговоры запросто

Основные произведения иностранной художественной литературы. Азия. Африка

Коллектив авторов
Научно-образовательная:
языкознание
литературоведение
5.00
рейтинг книги
Основные произведения иностранной художественной литературы. Азия. Африка

Химическая свадьба

Vilriel
Проза:
современная проза
5.00
рейтинг книги
Химическая свадьба

Заговор Аквитании

Ладлэм Роберт
Детективы:
политические детективы
5.00
рейтинг книги
Заговор Аквитании

Прапорщик. Назад в СССР. Книга 6

Гаусс Максим
6. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прапорщик. Назад в СССР. Книга 6

Тоска по чужбине

Усов Вячеслав Александрович
Россия. История в романах
Проза:
историческая проза
5.00
рейтинг книги
Тоска по чужбине

Газлайтер. Том 10

Володин Григорий Григорьевич
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

Точка Бифуркации IV

Смит Дейлор
4. ТБ
Фантастика:
героическая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации IV

Точка Бифуркации VIII

Смит Дейлор
8. ТБ
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации VIII