В программировании есть возможность выполнять определенный участок кода несколько раз. Это необходимо при отображении одинаковых (или похожих) элементов кода, при поиске элементов, значений, сортировке и т.д.
В этом уроке мы подробно разберем следующие темы:
-
Структура (синтаксис):
-
Прерывание (break)
-
Блок-схема цикла с предусловием
-
Блок-схема цикла с постусловием
Прежде, чем начать урок, хотим отметить, что все предыдущие уроки по программированию тесно связаны с этой темой. Поэтому если Вы еще не знаете, как работают условия, рекомендуем ознакомиться с предыдущим материалом.
PHP - цикл for
Общая структура выглядит следующим образом:
...
for ($i=0;$i<=10;$i++){
echo $i;
}
...
Первый параметр в круглых скобках отвечает за начальное значение переменной. Можно через запятую указать несколько переменных:
...
for ($i=0,$k=5;$i<=10;$i++){
echo $i.'
';
}
...
Второй параметр определяет при каком условии цикл будет выполняться.
В нашем случае вывод переменной $i происходит до тех пор, пока переменная $i меньше, либо равна 0. После этого цикл завершится, а в браузере появится список чисел от 0 до 10.
Третий позволяет запустить действие после выполнения операций, заданных в теле цикла. В нашем случае переменная $i увеличивается на 1.
Однако, все эти параметры не являются обязательными. В любое время их можно опустить:
...
$i=0;
for (;;){
$i++;
echo $i.'
';
}
...
В цикле нет условий, но выполняться он будет, неизвестно, до какого времени или условия. Такой цикл называется бесконечным.
При необходимости, счетчик может не только увеличиваться, но и уменьшаться в обратном порядке:
...
for ($i=9;$i>=0;$i--){
echo $i.'
';
}
...
Если необходимо увеличивать счетчик через произвольное значение (например, 10), можно воспользоваться следующим вариантом:
...
for ($i=0;$i<=100;$i+=10){
echo $i.'
';
}
...
Как видим, действия $i=$i+10 и $i+=10 выполняются абсолютно одинаково. Они отличаются от действия $i++ лишь тем, что оно позволяет увеличивать значение переменной только на 1.
PHP - цикл while
Общая структура выглядит следующим образом:
...
$a=0;
$b=3;
while ($a<$b){
$a=$a+1;
echo $a;
}
...
Этот цикл состоит из условия, заключенного в круглые скобки. Он будет выполняться при истинности этого условия. Читается обычно следующим образом: "Пока переменная a меньше переменной b, выполнить..."
Еще этот while называют циклом с предусловием. Разница видна в следующем примере:
...
$a=3;
$b=0;
while ($a<$b){
$a=$a+1;
echo $a;
}
...
Так как условие не является истинным (3 не меньше, чем ноль), то цикл ни разу не выполнится.
PHP - цикл do-while
Структура очень похожа на предыдущую (while), с одним лишь отличием - в начале ставится ключевое слово do, а while указывается в самом конце:
...
$a=0;
$b=3;
do{
$a=$a+1;
echo $a;
}while ($a<$b);
...
Его довольно часто называют циклом с постусловием, так как он обязательно хотя бы один раз выполняется:
...
$a=3;
$b=0;
do{
$a=$a+1;
echo $a;
}while ($a<$b);
...
В этом примере вначале отображается цифра 4, а потом происходит сравнение чисел (4 и 0), и цикл завершается.
break (прерывание цикла)
В случае, если оператор повтора необходимо прервать (остановить) в определенном месте, используется функция break:
...
for ($i=0;$i<10;$i++){
if ($i==5){
echo $i;
break;
}
}
...
Таким образом в браузере мы увидим только цифру 5. После этого программа выйдет из цикла, и он сразу завершится.
Но что, если поменять строку echo и break местами?
...
for ($i=0;$i<10;$i++){
if ($i==5){
break;
echo $i;
}
}
...
В этом случае в браузере ничего не отобразится, так как сначала цикл завершится, а вывести ничего не успеет.
При использовании нескольких (вложенных) циклов, функция break завершает только один цикл, внутри которого она и находится:
...
for ($i1=0;$i1<10;$i1++){
for ($i2=$i1;$i2<10;$i2++){
echo $i2;
if ($i2==5){
break;
}
}
}
...
Break действует на все виды циклов.
Блок схема цикла с предусловием (while)
Так как цикл имеет условие, логично обозначить его в виде ромба, а тело цикла - в виде прямоугольника. Для обозначения повтора, прямоугольник обратно соединяется с ромбом. Если выражение условия становится ложным - цикл завершается.
Блок схема цикла с постусловием (do-while)
Данная схема очень похожа на предыдущую с одним нюансом - сначала выполняется код в теле цикла (обозначен прямоугольником). Затем проверяется условие. Если оно истинно - всё повторяется, если нет - завершается.
Задания:
- Найти квадрат нечетных чисел.
- Найти сумму делителей числа a.
- Проверить, является ли число совершенным (равным сумме всех его делителей).
- Выяснить, является ли введенное число неполным (делится только на себя и на единицу)
Ответы к заданиям предыдущей статьи (про условный оператор if):
- Дан номер месяца (1-12). Отобразить в виде слова этот месяц. Если такого месяца не существует - отобразить ошибку.
Эта задача имеет несколько способов решения. Через условия делается очень просто: проверяем, ввел ли пользователь цифру 1. Если да (условие истинно) - выводим январь. Если нет - проверяем, ввел ли пользователь цифру 2 и т.д. В конце, если пользователь ничего не ввел - выдаем ошибку.
Пусть за введенное пользователем число отвечает переменная $n. Тогда программа будет выглядеть следующим образом:
$n=4;
if ($n==1){
echo 'January';
} else
if ($n==2){
echo 'February';
} else
if ($n==3){
echo 'March';
} else
if ($n==4){
echo 'April';
} else
if ($n==5){
echo 'May';
} else
if ($n==6){
echo 'June';
} else
if ($n==7){
echo 'July';
} else
if ($n==8){
echo 'August';
} else
if ($n==9){
echo 'September';
} else
if ($n==10){
echo 'October';
} else
if ($n==11){
echo 'November';
} else
if ($n==12){
echo 'December';
} else {
echo 'Error: number month not found!';
}
?>
- Найдите среднее арифметическое, состоящее из 5 чисел.
Так как даны 5 чисел, значит понадобятся 5 переменных. Находим в Интернете формулу для вычисления среднего арифметического значения (для его нахождения необходимо сложить все числа и разделить на их количество). Получилась следующая простая программа:
$a=4;
$b=2;
$c=5;
$d=4;
$e=3;
echo (($a+$b+$c+$d+$e)/5);
?>
Опубликовано: 2018-10-30 15:08:28