| 
 Урок 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] 
[приложение Б] 
[приложение В] 
[заключение] 
[благодарности] 
 
  |