Лабораторная работа №2 «Условные операторы в PHP» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа №2 «Условные операторы в PHP»



if...else

К операторам выбора относят: условный оператор (if...else) и переключатель (switch). Синтаксис условного оператора: if( condition ) statement 1 else statement 2

Условие condition может быть любым выражением. Если оно истинно, то выполняется оператор statement 1. В противном случае выполняется оператор statement 2. Допустима сокращенная форма записи условного оператора, в которой отсутствуют else и оператор statement 2.

В свою очередь, операторы statement 1 и statement 2 могут быть условными, что позволяет организовывать цепочки проверок любой глубины вложенности. И в этих цепочках каждый условный оператор может быть как полным, так и сокращенным. В связи с этим возможны ошибки неоднозначного сопоставления if и else.

Синтаксис языка предполагает, что при вложенных условных операторах каждое else соответствует ближайшему if. В качестве такого ошибочного примера можно привести следующую конструкцию [Подбельский В.В. Язык С++. М.:Финансы и статистика, 2001]:

<? $x = 1; $y = 1; if ($x == 1) if ($y == 1) echo ("x=1 and y=1"); else echo ("x!=1"); ?>

При х равном 1 и у равном 1 совершенно справедливо печатается фраза «х = 1 and у = 1». Однако фраза «х!= 1» может быть напечатана при х равном 1 и при у не равном 1, так как else соответствует ближайшему if. Внешний условный оператор, где проверяется $x == 1, является сокращенным и в качестве statement 1 включает полный условный оператор, где проверяется условие $у == 1. Т.е. проверка этого условия выполняется только при х равном 1. Простым правильным решением этой задачи является применение фигурных скобок, т.е. построение составного оператора, т.е. нам нужно фигурными скобками ограничить область действия внутреннего условного оператора, сделав его неполным. Тем самым внешний оператор превращается в полный условный:

<? $x = 1; $y = 1; if ($x= =1) { if ($y= =1) echo ("x=1 and y=1"); } else echo ("x!=1"); ?>

Заметим, что проверка дополнительных условий возможна при помощи оператора elseif. Оператор if может включать сколько угодно блоков elseif, но else в каждом if может быть только один. Как правило, в конструкциях if…elseif…else оператор else определяет, что нужно делать, если никакие другие условия не являются true. Однако, вообще говоря, использование оператора elseif довольно сильно ухудшает читабельность кода, и лучше в этом случае пользоваться переключателем (switch).

РНР предоставляет также возможность альтернативного синтаксиса условного оператора – без фигурных скобок, а с применением оператора endif. В следующем примере первая таблица помещается на страницу, если только $_GET['HDD'] равно "Maxtor", а вторая - если "Seagate". Наличие оператора endif в этом случае обязательно, так как фигурная скобка, обозначающая конец блока if, отсутствует:

<? if ($_GET['HDD'] = = "Maxtor"): ?> <table> <caption> Maxtor </caption></table> <? elseif ($_GET['HDD'] = = "Seagate"): ?> <table> <caption> Seagate </caption></table> <? endif; ?>

Результат выполнения скрипта:

  Результат выполнения скрипта Форма запроса
 

Значение переменной $_GET['HDD'] передается формой test.html скрипту test.php. Код формы test.html:

<form action = " http://localhost/PHP/test.php; " method=get> HDD: <input type="text" name="HDD"/><br> <input type="submit"/></form>

РНР также, как и С++, Java предоставляет возможность заменять блоки if…else условной операцией (в отличие от унарных и бинарных операций условная операция используется с тремя операндами). В изображении условной операции присутствуют два размещенных не подряд символа ‘?’ и ‘:’ и три операнда выражения:

выражение_1? выражение_2: выражение_3

Первым вычисляется значение выражения_1. Если оно истинно (т.е. не равно нулю), то вычисляется значениевыражения_2, которое и становится результатом. Если при вычислении значения выражения_1 получится ноль (ложь), то в качестве результата берется выражение_3. Классическим примером условной операции является выражение

x < 0? –x: x;

Это выражение возвращает абсолютное значение переменой x.
Т.е., к примеру, код

<? if ($_GET['HDD'] == "Maxtor") { $_GET['CDROM'] = "Teac"; } else { $_GET['CDROM'] = "Nec"; }?>

можно, используя условную операцию, заменить таким:

<? $_GET['CDROM'] = ($HDD == "Maxtor")? "Teac": "Nec"; ?>

Однако если Вы не хотите кому-то глубоко и надолго запудрить мозги, злоупотреблять такими записями вряд ли стоит, поскольку код становится, мягко говоря, нечитабельным. И вообще, чем проще – тем лучше.

Переключатель switch

Переключатель switch является наиболее удобным средством для организации мультиветвления. Синтаксис переключателя таков:

switch (expression) // переключающее выражение{ case value1: // константное выражение 1 statements; // блок операторов break; case value2: // константное выражение 2 statements; break; default:                    statements; }

Управляющая структура switch передает управление тому из помеченных case операторов, для которого значение константного выражения совпадает со значением переключающего выражения. Если значение переключающего выражения не совпадает ни с одним из константных выражений, то выполняется переход к оператору, помеченному меткой default. В каждом переключателе может быть не более одной метки default, однако она может отсутствовать вообще. Приведем пример программы с переключателем. В этой программе выводятся названия нечетных целых десятичных цифр от 1 до 9 не меньше заданной, в зависимости от числа, указанного в форме test.html. Форма test.html не отличается от той, что мы уже использовали:

<form action = "http://localhost/PHP/chapt2/switch.php" method="get"> number: <input type="text" name="number"/><br> <input type="submit"/></form> <?switch ($number) {case 1: echo ("one"); case 2: echo ("two"); case 3: echo ("free"); case 4: echo ("four"); case 5: echo ("five"); case 6: echo ("six"); case 7: echo ("seven"); case 8: echo ("eight"); case 9: echo ("nine"); break; default: echo ("This isn't number or number is > 9 or < 1"); }?>

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

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

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

Заметим также, что в PHP в качестве меток case могут использоваться не только литералы, но и сами метки могут быть переменными. В качестве меток case в PHP не могут выступать только массивы и объекты.

Задания к лабораторной работе №2:

1. Записать указанное действие в виде одного условного оператора:

2. Записать указанное действие в виде одного условного оператора: перераспределить значения переменных x и y так, чтобы в x оказалось большее из этих значений, а в y - меньшее;

3. Записать указанное действие в виде одного условного оператора: переменной a присвоить номер четверти плоскости, в которой находится точка с координатами x и y ().

4. Записать указанное действие в виде одного условного оператора: известно, что из четырех чисел , одно отлично от трех других, равных между собой; присвоить номер этого числа переменной n.

5. Записать последовательность операторов для решения указанной задачи: по номеру y (y>0) некоторого года определить номер его столетия (учесть, что, к примеру, началом 20 столетия был 1901, а не 1900).

6. Записать последовательность операторов для решения указанной задачи: считая, что стандартные функции sin и cos применимы только к аргументам из отрезка [0, p /2], вычислить y=sin x для произвольного числа x;

7. Если значение переменной w не равно 0 и при этом котангенс от w меньше 0.5, тогда поменять знак у w, а если значение w равно 0, тогда присвоить w значение 1.

8. Написать программу для решения указанной задачи: даны числа a, b, c (a 0). Найти вещественные корни уравнения ax2+bx4+c=0. Если корней нет, то сообщить об этом;

9. Если точка M(x,y) принадлежит внутренней области треугольника с вершинами A(a,0), B(0,b), O(0,0), то напечатать его площадь, в противном случае его периметр (a>0,b>0).

10. Если треугольник со сторонами a,b,c является равнобедренным, то найти его площадь, в противном случае найти его периметр.



Поделиться:


Последнее изменение этой страницы: 2020-11-28; просмотров: 195; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.5.183 (0.014 с.)