Программирование на C и C++

Онлайн справочник программиста на C и C++

FOR

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

Стандартный вид цикла for следующий:

for (инициализация; условие; увеличение) оператор;

Оператор for имеет три главные части:

  1. Инициализация - это место, где обычно находится оператор присваивания, используемый для установки начального значения переменной цикла.
  2. Условие - это место, где находится выражение, определяющее условие работы цикла.
  3. Увеличение - это место, где определяется характер изменения переменной цикла на каждой итерации.

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

В нижеприведенном простом примере осуществляется вывод чисел от 1 до 100 включительно:

#include <stdio.h>
int main(void)
{
int x;
for(x=1; x<=100; x++) printf("%d ", x);
return 0;
}

В программе переменная x изначально установлена в 1. Поскольку х меньше 100, вызывается printf(), после чего х увеличивается на 1 и проверяется условие: по-прежнему ли х меньше либо равно 100. Данный процесс продолжается до тех пор, пока х не станет больше 100, и в этот момент цикл прервется. В данном примере х является переменной цикла, которая изменяется и проверяется на каждой итерации цикла.

Ниже приведен пример цикла for, повторяющего несколько операторов:

for(x=100; х!=65; х-=5) {
z = sqrt(х);
printf("The square root of %d, %f", x, z) ;
}

Как sqrt(), так и printf(), вызываются и выполняются, пока х не равно 65. Обратим внимание, что в цикле переменная х уменьшается: сначала она получает значение 100 и на каждой итерации Цикла происходит уменьшение на 5.

Важно понять, что в цикле for проверка условия выполняется в самом начале. Это означает, что код в цикле может вообще не выполняться, если условие изначально ложно. Например:

Х = 10;
for (у = 10; у! =х; ++у) printf ("%d", у);
printf("%d", у);

Данный цикл никогда не выполняется, поскольку х и у равны между собой на момент начала цикла. Поскольку условие ложно, не выполняется ни тело цикла, ни часть увеличения. Следовательно, у по-прежнему будет содержать значение 10 и в результате вывода мы получим на экране число 10.