Вход/Регистрация
Prolog
вернуться

Неизвестно

Шрифт:

Упражнения

3. 12. Если принять такие определения

:- ор( 300, xfy, играет_в).

:- ор( 200, xfy, и).

то два следующих терма представляют собой синтаксически правильные объекты:

Tepмl = джимми играет_в футбол и сквош

Терм1 = сьюзан играет_в теннис и баскетбол и волейбол

Как эти термы интерпретируются пролог-системой? Каковы их главные функторы и какова их структура?

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

3. 13. Предложите подходящее определение операторов ("работает", "в", "нашем"), чтобы можно было писать предложения типа:

диана работает секретарем в нашем отделе.

а затем спрашивать:

?- Кто работает секретарем в нашем отделе.

Кто = диана

?- диана работает Кем.

Кем = секретарем в нашем отдела

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

3. 14. Рассмотрим программу:

t( 0+1, 1+0).

t( X+0+1, X+1+0).

t( X+1+1, Z) :-

t( X+1, X1),

t( X1+1, Z).

Как данная программа будет отвечать на ниже перечисленные вопросы, если '+' "- это (как обычно) инфиксный оператор типа yfx?

(a) ?- t( 0+1, А).

(b) ?- t( 0+1+1, В).

(с) ?- t( 1+0+1+1+1, С).

(d) ?- t( D, 1+1+1+0).

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

3. 15. В предыдущем разделе отношения между списка ми мы записывали так:

принадлежит( Элемент, Список),

конк( Список1, Список2, Список3),

удалить( Элемент, Список, НовыйСписок), . . .

Предположим, что более предпочтительной для нас является следующая форма записи:

Элемент входит_в Список,

конкатенация_списков Список1 и Список2

дает Список3,

удаление_элемента Элемент из_списка Список

дает НовыйСписок, ...

Определите операторы "входит_в", "конкатенация_списков", "и" и т.д. таким образом, чтобы обеспечить эту возможность. Переопределите также и соответствующие процедуры.

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

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

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

3. 4. Арифметические действия

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

несколькими предопределенными

операторами

.

+ сложение

– вычитание

* умножение

/ деление

mod модуль, остаток от целочисленного деления

Заметьте, что это как раз тот исключительный случай. когда оператор может и в самом деле произвести некоторую операцию. Но даже и в этом случае требуется дополнительное указание на выполнение действия. Пролог-система знает, как выполнять вычисления, предписываемые такими операторами, но этого недостаточно для их непосредственного использования. Следующий вопрос - наивная попытка произвести арифметическое действие:

?- Х = 1 + 2.

Пролог-система "спокойно" ответит

Х = 1 + 2

а не X = 3, как, возможно, ожидалось. Причина этого проста: выражение 1 + 2 обозначает лишь прологовский терм, в котором + является функтором, а 1 и 2 - его аргументами.

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

систему выполнить операцию сложения.

Для этого в Прологе

существует

специальный оператор

  • Читать дальше
  • 1
  • ...
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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