основыкнигиwin/dos*nixготовоелирикагостиФОРУМПОИСК
Б.В. Керниган, Д.М. Ричи -- Язык C

1.3. Оператор FOR

      Как и можно было ожидать, имеется множество различных способов написания каждой программы. Давайте рассмотрим такой вариант программы перевода температур:

 MAIN()  /* FAHRENHEIT-CELSIUS TABLE */
 {
    INT FAHR;
    FOR (FAHR = 0; FAHR <= 300; FAHR = FAHR + 20)
  PRINTF("%4D %6.1F\N", FAHR, (5.0/9.0)*(FAHR-32.0));
 }

      Эта программа выдает те же самые результаты, но выглядит безусловно по-другому. Главное изменение -- исключение большинства переменных; осталась только переменная FAHR, причем типа INT (это сделано для того, чтобы продемонстрировать преобразование %D в функции PRINTF). Нижняя и верхняя границы и размер щага появляются только как константы в операторе FOR, который сам является новой конструкцией, а выражение, вычисляющее температуру по цельсию, входит теперь в виде третьего аргумента функции PRINTF, а не в виде отдельного оператора присваивания.
      Последнее изменение является примером вполне общего правила языка "C" -- в любом контексте, в котором допускается использование значения переменной некоторого типа, вы можете использовать выражение этого типа. Так как третий аргумент функции PRINTF должен иметь значение с плавающей точкой, чтобы соответствовать спецификации %6.1F, то в этом месте может встретиться любое выражение плавающего типа.
      Сам оператор FOR -- это оператор цикла, обобщающий оператор WHILE. Его функционирование должно стать ясным, если вы сравните его с ранее описанным оператором WHILE. Оператор FOR содержит три части, разделяемые точкой с запятой. Первая часть

 FAHR = 0

выполняется один раз перед входом в сам цикл. Вторая часть -- проверка, или условие, которое управляет циклом:

 FAHR <= 300

это условие проверяется и, если оно истинно, то выполняется тело цикла (в данном случае только функция PRINTF). Затем выполняется шаг реинициализации

 FAHR =FAHR + 20

и условие проверяется снова. цикл завершается, когда это условие становится ложным. Так же, как и в случае оператора WHILE, тело цикла может состоять из одного оператора или из группы операторов, заключенных в фигурные скобки. Инициализирующая и реинициализирующая части могут быть любыми отдельными выражениями.
      Выбор между операторами WHILE и FOR произволен и основывается на том, что выглядит яснее. Оператор FOR обычно удобен для циклов, в которых инициализация и реинициализация логически связаны и каждая задается одним оператором, так как в этом случае запись более компактна, чем при использовании оператора WHILE, а операторы управления циклом сосредотачиваются вместе в одном месте.
      Упражнение 1-5.
      ---------------
      Модифицируйте программу перевода температур таким образом, чтобы она печатала таблицу в обратном порядке, т.е. От 300 градусов до 0.

ПРЕДЫДУЩАЯ ЧАСТЬ
1.2. Переменные и арифметика
СОДЕРЖАНИЕ СЛЕДУЮЩАЯ ЧАСТЬ
1.4. Символические константы