Выбор среди альтернатив

Несколько утверждений в определении отношения (предиката) рассматриваются как альтернативные варианты одного и того же отношения. Поэтому для реализации ветвления следует создать новое отношение, в описании которого должно быть столько утверждений, сколько ветвей. В теле каждого утверждения должны быть описаны условия, при которых выполняется эта ветвь. Условия следует формулировать так, чтобы они взаимно исключали друг друга. Тогда всегда будет выполняться одна ветвь, и при возникновении возврата остальные ветви окажутся ложными и рассматриваться не будут.

Пример. Рассмотрим функцию, имеющую два альтернативных определения:

Z = целая часть(L/K), если L>0 остаток(L/K), если L≤ 20

На Прологе такая функция может быть описана с помощью двух правил:

fun(L,K,Z):- L>20, Z = L div K.

fun(L,K,Z):- L<=20, Z= L mod K.

5.3. Использование предиката fail

В Прологе имеется встроенный предикат fail, который всегда имеет значение ”ложь”. Предикат не имеет аргументов.

Этот предикат нужен потому, что бывают моменты, когда полезно в процессе выполнения сгенерировать неудачу. Одно из применений предиката fail – создать процесс возврата для получения всех ответов на запрос или всевозможных вариантов решения некоторой задачи.

Пример. Рассмотрим фрагмент программы ”Предоставление сведений”:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: