И если после нескольких итераций ваша программа решает, что величина параметра delta
слишком мала или велика, оператор if внутри цикла может изменить значение параметра. В диалоговой программе пользователь может изменить этот параметр в процессе выполнения цикла.Короче говоря, большая свобода выбора вида выражений, управляющих работой цикла for
, позволяет с помощью этой конструкции делать гораздо больше, чем просто выполнять фиксированное число итераций. Возможности цикла for могут быть еще более расширены путем использования операций, которые мы вкратце обсудим ниже.Резюме: оператор for
I. КЛЮЧЕВОЕ СЛОВО: FOR
II. ОБЩИЕ ЗАМЕЧАНИЯ:
В операторе for
используются три выражения, управляющие работой цикла; они разделены символами "точка с запятой".III. ФОРМА ЗАПИСИ:
for(инициализация; проверка условия; коррекция) оператор
Тело цикла выполняется до тех пор, пока проверяемое условие не станет ложным или равным нулю
III.ПРИМЕР
for(n = 0; n < 10; n++)
printf(" %d %d\n", n, 2*n + 1);
Выше уже упоминалось о том, что в языке Си имеется несколько операций
Важнейшей из них является, конечно, операция =
, при использовании которой значение выражения справа от знака присваивается переменной слева от него. Остальные операции присваивания корректируют значения переменных В записи каждой из них имеются имя переменной, стоящее слева от знака операции, и выражение справа от него Переменной присваивается новое значение, равное старому, скорректированному с помощью величины выражения, стоящего справа. Результат зависит от используемой операции. Например: scores+= 20 то же самое, что scores = scores + 20, dimes -= 20 то же самое, что dimes = dimes - 2, bunnies *= 2 то же самое, что bunnies = bunnies * 2, time /= 2.73 то же самое, что time = time / 2.73, reduce %= 3 то же самое, что reduce = reduce % 3.Правые части здесь являются обыкновенными числами, но мы могли бы использовать и более сложные выражения
то же самое, что и
Этим операциям присваивания назначен тот же низкий приоритет, что и обычной операции =
, т.е. меньший, чем операциям + или *. Это и отражено в последнем примере. Вам совершенно не обязательно использовать все эти формы. Однако они более компактны, и при трансляции обычно позволяют получить более эффективный машинный код, чем традиционная, более длинная запись. Они бывают особенно полезны в том случае, когда вы хотите поместить некоторое выражение в спецификацию цикла for.Операция "запятая"
Операция "запятая" увеличивает гибкость использования цикла for
, позволяя включать в его спецификацию несколько инициализирующих или корректирующих выражений. Например, ниже приводится программа, которая выводит на печать величины почтовых тарифов первого класса обслуживания. (Во время написания этой книги почтовые тарифы были такими: 20 центов за первую унцию и по 17 центов за каждую следующую.)Первые четыре строки результата работы программы будут выглядеть следующим образом:
унции стоимость
1 20
2 37
3 54