Шаг 52.
Основы логического программирования.
Сравнение символов, строк и идентификаторов

    На этом шаге мы рассмотрим сравнение символов, строк и идентификаторов.

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

   'а' < 'b' % Символы
   "antony"  >  "antonia" % Строки
   P1=peter,Р2=sally,P1>Р2 % Литералы (идентификаторы)

Символы

    Используя соответствующее значение кода ASCII для каждого символа, Пролог преобразует 'a' < 'b' в эквивалентное арифметическое выражение 97<98.

Строки

    Когда строки или идентификаторы сравниваются, результат зависит от сравнения символов на соответствующих позициях. Результат равен тому, который вы получили бы при сравнении первых символов в том случае, если эти два символа не равны. Если же они равны, Пролог сравнивает следующую соответствующую пару символов и возвращает результат в том случае, если на сей раз они не равны. В противном случае проверяется третья пара и т.д. Сравнение заканчивается, когда либо найдены два различных символа, либо достигнут конец любой из строк. Если конец достигнут, и пара различных символов не найдена, более короткая строка считается меньшей.

    Сравнение "antony" > "antonia" оценится как true (истинное), т. к. первая пара различных символов содержит в первой строке букву у (значение 79 в коде ASCII), а в другой строке букву i (ASCII значение 69). Аналогично, сравнение "аа" > "а" истинно.

    Выражение "peter" > "sally" будет ложным, т. к. определяется сравнением значений ASCII первых букв слов peter и sally. Символ р располагается перед символом s в алфавите, поэтому р имеет меньшее значение кода ASCII. Таким образом, выражение будет оценено как ложное.

Идентификаторы

    Идентификаторы не могут непосредственно сравниваться из-за их синтаксиса. В предыдущем примере ( P1=peter,P2...,) идентификатор peter не может непосредственно сравниваться с идентификатором sally. Они должны быть связаны с переменными, которые сравниваются или записаны как строки.

    На следующем шаге мы рассмотрим запись и чтение.




Предыдущий шаг Содержание Следующий шаг