Создание серверных приложений на языке PERL

       

Операции с числами и строками логические выражения



Урок 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-й - за первым.



Содержание раздела