Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Упражнения

1. Напишите предложения естественного языка, интерпретирующие следу-

ющие правила Турбо Пролога:

а) ест (Кто, Что) if

пища (Что) and любит (Кто, Что).

б) заканчивает_курс (Кто) if

выполняет задания (Кто) and

нормально_посещает (Кто).

в) не_ест (тоби, Вещество) if

пища (Вещество) and

сальный (Вещество).

г) владелец (Кто, Что) if

купил (Кто, Что).

2. Напишите правила Турбо Пролога, соответствующие смыслу следующих

предложений на естественном языке:

а) Человек голоден, если его желудок пуст.

б) Все любят работу, если она приятна и хорошо оплачивается.

в) Владеют машиной те, кто ее купил, заплатил за нее и содержит ее.

Предикаты (связи)

Символическое имя связи называется именем предиката. Объекты, кото-

рые она связывает, - называются аргументами (в факте likes (bill, cindy).

предикатом является связь "likes", а аргументами - объекты "bill" и

"cindy".

Ниже показаны несколько примеров предикатов Пролога с использованием

аргументов и без них:

pred (integer, symbol)

person (last, first, gender)

run

insert_mode

birthday (firstName, lastName, date)

Как мы видим, предикаты могут вообще не иметь аргументов, однако ис-

пользование таких предикатов весьма ограничено. Для того, чтобы опреде-

лить имя Rosemont'a вы можете использовать запрос вида "person (rosemond,

Name, male)." Но что вы можете определить запросом без аргументов "run"?

Этим вы можете только узнать, есть ли предложениен "run" в программе или,

если "run" - заголовок правила, - вычислить это правило. В некоторых слу-

чаях это может быть очень удобно (например, вы можете захотеть сделать

так, чтобы поведение вашей программы менялось в зависимости от наличия

предложения insert_mode (режим_вставки), однако, практически все предика-

ты Пролога имеют хотя бы один аргумент.

Переменные (обобщенные предложения)

Для того, чтобы попросить Пролог найти всех, кто любит теннис, вы

можете использовать переменные. Например:

likes (X, tennis).

Данный запрос использует для указания неизвестных людей переменную,

обозначенную буквой "X". Имена переменных в Турбо Прологе должны начи-

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

(заглавных или строчных), цифр и символов подчеркивания. Например, следу-

ющие имена переменных корректны:

My_first_correct_variable_name

Sales_10_11_86

А вот эти имена переменных - некорректны:

lstattemp

second_attempt

"disaster"

Выбирайте такие имена переменных, чтобы программы были максимально

"читабельны". Например, запрос

likes (Person, tennis).

значительно лучше, чем запрос

likes (X, tennis).

т.к. "Person" более понятен, чем "X".) Теперь введите запрос:

likes (Person, tennis).

Турбо Пролог ответит

Person=ellen

Person=mark

2 Solutions

Goal:_

потому что этот запрос имеет два решения: "ellen" и "mark". Турбо Пролог

позволяет использовать в любой позиции как заглавные буквы, так и строч-

ные. И один из способов сделать имена переменных более удобными для восп-

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

Например:

IncomeAndExpenditureAccount

Соседние файлы в папке Документация