Операции с числами и строками логические выражения
Урок 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-й - за первым.