Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Использование цикла do...While

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

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

Рис. 9.7. Структура цикла do...while

Используя цикл do...while, следует указывать условие так, чтобы выполнение его не оказалось бесконеч- ным. Ведь если условие все время будет выполняться, остановить повторение цикла можно будет только перезагрузкой системы с помощью кнопки Reset или комбинации клавиш Ctrl+Alt+Del.

Цикл do...while часто используется для того, чтобы повторять программу до тех пор, пока пользователь не решит закончить ввод:

main()

{

int temp; float celsius; char repeat; do

{

printf("Введите значение температуры: "); scanf("%d", &temp);

celsius = (5.0 / 9.0) * (temp - 32); printf("%d градусов по

Фаренгейту соответствует %6.2f по Цельсию\n", temp, celsius);

printf("Желаете ввести еще значение?"); repeat = getchar();

putchar('\n');

}

while (repeat == 'y' || repeat == 'Y');

}

В этом примере практически весь текст программы, исключая определение переменных, входит в большой блок do...while. Цикл будет повторяться до тех пор, пока в ответ на запрос будет вводиться символ Y или

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

Цикл do...while также используют и для того, чтобы обеспечить правильность ввода данных. Например, у нас есть программа, в которой требуется ввести процент скидки стоимости товара в виде десятичной дро- би. Если пользователь вводит значение, не соответствующее формату, например, меньше 0 либо больше или равно 1, можно, с помощью цикла do...while, предложить ему повторить ввод, написав инструкции примерно следующего содержания:

do

{

printf("Введите размер скидки:"); scanf("%f", &discount);

}

while (discount < 0 || discount >= 1);

Условие, записанное в while с использованием логического оператора ИЛИ, проверяет, находится ли вве- денное число в определенных допустимых границах. Цикл будет повторяться до тех пор, пока пользова- тель не введет данные надлежащим образом. Но тут есть одна тонкость.

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

main()

{

int count; float discount; count=0; do

{

printf("Введите размер скидки: "); scanf("%f", &discount); count++;

}

while ((discount < 0 || discount >= 1)

if (count == 20)

puts ("Дурак");

&& count < 20);

}

Теперь у пользователя есть 20 попыток, чтобы ввести правильные данные. Значение переменной count

увеличивается на единицу после каждой неправильной попытки.

Для того чтобы выполнить только одну инструкцию в цикле do...while, нет необходимости использовать фигурные скобки. Например, следующая программа позволяет вводить символы, пока не будет нажата клавиша Y:

main()

{

int a; do

a = getchar();

while (a != 'y' && a != 'Y');

}

Рис. 9.8. Вложенные циклы do...while