Оператор с предусловием 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; просмотров: 1125;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.