Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 [ 12 ] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

Данные операторы выполняют анализ текстовых строк на основе сравнения ASCII-кодов соответствующих символов, начиная с первого. Это означает, что строки, расположенные первыми в алфавитном порядке, имеют высший приоритет. Таким образом, наибольший приоритет имеют знаки пунктуации, затем числа, прописные буквы и, наконец, строчные буквы. Например, строка 1506 больше строки Happy, а та, в свою очередь, больше строки happy.

Что есть Истина в Perl

До сих пор мы свободно пользовались термином истины: "если это выражение истинно...", не имея его формального определения. В Perl есть несколько коротких правил относительно того, что истинно, а что ложно. Правила эти таковы:

• число 0 имеет значение Ложь;

• пустая строка ("") или строка "0" имеет значение Ложь;

• неопределенные значение ef имеют значение Ложь;

• все остальные значения считаются истинными.

Логично, не правда ли? Единственно, о чем еще следует помнить перед тем, как проверить на истинность некоторое выражение, его необходимо упростить: определить значения вызываемых функций и арифметических выражений. Затем полученное значение выражения нужно перевести в скалярный вид и только тогда решить, истинно оно или ложно.

Постарайтесь осмыслить эти правила и посмотрите табл. 3.3. Попробуйте сначала

сами определить, какое выражение истинно, а какое ложно.

\аб\иазlзtlш!ыисlпиffлошmршишшlшшlШlшшm

Выражение Ястина или Ложь? "0 Ложь. Число 0 имеет значение Ложь

10 Истина. Ненулевое число

9>8 Истина. Операторы отношения возвращают значения Истина или Ложь, как

и следует ожидать

-5+5 Ложь. Значение этого выражения - число 0, имеющее значение Ложь

0.00 Ложь. Это число - другое представление числа О, как и 0x0, 00, СЮ и QCD

Ложь. Этот случай явно указан в правилах

Истина. Так как в кавычках находится пробел, строка считается непустой "0.00" Истина. Удивлены? Это уже строка, причем не "" или "0"

"00" Истина. По тем же причинам

"0.00"+0 ложь. Сначала вычисляется значение выражения, которое равно 0

Пока в операторе if мы использовали только операторы отношения, хотя, в ципе, можно использовать любое выражение, которое в конечном счете будет приводиться к значению Истина или Ложь.

t Анализируется значение скалярной переменной $а • и определяется его логическое значение if ($a) { ... }



» й,нисляв1ся длина перзуеысй 5Ь. если ста нэтевая, * лэпжэсое зтачшж н,риения - Яс тжа . If (lengths(St))) { .... }

В имеется специальное значение - indef. Оно присваивается всем неинициализированным переменным. Кроме того, некоторые функции в случае неудачного исхода их выполнения возвращают это значение. Значение undef трактуется интерпретаторов Perl как неопределенное. Оно не равно нулю или любому значению в привычном понимании этого слова. При проверке на истинность, например в операторе if, indef всегда имеет логическое значение Ложь. В арифметических выражениях вместо undef

всегда подставляется 0.


Использование неинициализированных переменных обычно свидетельствует об ошибке в программе. Если в программе на Perl с включенным режимом вывода предупреждений значение undef используется в выражениях или передается в виде аргумента функциям - появляется сообщение Use of uninitialized value.

Логические операторы

Допустим, вам требуется написать код, выполняющий что-либо, если переменные

$х и $у имеют истинное значение, а $z - ложное. Такой код можно реализовать с помощью плохо читаемого набора операторов if:

if [Щ { it (5у) {

if ($z) {

♦ Ь*№го не прсмзадп? } else {

print "Нужноеусгошедостипттэ. \п"

Perl имеется целый класс операторов, предназначенных для объединения логических выражений. Это ~ так называемые логические операторы, которые описаны в табл. 3.4.

Оператор Обозначение Альтернативное

Пример

Описание

обозначение

Логическое И and

Истина, только если

$s и $t имеют истин-

ное значение

Истина, только если

$q и $р имеют истин-

ное значение

Логическое ИЛИ 11

$s t

Истина, если $s или

$t имеют истинное

значение

Часть I. нов! Perl



Оператор

Обозначение Альтернативное

- Пример

Описание

обозначение

$q or $p

Истина, если $д или

$р имеют истинное

значение

Отрицание

! not

! $го

Истина, если Sm имеет

ложное значение

not $m

Истина, если $т имеет

ложное значение

Предыдущий пример можно переписать с помощью операторов из табл. 3.4 сле

дующим образом:

if ($x and $iid noMz) {

print "Нужное условие достигнуто. \п";

Выражения, объединенные логическими операторами, вычисляются слева направо до тех пор, пока не появится возможность заранее определить значение всего логического выражения (листинг 3.2).

Листун-З.г. ГмУЕгъ1испог1ДОва*1ялотчес1<ихвьр

1: $а=0; Sc=2; $d="";

3; if {$a and $b) { print Переменные $а и $b истинные; }

4: if {$dor $b) { print Хота бы одна из переменных $d или $Ь истинна; }

5; if {$d or not $b or $c)

6: { print Переменная $d истинна, или $Ь ложна, или $с истинна;

Проведем анализ программы.

Строка 1. В этой строке переменным присваиваются значения.

Строка 3. Вначале определяется логическое значение переменной $а. Поскольку оно ложно, выражение с использованием оператора and никогда не может быть истинно. Поэтому логическое значение переменной не определяется - в этом нет необходимости, ведь уже известно, что выражение ложно. В результате оператор print не выполняется.

Строка 4. Вначале определяется логическое значение переменной $d. Оно ложно, но все выражение с оператором or все еще может быть истинным, поэтому вычисляется логическое значение переменной $Ь, оно истинно, значит, и все выражение истинно, следовательно, оператор print выполняется.

Строка 5. Вначале определяется логическое значение переменной $d. Оно ложно, но, несмотря на это все, выражение может быть истинным по той же причине, что и в строке 4, - в нем содержится логический оператор or. Зна-



0 1 2 3 4 5 6 7 8 9 10 11 [ 12 ] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122