Практическая информатика


Арифметические выражения - часть 2


Аналогично используются операторы < (меньше), =< (меньше или равно), >= (больше или равно), =\= (не равно) и =:= (арифметически равный). Различия между операторами =:= и = очень существенны. Первый оператор сравнивает значения арифметических выражений, тогда как последний пытается унифицировать их.

Пример

?- 2 ** 3 =:= 3 + 5. Yes

?- 2 ** 3 = 3 + 5. No

?- 1.0 = float(sin(pi/2)). No

?- 1.0 =:= sin(pi/2). Yes

Заметьте, что цель X =:= Y будет истинна, даже если один из термов есть целое число, а другой - равное ему вещественное.

Пример

Порядок подцелей в запросе влияет на его результат:

?- X is 4+Y, Y=3. ERROR: Arguments are not sufficiently instantiated

?- Y=3, X is 4+Y. Y = 3 X = 7 Yes

В первом запросе сообщение об ошибке появилось потому, что первая подцель запроса (X is 4+Y) потерпела неудачу, т. к. в момент ее обработки невозможно вычислить выражение 4+Y.

Задание

Какой ответ выдаст интерпретатор Пролога на следующие запросы?

  1. ?- 3 is 2+1.
  2. ?- X=3/2.
  3. ?- X is 3/2.
  4. ?- X is min(tan(pi/4), log(pi)).




- Начало -  - Назад -  - Вперед -