Бесконечные циклы

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

Тренажер PHP

Бесконечный цикл — это цикл, условие выхода из которого никогда не выполняется. Это одна из самых частых ошибок начинающих программистов, которая приводит к 'зависанию' скрипта и исчерпанию ресурсов сервера. Однако, иногда бесконечные циклы создаются намеренно, например, для программ, которые должны работать постоянно (сервисы, демоны), с выходом по специальному условию внутри цикла. В этом тренажере мы научимся распознавать случайные бесконечные циклы, понимать причины их возникновения и исправлять их. Также мы рассмотрим, как создавать управляемые бесконечные циклы с помощью оператора `break`. Этот урок научит вас 'ловить' и 'обезвреживать' эти коварные конструкции.

Список тем

Управляемый бесконечный цикл

id: 38954_task_inf_1

Иногда бесконечный цикл — это не ошибка, а инструмент. Конструкция `while(true)` создает цикл, который будет работать вечно. Чтобы управлять им, нужен выход по условию. Вставьте оператор, который прервет цикл, когда счетчик `$i` станет больше 2.

Заполните пропуски
<?php

$i = 0;
while (true) {
    echo "Итерация $i... ";
    if ($i > 2) {
        // Прерываем цикл здесь
        input1S;
    }
    $i++;
}

?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Ошибка в счетчике обратного отсчета

id: 38954_task_inf_2

Этот цикл `for` задумывался для обратного отсчета от 3 до 1. Но из-за ошибки в выражении инкремента он будет выполняться вечно (или пока скрипт не "упадет"). Найдите и исправьте ошибку.

Найдите ошибку и исправьте
<?php
// Обратный отсчет...
for ($i = 3; $i > 0; $i++) {
    echo "$i... ";
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Забытый инкремент в `while`

id: 38954_task_inf_3

Самая частая причина бесконечного цикла `while` — забыть изменить переменную, от которой зависит условие. В этом коде счетчик `$i` никогда не меняется, и условие `$i < 3` всегда истинно. Добавьте недостающую строку кода, чтобы исправить это.

Найдите ошибку и исправьте
<?php
$i = 0;
while ($i < 3) {
    echo "Значение: $i\n";
    
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Какой из этих циклов бесконечен?

id: 38954_task_inf_4

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

Выберите правильный вариант ответа
Цикл A:
for ($i = 0; $i < 5; $i++) { /* ... */ }

Цикл Б:
for ($i = 1; $i > 0; $i++) { /* ... */ }

Цикл В:
while(true) { if(rand(0,1)) break; }
Сообщения
Проверить
Показать подсказку
🚀 Визуализатор кода
0 / 0
Скорость:
Режим:
💡 Что происходит?
Загрузите пример для начала...
🤔
Проверка знаний
История шагов
Готов
НайтиКурс.Ру