Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Базовый синтаксис языка PHP – написать операторы для реализации цикла for.




Ответы для подготовки к 1 модулю по дисциплине

«Технология распределенных систем и параллельных вычислений»

 

Технология распределенных Web-ориентированных систем,
программирование на PHP.

 

  1. Базовый синтаксис языка PHP – какие арифметические операторы используются в скриптах.

 

Арифметические операции

Пример Название Результат

-$a Отрицание Смена знака $a.

$a + $b Сложение Сумма $a и $b.

$a - $b Вычитание Разность $a и $b.

$a * $b Умножение Произведение $a и $b.

$a / $b Деление Частное от деления $a на $b.

$a % $b Деление по модулю Целочисленный остаток от деления $a на $b.

 

К простейшим арифметическим операторам можно отнести:
+ сложение
- вычитание
/ деление
* умножение
% остаток от деления.

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

Все как и в большинстве прочих языков (кто с ними знаком). Итак:

оператор сравнения пояснения
= = равно
   
!= не равно
   
= = = равно и совпадает по типу
   
> больше
   
>= больше или рано
   
< меньше
   
<= меньше или рано
   

Отдельно и подробнее необходимо рассмотреть дополнительные операторы присваивания. Они позволяют сэкономить пару не лишних байт при записи скрипта:

 

оператор присваивания Пример использования Какую запись заменяет
+= $a+=1 $a=$a+1
-= $a-=1 $a=$a-1
*= $a*=1 $a=$a*1
/= $a/=1 $a=$a/1
%= $a%=1 $a=$a%1
.= $a.="слово" $a=$a."слово"

 

 

2. Базовый синтаксис языка PHP – какие логические операторы используются в скриптах. Как написать условие, проверяющее, что переменная $x больше 10, но меньше или равна 20.

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

Пример Название Результат

$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.

== - это равно

=== - это идентичность (совпадают и значения и т.п.)

!(<>) или так или так – это не

&&(and) – это и

||(or) – это или

!= - это не равно

Операции and и or имеют меньший приоритет, чем && и ||.

$x>10<=20;

3. Базовый синтаксис языка PHP – какие логические операторы используются в скриптах. Как написать условие, проверяющее, что переменная $f равна переменной $x.

Аналогично $f==$x

4. Базовый синтаксис языка PHP – что означает следующая запись и какой ответ будет напечатан на странице:
$a=5; a*=3; $a %=4;
echo $a;

 

  1. Базовый синтаксис языка PHP – написать операторы для реализации ветвлений и оператора выбора (if и switch).

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

В самом простом случае синтаксис данного оператора if следующий:

if (выражение)
<оператор>

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

Таблица 2.1. Простые логические выражения

if(a < b) Истинно, если переменная a меньше переменной b и ложно в противном случае.
if(a > b) Истинно, если переменная a больше переменной b и ложно в противном случае.
if(a == b) Истинно, если переменная a равна переменной b и ложно в противном случае.
if(a <= b) Истинно, если переменная a меньше либо равна переменной b и ложно в противном случае.
if(a >= b) Истинно, если переменная a больше либо равна переменной b и ложно в противном случае.
if(a!= b) Истинно, если переменная a не равна переменной b и ложно в противном случае.
if(a) Истинно, если переменная a не равна нулю, и ложно в противном случае.

Приведем пример использования оператора ветвления if. Следующая программа позволяет определять знак введенной переменной.

Листинг 2.1. Первая программа определения знака введенного числа.

#include
int main()
{
float x;
printf(“Введите число: ”);
scanf(“%f”,&x);
if(x < 0)
printf(“Введенное число %f является отрицательным.\n”, x);
if(x >= 0)
printf(“Введенное число %f является неотрицательным.\n”, x);

return 0;
}

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

if (выражение)
<оператор1>
else
<оператор2>

которая интерпретируется таким образом. Если «выражение» истинно, то выполняется «оператор1», иначе выполняется «оператор2». Перепишем ранее приведенный пример определение знака числа с использованием данной конструкции.

Листинг 2.2. Вторая программа определения знака введенного числа.

#include
int main()
{
float x;
printf(“Введите число: ”);
scanf(“%f”,&x);
if(x < 0)
printf(“Введенное число %f является отрицательным.\n”, x);
else
printf(“Введенное число %f является неотрицательным.\n”, x);

return 0;
}

В представленных примерах после операторов if и else стоит всего одна функция printf(). В случаях, когда при выполнении какого-либо условия необходимо записать более одного оператора, необходимо использовать фигурные скобки, т.е. использовать конструкцию вида

if (выражение)
{
<список операторов>
}
else
{
<список операторов>
}

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

if(выражение1) <оператор1>
else if(выражение2) <опреатор2>
else <оператор3>

На листинге 2.3 представлена программа, реализующая последнюю конструкцию условных переходов.

Листинг 2.3. Третья программа определения знака введенного числа.

#include
int main()
{
float x;
printf(“Введите число: ”);
scanf(“%f”,&x);
if(x < 0)
printf(“Введенное число %f является отрицательным.\n”, x);
else if(x > 0)
printf(“Введенное число %f является положительным.\n”, x);
else
printf(“Введенное число %f является неотрицательным.\n”,x);

return 0;
}

До сих пор рассматривались простые условия типа x<0. Вместе с тем оператор if позволяет реализовывать более сложные условные переходы. В языке С++ имеются три логические операции:

&& - логическое И
|| - логическое ИЛИ
! – логическое НЕТ

На основе этих трех логических операций можно сформировать более сложные условия. Например, если имеются три переменные exp1, exp2 и exp3, то они могут составлять логические конструкции, представленные в табл. 2.2.

Таблица 2.2. Пример составных логических выражений

if(exp1 > exp2 && exp2 < exp3) Истинно, если значение переменной exp1 больше значения переменной exp2 и значение переменной exp2 меньше значения переменной exp3.
if(exp1 <= exp2 || exp1 >= exp3) Истинно, если значение переменной exp1 меньше либо равно значения переменной exp2 или значение переменной exp2 больше либо равно значения переменной exp3.
if(exp1 && exp2 &&!exp3) Истинно, если истинное значение exp1 и истинно значение exp2 и ложно значение exp3.
if(!exp1 ||!exp2 && exp3) Истинно, если ложно значение exp1 или ложно значение exp2 и истинно значение exp3.

Подобно операциям умножения и сложения в математике, логические операции И ИЛИ НЕТ, также имеют свои приоритеты. Самый высокий приоритет имеет операция НЕТ, т.е. такая операция выполняется в первую очередь. Более низкий приоритет у операции И, и наконец самый малый приоритет у операции ИЛИ. Данные приоритеты необходимо учитывать, при составлении сложных условий. Например, условие

if(4 < 6 && 5 > 6 || 5 < 6)

проверяется таким образом. Если 4 < 6 И 5 > 6 ИЛИ 5 < 6, то выполняется переход по условию. При необходимости изменения порядка проверки следует операции с более низким приоритетом поместить в круглые скобки, как показано ниже

if(4 < 6 && (5 > 6 || 5 < 6))

Условная операция if облегчает написание программ, в которых необходимо производить выбор между небольшим числом возможных вариантов. Однако иногда в программе необходимо осуществить выбор одного варианта из множества возможных. Формально для этого можно воспользоваться конструкцией if else if … else. Однако во многих случаях оказывается более удобным применять оператор switch языка С++. Синтаксис данного оператора следующий:

switch(переменная)
{
case константа1:
<операторы>
case константа2:
<операторы>
...
default:
<операторы>
}

Данный оператор последовательно проверяет на равенство переменной константам, стоящим после ключевого слова case. Если ни одна из констант не равна значению переменно, то выполняются операторы, находящиеся после слова default. Оператор switch имеет следующую особенность. Допустим, значение переменной равно значению константы1 и выполняются операторы, стоящие после первого ключевого слова case. После этого выполнение программы продолжится проверкой переменной на равенство константы2, что часто приводит к неоправданным затратам ресурсов ЭВМ. Во избежание такой ситуации следует использовать оператор break для перехода программы к следующему оператору после switch.

На листинге 2.4 представлен пример программирования условного оператора switch.

Листинг 2.4. Пример использования оператора switch.

#include
int main()
{
int x;
printf(“Введите число: ”);
scanf(“%d”,&x);
switch(x)
{
case 1: printf(“Введено число 1\n”);break;
case 2: printf(“Введено число 2\n”); break;
default: printf(“Введено другое число\n”);
}
char ch;
printf(“Введите символ: ”);
scanf(“%с”,&сh);
switch(ch)
{
case ‘a’: printf(“Введен символ а\n”); break;
case ‘b’: printf(“Введен символ b\n”); break;
default: printf(“Введен другой символ\n”);
}
return 0;
}

Данный пример демонстрирует два разных варианта использования оператора switch. В первом случае выполняется анализ введенной цифры, во втором – анализ введенного символа. Следует отметить, что данный оператор может производить выбор только на основании равенства своего аргумента одному из перечисленных значений case, т.е. проверка выражений типа x<0 в данном случае невозможна.

6. Базовый синтаксис языка PHP – написать операторы для реализации циклов while и do… while.

Оператор цикла while

Довольно простой оператор цикла, синтаксис которого очень похож на синтаксис в других языка программирования:

<?phpwhile (условие) //может быть сложное логическое условие { операторы;}?>

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

Примечание: условие может состоять из очень многих выражений с использованием алгебры логики &&, ||,! и т.д.

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

Приведу простой пример на использование while:

<?php$i=0;while ($i<5) //пока i меньше 5 { echo "i =".$i."<br/>"; $i++;}?>

Выше описанный пример выведет следующий результат:

i=0
i =1
i =2
i =3
i =4

Обратите внимание, что $i=5 не будет выведено, т.к. i увеличивается в самом конце цикла и поэтому как только он достигнет 5, то условие входа в цикл просто не выполнится.

 

Оператор break

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

<?php$i=0;while (true) //условие всегда истинно { echo "i =".$i."<br/>"; $i++; if($i>=5) break;}?>

Результат будет такой же, как и в предыдущем примере.

 

Оператор continue

Оператор continue; прекращает текущую итерацию цикла, но не прекращает цикл полностью. Например:

<?php$i=0;while (true) //условие всегда истинно { echo "i =".$i."<br/>"; $i++; if($i>=5) break; else continue;}?>

Результат этого примера будет таким же, как и у предыдущих примеров.

Как показывает практика, операторы continue; и break; зачастую помогают реализовать сложные циклы.

Приведу ещё пример по использованию цикла while:

<?php$i=0;while ($i++<5) //постпрефиксная форма { echo "i =".$i."<br/>";} //результаты этих двух while будут разными//из-за постпрефиксной и префиксной формы $i=0;while (++$i<5) //префиксная форма { echo "i =".$i."<br/>";}?>

 

Оператор цикла do...while

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

<?phpdo{ операторы;} while (условие);?>

Рассмотрим пример:

<?php$i=0;do{ echo "i =".$i."<br/>"; $i++;} while($i<5);?>

Его результат аналогичен первым рассмотренным примерам.

Стоит отметить, что операторы continue; и break; также могут применяться в таких циклах.

Базовый синтаксис языка PHP – написать операторы для реализации цикла for.

Оператор цикла for

Синтаксис оператора for следующий:

<?phpfor(start; usloviya; shag){ операторы;}?>

В start происходит начальная инициализация переменных. В usloviya должны стоять одно или несколько условий завершения цикла. В shag заносятся операторы, которые выполняются в конце каждой итерации. Например:

<?phpfor ($i=0; $i<5; $i++){ echo "i =".$i."<br/>";}?>

Результат выполнения этого цикла будет таким же как и у предыдущих примеров.

Большим плюсом использования for, что тело цикла может отсутствовать, а все необходимые операции выполнены в разделе shag. Для наглядности приведем пример:

<?phpfor ($i=0; $i<5; print "i =".$i."<br/>", $i++);?>

Замечание: в shag недопустимо использование функции echo.

Шаг цикла и условия могут быть самыми разнообразными. Например, можно написать не i++, а i+=5 (инкремент на 5).

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

<?phpfor (;;){ операторы;} for (;uslovie;){ операторы;} for (;;shag){ операторы;}?>

for допускает использование continue; и break;.

8. Операции инкремента и декремента. Дана переменна $x=6; Что будет напечатано на странице после выполнения следующих операторов
$x++;
echo $++x;

PHP поддерживает префиксные и постфиксные операторы инкремента и декремента в стиле C.

Замечание: Операторы инкремента/декремента не влияют на булевы значения. Декремент NULL также не даст никакого эффекта, однако инкремент даст значение 1.

Операторы инкремента и декремента
Пример Название Действие
++$a Префиксный инкремент Увеличивает $a на единицу, затем возвращает значение $a.
$a++ Постфиксный инкремент Возвращает значение $a, затем увеличивает $a на единицу.
--$a Префиксный декремент Уменьшает $a на единицу, затем возвращает значение $a.
$a-- Постфиксный декремент Возвращает значение $a, затем уменьшает $a на единицу.

Приведем пример простого скрипта:

<?php
echo "<h3>Постфиксный инкремент</h3>";
$a = 5;
echo "Должно быть 5: ". $a++. "<br />\n";
echo "Должно быть 6: ". $a. "<br />\n";

echo "<h3>Префиксный инкремент</h3>";
$a = 5;
echo "Должно быть 6: ". ++$a. "<br />\n";
echo "Должно быть 6: ". $a. "<br />\n";

echo "<h3>Постфиксный декремент</h3>";
$a = 5;
echo "Должно быть 5: ". $a--. "<br />\n";
echo "Должно быть 4: ". $a. "<br />\n";

echo "<h3>Префиксный декремент</h3>";
$a = 5;
echo "Должно быть 4: ". --$a. "<br />\n";
echo "Должно быть 4: ". $a. "<br />\n";
?>

PHP следует соглашениям Perl (в отличие от С) касательно выполнения арифметических операций с символьными переменными. Например, в PHP и Perl $a = 'Z'; $a++; присвоит $a значение 'AA', в то время как в C a = 'Z'; a++; присвоит a значение '[' (ASCII значение 'Z' равно 90, а ASCII значение '[' равно 91). Следует учесть, что к символьным переменным можно применять операцию инкремента, в то время как операцию декремента применять нельзя, кроме того, поддерживаются только ASCII символы (a-z и A-Z). Попытка инкремента/декремента других символьных переменных не будет иметь никакого эффекта, исходная строка останется неизменной.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...