Урок 3. Операции с числами и строками, логические выражения
В этом уроке я расскажу об операциях которые можно проводить с числами и строками. Со многими из них Вы уже встречались в других языках программирования. Начну я, пожалуй, с операциями над числами.
++ |
- инкремент |
$a ++; # $a = $a + 1 |
-- |
- дикремент |
$a --; # $a = $a - 1 |
** |
- возведение в степень |
$a = 2**10; # $a = 1024 |
* |
- умножение |
$a = 5 * 6; # $a = 30 |
/ |
- деление |
$a = 5 / 2; # $a = 2.5 |
% |
- получение остатка от деления |
$a = 5 % 2; # $a = 1 |
+ |
- сложение |
$a = 5 + 5; # $a = 10 |
- |
- вычитание |
$a = 2 - 5; # $a = -3 |
Приоритеты распределены в порядке убывания сверху вниз. Как видите, всё как в математике.
Операции над строками.
. |
конкатенация |
$a = "abc"."123"; # $a = "abc123" |
Как видите, операторов работы со строками немного меньше ;-) .
Для удобства оперирования с одним операндом, придуман оператор "X=", где X может принимать значение любого из вышеперечисленного операторов. Как это работает: $a .= 5, тоже самое что и $a = $a . 5;
$u += 8, тоже самое что и $u = $u + 8 и т.д.
Логические операторы позволяют проверить на истинность некоторое условие или совокупность условий. Если условие истинно, оператор возвращает True, если ложно - False.
< |
меньше |
$a = 5 < 2; # $a = False |
> |
больше |
$a = 5 > 2; # $a = True |
== |
равно |
$a = 3 == 3; # $a = True |
<= |
меньше или равно |
$a = 4 <= 8; # $a = True |
>= |
больше или равно |
$a = 4 >= 8; # $a = False |
!= |
не равно |
$a = 5 != 5; # $a = False |
lt |
строковое меньше |
$a = "11" lt "a"; # $a = True |
gt |
строковое больше |
$a = "11" gt "a"; # $a = False |
eq |
строковое равно |
$a = "o" eq "o"; # $a = True |
ne |
строковое не равно |
$a = "o" ne "o"; # $a = False |
le |
строковое меньше или равно |
$a = "11" le "a"; # $a = True |
ge |
строковое больше или равно |
$a = "11" ge "a"; # $a = False |
Таблицы истинности операторов AND, OR и XOR. В них показано что возвращает логический оператор в зависимости от значений сравниваемых выражений
AND |
OR |
XOR |
True |
True |
True |
True |
True |
True |
False |
True |
True |
False |
False |
True |
True |
True |
Flase |
True |
True |
Flase |
False |
True |
False |
True |
False |
True |
True |
False |
True |
False |
False |
False |
False |
False |
False |
False |
False |
False |
* * * *
Программа, демонстрирующая работу условных операторов.
#!/usr/bin/perl
#programm 3
print "Content-Type: text/html\n\n";
$var1 = 5;
$var2 = 3;
$a=(($var1 > $var2) and ($var1 != $var2));
print $a;
Работает она следующем образом: сначала вычисляются логические выражения в скобках, затем сравниваются между собой. Оба выражения истины. Из таблицы истинности видно: если оба выражения истины, логический оператор AND возвращает True, что и выведется нам на экран.
Несколько слов о преобразовании строк в числа и обратно.
Если строковое значение используется как операнд в операции с числами (например, в операции сложения), Perl автоматически преобразует эту строку в эквивалентное числовое значение, как если бы оно было введено в виде десятичного числа с плавающей запятой. Нечисловые окончания и начальные пробельные символы игнорируются, поэтому " 123. 4 5 fed" (с начальным пробелом) без какого-либо предупреждения преобразуется в "123. 45". Самый крайний из подобных случаев — когда нечто, не являющееся числом, вообще без предупреждения преобразуется в нуль (как строка fed, которую мы использовали здесь как число).
Если же, наоборот, там, где должно быть строковое значение, вводится числовое (например, в операции конкатенации строк), это числовое значение конвертируется в строку, которая была бы выведена на экран вместо него. Например, если вы хотите конкатенировать строку х с результатом умножения 4 на 5, это можно записать как
"X" .(4*5); # то же самое, что "X" . 20, или "Х20"
(Помните, что круглые скобки заставляют сначала выполнить 4*5, а затем выполнять операцию конкатенации.)
Другими словами, вам не нужно (в большинстве случаев) беспокоиться о том, что указано в качестве операнда — строка или число, поскольку Perl выполняет все необходимые преобразования самостоятельно.
* * * *
Попробуйте по памяти переписать таблицы истинности для каждого из операторов (AND, OR, XOR).
Напмшите программу, которая выводит значения 3-х переменных в четвертую таким образом, чтобы значение 3-й переменной стояло сразу за начением 2-й, а значение 2-й - за первым.
[Содержание]
[Вступление]
[необходимое для начала изучения]
[урок 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]
[правила хорошего тона]
[приложение A]
[приложение Б]
[приложение В]
[заключение]
[благодарности]
|