Анимация
JavaScript
|
Главная Библионтека Унарные операторы До сих пор все встречавшиеся вам операторы имели по два аргумента. Для деления 6/3 нужен числитель б и знаменатель 3, для умножения 5*2 нужны множители 5 и 2 и т.д. Другой тип операторов - операторы с одним аргументом (операндом). Скорее всего, вы уже знакомы с одним представителем операторов такого рода - унарным минусом (-). Унарный минус изменяет знак своего аргумента, например: -(-5) I Шесть f Mffijc шесть i Пять, минус на минус дает В отличие от унарного минуса, большинству операторов назначены имена. Операнды именованных унарных операторов заключать в скобки необязательно (в табл. 2.4 они приведены лишь для удобства). Поскольку именованные операторы в Perl напоминают функции, то их операнды иногда называют аргументами, т.е. термином, принятым для параметров функций Perl. Краткий список именованных операторов приведен в табл. 2.4.
Полный список именованных операторов приведен в документации На 1- м занятии, "Начало работы с Perl", рассказывалось о том, как получить доступ к разделам документации с помошью утилиты perldoc, которая входит в поставку Perl. Полный список операторов находится на страницах руководства perlop и На последующих занятиях, по мере необходимости, будут представлены и некоторые другие операторы. Инкремент и декремент В разделе "Числовые операторы" мы уже говорили о специальном типе операторов присваивания, называемом инкрементом, выглядевшем тогда так: $counter=$counter+l; Инкремент обычно используется для подсчета чего-либо, например количества встретившихся записей или для генерации последовательных номеров (например, нумерации элементов списка). Вы можете в этих целях использовать специальный опе- ратор, называемый оператором автоинкремента (++). Этот оператор прибавляет к операнду единицу: $counter++; После выполнения этой строки кода значение переменное nter увеличивается на единицу. В Perl есть оператор для уменьшения значения переменной, который, как вы уже могли сами догадаться, называется оператором автодекремента (--). Автодекремент используется точно так же, как и автоинкремент: Scountdown=10; $coantdpwn~; f Значение переменной становится нын 9 Перед тем как завершить описание этих операторов, следует упомянуть еше об одном любопытном свойстве автоинкремента. Речь идет о применении этого оператора к строке алфавитно-цифровых символов, что приводит к очень интересному результату! Данная операция влияет на последний (самый правый) символ строки - его значение увеличивается на 1, при этом буквенный символ заменяется следующим символом алфавита. Ниже приведены примеры действия оператора автоинкремента на строки. ?а="99Э"; $а++; print $a; \ как н следовало ожидать, напечатает 1000. ?а="с9-; $а++; print $а; \ напечатает dO. 9+1=10, с заменяется сле/ющ \ сколом алфавита d. $a="zzz"; $а++; print $a; t напечатает aaaa. Оператор автодекремента не выполняет подобных действий. П УГЛОВОЙ оператор Угловой оператор (о), иногда из-за своей формы называемый "бубновым", прежде всего, используется для чтения и записи файлов (подробнее об этом речь пойдет на 5-м занятии, "Работа с файлами"). Однако, чтобы сделать примеры более интересными, мы начнем его использовать раньше, и к 5-му занятию он уже будет нам хорошо знаком. А пока мы будем использовать простейшую форму углового оператора: <STDIN>. Эта конструкция сообщает Perl, что строка должна быть считана со стандартного устройства ввода - обычно с клавиатуры. Таким образом, оператор <STDIN> возвращает строку, введенную с клавиатуры, например: print "Какой у вас размер обуви? Ssize=<STDIN>,* print "Ваш размер увв }Спасибо за внимание"; После выполнения этого кода (предположим, что в качестве размера обуви вы указали число 45) на экран будет выведено следующее: Какой у вас размер обуви? 45 Ваш размер обуви - 45 Спасибо- за внимание Оператор <8ШМ> читает вводимые с клавиатуры символы до тех пор, пока пользователь не нажмет клавишу tcr>. Затем введенная строка помещается в переменную Ssize. Строка текста, возвращаемая оператором <[DIN>, содержит символ перевода строки, введеппый пользователем при пажатии клавиши <Enter>. Обычно не желательно, чтобы в конце введенной строки находился символ перевода строки, т.е. требуемая строка должна содержать лишь текст. Для удаления символа перевода строки можно воспользоваться оператором chomp: print "Какой у вас размер обуви? "; 5size=<STDIN>; chomp $size; print "Ваш размер обуви - Ssize. Спасибо за вниманиеХп"; Оператор отр удаляет в строке-аргументе завершающий символ перевода строки. Он также возвращает количество удаленных символов - обычно это 1, но иногда О, если ничего не удалено. Другие операторы присваивания Вы уже знаете, что для присваивания значений скалярным переменным используется оператор присваивания =. В Perl имеется еще целый набор операторов присваивания. Каждый арифметический оператор Perl и еше некоторые другие могут быть использованы одновременно и для выполнения соответствующей операции, и для последующего присваивания. Ниже приведено общее правило образования таких операторов присваивания: переменная гтор= выражение Эта строка равносильна следующей: переменнйя=перемеивая оператор выражение Использование подобнгх операторов обычно не сделает вашу программу более читабельной, но сделает ее короче. Согласно вышеописанному правилу, оператор $а=$а+3; можно сократить до $а+=3; А вот еще несколько примеров: $line.=" - это конец строки"; I Фраза дописывается к $Ипе; $у*=$х t То же, что и $у=$у*$х Sr*=67 I CciaiCK or депшия Sr на 67 тувщепся в Sr Несколько слов о строках и числах Perl позволяет использовать в выражениях как строки, так и числа. При этом, в зависимости от ситуации, Perl выполняет автоматическое преобразование чисел в строковое представление и наоборот. Ниже приведено несколько правил, которыми руководствуется 2-й час. зоше блоки Perl: ла и оки 43 0 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |