На этом шаге мы рассмотрим использование этой управляющей конструкции.
Кроме управляющей конструкции while, цикл позволяет организовать и управляющая конструкция for. Перепишем уже рассмотренную программу расчета температур в несколько ином виде:
#include <conio.h> //для функции _getch() #include <stdio.h> //для функции printf() using namespace System; void main() { int fahr; for(fahr = 0; fahr <= 300; fahr = fahr + 20) printf("%4d %6.1f\n",fahr,(5.0/9.0)*(fahr-32.0)); _getch(); }
Рис.1. Текст приложения
Здесь для получения того же результата, что и в предыдущем случае, применена управляющая конструкция for. Тело цикла, как и при использовании цикла while, также циклически выполняется (прокручивается). В нашем случае тело for состоит всего из одного оператора - printf ();, поэтому такое тело можно не заключать в фигурные скобки, хотя их наличие не является ошибкой.
Мы видим, что запись программы приобрела более компактный вид. В заголовочной части конструкции for расположены три выражения, из которых первые два оканчиваются точкой с запятой, третье - круглой скобкой, обозначающей границу заголовочной части for (компилятор понимает, что третье выражение завершилось). Как говорят, в данном случае "цикл идет по переменной fahr": в первом выражении она получает начальное значение, второе выражение - это условие окончания цикла (цикл закончится тогда, когда fahr примет значение, большее 300), а третье выражение изменяет параметр цикла на величину шага цикла.
Работа происходит так: инициализируется переменная цикла (т. е. получает начальное значение), затем проверяется условие продолжения цикла. Если оно истинно, то сначала выполняется тело цикла (в данном случае функция printf ()), затем управление передается в заголовочную часть конструкции for. После этого вычисляется третье выражение (изменяется параметр цикла) и проверяется значение второго выражения. Если оно истинно, то выполняется тело цикла, затем управление снова передастся на вычисление третьего выражения и т. д. Если же второе выражение становится ложным, то выполнение конструкции for завершается и начинает выполняться оператор, следующий непосредственно за ним (а это - завершающая фигурная скобка main(), означающая прекращение работы функции main ()).
В данном примере следует обратить внимание на аргумент функции printf (). Вместо обычной переменной там стоит целое выражение, которое сначала будет вычислено, а потом его значение выведется на устройство вывода. Выражение можно указывать в качестве аргумента функции, исходя из правила языка C/C++: "В любом контексте, в котором допускается использование переменной некоторого типа, можно использовать и выражение этого же типа".
На следующем шаге мы рассмотрим символические константы.