Анимация
JavaScript


Главная  Библионтека 

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

Конструкция

Значение

\007

Восьмеричное ASCII-значение (в данном случае 07 = сигнал)

\x7f

Шестнадцатеричное ASCII-значение (в данном случае 7f = удалить)

Управляющий символ (здесь Ctrl-HC)

Обратная косая

\"

Двойная кавычка

Перевод следующей буквы в нижний регистр

Перевод в нижний регистр всех последующих букв до \Е

Перевод в верхний регистр следующей буквы

Перевод в верхний регистр всех следующих букв до \Е

Заключить в обратные косые все небуквенные и все нецифровые символы до \Е

Отменить действие последовательности \L, \и или \Q

Еще одна особенность строк в двойных кавычках состоит в том, что в них производится интерполяция переменных, т.е. при использовании строки все скалярные переменные и переменные-массивы в ней заменяются их текущими значениями.Мы, однако, формально еще не знакомы с тем, что такое переменная (за исключением краткого обзора, данного в главе I), поэтому мы вернемся к этому вопросу позднее.

Скалярные операции

Оператор обозначает проведение определенной операции, благодаря которой создается новое значение (результат) из одного или нескольких других значений {операндов). Например, символ + обозначает операцию, потому что при его использовании берутся два числа (операнда, например, 5 и 6) и создается новое значение (И, результат).

Вообще говоря, операции и выражения Perl представляют собой надмножество операций и выражений, имеющихся в большинстве других АЛГОЛ-и Паскаль-подобных языков программирования (вроде С или Java). При выполнении операции предполагается наличие или числовых, или строковых операндов (либо сочетания операндов этих типов). Если вы введете строковый операнд там, где должно быть число, или наоборот, Perl автоматически преобразует этот операнд, используя весьма нечетко сформулированные правила, которые мы подробно рассмотрим ниже в разделе "Преобразование чисел в строки и обратно".



Операции над числами

в Perl применяются обычные операции сложения, вычитания, умножения, деления и т.д. Например:

2+3 #2 плюс 3, или 5

5.1-2.4 #5,1 минус 2,4, или приблизительно 2,7

3 * 12 #3 умножить на 12 = 3 6

14/2 #14 делить на 2, или 7

10.2/0.3 # 10,2 делить на 0,3, или приблизительно 34

10/3 # всегда означает деление чисел с плавающей запятой, # поэтому результат приблизительно равен 3,3333333...

Кроме того, в Perl используется ФОРТРАН-подобная операция возведения в степень, по которой многие тоскуют в Паскале и С. Эта операция обозначается двумя звездочками, например 2**3 равно двум в степени три, или восьми. (Если этот результат "не помещается" в число с плавающей запятой двойной точности, например, отрицательное число возводится в нецелую степень или большое число возводится в большую степень, выдается сообщение об ошибке ~ fatal error)

Perl поддерживает также операцию деления с остатком. Значение выражения 10 % 3 - остаток отделения 10 на 3, или 1. Оба значения сначала сокращаются до целых, т.е. 10 .5 % 3.2 вычисляется как 10 % 3.

Операции логического сравнения следующие: <,<=,==,>=, >, !=. Эти операции сравнивают два значения в числовом формате и возвращают значение "истина" (true) или "ложь" {false). Например, операция 3 > 2 возвращает значение "истина", потому что три больше, чем два, тогда как операция 5 != 5 возвращает "ложь", потому что утверждение, что пять пе равно пяти - неправда. Определение значений "истина" и "ложь" рассматривается позже, а пока можно считать, что "истина" - это единица, а "ложь" ~ нуль. (Вы еще увидите эти операции в табл. 2.2.)

Вас, вероятно, удивило слово "приблизительно" в комментариях к примерам, которые мы привели в начале этого раздела. Разве при вычитании 2,4 из 5,1 не получается точно 2, 7? На уроке математики, может быть, и получается, но в компьютерах, как правило, - нет. В вычислительной технике получается приближенное значение, которое точно лишь до определенного числа десятичных разрядов. Числа в компьютерах хранятся не так, как их представляет себе математик. Впрочем, если вы не делаете чего-нибудь сверхсложного, то, как правило, увидите именно те результаты, которых ожидаете.

Сравнивая приведенные ниже операторы, вы увидите, что в действительности компьютер получил в результате вышеупомянутого вычитания (функция printf описывается в главе 6):

printf (%.51\п", 5.1 - 2.4)

# 2.6999999999999997 3354 64 740899624302 98 32 8399658 203125

print(5.1 - 2.4, "\п");

# 2.7



Не обращайте на это особого внимания: стандартный формат функции print для вывода на экран чисел с плавающей запятой обычно скрывает такие незначительные неточности представления. Если это создает какую-то проблему, следует воспользоваться объектными модулями Math::BigInt и Math::BigFloat - в них реализована арифметика с бесконечной точностью для целых и чисел с плавающей запятой, только выполняются эти операции несколько медленнее. Подробности вы найдете в главе 7 книги Programming Perl и в интерактивной (сетевой) документации на эти модули.

Операции над строками

Строковые значения можно конкатенировать операцией (Да, это именно одна точка.) Данная операция изменяет строки-операнды не более, чем операция 2+3 изменяет 2 или 3. Строку-результат (более длинную) мож[10 использовать в дальнейших вычислениях или сохранить в переменной.

"hello" . "world" # то же самое, что "helloworld"

hello world . "\n" # то же самое, что "hello worldXn"

"fred" . " " . "barney" # то же самое, что "fred barney"

Отметим, что конкатенацию нужно задавать явно при помощи знака а не просто располагать два значения рядом друг с другом.

Еще одна группа операций над строками - операции сравнения. Эт1г операции похожи на соответствующие операции ФОРТРАНа, например It (меньше чем) и т.д. Операции сравнения строк сравнивают ASCII-значения символов строк обычным способом. Полный набор операций сравнения (как для чисел, так и для строк) приведен в таблице 2.2.

Таблица 2.2. Операции сравнения чисел и строк

Сравнение

Числовое

Строковое

Равно

Не равно

Меньше чем

<

Больше чем

>

Меньше чем или равно

<=

Больше чем или равно

>=

Вы, возможно, спросите, почему предусмотрены отдельные операции для чисел и строк, если числа можно автоматически преобразовывать в строки и наоборот. Давайте рассмотрим два значения, 7 и 30. Если их сравнить как числа, то 7, очевидно, меньше 30. Если же сравнить их как строки, то строка "30" идет перед строкой "7" (ведь ASCII-значение цифры 3 меньше ASCII-значения цифры 7), поэтому 30 меньше 7. Perl всегда требует указывать тип сравнения, то есть конкретизировать, какое именно сравнение, числовое или строковое, будет проводиться.



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