| |||||||||||||||||||||||||||||||||
Атомная энергетика. Ядерные реакторы АЭС. Атомный флот. Ядерное оружие |
|||
| РБМК-1000 | |||
| Гражданский суда | |||
| Авиация | |||
Высшая математика |
|||
| Задачи | |||
| Практикум | |||
| Карта сайта | |||
Учебник PHP 4.0 Интернет технологии |
| В
этой главе представлены некоторые аспекты, играющие исключительно важную роль
в любом языке программирования, - а именно, выражения, операторы и управляющие
конструкции. Этот материал необходим в первую очередь при создании больших и сложных
приложений РНР. Если вы уже знакомы с такими языками, как С и Java, эта глава
всего лишь напомнит известные вам понятия. Если же вы впервые встречаетесь с этими
терминами и понятиями, которые они обозначают, знание материала этой главы будет
безусловно необходимо для понимания остальных глав книги. Выражения Выражение описывает некоторое действие, выполняемое в программе. Каждое выражение состоит по крайней мере из одного операнда и одного или нескольких операторов. Прежде чем переходить к примерам, демонстрирующим использование выражений, необходимо поближе познакомиться с операторами и операндами. Операнды Операнд представляет собой некоторую величину, обрабатываемую в программе. Операнды могут относиться к любому типу данных, представленному в главе 2. Вероятно, вы уже знакомы с концепциями обработки и использования операндов не только в повседневных математических вычислениях, но и по прежнему опыту программирования. Примеры операндов: $а++; // $а - операнд $sum = $val1 + $val2; // $sum. $val1 и $val2 - операнды Операторы Оператор представляет собой символическое обозначение некоторого действия, выполняемого с операндами в выражении. Многие операторы известны любому программисту, но вы должны помнить, что РНР выполняет автоматическое преобразование типов на основании типа оператора, объединяющего два операнда, - в других языках программирования это происходит не всегда. Приоритет и ассоциативность операторов являются важными характеристиками языка программирования (см. раздел <Ассоциативность операторов> этой главы). В табл. 3.1 приведен полный список всех операторов, упорядоченных по убыванию приоритета. Приоритет, ассоциативность и сами операторы подробно рассматриваются в разделах, следующих за таблицей. Таблица 3.1. Операторы РНР Оператор Ассоциативность Цель После знакомства с концепциями операторов и операндов следующие примеры выражений выглядят значительно понятнее: $а = 5; // Присвоить целое число 5 переменной $а $а = "5": // Присвоить строковую величину "5" переменной $а $sum = 50 + $some_int; // Присвоить сумму 50 + $some_int переменной $sum Swine = "Zinfandel"; // Присвоить строку "Zinfandel" переменной $wine $inventory++: // Увеличить значение $inventory на 1 Объединяя операторы и операнды, вы получите более сложные выражения для выполнения нетривиальных вычислений. Пример: $total_cost = $cqst + (Scost * 0.06): // прибавить к цене 6-процентный налог Приоритет операторов Приоритет является характеристикой операторов, определяющей порядок выполнения действий с окружающими операндами. В РНР используются те же правила приоритета, что и в школьном курсе математики. Пример: $total_cost = $cost + $cost * 0.06; Приведенная команда эквивалентна следующей: $total cost = $cost + ($cost * 0.06); Это объясняется тем, что оператор умножения обладает более высоким приоритетом по сравнению с оператором сложения. Ассоциативность операторов Ассоциативность оператора определяет последовательность выполнения операторов с одинаковым приоритетом (см. табл. 3.1). Выполнение может происходить в двух направлениях: либо слева направо, либо справа налево. При ассоциативности первого типа операции, входящие в выражение, выполняются слева направо. Например, команда $value = 3*4*5*7*2; эквивалентна следующей команде: $value = ((((3 * 4) * 5) * 7) * 2); Результат вычислений равен 840. Это объясняется тем, что оператор умножения (*) обладает левосторонней ассоциативностью. Операторы с правосторонней ассоциативностью и одинаковым приоритетом обрабатываются справа налево. Например, фрагмент $с = 5; $value = $а - $b - $с; эквивалентен фрагменту $c = 5; $value = ($а - ($b - $с)); При обработке этого выражения переменным $value, $a, $b и $с будет присвоено значение 5. Это объясняется тем, что оператор присваивания (=) обладает правосторонней ассоциативностью. Математические операторы Математические операторы (табл. 3.2) предназначены для выполнения различных математических операций и часто применяются в большинстве программ РНР. К счастью, их использование обходится без проблем. Таблица 3.2. Математические операторы Пример РНР содержит широкий ассортимент стандартных математических функций для выполнения основных преобразований и вычисления логарифмов, квадратных корней, геометрических величин и т. д. За обновленным списком таких функций обращайтесь к документации. Операторы присваивания Операторы присваивания задают новое значение переменной. В простейшем варианте оператор присваивания ограничивается изменением величины, в других вариантах (называемых сокращенными операторами присваивания) перед присваиванием выполняется некоторая операция. Примеры таких операторов приведены в табл. 3.3. Таблица 3.3. Операторы присваивания Пример Название
Результат Умеренное использование операторов присваивания обеспечивает более наглядный и компактный код. Строковые операторы Строковые операторы РНР (табл. 3.4) обеспечивают удобные средства конкатенации (то есть слияния) строк. Существует два строковых оператора: оператор конкатенации (.) и оператор конкатенации с присваиванием (.=), описанный в предыдущем разделе <Операторы присваивания>. Конкатенацией называется объединение двух и более объектов в единое целое. Таблица 3.4. Строковые операторы Пример Пример использования строковых операторов: // $а присваивается строковое значение "Spaghetti & Meatballs" $а = "Spaghetti" . "& Meatballs" // $а присваивается строковое значение "Spaghetti & Meatballs are delicious" $a .= "are delicious"; Конечно, два строковых оператора не исчерпывают всех возможностей РНР по обработке строк. За полной информацией об этих возможностях обращайтесь к главе 8. Операторы инкремента и декремента Удобные вспомогательные операторы инкремента (++) и декремента (--), приведенные в табл. 3.5, делают программу более наглядной и обеспечивают укороченную запись для увеличения или уменьшения текущего значения переменной на 1. Таблица 3.5. Операторы инкремента и декремента Пример Название Результат Интересный факт: эти операторы могут располагаться как слева, так и справа от операнда. Действия, выполняемые оператором, зависят от того, с какой стороны от операнда он находится. Рассмотрим следующий пример: $inventory = 15; // Присвоить Sinventory целое число 15 $old_inv = Sinventory--; // СНАЧАЛА присвоить $old_inv значение // Sinventory. а ЗАТЕМ уменьшить Sinventory. $orig_iinventory = ++inventory;// СНАЧАЛА увеличить Sinventory. а ЗАТЕМ // присвоить увеличенное значение Sinventory // переменной $orig_inventory. Как видите, расположение операторов инкремента и декремента оказывает сильное влияние на результат вычислений. Логические операторы Логические операторы (табл. 3.6) наряду с математическими операторами играют важную роль в любом приложении РНР, обеспечивая средства для принятия решений в зависимости от значения переменных. Логические операторы позволяют управлять порядком выполнения команд в программе и часто используются в управляющих конструкциях (таких, как условная команда i f, а также циклы for и while). Таблица 3.6. Логические операторы Пример Логические операторы часто используются для проверки результата вызова функций: file_exists("filename.txt") OR print "File does not exist!"; Возможен один из двух вариантов: файл filename.txt существует; Операторы равенства (табл. 3.7) предназначены для сравнения двух величин и проверки их эквивалентности. Таблица 3.7. Операторы равенства Пример Даже опытные программисты часто допускают одну распространенную ошибку - они пытаются проверять равенство двух величин, используя всего один знак равенства (например, $а = $b). Помните, при такой записи значение $b присваивается $а, и желаемый результат не будет достигнут. Операторы сравнения Операторы сравнения (табл. 3.8), как и логические операторы, позволяют управлять логикой программы и принимать решения при сравнении двух и более переменных. Таблица 3.8. Операторы сравнения Пример Обратите внимание: операторы сравнения предназначены для работы только с числовыми значениями. Хотя возникает искушение воспользоваться ими для сравнения строк, результат, скорее всего, окажется неверным. В РНР существуют стандартные функции для сравнения строковых величин. Эти функции подробно рассматриваются в главе 8. Поразрядные операторы Поразрядные операторы выполняют операции с целыми числами на уровне отдельных битов, составляющих число. Чтобы лучше понять принцип их работы, необходимо иметь хотя бы общее представление о двоичном представлении десятичных чисел. В табл. 3.9 приведены примеры десятичных чисел и соответствующих им двоичных представлений. Таблица 3.9. Десятичные числа и их двоичные представления Десятичное целое Двоичное представление Поразрядные операторы, перечисленные в табл. 3.10, представляют собой особый случай логических операторов, однако они приводят к совершенно иным результатам. Таблица 3.10. Поразрядные операторы Пример
Если вам захочется больше
узнать о двоичном представлении и поразрядных операторах, я рекомендую обратиться
к обширному электронному справочнику Рэндалла Хайда (Randall Hyde) , доступному
по адресу http://webster.cs.ucr.edu/Page_asm/Page_asm.html. Это лучший из ресурсов,
которые мне когда-либо встречались в Web. |
| На главную |