Франк - мужчина, которому 45 лет. — КиберПедия 

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Франк - мужчина, которому 45 лет.

2020-12-06 88
Франк - мужчина, которому 45 лет. 0.00 из 5.00 0 оценок
Заказать работу

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

person(frank,male,45).

Здесь для всех трех аргументов использованы стандартные домены. Отныне всякий раз при работе с предикатом person, вы должны передавать ему три аргумента, причем первые два должны быть типа symbol, а третий – типа integer.

Если в программе используются только стандартные домены, то нет необходимости использовать раздел domain; вы уже видели несколько программ такого типа.

Или, предположим, что вы хотите описать предикат, который сообщал бы позицию буквы в алфавите, т. е. цель

alphabet_position(Letter,Position)

Должна вернуть вам Position = 1, если Letter = a, Position = 2, если Letter = b и т. д. Предложения этого предиката могут выглядеть следующим образом:

Арность предиката - это количество аргументов, которые он принимает. Вы можете иметь два предиката с одним и тем же именем, но отличающейся арностью. В разделах predicates и clauses версии предикатов с одним именем и разной арностью должны собираться вместе; за исключением этого ограничения, различная арность всегда понимается как полное различие предикатов

60. Синтаксис правил.

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

HEAD:-<Subgoaд>,<Subgoal>,...,<Subgoal>.
Заголовок:- <Подцель>,<Подцель>,...,<Подцель>.

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

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

Как упоминалось выше, к качестве разделителя заголовка и тела правила Пролог использует знак :-, который читается как "если" (if). Однако if Пролога отличается от if в других языках, например в Pascal, где условие, содержащееся в оператре if, должно быть указано перед телом оператора if, который может быть выполнен. Другими словами:

"if HEAD is true, then BODY is true (or then do BODY)"
(если ЗАГОЛОВОК истинен, тогда ТЕЛО истинно (или: тогда выполнить ТЕЛО)

Данный тип оператора известен как условный оператор если/тогда (if/then). Пролог же использует другую форму логики в таких правилах. Вывод об истинности заголовка правила Пролога делается, если (после того, как) тело этого правила истинно например, так:

"HEAD is true if BODY is true (or: if BODY can be done)"
ЗАГОЛОВОК истинен, если ТЕЛО - истинно (или: если ТЕЛО может быть выполнено)

Учитывая вышесказанное, правило Пролога соответствует условной форме тогда/если, (then/if).

61. Автоматическое преобразование типов.

Совсем не обязательно, чтобы при сопоставлении двух Пролог -переменных они принадлежали одному и тому же домену. Переменные могут быть связаны с константами из различных доменов. Такое (избирательное) смешение допускается, т.к. Пролог автоматически выполняет преобразование типов (из одного домена в другой), но только в следующих случаях:

· между строками (string) и идентификаторами (symbol);

· между целыми, действительными и символами (char). При преобразовании символа в числовое значение этим значением является величина символа в коде ASCII.

Аргумент из домена my_dom, который объявлен следующим образом:

domains

my_dom=<base domain> % <base domain>- это стандартный домен

может свободно смешиваться с аргументами из этого основного домена и с аргументами всех совместимых с ним стандартных доменов. Если основной домен - string, то с ним совместимы аргументы из домена symbol; если же основной домен integer, то с ним совместимы домены real, char, word и др.

Такое преобразование типов означает, например, что вы можете:

· вызвать предикат с аргументами типа string, задавая ему аргументы типа symbol, и наоборот;

· передавать предикату с аргументами типа real параметры типа integer;

· передавать предикату с аргументами типа char параметры типа integer;

· использовать в выражениях и сравнениях символы без необходимости получения их кодов в ASCII.

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

62. Простые объекты данных.

Простой объект данных - это переменная или константа. Не путайте это значение слова "константа" с символьными константами, которые вы определяете в разделе constants программы. То, что мы здесь называем константой, это нечто, идентифицирующее объект, который нельзя изменять: символ (char), число (integer или real) или атом (symbol или string).


Поделиться с друзьями:

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.