Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Топ:
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2020-12-06 | 92 |
5.00
из
|
Заказать работу |
|
|
Факт Пролога, соответствующий этому предложению естественного языка, может быть следующим:
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).
|
|
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!