На этом шаге мы рассмотрим сравнение символов, строк и идентификаторов.
Кроме числовых выражений вы можете также сравнивать простые символы, строки и идентификаторы. Рассмотрим следующие сравнения:
'а' < '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. Они должны быть связаны с переменными, которые сравниваются или записаны как строки.
На следующем шаге мы рассмотрим запись и чтение.