Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции программирование.doc
Скачиваний:
40
Добавлен:
05.11.2018
Размер:
4.73 Mб
Скачать
        1. Оператор цикла с постусловием

Предназначен для реализации в программе варианта цикла с постусловием – вычисление тела цикла с проверкой текущего значения параметра цикла на соответствие диапазону изменения.

Если условие выполняется – управление передается на повторное выполнение тела.

В противном случае (условие не выполняется) осуществляется выход из цикла.

Структура оператора

do

{

тело

цикла

}

while( усл_выр);

где do – ключевое слово (выполнять);

тело цикла – совокупность операторов, вычисление которых требуется повторять;

{ } – ограничители тела цикла;

while – ключевое слово (пока);

усл_выр – выражение, определяющее проверку условия повторения цикла;

( ) – ограничители выражения;

; – признак оператора.

Первая строка формирует заголовок цикла.

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

  • выполняются операторы тела цикла;

  • вычисляется условное выражение (усл_выр);

  • если выражение истинно (результат не равен нулю) – управление передается заголовку цикла и весь процесс повторяется при следующих значениях параметра цикла;

  • если усл_выр ложно (результат равен нулю) – осуществляется нормальный выход из цикла, т.е. управление передается следующему за циклом оператору.

Схема выполнения оператора

do

{

тело

цикла

}

while(усл_выр);

ЛОЖЬ ИСТИНА

Стрелки определяют последовательность работы оператора в зависимости от результатов проверки условного выражения – ИСТИНА или ЛОЖЬ.

  • Внимание! Оператор do ... while предписывает однократное выполнение тела цикла до проверки условного выражения.

Например, фрагмент программы

do /* вход в цикл */

{

yi = sin( xi ); /* вычисления в */

zi = 2.* yi; /* теле цикла */

}

while( zi <= b ); /* проверка условия повторения цикла */

sum = 0.;

предписывает повторение вычислений yi и zi пока zi <= b. Как только условие перестанет выполняться, произойдет нормальный выход из цикла – управление передастся оператору sum = 0.

Правила записи и выполнения

  1. В качестве усл_выр могут использоваться любые выражения Си. Арифметические, например ( sin( b ) + 0.5 ), ( 2*c - d / f ), (a) или простые (составные) логические выражения, например (а!=b), (sin( x ) < b), ( x <= a && x >= b ).

  2. Тело цикла может оформляться одним составным или одним простым оператором. Например

do

{

yi=2. * cos( xi );

printf(“ %f %f”, xi, yi);

}

while( yi >= b | | yi <= c );

do

xi=sin( ci );

while( xi<=a );

  1. В теле цикла возможно использование специальных операторов break, goto, continue, обеспечивающих искусственный (принудительный) выход из цикла. Оператор break прекращает выполнение цикла и передает управление оператору, записанному непосредственно под телом цикла. Оператор goto m организует выход из цикла с передачей управления оператору, помеченному его меткой. Оператор continue прерывает выполнение тела цикла и возвращает управление элементу цикла while(усл_выр), например:

do

{

. . .

if( c < a )

break;

. . .

}

while( a > b );

d = 15.;

do

{

. . .

if( c < a )

goto k;

. . .

}

while( a > b );

d = 15.;

. . .

k: d=12.;

do

{

. . .

if( c < a )

continue;

. . .

}

while( a > b );

d = 15.;

Первый фрагмент предписывает искусственный выход из цикла при выполнении в теле цикла условия c < a с передачей управления оператору d = 15. Второй – нарушает естественный порядок вычисления тела цикла при c < a с передачей управления оператору d=12., помеченному меткой k. Третий прерывает выполнение тела цикла по тому же условию, но управление возвращается элементу цикла while(усл_выр).

  1. В цикле возможно использование других (вложенных) операторов цикла.

Вывод: оператор do while позволяет программировать арифметические циклы с постусловием, например, представленные схемами рис. 5.5 (блоки 5, 6, 7, 8, 9); рис. 5.7б (блоки 5, 6, 7, 8), при условии, что начальное значение параметра цикла (блок 4) задается до входа в цикл, а изменение параметра (блок 8 рис. 5.5; блок 7 рис. 5.7б) осуществляется в теле цикла.