Php логические выражения. PHP: Логические операторы. Выбор по умолчанию

2. Видео

3. История создания

К началу 70-х годов, стало видно, что ЗПРК «Шилка» недостаточно хорош в качестве противовоздушной обороны ближнего радиуса действия. Также у него в силу неудовлетворительной мощности снарядов и малой эффективности дальности огня была недостаточная эффективность против самолетов-штурмовиков, обезопасенных броней, воздушных высокоскоростных целей и вертолетов, оснащенных управляемыми противотанковыми ракетами, способными уничтожать наземные цели с расстояния в несколько тысяч метров. Кроме этого радиолокатору комплекса было не под силу самостоятельно искать воздушные цели.

Сначала, в 1970 году, было получено задание о проектировке нового зенитного пушечного комплекса. Но после того, как в 1973 году была проведена научно-исследовательская работа «Запруда», в процессе которой рассматривались вопросы безопасности войск от ударных самолетов, стало понятно, что новую установку необходимо оборудовать еще и зенитными ракетами, в целях, чтобы она была более эффективна в отношении вертолетов.

К концу десятилетия работы по разработке были окончены. В 1980-81 годах по итогам испытаний, произошла доработка, и осенью 1982 года комплекс был взят на вооружение. К четырем ракетам, которыми он обладал сначала, впоследствии еще столько же прибавилось.

После 1995 года завершилась разработка модификации под обозначением «Тунгуска-М1». Она была принята на вооружение в 2003 году. Поставляется в зарубежные государства.

В целях обеспечения систем противовоздушной обороны ближнего радиуса боевых крупных кораблей и малых кораблей, с использованием некоторых узлов и вооружения, состоялась разработка комплекса «Кортик».

4. Состав

В состав «Тунгуски» входят:

  • Батарея, состоящая из шести зенитных самоходных установок 2С6, оснащенных зенитными автоматами ЗУР 9М311 и 2А38
  • 1Р10 — машина техобслуживания и ремонта, предназначенная для проведения ТО-1
  • 2В110 — машина техобслуживания, предназначенная для проведения ТО-2
  • 2Ф55 — машина техобслуживания, оснащенная частично одиночным и групповым ЗИП
  • 2Ф77 – ТЗМ, для перевозки 1 боекомплекта зенитно-управляемых ракет (по одной машине на одну установку) и 1,5 боекомплекта патронов
  • ЭСД2-12 — электростанция на дизельной основе, предназначенная для внешнего питания установок
  • 1РЛ912 — учебно-тренировочное средство, предназначенное для обучения командиров и операторов установок
  • 9Ф810 – тренажёр, предназначенный для обучения наводчиков установок;
  • 9М311УД — учебные ракеты, оснащенные бортовой аппаратурой, используемые в обучении наводчиков установок
  • 9М311ГМВ — учебные габаритно-массовые макеты ракет, используемые при отработке сдачи нормативов и навыков обращения экипажей установок
  • 9М311УР — учебный макет ракет в разрезе, используемый при изучении конструкции установок.

5. Устройство

Главные узлы «Тунгуски» это:

  • гусеничное самоходное легкобронированное шасси ГМ-5970.05
  • два зенитных двухствольных автомата 2А38 калибра 30 мм
  • восемь пусковых установок, оснащенных боекомплектом, состоящим из восьми управляемых зенитных ракет 9МЗ11
  • радиолокационная система, в состав которой входят радиолокационные станции сопровождения и обнаружения цели и наземный радиозапросчик.

Ракета 9М311 состоит из двух ступеней. Двигатель первой из них функционирует благодаря твердому топливу, обечайка же произведена из стеклопластика. У второй ступени двигателя нет, полет происходит по инерции, в хвосте находится газогенератор, благодаря которому появляются лучшие аэродинамические условия. Взрыватель является бесконтактным, его боевая часть оснащена поражающими стержневыми элементами.

6. Тактико-технические характеристики

6.1 Основные характеристики

  • Классификация: ЗПРК
  • Боевая масса, кг: 34000
  • Экипаж, чел.: 4

6.2 Размеры

  • Длина корпуса, см: 788
  • Ширина корпуса, см: 340
  • Высота, см: 402,1 — в боевом положении, 335,6 — в походном
  • База, см: 465
  • Колея, см: 326,5
  • Клиренс, см: 18 — 58

6.3 Бронирование

  • Тип брони: противопульная

6.4 Вооружение

  • Марка и калибр пушки: две 2А38, калибра 30 мм
  • Тип пушки: малокалиберные нарезные автоматические пушки
  • Боекомплект пушки: 1936
  • Дальность стрельбы, м: по наземным целям – до 2000, по воздушным – зенитная управляемая ракета (2500 – 8000); пушечная – 200 — 4000
  • Другое вооружение: восемь зенитных управляемых ракет 9М311.

6.5 Подвижность

  • Тип двигателя: В-46-2с1
  • Мощность двигателя, л. с.: 710
  • Скорость по шоссе, км/ч: 65
  • Скорость по пересечённой местности, км/ч: 10 по бездорожью, 40 по грунтовке
  • Запас хода по шоссе, км: 500
  • Тип подвески: гидропневматическая индивидуальная, оснащенная системой регулировки положения корпуса
  • Преодолеваемый подъём, град.: 35°
  • Преодолеваемая стенка, см: 100
  • Преодолеваемый ров, см: 200
  • Преодолеваемый брод, см: 100.

7. Применение

«Тунгуски» использовались в ходе Чеченских войн в качестве отличного средства огневой поддержки, но не всегда использовались правильно.

8. Модификации

  • 2К22М «Тунгуска-М». Главная цель модернизации заключалась в появлении возможности борьбы с множеством малоразмерных целей. Была установлена аппаратура для коммуникации с ППРУ-1 и пунктом управления 9С482М, из-за чего появилась система распределения целей между установками и значительно возросла боевая эффективность. Кроме этого произошла замена газотурбинного агрегата на новый, с вдвое большим ресурсом. Эта модификация была взята на вооружение в 1990 году.
  • 2К22М1 «Тунгуска-М1». В войне в Персидском заливе была применена новая стратегия. Сначала наносится активный удар беспилотной авиацией за пределами действия противовоздушной обороны в целях разведки ее радиолокационных средств, после этого происходило ее разрушение. Затем начинала действовать пилотируемая авиация. По итогам этого опыта в 1992 году начались работы по дальнейшему развитию комплекса. В результате чего ЗПРК был оборудован ИК пеленгатором ракеты, улучшенной системой измерения углов качки и аппаратурой реализации и приема автоматизированного целеуказания от командного батарейного пункта. Также поменялось шасси, на новое, ГМ-3975. У вычислителя увеличились память и быстродействие. Усовершенствованные ракеты получили обозначение 9М311-1М. Произошло увеличение зоны поражения по дальности до 10 километров и помехозащищенности. Трассер заменил импульсный и непрерывный источник света. Осенью 2003 года ЗПРК был взят на вооружение. В его составе оказались машины техобслуживания и ремонта 1Р10-1М1 и 2Ф55-1М1, машина технического обслуживания 2В110-1, мастерская технического обслуживания обслуживания МТО-АГЗ-М1, ЗСУ 2С6М1 и ТЗМ 2Ф77М.

9. Варианты ракет

  • 9М311 – основной
  • 9М311К (3М87) — морской вариант 9М311. предназначенный для комплекса «Кортик»
  • 9М311-1 – для продажи зарубежным государствам
  • 9М311М (3М88) – модифицированный. Усовершенствованы тактико-технические характеристики
  • 9М311-1М – модифицированный. Предназначенный для ракеты 2К22М «Тунгуска-М1».

Главное в действие данное оператора - это условие. if в переводе с английского значит если . Условие принимается в качестве аргумента (то что в скобках). В качестве условия может выступать логическое выражение или логическая переменная. Если проще, то смысл выражения будет такой:

If (условие){
условие выполнено, делаем так
}
else
{
условие не выполнено, делаем иначе
}
Надеюсь логика условной операции понятна. Теперь давайте рассмотрим пример.

$a = 5;
$b = 25;

// Теперь внимание! Условие: Если $b больше $a
// Знаки > и < , как и в математике, обозначают больше и меньше
if($b > $a)
{
// если условие выполнено, то выполняем это действие
echo "$b больше $a";
}
else
{
// если не выполнено, то это
echo "$a больше или равно $b";
}
?>
Демонстрация Скачать исходники
В итоге скрипт выведет 25 больше 5 . Пример довольно прост. Надеюсь всё понятно. Теперь предлагаю рассмотреть ситуацию сложнее, где нужно соблюсти несколько условий. Каждое новое условие будет содержать после основного условия if() - вспомогательное, которое записывается как else if() . В конце как обычно будет else .

Задача: В школе проводят тестирование. Скрипту нужно высчитать балл, зная условия получения каждой оценки и сам балл школьника. Давайте посмотрим как это записать, и не забудьте прочитать комментарий.

$test = 82; // допустим школьник написал тест на 82 балла

// первое условие напишем для пятёрки
if($test > 90)
{
// если условие соблюдено, то выполняем это действие.
echo "Оценка 5";
}
// Знак && обозначает "и, объединение", что условие соблюдено если и то, и то верно
// то есть балл меньше 91 и больше 80, тогда 4. Иначе условия считываются дальше
else if ($test < 91 && $test > 80)
{
echo "Оценка 4";
}
else if ($test < 81 && $test > 70)
{
echo "Оценка 3";
}
else
{
echo "Надо бы ещё раз написать тест...";
}
?>
Демонстрация Скачать исходники
Наш школьник, который успевает и отдохнуть, и написать нормально тест получает оценку 4 ! А принцип работы надеюсь понятен.

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

$age = 19; // переменная с возрастом

If ($age > 17){
echo "Всё! Мне можно делать всё что угодно! Мне уже $age!";
}
Вполне себе милый пример короткой записи условной операции. else писать не обязательно.

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

Принцип работы условной операции понятен. Но, как Вы понимаете, способов сравнить намного больше. Давайте посмотрим ниже на таблицу с операторами сравнения.

Пример Название Результат
$a == $b Равно True, если $a равно $b
$a === $b Идентично True, если $a равно $b и обе переменных принадлежат одному типу
$a != $b Не равно True, если $a не равно $b
$a === $b Не идентично True, если $a не равно $b и оба их типа не совпадают
$a > $b Больше чем True, если $a больше, чем $b
$a < $b Меньше чем True, если $a меньше, чем $b
$a >= $b Больше или равно True, если $a больше или равно $b
$a <= $b Меньше или равно True, если $a меньше или равно $b
Теперь рассмотрим операторы на примерах :

// вопреки привычке = значит присваивание значение переменной, а == как равно
if ($a == 5){
echo "$a равно 5"; // выведет "5 равно 5"
} else {
echo "$a не равно 5";
}

If ($a != 6){
echo "$a не равно 6"; // выведет "5 не равно 6". Нужно в случае отрицания
} else {
echo "$a каким-то образом равно 6";
}

// с больше и меньше думаю всё понятно. Поэтому пример сложнее
if ($a <= 6){
echo "$a меньше или равно 6"; // выведет "5 меньше или равно 6"
} else {
echo "$a больше 6";
}

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

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

Пример Название Результат
$a and $b Логическое "и" TRUE если и $a, и $b TRUE.
$a or $b Логическое "или" TRUE если или $a, или $b TRUE.
$a xor $b Исключающее "или" TRUE если $a, или $b TRUE, но не оба.
! $a Отрицание TRUE если $a не TRUE.
$a && $b Логическое "и" TRUE если и $a, и $b TRUE.
$a || $b Логическое "или" TRUE если или $a, или $b TRUE.
Уже обратили внимание, что для операций и и или есть дополнительные операторы? Так сделано для того, чтобы расставить приоритеты в сложных операциях сравнения. В таблице логические операторы приведены в порядке приоритета: от меньшего к большему, то есть, например, || имеет больший приоритет, чем or.

Переходим к примерам

$a = 5;
$b = 6;
$c = 7;

// условие: Если 5 не равно 6 (ВЕРНО) И 6 не равно 7 (ВЕРНО)
if ($a < 6 && $b != $c){
echo "Действительно так!"; // выведет "Действительно так!" т.к. ОБА условия ВЕРНЫ
} else {
echo "Одно из условий не верно";
}

// условие: Если 6 не равно 6 (НЕВЕРНО) ИЛИ 6 не равно 7 (ВЕРНО)
if ($b != 6 || $b != $c){
echo "Всё так!"; // выведет "Всё так!", т.к. хотя бы ОДНО из условий ВЕРНО
} else {
echo "Оба условия не верны";
}

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

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

Суть кода: (условие) ? значение a если true: значение a если false

Таким образом, мы сокращаем запись оператора if. Однако, данная операция действительна только с присваиванием значений переменной. Теперь давайте рассмотрим готовый пример.

// Пример использования тернарного оператора
$settings = (empty($_POST["settings"])) ? "По умолчанию" : $_POST["settings"];

// Приведенный выше код аналогичен следующему блоку с использованием if/else
if (empty($_POST["settings"])) {
$settings = "По умолчанию"; // Если ничего не передано, то оставляем "По умолчанию"
} else {
$settings = $_POST["settings"]; // Если передано, то $settings присваивается переданное значение.
}
?>
Прочитайте комментарии к коду и всё должно быть понятно.

Спасибо за внимание!


PHP поддерживает стандартные логические операторы AND и && , OR и || , ! (не) и XOR . Логические операторы позволяют сравнивать результаты работы двух операндов (значения или выражения) с целью определения факта возвращения одним из них или обоими значения true или false и выбора соответствующего продолжения выполнения сценария в зависимости от возвращенного значения. Как и операторы сравнения, логические операторы возвращают одно логическое значение - true либо false , в зависимости от значений находящихся по обе стороны от оператора.

Логическое ИЛИ (OR и ||)

Оператор логическое ИЛИ обозначается как OR или || . Он выполняет операцию «логическое ИЛИ» над двумя операндами. Если один или оба операнда имеют истинное значение, он возвращает true . Если оба операнда имеют ложные значения, он возвращает false . У вас вероятно возник вопрос, зачем же сделали два варианта одного оператора? Смысл двух разных вариантов оператора «логическое ИЛИ» в том, что они работают с различными приоритетами.

Сначала разберем как работает оператор || . И так, если один или оба его операнда имеют истинное значение, он возвращает true . Если оба операнда возвращают ложные значения, он вернет false .

Оператор OR работает также как и оператор || за одним исключением, если оператор OR используется с присваиванием, то сначала он вычислит и вернет значение левого операнда, в остальном он работает точно также как и оператор || , т.е. если один или оба его операнда имеют истинное значение, он возвращает true . Если оба операнда возвращают ложные значения, он вернёт false .

Чтобы стало понятнее, как они работают, приведем следующий пример:

1 // Сначала переменной присваивается значение false, а затем вычисляется второй операнд // Действие приоритета: ($var2 = false) or true $var2 = false or true; echo $var2; // false не выводится // ($var3 = 0) or 3 $var3 = 0 or 3; echo "
$var3"; // => 0 ?>

Любые операторы сравнения и логические можно комбинировать в более сложные конструкции:

Стоит упомянуть еще об одном важном моменте, касательно обоих операторов OR и || . Оператор «логическое ИЛИ» начинает свои вычисления со своего левого операнда, если он возвращает true , то правый операнд вычисляться не будет. Это позволяет экономить время исполнения, но нужно внимательно следить за тем, чтобы код, от которого может зависеть корректная работа программы, не был помещен в правый операнд.

Логическое И (AND и &&)

Оператор логическое И обозначается как AND или && . Он выполняет операцию «логическое И» над двумя операндами. Он возвращает true тогда и только тогда, когда оба операнда имеют значение true . Если один или оба операнда возвращают значение false , оператор возвращает false . Смысл двух разных вариантов записи оператора «логическое И» такой же как и у двух предыдущих операторов, а именно в том, что они работают с различными приоритетами.

Сначала разберем как работает оператор && . И так, если оба его операнда имеют истинное значение, он возвращает true . Если хотя бы один или оба его операнда возвращают значение false , он тоже вернет false .

Оператор AND работает также как и оператор && за одним исключением, если оператор AND используется с присваиванием, то сначала он вычислит и вернёт значение левого операнда, в остальном он работает точно также как и оператор && . Если хотя бы один из его операндов возвращает значение false , он тоже вернет false , также если оба операнда возвращают ложные значения, он возвращает false .

Для понимания рассмотрим теперь, как это работает на практике:

$bar3"; // => 9 ?>

Исключающее ИЛИ (XOR)

Оператор исключающее ИЛИ обозначается как XOR . Он возвращает значение true , если один и только один из операндов имеет значение true . Если оба операнда имеют значение true , оператор вернет значение false .

Так как приоритет оператора XOR такой же как и у операторов AND и OR (ниже чем у оператора присваивания), и он используется в выражении с присваиванием, то сначала он вычисляет и возвращает значение левого операнда.

6 $a1 = 19 xor 5 > 6; var_dump($a1); // => 19 var_dump(true xor true); // false var_dump((2 < 3) xor (5 != 5)); // true ?>

Логическое НЕ (!)

Оператор логическое НЕ , его также называют отрицание обозначается знаком! . Он является унарным оператором, помещаемым перед одиночным операндом. Оператор «логическое НЕ» используется для инверсии логического значения своего операнда и всегда возвращает true или false .

Если потребуется инвертировать значение выражения, например a && b , необходимо будет использовать круглые скобки: !(a && b) . Также с помощью оператора! можно преобразовать любое значение x в его логический эквивалент, дважды применив оператор: !!x .

На уроке будут рассмотрены условные операторы php: оператор if и оператор переключения switch

Условные операторы php представлены тремя основными конструкциями:

  • оператор условия if ,
  • оператор переключения switch
  • и тернарный оператор .

Рассмотрим подробнее каждый из них.

PHP оператор if

Рис 3.1. Условный оператор IF, укороченный вариант


Рис. 3.2. Синтаксис условного оператора IF ELSE


Рис. 3.3. Полный синтаксис условного оператора IF elseif

Подытожим:

Полный синтаксис:

if (условие) { // если условие истинно operator1; operator2; } elseif(условие) { operator1; ... } else { // если условие ложно operator1; operator2; }

  • Укороченный синтаксис может не содержать части конструкции с else и не содержать дополнительного условия elseif
  • Вместо служебного слова elseif можно писать else if (отдельно)
  • В одной конструкции if может быть несколько elseif . Будет выполнено первое встретившееся выражение elseif равное TRUE .
  • В случае наличия альтернативного условия elseif конструкция else должна идти последней в синтаксисе.

В условном операторе может использоваться двоеточие: вместо фигурных скобок. В таком случае заканчивается оператор служебным словом endif

Рис. 3.4. Условный оператор If и Endif в php

Пример:

if($x > $y): echo $x." больше, чем ".$y; elseif($x == $y): // при использовании ":" нельзя писать раздельно else if echo $x." равно ".$y; else: echo $x." не > и не = ".$y; endif;

Важно: При использовании в конструкции двоеточия вместо фигурных скобок elseif нельзя писать в два слова!

Логические операции в условии

В условии if в скобках могут присутствовать следующие операции:

Пример: проверить значение числовой переменной: если оно меньше либо равно 10, — выдавать сообщение «число меньше или равно 10» , в обратном случае выдавать сообщение «число больше 10»


Решение:

$number=15; if ($number <=10) { echo "число меньше или равно 10"; } else { echo "число больше 10"; }

Блоки php кода можно разрывать, рассмотрим пример:

Пример: Выводить на экран html-код «а равно 4» , если переменная $a действительно равна 4


1 Решение:
1 2 3 4

2 Решение:

1 2 3 A равно 4

A равно 4

Задание php 3_1: Выводить перевод цветов с английского языка на русский, проверяя значение переменной (в которой присвоен цвет: $a="blue")


Задание php 3_2: Найти максимальное из трех чисел

Операции сравнения и правило лжи

В конструкции if в скобках должно находиться логическое выражение или переменная, которые рассматриваются с точки зрения алгебры логики, возвращающая значения либо true либо false

Т.е. в качестве условия может выступать единственная переменная. Рассмотрим пример:

1 2 3 4 $a = 1 ; if ($a ) { echo $a ; }

$a=1; if ($a) { echo $a; }

В примере транслятор языка php будет рассматривать переменную в скобках на правило лжи:

Правило ЛЖИ или что считается ложным:

  • логическое False
  • целый ноль (0 )
  • действительный ноль (0.0 )
  • пустая строка и строка «0»
  • массив без элементов
  • объект без переменных
  • специальный тип NULL

Таким образом, в рассмотренном примере переменная $a равна единице, соответственно условие будет истинным и оператор echo $a; выведет на экран значение переменной.

Задание php 3_3: дана переменная а со строковым значением. Если а равна имени, то выводить «Привет, имя!» , если а равна пустому значению, то выводить «Привет, незнакомец!»

Логические конструкции И ИЛИ и НЕ в условном операторе

  1. Иногда необходимо предусмотреть выполнение одновременно нескольких условий. Тогда условия соединяются логическим оператором И — && :
  2. $a=1; if ($a>0 || $a>1) { echo "a > 0 или a > 1"; }

  3. Для указания ложности условия используется логический оператор НЕ — ! :
  4. 1 2 3 4 $a = 1 ; if (! ($a < 0 ) ) { echo "a не < 0" ; }

    $a=1; if (!($a<0)) { echo "a не < 0"; }

Оператор Switch PHP

Оператор switch или «переключатель» заменяет несколько подряд идущих конструкций if . При этом он сравнивает одну переменную с множеством значений. Таким образом, это наиболее удобное средство для организации мультиветвления .

Синтаксис:

1 2 3 4 5 6 7 8 9 10 switch ($переменная ) { case "значение1" : оператор1 ; break ; case "значение2" : оператор2 ; break ; case "значение3" : оператор3 ; break ; [ default : оператор4 ; break ; ] }

switch($переменная){ case "значение1": оператор1; break; case "значение2": оператор2; break; case "значение3": оператор3; break; }

  • Оператор может проверять как строковые значения (тогда они указываются в кавычках), так и числовые (без кавычек).
  • Оператор break в конструкции обязателен. Он осуществляет выход из конструкции при истинном условии и выполнении соответствующего условию оператора. Без break будут выполняться операторы всех case независимо от их истинности.

Рис. 3.5. Условный оператор Switch


Пример: задан массив с полными мужскими именами. Проверять первый элемент массива и в зависимости от имени, выдавать приветствие с коротким именем.


Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $names = array ("Иван" , "Петр" , "Семен" ) ; switch ($names [ 0 ] ) { case "Петр" : echo "Привет, Петя!" ; break ; case "Иван" : echo "Привет, Ваня!" ; break ; case "Семен" : echo "Привет, Ваня!" ; break ; default : echo "Привет, $names !" ; break ; }

$names=array("Иван","Петр","Семен"); switch($names){ case "Петр": echo "Привет, Петя!"; break; case "Иван": echo "Привет, Ваня!"; break; case "Семен": echo "Привет, Ваня!"; break; default: echo "Привет, $names!"; break; }

Задание php 3_4:

  • Создайте переменную $day и присвойте ей произвольное числовое значение
  • С помощью конструкции switch выведите фразу «Это рабочий день» , если значение переменной $day попадает в диапазон чисел от 1 до 5 (включительно)
  • Выведите фразу «Это выходной день» , если значение переменной $day равно числам 6 или 7
  • Выведите фразу «Неизвестный день» , если значение переменной $day не попадает в диапазон чисел от 1 до 7(включительно)

Дополните код:

1 2 3 4 5 6 7 8 9 10 11 12 ... switch (... ) { case 1 : case 2 : ... echo "Это рабочий день" ; break ; case 6 : ... default : ... }

Switch(...){ case 1: case 2: ... echo "Это рабочий день"; break; case 6: ... default: ... }

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

Тернарный оператор , т.е. с тремя операндами, имеет достаточно простой синтаксис, в котором слева от знака? записывается условие, а справа — два оператора разделенные знаком: , слева от знака выполняется оператор при истинности условия, а справа от знака: выполняется оператор при ложном условии.

условие? оператор1 : оператор2 ;


Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: