Глава 10. Написание выражений________________________________235
Обычно начальное_выражение используется дяя инициализации и, возможно, объявления переменной управления циклом. Здесь можно объявлять и инициализировать и другие переменные. Вот обычный пример использования цикла, инициализирующего массив:
int ia[10]; ,
for (int i = 0, j = 100; i < 10; i++, j-=10) ia[i] = j;
Область видимости переменных, объявленных в начальном выражении, распространяется только на цикл for. В предыдущих версиях Borland C++ область видимости переменной определялась от места объявления до конца блока, содержащего оператор for. В результате следующий фрагмент без проблем скомпилируется в Borland C++ 4.5 и более ранних, но Borland C++ 5.0 выдаст ошибку Undefined symbol 'i' (неопределенный символ 'i'):
int ial[10], ia2[20];
for (int i = 0; i < 10; i++)
ial[i] = 0;
for (i =0; i < 20; i++)
ia2[i] = 0;
Таким образом, исходные тексты программ, без ошибок компилировавшиеся в прежних версиях, новой версией компилируются не всегда. Это нововведение было внесено комитетом по стандартам языка C++. Откровенно говоря, более логично, что объявленные здесь переменные используются только внутри цикла. Эти ошибки легко локализовать и исправить. Для устранения этой проблемы в предыдущем примере нужно во втором цикле изменить объявление:
for (int i = 0; i < 20; i++) ia2[i] = 0;
Как несложно догадаться, условие чаще всего используется для проверки условия завершения цикла. Как правило, в нем происходит сравнение переменной управления циклом с некоторым значением. Так же, как и в циклах while и do, необходимо следить за тем, чтобы условие рано или поздно выполнялось.
Инструкция выражение_управлрния_циклом обычно используется для приращения счетчика цикла. В данном случае безразлично, использовать ли инкремент в префиксной или же постфиксной форме, поскольку на значение управляющего выражения это никак не влияет. ,
На листинге 10.7 представлена программа сортировки массива случайных целых чисел. Алгоритм сортировки сравнивает элементы, находящиеся в массиве далеко друг от друга и при необходимости меняет их местами. Промежуток между сравниваемыми элементами постепенно уменьшается до единицы — тогда сравниваются уже соседние элементы и так же при необ-