Опубликован: 17.08.2006 | Доступ: свободный | Студентов: 5312 / 680 | Оценка: 4.49 / 3.94 | Длительность: 20:58:00
ISBN: 978-5-9556-0078-9
Лекция 3:

Основные операции

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >
Аннотация: В этой лекции описываются скалярные операции языка Perl, для удобства разделенные на группы. Рассматриваются их особенности, правила записи и порядок вычислений в выражениях. Цель лекции: познакомиться с богатым набором операций языка Perl, узнать их особенности и научиться правильно применять их при составлении выражений.
Ключевые слова: операции, оператор, perl, строковый, let-выражение, результатив, контекст, вычисление, язык программирования, арифметическая операция, представление, программирование, перечисление, бинарная операция, операнд, унарные операции, значение, web-форма, INTO-переменные, значение выражения, побочный эффект, значение переменной, эквивалентное выражение, синтаксис, пробел, командная строка, встроенная функция, математическая функция, ABS, интервалы, CoS, EXP, int, log, натуральный логарифмы, RAND, timing, SUN, print, список, стандартный поток вывода, консоль, операция ввода/вывода, файл, true, false, истина, логический, логические операции, FORTRAN, таблица символов, CMP, длина, регулярное выражение, отрицание, печать, эквивалентность, ПО, исключающее ИЛИ, ложь, bitwise operation, Дополнение, целое число, t-бит, операции сдвига, конкатенация, репликация, символьная строка, присваивание, lvalue, Left, запись, равенство, операция присваивания, управляющие, вычисление выражения, тернарная операция, условное выражение, системная консоль, diamond, структура данных, деление, сложение, вычитание, ассоциативность, список операций, приоритет операций, терм, вызов метода, разыменование, ссылка, умножение, логическое ИЛИ, диапазон, XOR

Выражения

Операции (также называемые операторами) в Perl многочисленны и разнообразны, с их помощью образуются арифметические, логические, строковые и другие выражения - конструкции, вычисляющие некоторый результат, хотя он не всегда может использоваться. Элементы выражения, над которыми производится операция, называются операндами. Результат операции в Perl может зависеть от контекста, в котором она выполняется. Но часто и сама операция устанавливает определенный контекст, влияющий на преобразование операндов. Конкретные правила вычисления выражений будут изложены при подробном рассказе о каждой из операций.

Арифметические операции

Конечно же, в Perl, как и в других языках программирования, есть традиционные арифметические операции:

*	умножение (например, 2 * 2 будет 4)
/	деление (например, 11 / 2 будет 5.5)
+	сложение (например, 111 + "999" будет 1110)
-	вычитание (например, '26' - 1 будет 25)

Обратите внимание на особенность арифметических операций в Perl - в них могут участвовать и строки. При этом, попадая в числовой контекст, строковое представление числа автоматически преобразуется к соответствующему числовому значению. Это очень удобно, но нужно быть внимательным при преобразовании к числам строк, содержащих не-цифровые символы. Символ, не применяемый для записи десятичного числа, прерывает преобразование строки в число, например:

' +.25x7' + 1 будет 1.25 (то есть ' +0.25' + 1 или 0.25 + 1)
'x.25+7' + 1 будет 1     (то есть '' + 1 или 0 + 1)
'10_000' + 1 будет 11    (то есть '10' + 1 или 10 + 1)

В Perl есть еще две очень удобные арифметические операции, которые имеются не во всех языках программирования:

**	возведение в степень (например, 2 ** 5 будет 32)
%	деление по модулю  или остаток от деления (например, 11 % 3 будет 2)

Унарные операции

Из языка программирования C заимствованы операции увеличения и уменьшения на единицу, или автоинкремента и автодекремента соответственно. В отличие от перечисленных выше бинарных операций, имеющих два операнда, это унарные операции с одним операндом, применяемые к переменным. Эти операции изменяют значение своего операнда, чем отличаются от большинства других операций, не изменяющих значения операндов. Они могут записываться как в префиксной форме, когда знак операции стоит перед именем переменной, так и в постфиксной форме (также называемой суффиксной), когда знак операции стоит после переменной:

++	автоинкремент или увеличение на 1  (например, $n++ или ++$n)
--	автодекремент или уменьшение на 1  (например, $n-- или --$n)

В префиксной форме значением выражения будет значение операнда после изменения, а в постфиксной - значение операнда до изменения. Особенности применения префиксной и постфиксной форм можно показать на таком простом примере:

$n = 25;    # начальное значение переменной $n 
$x1 = $n++; # в $x1 сохранено 25, затем в $n стало 26
$x2 = ++$n; # в $n стало 27 и оно сохранено в $x2
$x3 = --$n; # в $n стало 26 и оно сохранено в $x3
$x4 = $n--; # в $x4 сохранено 26, затем в $n стало 25
--$n;       # и наконец $n уменьшилось до 24

Хотя выражение с операцией автоинкремента или автодекремента возвращает значение, часто оно отбрасывается, а сама операция применяется только для изменения значения переменной, что является побочным эффектом ее выполнения. Например:

++$done_count; # увеличиваем счетчик обработанных строк
$left_count--; # уменьшаем счетчик оставшихся строк

В отличие от других языков, в Perl эти операции могут применяться не только к целочисленным, но и к дробным значениям переменных:

$f = 2.5;    # начальное значение переменной $f 
$f++;        # теперь в $f стало 3.5

Операции автоинкремента и автодекремента более естественны, чем используемые в других языках эквивалентные выражения наподобие $n = $n + 1 (которые так шокируют математиков). К тому же они обычно и более эффективно реализованы.

В Perl есть операции унарный минус и унарный плюс, применяемые к числовым и строковым значениям. Например, если в переменной $n содержится число, в $s - строка, а в $x - любое значение, то унарные знаки подействуют так:

-	унарный минус ($n = -$n; сменит знак числа в $n на противоположный)
-	унарный минус ($s = -$s; добавит перед строкой в $s символ '-')
+	унарный плюс ($x = +$x; не изменит значения любой переменной)

Поскольку унарный плюс не изменяет значения выражения, он может применяться в ситуации, когда синтаксис требует наличия разделителя, а пробел использовать нежелательно. Например, при указании выражения для вычисления Рerl в командной строке.

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >
Галина Башкирова
Галина Башкирова

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

Системный администратор информационно-коммуникационных» систем.
Мне нужно самой найти тему? или делать по высланным темам

 

Константин Моренко
Константин Моренко
Марина Дайнеко
Марина Дайнеко
Россия, Moscow, Nope, 2008
Сергей Пантелеев
Сергей Пантелеев
Россия, Москва