Таким образом, запятая между целями обозначает конъюнкцию целей: они все должны быть истинными. Однако в Прологе возможна и дизъюнкция целей: должна быть истинной, по крайней мере одна из целей. Дизъюнкция обозначается точкой с запятой. Например:

        Р   :-   Q;  R.

читается так:  Р  -  истинно, если истинно   Q   или истинно  R.  То есть смысл такого предложения тот же, что и смысл следующей пары предложений:

        Р   :-   Q.

        Р   :-   R.

Запятая связывает (цели) сильнее, чем точка с запятой. Таким образом, предложение

        Р   :-   Q,  R;  S,  Т,   U.

понимается как:

        Р   :-   ( Q,  R);  (S,   Т,  U).

и имеет тот же смысл, что и два предложения

        Р   :-   Q,  R.

        Р   :-   S,  T,  U.

Упражнения

2. 6.    Рассмотрим следующую программу:

    f( 1, один).

    f( s(1), два).

    f(    s(s(1)),    три).

    f( s(s(s(X))),  N) :-

               f(X,   N).

Как пролог-система ответит на следующие вопросы? Там, где возможны несколько ответов, приведите по крайней мере два.

    (a)        ?- f( s( 1), A).

    (b)        ?- f( s(s(1)), два).

    (c)        ?- f(   s(s(s(s(s(s(1)))))), С).

    (d)        ?- f( D, три).

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

2. 7.    В следующей программе говорится, что два человека являются родственниками, если

    (a)        один является предком другого, или

    (b)        у них есть общий предок, или

    (c)        у них есть общий потомок.

    родственники( X, Y) :-

          предок( X, Y).

    родственники( X, Y) :-

          предок( Y, X).

    родственники( X, Y) :-

                      % X и Y имеют общего предка

          предок( Z, X),

          предок( Z, Y).

    родственники( X, Y) :-

                      % X и Y имеют общего потомка

          предок( X, Z),

          предок( Y, Z).

Сможете ли вы сократить эту программу, используя запись с точками с запятой?

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

2. 8.    Перепишите следующую программу, не пользуясь точками с запятой.

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату