TURBO PROLOG. Терёхин В.В. - 27 стр.

UptoLike

Составители: 

27
может использовать логический синтаксис Турбо-Пролога для указания то-
го, что необходимо выполнить и какие данные должны быть найдены. Если
это не совсем ясно, то не беспокойтесь. Примеры помогут вам ближе позна-
комиться с этим процессом. В остальных главах книги содержатся специаль-
но подготовленные примеры, которые должны вам помочь.
Пример
использования оператора = поможет лучше понять процесс оз-
начивания переменой. В языке программирования, таком как Бэйсик, опера-
тор = может означать "Сделать два терма равными", например в выражении
X=6. Здесь оператор = является оператором присвоения значения. Его дейст-
вие состоит в том, чтобы сделать X равным 6, т. е. присвоить значение 6 пе-
ременной X. Но
в Бейсике оператор = имеет еще и другой смысл - прове-
рить равенство двух термов. Такое использование символа = встречается в
условных выражениях, таких как IF X=6 GOSUB 3010. Оператор = , исполь-
зованный таким образом, выражает следующее: "Два терма, между кото-
рыми я нахожусь, должны быть равными для того, чтобы весь оператор был
истинным". Оператор =
интерпретируется как оператор присваивания или
как оператор проверки равенства в зависимости от контекста. (Но некоторые
языки для присваивания и равенства используют различные символы ).
Турбо-Пролог также использует оператор = , но используется ли он как
оператор сравнения или как оператор присваивания определяется в зависи-
мости от того, являются ли значения термов
свободными или означенными.
Рассмотрим, например, выражение
apples = apples .
Это выражение может быть подцелью, сгенерированной внутри Турбо-
Пролога. Так как оба значения известны, то оператор = является оператором
сравнения. В этом случае равенство истинно, и подцель является успешной.
Рассмотрим выражение
apples = oranges .
Так как эти два терма имеют различные значения
, то равенство ложно.
Рассмотрим пример, в котором используется переменная:
X = apples .
Это выражение так же могло бы быть подцелью, сгенерированной
внутри Турбо-Пролога во время попытки вычислить цель. Но здесь знак ра-
венства не обязательно является оператором присваивания. Эта подцель
присваивает значение apples переменной X (означивает эту переменную)
только
в том случае, если X еще не была означена. Но если X уже имеет зна-
чение, то оно известно внутренним подпрограммам унификации и сравни-
вается с константой apples. Если эти два значения одинаковы, то подцель
успешна; если они различны, то подцель неуспешна.
Интерпретация Турбо-Прологом оператора = зависит от того, извест-
ны ли оба значения или нет. Если оба значения известны, то оператор ин-
терпретируется как оператор сравнения, даже если оба терма переменные.
Если известно только одно из значений, то это известное значение будет при-
своено другому. Для Турбо-Пролога несущественно, известно ли значение
справа или слева от = ; в любом случае неизвестное
получит значение из-
может использовать логический синтаксис Турбо-Пролога для указания то-
го, что необходимо выполнить и какие данные должны быть найдены. Если
это не совсем ясно, то не беспокойтесь. Примеры помогут вам ближе позна-
комиться с этим процессом. В остальных главах книги содержатся специаль-
но подготовленные примеры, которые должны вам помочь.
      Пример использования оператора = поможет лучше понять процесс оз-
начивания переменой. В языке программирования, таком как Бэйсик, опера-
тор = может означать "Сделать два терма равными", например в выражении
X=6. Здесь оператор = является оператором присвоения значения. Его дейст-
вие состоит в том, чтобы сделать X равным 6, т. е. присвоить значение 6 пе-
ременной X. Но в Бейсике оператор = имеет еще и другой смысл - прове-
рить равенство двух термов. Такое использование символа = встречается в
условных выражениях, таких как IF X=6 GOSUB 3010. Оператор = , исполь-
зованный таким образом, выражает следующее: "Два терма, между кото-
рыми я нахожусь, должны быть равными для того, чтобы весь оператор был
истинным". Оператор = интерпретируется как оператор присваивания или
как оператор проверки равенства в зависимости от контекста. (Но некоторые
языки для присваивания и равенства используют различные символы ).
      Турбо-Пролог также использует оператор = , но используется ли он как
оператор сравнения или как оператор присваивания определяется в зависи-
мости от того, являются ли значения термов свободными или означенными.
      Рассмотрим, например, выражение
      apples = apples .
      Это выражение может быть подцелью, сгенерированной внутри Турбо-
Пролога. Так как оба значения известны, то оператор = является оператором
сравнения. В этом случае равенство истинно, и подцель является успешной.
      Рассмотрим выражение
      apples = oranges .
      Так как эти два терма имеют различные значения, то равенство ложно.
Рассмотрим пример, в котором используется переменная:
      X = apples .
      Это выражение так же могло бы быть подцелью, сгенерированной
внутри Турбо-Пролога во время попытки вычислить цель. Но здесь знак ра-
венства не обязательно является оператором присваивания. Эта подцель
присваивает значение apples переменной X (означивает эту переменную)
только в том случае, если X еще не была означена. Но если X уже имеет зна-
чение, то оно известно внутренним подпрограммам унификации и сравни-
вается с константой apples. Если эти два значения одинаковы, то подцель
успешна; если они различны, то подцель неуспешна.
      Интерпретация Турбо-Прологом оператора = зависит от того, извест-
ны ли оба значения или нет. Если оба значения известны, то оператор ин-
терпретируется как оператор сравнения, даже если оба терма переменные.
Если известно только одно из значений, то это известное значение будет при-
своено другому. Для Турбо-Пролога несущественно, известно ли значение
справа или слева от = ; в любом случае неизвестное получит значение из-


                                                                         27