netlib.narod.ru | < Назад | Оглавление | Далее > |
Существует много разных способов для написания одной и той же программы. Видоизменим нашу программу преобразования температур:
#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 | < Назад | Оглавление | Далее > |