Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП - ПОИТ (Бахтизин) часть 1 редакт.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.76 Mб
Скачать

3.8.2. Оператор while

Оператор цикла while применяется, когда число повторений неизвестно, но имеется условие, в случае истинности которого нужно выполнить тело цикла. Оператор называется циклом с предусловием, т.к. в данном случае программа проверяет истинность условия цикла до того, как начать следующую итерацию, поэтому, в зависимости от условия входа в цикл и его истинности до выполнения оператора while, цикл может выполниться несколько раз или не выполниться вообще.

Оператор while имеет следующую форму записи

while (выражение)

оператор;

Пример.

int k = 2;

while (k<=100)

k = k * 2;

printf(“%d \n”, k);

Данный фрагмент программы и схема на рисунке 3.6 иллюстрируют работу оператора while. Программа показывает изменение переменной k в зависимости от заданного условия. В данном случае при входе в программу переменная k=2, затем она умножается на 2, принимая следующие значения 2,4,8,32,64,128. Однако, когда ее значение становится 128, условие (k<=100) нарушается. В результате выполнение цикла завершается и за ним выполняется следующий оператор, а именно вывод на экран данной переменной (в итоге выводится 128).

Рис.3.6. Схема работы оператора while

3.8.3. Оператор do...While

Данный оператор похож на оператор while. Однако в операторе while условие продолжения цикла проверяется в начале цикла до выполнения его тела. В свою очередь оператор do...while проверяет условное выражение после выполнения тела цикла и поэтому гарантированно, что цикл выполнится хотя бы один раз (рис.3.7).

Оператор do...while имеет следующую форму записи:

do

оператор

while (выражение);

или

do

{

оператор_1;

оператор_2;

...

оператор_n;

}

while (выражение);

Если в теле цикла do...while имеется только один оператор, то фигурные скобки можно опустить. Однако, чтобы избежать ошибок, обычно фигурные скобки ставятся. Если же операторов несколько, то фигурные скобки применяют обязательно.

Пример.

#include <stdio.h>

void main()

{

int i = 1;

do

{

printf(“%d”, i);

}

while (++i <= 5);

}

Данная программа и схема на рисунке 3.7 иллюстрируют работу оператора do...while. Программа используется для вывода чисел от 1 до 5. Стоит заметить, что к переменной i была применена операция преинкремента (наращивание переменной на 1 до ее использования), а также во избежание ошибки, даже при наличии только одного оператора, поставлены фигурные скобки. При выполнении программы получится следующий результат: 1 2 3 4 5.

Рис.3.7. Схема работы оператора do..while

3.9. Оператор break

Оператор break, упомянутый нами ранее, используется не только при записи конструкции switch, но и при оформлении циклов. Несколько подробнее рассмотрим его с этих позиций.

Оператор break прекращает выполнение оператора цикла и передает управление следующему за ним (за циклом) оператору. Необходимость в использовании данного оператора прерывания в теле цикла возникает, когда условие продолжения итераций нужно проверять не в начале и не в конце, а в середине тела цикла.

Наиболее подходящей в этом случае является такая структура записи тела цикла:

{

операторы

if (выражение) break; // Аналог оператора goto

операторы

}

Итак, break позволяет выходить из цикла еще до того, как условие цикла станет ложным. В данном случае не указывается точный адрес перехода. Управление передается строке, следующей за циклом.

void main()

{

int x;

for (x=1; x<=10; x++) // счетчик наращивается;

{

if (x==8) break; // цикл прерывается только если х == 8;

printf ("%d ", x); // печатает цифры до 8;

}

printf("\n Выход из цикла произошел на шаге x == %d\n", x);

}

В результате работы программы получим следующее:

1 2 3 4 5 6 7

Выход из цикла произошел на шаге х == 8.