netlib.narod.ru< Назад | Оглавление | Далее >

1.3. Инструкция for

Существует много разных способов для написания одной и той же программы. Видоизменим нашу программу преобразования температур:

  #include <stdio.h>

  /* Печать таблицы температур по Фаренгейту и Цельсию */
  main()
  {
      int fahr;

      for (fahr = 0; fahr <= 300; fahr = fahr + 20)
          printf("%3d %6.1f\n", fahr, (5.0/9.0) * (fahr - 32));
  }

Эта программа печатает тот же результат, но выглядит она, несомненно, по-другому. Главное отличие заключается в отсутствии большинства переменных. Осталась только переменная fahr, которую мы объявили как int. Нижняя и верхняя границы и шаг присутствуют в виде констант в инструкции for — новой для нас конструкции, а выражение, вычисляющее температуру по Цельсию, теперь задано в третьем аргументе функции printf, а не в отдельной инструкции присваивания.

Последнее изменение является примером применения общего правила — в любом контексте, где возможно использовать значение переменной какого-то типа, можно использовать более сложное выражение того же типа. Так, на месте третьего аргумента функции printf согласно спецификатору %6.1f должно быть значение с плавающей точкой, следовательно, здесь может быть любое выражение этого типа.

Инструкция for описывает цикл, который является обобщением цикла while. Если вы сравните его с ранее написанным while, то вам станет ясно, как он работает. Внутри скобок имеются три выражения, разделяемые точкой с запятой. Первое выражение — инициализация

    fahr = 0

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

    fahr <= 300

Условие вычисляется, и если оно истинно, выполняется тело цикла (в нашем случае это одно обращение к функции printf). Затем осуществляется приращение шага:

    fahr = fahr + 20;

и условие проверяется снова. Цикл заканчивается, когда условие становится ложным. Как и в случае с while, тело цикла for может состоять из одного оператора или из нескольких, заключенных в фигурные скобки. На месте этих трех выражений (инициализации, условия и приращения шага) могут стоять любые выражения языка Си.

Выбор между while и for определяется соображениями ясности программы. Цикл for более удобен в тех случаях, когда инициализация и приращение шага логически связаны друг с другом общей переменной и выражаются единичными инструкциями, поскольку названный цикл компактнее цикла while, а его управляющие части сосредоточены в одном месте.


Упражнение 1-5


Измените программу преобразования температур так, чтобы она печатала таблицу в обратном порядке, т.е. от 300 до 0.



netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz