Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛК.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
953.86 Кб
Скачать

Лекция 2.12 Элементы и выражения языка.

1. Выражения.

2. Управляющие конструкции.

ВЫРАЖЕНИЯ

Выражение описывает некоторое действие, выполняемое в программе. Каждое выражение состоит по крайней мере из одного операнда и одного или нескольких операторов. Операнды

Операнд представляет собой некоторую величину, обрабатываемую в программе. Операнды могут относиться к любому типу данных.

Оператор представляет собой символическое обозначение некоторого действия, выполняемого с операндами в выражении. Многие операторы известны любому программисту, но вы должны помнить, что РНР выполняет автоматическое преобразование типов на основании типа оператора, объединяющего два операнда, — в других языках программирования это происходит не всегда.

Приоритет и ассоциативность операторов являются важными характеристиками языка программирования.

Таблица 1. Операторы РНР

Оператор

Ассоциативность

Цель

( )

-

Изменение приоритета

new

-

Создание экземпляров объектов

! ~

П

Логическое отрицание, поразрядное отрицание

++ --

П

Инкремент, декремент

@

П

Маскировка ошибок

/ * %

Л

Деление, умножение, остаток

+ - .

Л

Сложение, вычитание, конкатенация

<<  >>

Л

Сдвиг влево, сдвиг вправо (поразрядный)

< <=  >  >=

-

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

== !=  ===  <>

-

Равно, не равно, идентично, не равно

&  ^  |

Л

Поразрядные операции AND, XOR и OR

&& ||

Л

Логические операции AND и OR

?:

П

Тернарный оператор

=  +=  *=  /=  .=

П

Операторы присваивания

%=  &=  |=  ^=

 

 

<<=  >>=

 

 

AND XOR OR

Л

Логические операции AND, XOR и OR

Приоритет операторов

Приоритет является характеристикой операторов, определяющей порядок выполнения действий с окружающими операндами. В РНР используются те же правила приоритета, что и в школьном курсе математики.

Ассоциативность операторов

Ассоциативность оператора определяет последовательность выполнения операторов с одинаковым приоритетом (см. табл. 1). Выполнение может происходить в двух направлениях: либо слева направо, либо справа налево. При ассоциативности первого типа операции, входящие в выражение, выполняются слева направо.

Математические операторы

Математические операторы (табл. 2) предназначены для выполнения различных математических операций и часто применяются в большинстве программ РНР.

Таблица 2. Математические операторы

Пример

Название

Результат

$а + $b

Сложение

Сумма $а и $b

$а-$b

Вычитание

Разность $а и $b

$а*$b

Умножение

Произведение $а и $b

$а/$b

Деление

Частное от деления $а на $b

$а % $b

Остаток

Остаток от деления $а на $b

Операторы присваивания

Операторы присваивания задают новое значение переменной. В простейшем варианте оператор присваивания ограничивается изменением величины, в других вариантах (называемых сокращенными операторами присваивания) перед присваиванием выполняется некоторая операция. Примеры таких операторов приведены в табл. 3.

Таблица 3. Операторы присваивания

Пример

Название

Результат

$а = 5; 

 Присваивание

Переменная $а равна 5 

$а += 5; 

 Сложение с присваиванием

 Переменная $а равна сумме $а и 5

$а *= 5; 

Умножение с присваиванием

Переменная $а равна произведению $а и 5

$а/=5;

Деление с присваиванием

Переменная $а равна частному отделения $а на 5

$а .= 5; 

 Конкатенация с присваиванием

Переменная $а равна конкатенации $а и 5

Строковые операторы

Строковые операторы РНР (табл. 4) обеспечивают удобные средства конкатенации (то есть слияния) строк. Существует два строковых оператора: оператор конкатенации (.) и оператор конкатенации с присваиванием (.=), описанный в предыдущем разделе «Операторы присваивания».

Конкатенацией называется объединение двух и более объектов в единое целое.

Таблица 4. Строковые операторы

Пример

Название

Результат

$a = "abc"."def"

Конкатенация

Переменной $а присваивается результат конкатенации $а и $b

$а - "ghijkl"

 Конкатенация с присваиванием

Переменной $а присваивается результат конкатенации ее текущего значения со строкой "ghijkl"

Логические операторы

Логические операторы (табл.6) наряду с математическими операторами играют важную роль в любом приложении РНР, обеспечивая средства для принятия решений в зависимости от значения переменных. Логические операторы позволяют управлять порядком выполнения команд в программе и часто используются в управляющих конструкциях (таких, как условная команда i f, а также циклы for и while).

Таблица 6. Логические операторы

Пример

Название

Результат

$а && $b

Конъюнкция

Истина, если истинны оба операнда ,

$aAND$b

Конъюнкция

Истина, если истинны оба операнда

$а И $b

Дизъюнкция

Истина, если истинен хотя бы один из операндов

$а OR $b

Дизъюнкция

Истина, если истинен хотя бы один из операндов

!$а

Отрицание

Истина, если значение $а ложно

NOT !$a

Отрицание

Истина, если значение $а ложно

$а XOR $b

Исключающая дизъюнкция

Истина, если истинен только один из операндов

Операторы равенства

Операторы равенства (табл. 7) предназначены для сравнения двух величин и проверки их эквивалентности.

Таблица 7. Операторы равенства

Пример

Название

Результат  

$a==$b

Проверка равенства

Истина, если $а и $b равны

$а != $b

Проверка неравенства

Истина, если $а и $b не равны

$а === $b

Проверка идентичности

Истина, если $а и $b равны и имеют одинаковый тип

Операторы сравнения

Операторы сравнения (табл. 8), как и логические операторы, позволяют управлять логикой программы и принимать решения при сравнении двух и более переменных.

Таблица 8. Операторы сравнения

Пример

Название

Результат

$a<$b

Меньше

Истина, если переменная $а меньше $b

$a>$b

Больше

Истина, если переменная $а больше $b

$a <= $b

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

Истина, если переменная $а меньше или равна $b

$a >= $b

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

Истина, если переменная $а больше или равна $b

($a-12)?5: -1

Тернарный оператор

Если переменная $а равна 12, возвращается значение 5, а если не равна — возвращается 1

Поразрядные операторы

Поразрядные операторы выполняют операции с целыми числами на уровне отдельных битов, составляющих число. Чтобы лучше понять принцип их работы, необходимо иметь хотя бы общее представление о двоичном представлении десятичных чисел

Таблица 10. Поразрядные операторы

Пример

Название

Результат

$а&$b

Конъюнкция

С битами, находящимися в одинаковых разрядах $а и $b, выполняется операция конъюнкции

$а|$Ь

Дизъюнкция

С битами, находящимися в одинаковых разрядах $а и $b, выполняется операция дизъюнкции

$а^$b

 

Исключающая

С битами, находящимися в одинаковых разрядах $а и $b, выполняется операция исключающей дизъюнкции

~$b

Отрицание

Все разряды переменной $b инвертируются

$а << $b

Сдвиг влево

Переменной $а присваивается значение $b, сдвинутое влево на два бита

$а >> $b

Сдвиг вправо

Переменной $а присваивается значение $b, сдвинутое вправо на два бита

УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ

Управляющие конструкции предоставляют в распоряжение программиста средства для построения сложных программ, способных проверять условия и реагировать на изменения значений входных данных во время работы. Короче говоря, эти структуры управляют выполнением программы.

Проверка условий

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

if

Команда if представляет собой разновидность команды выбора, которая вычисляет значение выражения и в зависимости от того, будет ли полученный результат истинным или ложным, выполняет (или не выполняет) блок программного кода. Существует две общих формы команды i f:

if (выражение) {

блок }

и

if (выражение) {

блок }

else {

блок }

elseif

Команда elseif добавляет в управляющую конструкцию if дополнительный уровень проверки и увеличивает количество условий, на основании которых принимается решение:

if (выражение) {

блок }

elseif (выражение) {

блок }

while

Конструкция while предназначена для многократного (циклического) выполнения блока команд. Блок команды while выполняется до тех пор, пока условие цикла остается истинным. Общая форма цикла while выглядит так:

while (выражение) :

блок

endwhile;

do. .while

Цикл do. .while работает почти так же, как и цикл while, описанный в предыдущем разделе, однако в do. .while условие проверяется не в начале, а в конце каждой итерации. Учтите, что цикл do. .while всегда выполняется хотя бы один раз, а цикл while может вообще не выполняться, если перед входом в цикл условие окажется ложным:

do:

блок

while (выражение);

for

Цикл for обеспечивает еще одну возможность многократного выполнения блоков. Он отличается от цикла while только тем, что условие изменяется в самой

управляющей конструкции, а не где-то внутри блока команд. Как и в случае с циклом while, цикл выполняется до тех пор, пока проверяемое условие остается истинным. Общая форма конструкции for выглядит так:

for (инициализация: условие; приращение) {

блок

}

Условная часть цикла for в действительности состоит из трех компонентов. Инициализация выполняется всего один раз и определяет начальное значение управляющей переменной цикла. Условие проверяется в начале каждой итерации и определяет, должна ли выполняться текущая итерация или нет. Наконец, приращение определяет изменение управляющей переменной при каждой итерации.

foreach

Конструкция foreach представляет собой разновидность for, включенную в язык для упрощения перебора элементов массива. Существуют две разновидности команды foreach, предназначенные для разных типов массивов:

foreach (массив as $элемент) {

блок }

foreach (массив as $ключ => $элемент) {

блок }

switch

Принцип работы конструкции switch отчасти напоминает if — результат, полученный при вычислении выражения, проверяется по списку потенциальных совпадений.

Это особенно удобно при проверке нескольких значений, поскольку применение switch делает программу более наглядной и компактной. Общий формат команды switch:

switch (выражение) {

case (условие):

блок

case (условие):

блок

...

default:

блок }

Проверяемое условие указывается в круглых скобках после ключевого слова switch. Результат его вычисления последовательно сравнивается с условиями в секциях case. При обнаружении совпадения выполняется блок соответствующей секции. Если совпадение не будет обнаружено, выполняется блок необязательной секции default.

break

Команда break немедленно прерывает выполнение той конструкции while, for или switch, в которой она находится. Эта команда уже упоминалась в предыдущем разделе, однако прерывание текущего цикла не исчерпывает возможностей команды break. В общем виде синтаксис break выглядит так:

break n;

Необязательный параметр n определяет количество уровней управляющих конструкций, завершаемых командой break.

continue

Остается рассмотреть еще одну управляющую конструкцию РНР — continue. При выполнении команды continue в цикле пропускаются все оставшиеся команды текущей итерации и немедленно начинается новая итерация. Синтаксис команды continue в общем виде:

continue n;

Необязательный параметр n указывает, на сколько уровней внешних циклов распространяется действие continue.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]