Программирование на C шаг за шагом: шаг 6 – цикл WHILE

 

C_logoЦикл while схож с циклом for, но у него меньше функциональности. Цикл while будет выполняться до тех пор, пока заданное в нём условие будет истино. Например, следующий код будет выполнен 10 раз:

int n = 0;
while (n < 10) {
    n++;
}

Цикл while быть бесконечным, если условие всегда возвращает истину:

while (1) {
   /* do something */
}

Директивы циклов

Все циклы в C имеют две важных директивы – break и continue.

Директива break прерывает выполнение цикла, даже если условие самого цикла while вегда истино:

int n = 0;
while (1) {
    n++;
    if (n == 10) {
        break;
    }
}

В примере ниже используется директива continue, которая возвращает выполнение цикла к его началу – таки образом, printf() будет выполняться только для чётных чисел:

int n = 0;
while (n < 10) {
    n++;

    /* check that n is odd */
    if (n % 2 == 1) {
        /* возврат к началу цикла while */
        continue;
    }

    /* выполняется только если n - чётное число */
    printf("The number %d is even.n", n);
}

В следуещем примере, мы выполняем итерацию элементов в массиве array[] и в случае, если значение элемента меньше 5 – то пропускаем его, если больше – выводим на экран. Если же значение елемента больше 10 – то прерываем выполнение цикла:

#include <stdio.h>

int main() {
    int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4};
    int i = 0;

    while (i < 10) {
        i++;

        if (array[i] < 5) {
            continue;
        }
        else if (array[i] > 10) {
            break;
        }

        printf("%dn", array[i]);
    }

    return 0;
}
$ ./while_loop
7
5
9
5