Оператор цикла for

 

Оператор цикла for удобно использовать, если заранее известно (или может быть вычислено) количество повторений цикла.

В программе «Табулирование функции» заменим оператор цикла while оператором for:

for ( i = 1; i<=n; i++)

{ printf(“\n%5.2f %5.2f”, x, 3+2*x);

x = x + 0.1;

}

или короткая форма записи оператора

for ( i = 1; i<=n; x += 0.1, i++)

printf(“\n%5.2f %5.2f”, x, 3+2*x);

Операция запятая (,) - операция последовательного вычисления.

Оператор цикла for имеет вид

for ( [выражение1]; [выражение2]; [выражение3])

оператор s;

Схема работы оператора цикла for представлена на рис.2.4.

Рис. 2.4. Схема работы оператора цикла for

 

Эквивалентный оператор while имеет вид:

выражение1;

while ( выражение2 )

{ оператор s;

выражение3;

}

Любое из выражений в операторе for может отсутствовать, например может отсутствовать выражение1, если не требуются подготовительные действия. В частном случае могут отсутствовать все выражения, тогда получим условие бесконечного цикла. Прервать цикл можно оператором break, например, при обнаружении некоторого условия:

for ( ; ; )

{ …

break;

….

}

Оператор завершения break иногда полезен для “аварийного” выхода из цикла, часто позволяет избежать сложных проверок, но затрудняет понимание программы.

Изменим программу 2.1. – для вычисления значения функции f(x) используем подпрограмму.

/*Программа 2.2. Табулирование функции (в стиле С) */

/* с использованием подпрограммы для вычисления функции f(x) */

#include <stdio.h>

/* подпрограмма вычисления функции f(x) */

float f ( float z )

{ float y;

y = 3 + 2*z;

return y; /* возврат значения функции */

}

void main ()

{ int n, i; /*количество строк, номер строки */

float x; /* текущее значение х */

scanf (“%f %d”, &x, &n);

printf ("\n X F(X) ");

for (i = 1; i <= n; i++)

{printf(“\n%5.2f %5.2f”, x, f ( x )); /* вызов функции */

x = x + 0.1;

}

}

Пояснения к программе.

1. Для вычисления значения функции f(x) вызывается подпрограмма - функция. Подпрограмма, получив в качестве аргумента очередное значение величины x, вычисляет и возвращает значение y = 3 + 2*x.

2. В подпрограмме можно обойтись без дополнительной переменной y: вычисление значения функции выполнить в операторе return.

float f ( float z )

{ return (3 + 2 * z); }

3. Использование подпрограммы позволяет менять функцию, не изменяя основную программу.