Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №6.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5 Мб
Скачать
☆

6.3. Оператор do–while

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

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

do

program statement;

while (loop_condition);

Выполнение цикла do–while происходит следующим образом: сначала выполняется утверждение program statement, затем производится проверка условия выполнения цикла loop_condition с помощью оператора while. Если результатом проверки будет значение TRUE (истина), то выполнение цикла продолжится, и утверждение program statement всякий раз будет выполняться вновь. Повторение цикла будет продолжаться до тех пор, пока в результате проверки условия выполнения цикла loop_condition будет получаться значение TRUE. Когда в результате проверки условия будет вычислено значение FALSE (ложь), то выполнение цикла прекратится и произойдет переход к утверждению (следующему фрагменту программы), непосредственно следующему за циклом.

!

Таким образом, цикл do–while гарантированно выполнится хотя бы один раз.

В случае выполнения нескольких утверждений используются фигурные скобки для выделения тела цикла:

do {

program1 statement1;

program2 statement2;

program3 statement3;

... } while (loop_condition);

Оператор цикла while называется оператором цикла с предусловием, оператор цикла for называется оператором цикла с параметром, оператор цикла do–while называется оператором цикла c постусловием.

!

Цикл do while - это конструкция с условием на выходе.

Пример:

do

scanf("%d", &number);

while(number!=50);

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

Особенности работы с языком Си. Циклом какого вида лучше всего воспользоваться? Во-первых, решите, нужен ли вам цикл с предусловием или же с постусловием. Чаще вам нужен будет цикл с предусловием. По оценкам Кернигана и Ритчи, в среднем циклы с постусловием составляют только 5% общего числа используемых циклов. Существует несколько причин, по которым программисты предпочитают пользоваться циклами с предусловием. В их числе один общий принцип, согласно которому лучше посмотреть, куда вы прыгаете, до прыжка, а не после. Вторым моментом является то, что программу легче читать, если проверяемое условие находится в начале цикла. И наконец, во многих случаях важно, чтобы тело цикла игнорировалось полностью, если условие вначале не выполняется.

Вложенные циклы. Вложенным называется цикл, находящийся внутри другого цикла.

Пример:

/* Простое число - это такое число, которое

делится нацело только на 1 и само на себя.

Первыми простыми числами будут 2, 3, 5, 7 и 11. */

/*простые числа*/

main()

{

int number, divisor, limit;

int count=0;

printf("Укажите, пожалуйста, верхний предел

для поиска простых чисел. \n");

printf("Bерхний предел должен быть 2

или больше.\n");

scanf("%d",&limit);

while (limit<2) {

/* вторая попытка, если ошибка при вводе */

printf("Bы были невнимательны!

Попробуйте еще раз\n");

scanf("%d",&limit);

}

printf("Ceйчac напечатаем простые числа!\n");

for (number=2;number<=limit; number++)

/*внешний цикл*/

{

for(divisor=2; number%divisor!=0; divisor++)

;

if(divisor==number)

{

printf("%5d",number);

if(++count%10==0)

printf("\n");/* новая строка начинается

через каждые 10 простых чисел */

}

}

printf("Pa6oта завершена!\n");

}

Во внешнем цикле каждое число, начиная с 2 и кончая величиной limit, последовательно берется для проверки. Указанная проверка осуществляется во внутреннем цикле. В count хранится счетчик получаемых простых чисел. При печати каждое одиннадцатое простое число печатается с новой строки.