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

Использование флагов

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

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

do

{

printf("Введите значение температуры в пределах от 0 до 100: ");

scanf("%d", &temp);

}

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

телю, что он ввел неправильное значение. Текст программы, в которой именно так и сделано, приведен в Листинге9.4.

Листинг 9.4. Программа, в которой используется флаг для отображения альтернативных сооб- щений.

/*flag.c*/ main()

{

int temp; float celsius; char repeat; char flag; do

{

flag = 'n'; do

температуры от 0 до 100: ");

{

if (flag == 'n');

printf("Введите значение

правильно, дурак: ");

else

printf("Вводи значение

scanf("%d", &temp); flag = 'y';

}

while (temp < 0 || temp > 100)

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

соответствует %6.2f по Цельсию\n", temp, celsius);

printf("Желаете продолжить ввод?"); repeat = getchar(); putchar('\n');

}

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

}

Переменной с именем flag в начале каждого внешнего цикла присваивается значение 'n'. В начале каждо- го повтора внутреннего цикла значение флага проверяется. Если оно равно 'n', то программа выводит на экран одно сообщение, при любом другом значении флага на экран выводится второе сообщение.

При первом выполнении цикла флаг имеет значение 'n', поэтому на экран выводится первое сообщение. Когда пользователь вводит число, значение переменной меняется на 'y'. Однако если пользователь ввел неправильное значение, внутренний цикл снова повторяется, но в этом случае условие (flag == 'n') не выполнится, так что на экран будет выведено второе сообщение.

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

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

¶a++ae æepcue u+uru æɵuyye+a sneuwpo++ɵu usgawenacwæou "Books-shop".

Pacupocwpa+e+ue, upogaua, uepesauuca ga++on u+uru unu ee ¬acwen 3AMPE[EHª.

O æcex +apyue+uex upoca6a coo6yawa uo agpecy piracy@books-shop.com

Хотя флаг и может быть определен с любым типом данных, рекомендуется все же выбирать для него тип int или char. Значения, присваиваемые флагу, также целиком определяет автор программы. В нашем при- мере использовалось значение 'n', чтобы отобразить правильный ввод данных, и 'y', чтобы отобразить не- правильный ввод. Вы можете использовать любые другие значения, какие подскажет ваша фантазия.