View Categories

Цикл while

while (условие) (пока) - простой цикл с предусловием - он будет выполнять указанную инструкцию или блок кода если и до тех пор, пока условие верно - имеет значение true:

while (true);   // здесь программа зависнет НАВСЕГДА =)

while (условие) инструкция;

while (условие) {
    инструкция;
}

Один вызов инструкции или блока кода внутри цикла называется итерацией цикла

По сути while работает как if, но после выполнения инструкции возвращается обратно к проверке условия. Давайте сделаем свой while через goto:

start:
if (условие) {
    // код
    goto start;
}

Из этого следует важный момент: даже в самый первый раз инструкция выполнится только в том случае, если условие выполняется. Следующий цикл выполнится 5 раз, т.е. сделает 5 итераций:

int i = 5;
while (i > 0) {
    i -= 1;
}

На протяжении работы цикла переменная i будет уменьшаться до 0, и как только его достигнет - цикл завершит работу. Если начальное значение i будет 0 - тело цикла не выполнится ни разу. Этим while отличается от своей разновидности - цикла do-while.

Счётчик #

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

int i = 5;
while (i--) {
    // i == 4, 3, 2, 1, 0
}
// i == -1

Также можно встретить вот такой синтаксис:

int i = 5;
while (i --> 0) {
    // i == 4, 3, 2, 1, 0
}

Где --> это не какой-то новый оператор, а просто по-другому стоящие пробелы, чтобы запись была похожа на стрелочку. То есть (i --> 0) равносильно (i-- > 0).

Ожидание #

Одно из применений цикла while - ожидание какого-то события. Например ожидание нажатия кнопки - проверяем состояние кнопки и не продолжаем выполнение программы, пока она не нажмётся:

while (кнопка_не_нажата());

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

while (true);

while (true) {
}

Цикл do while #

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

do {
    инструкция;
} while (условие);

do инструкция; while (условие);

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

Управление циклом #

Оператор break #

break (остановить) позволяет прервать текущую итерацию и сразу же покинуть цикл:

int i = 5;
while (i > 0) {
    i -= 1;
    if (i == 2) break;
    // здесь i будет иметь значения 4, 3
}

Или перепишем пример с кнопкой - выход из цикла, если кнопка нажата:

while (true) {
    // код...
    if (кнопка_нажата) break;
}

Оператор continue #

continue (продолжить) позволяет прервать текущую итерацию и вернуться к началу цикла, в случае с while - к проверке условия:

int i = 5;
while (i > 0) {
    i -= 1;
    if (i > 2) continue;

    // здесь i будет иметь значения 2, 1, 0
}
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Прокрутить вверх