|
Операция - это определенная последовательность действий, выполняемых с исходными
данными (операндами), в результате которой получаются новые данные.
Все знают со школьной скамьи четыре основных арифметических действия,
выполняемых над числами: сложение (+), вычитание (-), умножение (*) и
деление (/). Эти действия (операции) мы всегда выполняем над двумя числами
(операндами), получая в результате новое число. Язык программирования определяет
не только арифметические операции над числовыми данными, но и операции,
применимые к другим допустимым типам данных. Это могут быть операции над
строками, массивами и т. д. Важно только одно, что есть операция, определяемая своим
знаком, и есть участвующие в ней операнды, в совокупности позволяющие получить
(вычислить) новое значение.
|
Основное предназначение арифметических операций - выполнять определенные арифметические действия над числовыми данными: складывать, вычитать, умножать, делить и т. д. Это означает, что для арифметических операций все операнды вычисляются в числовом скалярном контексте. При этом строки, содержащие правильные числовые литералы, автоматически будут преобразованы в числовые значения: если строка не содержит правильного числового литерала, то интерпретатор попытается выделить из нее число, начиная с левого символа, и использовать его в качестве операнда; если не удается выделить правильный числовой литерал, то строковый операнд принимает нулевое значение.
Операции выполнения основных арифметических действий являются бинарными, так как для их выполнения требуется два операнда. Все, сказанное о преобразовании строк в числа, относится именно к таким операциям.
В языке определены также унарные арифметические операции: унарный плюс (+) и минус (-), а также операции автоматического увеличения (++) и уменьшения (--) значения операнда на единицу.
|
В языке определено шесть бинарных арифметических операций, которые представлены в табл. 1.
Операция | Знак | Пример | Результат |
---|---|---|---|
Сложение | + | 3.14+123; "3.14"+"123"; "3.14"+123; |
126.14 126.14 126.14 |
Вычитание | - | 3.14-123; "3.14"-"123"; "3.14"-123; |
-119.86 -119.86 -119.86 |
Умножение | * | 3.14*123; "3.14"*"123"; "3.14"*123; "31"*12; |
386.22 386.22 386.22 372 |
Деление | / | 3.14/123; "3.14"/"123"; "3.14"/123; "31"/12 |
0.0255284552845528 0.0255284552845528 0.0255284552845528 2.58333333333333 |
Остаток от деления целых чисел | % | 127%123; "127"%123; "127.58"%"123"; "127.58"%123.98; |
4 4 4 4 |
Возведение в степень | ** | 2.5**3; "-2.5"**3; "+2.5"**"-3"; "-2.5"**(-3); 2.5**(-3,01) |
15.625 -15.625 0.064 -0.064 0.0634162524282757 |
Операции для четырех основных арифметических действий - сложения, вычитания, умножения и деления - истребуют комментария. Они выполняются аналогично тому, как это принято в математике, с учетом преобразования значений строковых операндов в числа, причем все вычисления осуществляются с двойной точностью, если один из операндов представлен вещественным числом. Две бинарные арифметические операции - остаток от деления и возведение в степень - требуют некоторого пояснения.
Операндами операции получения остатка должны быть целые числа. Поэтому вещественные значения преобразуются к целым простым отбрасыванием дробной части, что и демонстрирует последний пример в табл. 1.
Операция возведения в степень выполняет возведение в любую (положительную или отрицательную, целую или вещественную) степень любого положительного числа. Отрицательные числа можно возводить только в целую (положительную или отрицательную) степень. При попытке возвести отрицательное число в вещественную степень, результат непредсказуем, а интерпретатор не отобразит никаких предупреждающих сообщений, например на моем компьютере результат выполнения подобной операции выглядит так:
$m = (-2.5)**(3.01); # Переменная $m содержит -2147483648
"3fl4" + "12-30"; (результат: 15 (3+12)); "а120" - "12-30"; (результат: -12 (0 - 12)); "а120" * "-0012-30"; (результат: 0) (0 * (-12)).
|
В Perl существуют две унарные арифметические операции - "плюс" (+) и "минус" (-), которые применяются к любым скалярным значениям.
Арифметическая операция "унарный плюс" (+) не оказывает никакого эффекта ни на числовое, ни на строковое значение.
"Унарный минус" (-) выполняет арифметическое отрицание числового операнда. Это означает, что
если число было отрицательным, то оно станет положительным, и наоборот. Если операндом является
идентификатор, то результатом выполнения этой операции будет строка, состоящая из символа -, за
которым следует идентификатор, то есть если в тексте программы встречается, например, выражение -word,
то результатом выполнения операции унарного минуса в атом случае будет строка "-word". Если операндом
является строка, начинающаяся с символа минус или плюс, то результатом также будет строка, в которой
минус заменен на плюс и наоборот. Если строка не начинается с плюса или минуса, операция унарного
минуса добавляет его первым символом в строку. Перечислим случаи использования операции унарного минуса:
print -'12.09'; # результат: -12.09; print -(-12.09); # результат: 12.09; print -id; # результат: '-id'; print -'+id; # результат: '-id'; print -"-id; # результат: "+id"; print -'al20; # результат: '-а120'.
|
Операции увеличения (++) и уменьшения (--) на единицу соответственно увеличивают или уменьшают на единицу
значение своего операнда. Существует две формы этих операций: префиксная, когда знак операции стоит
перед операндом, и постфиксная - знак операции ставится после операнда; эти формы отличаются
семантикой использования. Префиксные операции увеличения и уменьшения сначала соответственно
увеличивают или уменьшают значение своего операнда, а потом используют его в вычислениях. Постфиксные
формы этих операций, наоборот, сначала используют в выражениях значения своих операндов, а потом
увеличивают или уменьшают их значения на единицу. Так как операции увеличения/уменьшения выполняют
также и операцию присваивания своему операнду нового значения, то в качестве операнда может использоваться
только числовая переменная.
$n = 10.7; - начальное значение $inf1 = --$n; - результат: $inf1 = 9.7, $n = 9.7; $inf2 = ++$n; - результат: $inf2 = 10.7, $n = 10.7; $post1 = $n--; - результат: $post1 = 10.7, $n = 9.7; $post2 = $n++; - результат: $post2 = 9.7,$n = 10,7;
К содержанию
|
|
Скачать новую версию данного учебника в одном архиве
Курс находится в процессе разработки, поэтому архив постоянно обновляется! |