7. Циклы

Вы уже умеете составлять как простые, так и составные конструкции условных операторов.
Пришло время познакомиться с новым понятием, таким как цикл.
Цикл — это часть кода, которая будет выполняться много раз до тех пор, пока некоторое условие не перестанет быть истинным.
Циклы могут использоваться в процессе чтения файла, проверке некоторых специфических действий и т.д.
Циклы делятся на 3 вида, каждый из которых мы рассмотрим в этой главе.

Цикл while

Рассмотрим следующий пример.
while(key_pressed(KEY_ESCAPE)==false)
{
wait(5);
}
Вышеуказанный пример может показаться вам сложным, но не волнуйтесь, мы разберём его подробно.
В первой строке мы имеем ключевое слово while, которое означает начало цикла.
Затем в круглых скобках указывается условие, которое будет проверяться при каждой итерации (то есть повторе) цикла.
В нашем случае мы используем функцию key_pressed() для проверки, была ли нажата клавиша.
Цикл будет выполняться до тех пор, пока не будет нажата клавиша, указанная в условии.
Как только условие станет ложным, а это произойдёт, когда key_pressed() вернёт true, программа выйдет из цикла и продолжит своё выполнение.
Левая и правая фигурные скобки определяют тело цикла.
Функция внутри тела цикла означает паузу в 5 миллисекунд между каждой итерацией.
Представим, что перед вами стоит задача выполнить некое действие тысячу раз.
Взгляните на следующий пример цикла, который сделает тоже самое в разы быстрее.
int x = 0;

while(x<1000)
{
x++;
}
Сначала мы создаём целочисленную переменную x и присваиваем ей значение 0.
Затем мы объявляем цикл и в круглых скобках указываем условие x<1000.
В теле цикла мы прибавляем к x 1.
Цикл будет выполняться до тех пор, пока x не станет равным 1000.
Посмотрите на ещё один пример, в котором показано, как с помощью цикла будут выведены числа от 0 до 10 на экран.
int x = 0;
string numbers = "";

while(x<=10)
{
numbers += x;
if(x<10)
{
numbers += " ";
}
x++;
}
alert("Печать чисел от 0 до 10", numbers);
Цикл будет выполняться до тех пор, пока x не будет равен 11.

Цикл do while

В прошлой части главы о циклах вы изучили цикл while.
Теперь мы можем рассмотреть практически похожий цикл doo while.
Давайте рассмотрим пример, в котором программа ожидает нажатие клавиши escape.
do
{
wait(5);
}
while(!key_pressed(KEY_ESCAPE));
Первая строка сообщает о начале цикла.
Далее идёт тело цикла.
А после правой фигурной скобки располагается условие в круглых скобках, которое будет проверяться после каждой итерации цикла.
Если вы заметили, то перед условием стоит восклицательный знак, означающий повторение цикла, пока значение, возвращаемое функцией key_pressed() ложно.
Нижеследующие примеры идентичны предыдущему.
while(key_pressed(KEY_ESCAPE)==false)

while(!key_pressed(KEY_ESCAPE))
Заметьте, что в последней строке первого примера после правой круглой скобки стоит точка с запятой. Она служит для того, чтобы после проверки условия, если оно не выполняется, продолжить выполнение программы.
Имеется одно известное различие между while и doo while циклами.
В цикле while сначала проверяется условие, и если оно ложно, то весь код цикла полностью пропускается.
А в цикле doo while сначала выполняется код цикла, а за тем проверяется условие.

Цикл for

Наиболее используемый вид цикла for.
Главным образом используется для создания счётчиков.
В данном цикле комбинируются 3 типа контроля цикла.
Вспомните циклы while и doo while.
Прежде чем мы начинали цикл, мы объявляли переменную и присваивали ей определённое значение.
В нашем случае это был 0.
Далее шло объявление цикла и условие в круглых скобках.
А в теле цикла, перед правой фигурной скобкой мы изменяли значение созданной переменной для следующей итерации.
В цикле for все эти 3 действия собраны в одну строку.
for(int x=0; x<=10; x++)
{
// код цикла
}
Рассмотрим каждую часть по отдельности.
Сначала мы создаём переменную и присваиваем ей начальное значение.
Эта переменная будет доступна и в теле цикла.
Далее мы указываем условие, которое должно проверяться при выполнении цикла.
В нашем случае цикл будет продолжать выполняться, пока x меньше 10.
И далее увеличиваем x на 1, для того чтобы цикл снова проверил условие и, в зависимости от результата, повторился или нет.
for(x=1; x<1000; x*=2)
{
// код цикла
}
Теперь каждый проход цикла будет увеличивать значение x в 2 раза. (1, 2, 4, 8, 16…)

Операторы break и Continue

Пришло время поговорить об операторах break и continue.
Часто при возникновении некоторого события удобно иметь возможность досрочно завершить цикл.
Используемый для этой цели оператор break (разрыв) вызывает немедленный выход из циклов, организуемых с помощью операторов for, while, do-while, а также прекращение оператора switch.
Взгляните на следующий пример.
while(true)
{
if(something==true)
{
break;
}
if(something_else==true)
{
break;
}
if(yet_another_variable==true)
{
continue;
}
// код цикла
wait(5);
}
Запомните, что если циклы вложены, оператор break осуществит выход только из цикла, в котором он вызван.
Оператор continue, который вы встретили в третьем условии, тоже предназначен для прерывания циклического процесса, организуемого операторами for, while, do-while.
Но, в отличие от оператора break, он не прекращает дальнейшее выполнение цикла, а только немедленно переходит к следующей итерации того цикла, в теле которого он оказался.
Он как бы имитирует безусловный переход на конечный оператор цикла, но не за пределы самого цикла.

Назад | Содержание | Вперёд

Поделитесь с друзьями

WordPress Lessons