Оператор цикла с предусловием и коррекцией for


 

Общий вид оператора:

for (выражение 1; выражение 2; выражение 3)

код цикла;

где выражение 1 – инициализация счетчика (параметр цикла);

выражение 2 – условие продолжения счета;

выражение 3 – коррекция счетчика.

На рис. 7.2, а представлена схема работы цикла for, а на рис. 7.2, б – символ блок-схемы, использующийся для его обозначения.

 

Рис. 7.2. Схемы оператора цикла for:
а –
схема работы; б – блок-схема

Инициализация используется для присвоения счетчику (параметру цикла) начального значения.

Выражение 2 определяет условие выполнения цикла. Как и в предыдущих случаях, если его результат не нулевой («истина»), – то цикл выполняется, иначе – происходит выход из цикла.

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

Выражения 1, 2 и 3 могут отсутствовать (пустые выражения), но символы «;» опускать нельзя.

Например, для суммирования первых N натуральных чисел можно записать такой код:

sum = 0;

for ( i = 1; i<=N; i++) sum+=i;

Заметим, что в выражении 1 переменную-счетчик можно декларировать. Например:

for (int i = 1; i<=N; i++)

Областью действия такой переменной будет код цикла.

Но в старых версиях компиляторов такие действия могут интерпретироваться иначе.

Цикл for эквивалентен последовательности инструкций:

выражение 1;

while (выражение 2) {

...

выражение 3;

}

а оператор for (; выражение 2; )

код цикла;

эквивалентен оператору while (выражение 2)

код цикла;

Если пропущено выражение 2, то цикл будет выполняться бесконечно, поскольку пустое условие всегда остается истинным. Бесконечный оператор: for ( ; ; ) код цикла;

эквивалентен оператору while (1) код цикла;

В заголовке оператора for может использоваться операция «запятая». Она позволяет включать в его выражения несколько операторов. Тогда рассмотренный пример суммирования первых N натуральных чисел можно записать в следующем виде:

for ( sum = 0 , i = 1; i<=N; sum+= i , i++) ;

Оператор for имеет следующие возможности:

– можно вести подсчет с помощью символов, а не только чисел:

for (ch = 'a'; ch <= 'z'; ch++) ... ;

– можно проверить выполнение некоторого произвольного условия:

for (n = 0; s[i] >= '0' && s[i] < '9'; i++) ... ;

или

for (n = 1; n*n*n <= 216; n++) ... ;

Первое выражение необязательно должно инициализировать переменную. Необходимо только помнить, что первое выражение вычисляется только один раз, перед тем как остальные части начнут выполняться.

for (printf(" вводить числа по порядку! \n"); num!=6;)

scanf("%d", & num);

printf(" последнее число – это то, что нужно. \n");

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

Переменные, входящие в выражения 2 и 3, можно изменять при выполнении кода цикла, например, значения k и delta:

for (n = 1; n < 10*k; n += delta) ... ;

Использование условных выражений позволяет во многих случаях значительно упростить программу, например:

for (i = 0; i<n; i++)

printf("%6d%c", a[i],( (i%10==0) || (i==n–1) ) ? '\n' : ′ ′);

В этом цикле печатаются n элементов массива а по 10 в строке, разделяя каждый столбец одним пробелом и заканчивая каждую строку (включая последнюю) одним символом перевода строки. Символ перевода строки записывается после каждого десятого и n-го элементов. За всеми остальными – пробел.

Наиболее часто встречающиеся ошибки при создании циклов – это использование в коде цикла неинициализированных переменных и неверная запись условия выхода из цикла.

Чтобы избежать ошибок, нужно стараться:

– проверить, всем ли переменным, встречающимся в правой части операторов присваивания в коде цикла, присвоены до этого начальные значения (а также возможно ли выполнение других операторов);

– проверить, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла;

– предусмотреть аварийный выход из цикла по достижении некоторого количества итераций;

– если в состав цикла входит не один, а несколько операторов, нужно заключать их в фигурные скобки.

 

 




Дата добавления: 2017-10-04; просмотров: 1099;


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

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

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

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