Оператор с предусловием while
Цикл с предусловием реализует структурную схему, приведенную на рис. 7.1, а, и имеет вид
while (выражение)
код цикла;
Выражение определяет условие повторения кода цикла, представленного простым или составным оператором.
Если выражение в скобках – истина (не равно 0), то выполняется код цикла. Это повторяется до тех пор, пока выражение не примет значение 0 (ложь). В этом случае происходит выход из цикла и выполняется оператор, следующий за конструкцией while. Если выражение в скобках изначально ложно (т.е. равно 0), то цикл не выполнится ни разу.
Код цикла может включать любое количество операторов, связанных с конструкцией while, которые нужно заключить в фигурные скобки (организовать блок), если их более одного.
Переменные, изменяющиеся в коде цикла и используемые при проверке условия продолжения, называются параметрами цикла. Целочисленные параметры цикла, изменяющиеся с постоянным шагом на каждой итерации, называются счетчиками цикла.
Начальные установки могут явно не присутствовать в программе, их смысл состоит в том, чтобы до входа в цикл задать значения переменным, которые в этом цикле используются.
Рис. 7.1. Схемы операторов цикла:
а – цикл с предусловием; б – цикл с постусловием
Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом.
Для этого используют оператор continue – переход к следующей итерации цикла и break – выход из цикла (см. разд. 9.2, 9.3).
Передавать управление извне внутрь цикла не рекомендуется, так как получите непредсказуемый результат.
Например, необходимо сосчитать количество символов в строке. Предполагается, что входной поток настроен на начало строки. Тогда подсчет символов выполняется следующим образом:
int count = 0;
char ch = getchar();
while ( ch != \n') {
count++;
ch = getchar();
}
В языке Си в выражение, управляющее циклом, можно включить и оператор присваивания переменной ch, например:
char ch;
int count = 0;
while (( ch=getchar()) != '\n') count++;
Как видим, переменная ch применяется только в выражении, управляющем циклом, поэтому от ch можно отказаться:
int count = 0;
while ( getchar() !='\n') count ++;
Полезные примеры
1. Организация выхода из бесконечного цикла по нажатии клавиши Esc
while (1) { // Бесконечный цикл
...
if (kbhit() && getch()==27 ) break;
...
}
Функция kbhit() возвращает значение > 0, если нажата любая клавиша, а функция getch() возвращает код нажатой клавиши (код клавиши Esc равен 27). В результате выполнения оператора if, если будет нажата клавиша Esc, выполнится оператор break и произойдет выход из цикла.
Приведенный пример – распространенный прием программирования.
2. Организации паузы в работе программы с помощью цикла, выполняющегося до тех пор, пока не нажата любая клавиша
...
while (!kbhit());
...
Дата добавления: 2017-10-04; просмотров: 1120;