Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР7-С++-05 апреля-2012.doc
Скачиваний:
19
Добавлен:
15.09.2019
Размер:
2.45 Mб
Скачать

1.5.5.2. Оператор цикла с постусловием do

Общий вид оператора:

do

{

тело цикла;

}

while (условие);

Операторы тела цикла повторяются до тех пор, пока условие истинно.

1.5.5.3. Оператор цикла do while

Все представленные выше операторы циклов, так или иначе, проверяют условие перед выполнением цикла, благодаря чему существует вероятность, что операторы внутри цикла никогда не будут выполнены. Такие циклы называют циклы с предусловием. Однако бывают ситуации, когда целесообразно выполнять проверку условия после того, как будут выполнены операторы, стоящие внутри цикла. Это достигается путем использования операторов do while, которые реализуют цикл с постусловием. Следующий пример демонстрирует реализацию такого цикла.

const int secret_code = 13;

int code_ent;

do

{

printf("Введите секретный код: ");

scanf("%d",&code_ent);

}

while(code_ent != secret_code);

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

Язык С поддерживает три варианта циклов.

2. Цикл с постусловием:

do тело цикла while (условие)

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

Блок-схема цикла с постусловием представлена на рис. 4.1, б.

Рис. 4.1. Схемы выполнения операторов циклов: б — оператор do... while;

1.5.5.4. Оператор цикла do-while

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

Особенностью оператора является выполнение тела цикла хотя бы один раз.

Общий вид оператора:

do S while (b );

Здесь S – простой или составной оператор – тело цикла. Он должен включать рабочую часть цикла и операторы изменения операндов выражения b (подготовки данных для очередного шага цикла); b – выражение любого типа, например, логическое, приводимое к арифметическому типу, определяющее условие повторения цикла.

Оператор цикла do-while выполняется по схеме цикла с постусловием, изображенной на рис. 10.1б.

Пример. Найти сумму первых N членов ряда

Решение. Введем обозначения: C – сумма ряда, U – произвольный член ряда. Сумму вычислим в цикле как нарастающую сумму: C = C + U. Для вычисления значения очередного члена ряда достаточно значение предыдущего члена ряда умножить на , т.е.

Полученная формула называется рекуррентной. Она позволяет вычислить любой член ряда, если известен первый член ряда.

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

C = 0;

Параметром цикла пусть будет переменная k. Параметр k должен изменяться от 1 до N с шагом 1. Выражение C = C + U должно быть выполнено хотя бы один раз (для N=1 – один раз; для N=2 – два раза и т. д.), поэтому для вычисления суммы следует использовать цикл с постусловием.

Графическая схема алгоритма приведена на рисунке 10.5.

Рисунок 9.5. Графическая схема алгоритма