Стандартный формат цикла for в С, вероятно, знаком читателю, поскольку его можно найти в той или иной форме во всех языках программирования. Тем не менее, в С цикл for обладает дополнительной гибкостью и мощью.
Стандартный вид цикла for следующий:
for (инициализация; условие; увеличение) оператор;
Оператор for имеет три главные части:
- Инициализация - это место, где обычно находится оператор присваивания, используемый для установки начального значения переменной цикла.
- Условие - это место, где находится выражение, определяющее условие работы цикла.
- Увеличение - это место, где определяется характер изменения переменной цикла на каждой итерации.
Эти три важные части должны разделяться точкой с запятой. Цикл 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.