Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »