Анимация
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

Оператор if позволяет также выполнить один фрагмент кода, если некоторое условие истинно, и другой фрагмент кода - если это условие ложно. Это достигается с помощью использования оператора if-else. Его синтаксис имеет вид

if (выражение) f Если выражение истинно... БЛОК I .выполняется этот блок кода.

Else

БЛОК # В противном случае вьшолняется этот блок.

Блок, следующий за выражением, выполняется, если оно истинно, а блок после ключевого слова else - если выражение ложно. Приведем пример использования описываемого оператора:

$r=<STDIN>; chc $г; if ($r == 10) {

print $r равно 10; } else {

print $r не равно 10 . . . ;

Sr=10;

print $r присвоено значение 10;

Обратите внимание, что в предыдущем примере для присваивания значения переменной ?г используется оператор =. Для проверки значения 5г используется оператор равенства Это два совершенно разн1х оператора с абсолютно различным действием. Не пайте их, иначе отладка ваших программ может сильно усложниться. Помните, что с помощью оператора = значения присваиваются переменным, а с помощью оператора == - выражение проверяется на равенство определенному значению.

Существует еще одна разновидность оператора if, с помощью которой можно проверить значения нескольких выражений и выполнить код, соответствующий истинному условию:

if (выражение!)

БЛ0К1 elseif {вырс1Хевие2]

БЛОК2 else

БЛОКЗ

t Есл «еяяе 1 истинно.;. It ..выполняется этот блок кода.

t Иначе, если еяие2 истинно.. .

этот блок кода;

It Есл ни одно из выражений не истинно, i выполняется этот блок.

Данный оператор выполняется следующим образом: если выражение, помеченное как выражение!, истинно - выполняется блок кода БЛОК!. Иначе управление передается oпepaтopyelseifипpoвepяeтcязнaчёниeвьфaжeнмJг2 Ecлинивsfpaл:e™eJ, нивырахвнив2 не являются истинными, выполняется БЛОКЗ. Для демонстрации такой синтаксической конструкции рассмотрим реальный фрагмент программы на Perl:

5г=10;

inSr 10) {

print $г равно 10 ! ;

} elseif {$г ==20) {

print ir равно 20!; } else {

print $r не равно ни 10, ни 20;



Другие операторы отношения

До сих пор мы сравнивали значения лишь с помощью оператора равенства ==. В Perl имеется еще ряд операторов, предпазпачеппых для сравпепия числеппых зпаче-

ний, большинство из них представлены в табл. 3.1.

Таблица 3.1 .Числов1е операторе! отношения

Оператор

Обозначение Пример Описание

Равенства

$х $у

Истина, если $х равно $у

Больше чем

>

?х>$у

Истина, если $х больше $у

Меньше чем

<

$х<$у

Истина, если $х меньше $у

Больше или равно

>=

$х >= $у

Истина, если $х больше или равно $у

Меньше или равно

<=

$х<=$у

Истина, если $х меньше или равно $у

Не равно

$х != $у

Истина, если $х не равно $у

Эти операторы могут использоваться в любом месте программы для сравнения численных значений, например в операторе if, как показано в листинге

Листан. в угад

1l: fl/usr/bin/perl -vf

3: $im thinking of=int(randlO) ; 4: pri£b Ъвециючисло от О до 9:"; 5: $guess=<STDIN>;

6: dntpSguess; •Вщеутш o/!EoaiEEakcs£a«a.\ 7:

8: if ($guess>$ira thinking of) {

Э: print "Перебор!Nn";

10: } elsif {$guess < Sim thinking of) {

11: print -Недобор:Vn";

12: } else {

13: print "Ebi угадали!\n";

14:}

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

Строка 1. Это стандартная первая строка программ г). В ней указывается Полный путь к программе-интерпретатору, а ключ -w активизирует режим вьщачи предупреждений. На 1-м занятии, "Начало работы с Perl", мы говорили о том, что в каждом конкретном случае эта строка может несколько видоизменяться.

Строка 3. Функция rand 10 генерирует случайное число в диапазоне от 0 до 10, а оператор int() возвращает его целую часть. Затем получившееся целое число от 0 до 9 присваивается переменной

Строки В этом месте программы у пользователя запрашивается значе-

ние, которое присваивается переменной $guess. С помощью функции chomp завершающий символ перевода строки удаляется.



• Строки 8-9. Если значение неременной 5guess больше, чем неременной

выводится соответствующее сообщение.

• Строки 10-11. Если же значение неременной Sguess меньше, чем неременной Sim thinking of, выводится другое сообщение.

• Строка 13. Оставшийся вариант - пользователь угадал число.

Операторы в табл. 3.1 используются для сравнения лишь численных значений. Их использование для сравнения нечисловых данных приводит к неожиданному результату. Рассмотрим пример:

$first="Simon"; Slast="simple";

if ($first == $last) { t == - совсем не то, что ожидали!

Print "Значения нфеменных равны!\п";

В результате выполнения этого фрагмента кода окажется, что значения переменных $first и $last численно равны. На 1-м занятии, "Начало работы с Perl", говорилось, что если нечисловые строки используются там, где Perl ожидает встретить число, то вместо них подставляется нулевое значение. Поэтому предшествующее выражение оператора if в Perl равносильно следующему: if 0 ). Это выражение истинно, и

результат действия оператора if совсем не такой, как вы, вероятно, ожидали.


Если режим вывода предупреждений включен, то сравнение двух нечисловых значений (в предыдущем примере это Simon и simple) с помощью оператора == приведет к появлению соответствующего сообщения.

Для сравнения нечисловых значений используйте другие операторы Perl, приведенные в табл. 3.2.

Оператор

Обозначение

Пример

Описание

Равенства

$s eq St

Истина, если строка в переменной $s совпадает со строкой $t

Больше чем

$s gt $t

Истина, если строка в переменной

Ss больше значения переменной $t

Меньше чем

$t $t

Истина, если строка в переменной Ss меньше значения переменной $t

Больше или равно

$s ge $t

Истина, если строка в переменной Ss больше или равна значению переменной $t

Меньше или равно

$s $t

Истина, если строка в переменной

$s меньше или равна значению переменной $t

Не равно

$s $t

Истина, если строка в переменной

$s не равна строке $t

Чт I. cEi Perl



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