Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Оператор for






Оператор цикла for позволяет выполнять оператор или группу операторов заранее заданное количество раз.

Общая форма оператора

for (V1; ЛВ; V2) ОP;

где V1 – выражение, в котором производится присваивание переменной, называемой параметром цикла, начального значения (инициализация); ЛВ – условие, определяющее, следует ли в очередной раз выполнять оператор (тело цикла); V2 – выражение, в котором производится изменение переменной цикла (приращение); ОР – оператор или группа операторов.

Принцип работы:

· вычисляется V1;

· вычисляется ЛВ;

· если ЛВ истинно, выполняется ОР, затем вычисляется V2;

· проверка ЛВ → ОP → V2 и т. д.

Когда ЛВ становится ложным, осуществляется переход к оператору, следующему за ОP. Если ОP – составной оператор, то его надо заключить в {}.

Если ЛВ сразу ложно, то ни ОР, ни V2 не выполняются ни разу.

Отметим две дополнительные возможности оператора for по сравнению с оператором while:

o возможность включения инициализирующего выражения V1, используемого один раз перед тем, как будет произведена оценка условия;

o возможность включения выражения V2, которое будет использоваться после каждой итерации оператора ОР.

Пример 1. Вычислить значения функции sin(x) в равноудаленных точках на интервале [0, 4π ]. Количество расчетных точек вводится с клавиатуры:

#include < stdio.h>

#include < math.h>

int main(void)

{

int n;

float x, y;

float x1=0, x2=4*M_PI;

printf(" Введите количество точек\n");

scanf(" %d", & n);

x=x1;

float step=(x2− x1)/(n− 1);

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

{

y = sin(x);

printf(" %3d %8.3f %8.3f\n", i, x, y);

x+=step;

}

return 0;

}

В этом примере количество точек задается в целочисленной переменной n, границы интервала изменения x – в переменных x1 и x2, которые имеют вещественный тип и инициализируются при объявлении. M_PI – макрос, представляющий число π, объявлен в заголовочном файле math.h. Там же объявлена функция sin().

Пример 2. Составим программу вычисления значение sin(x) (п. 6.2.1) с использованием оператора цикла for:

#include < stdio.h>

#include < math.h>

#define EPS 0.001

int main(void)

{

float x, S=0, U;

int i=0;

printf(" \n Input x→ ");

scanf(" %f", & x);

for (U=x; fabs (U)> EPS;)

{

S+=U;

i++;

U*=(-x)*x;

U/=(2*i+1)*2*i;

}

printf(" \n sin(%6.3f)=%7.3f", x, S);

return 0;

}

Следует иметь в виду, что все три выражения – V1, ЛВ, V2 являются необязательными. В качестве ОP может быть использован пустой оператор.

Возможны конструкции:

for(V1;; V2)ОP (бесконечный цикл); for(; ЛВ;)ОP и даже for(;;).

Заметим, что с помощью операторов for и while можно создавать бесконечные циклы, если опустить все три выражения в операторе for и использовать всегда истинное ЛВ в while. Такие программы нельзя назвать корректными, но существуют способы завершения самых некорректных циклов.

Допускается использование оператора for, когда имеется несколько начальных выражений вида V1, перечисленных через запятую, и несколько выражений вида V2, также перечисленных через запятую. Конструкция такого вида носит название – операция запятая.

Используя операцию запятая, составим программу вычисления все того же sin(x):

#include < stdio.h>

#include< math.h>

#define EPS 0.001

int main(void)

{

float x, S, U;

int i;

printf(" \n Input x? ");

scanf(" %f", & x);

for(S=0, U=x, i=0; fabs(U)> EPS; S+=U, i++, U*=(− x/2*i+1)));

printf(" \n sin(%6.3f)=%7.3f", x, S);

return 0;

}

В качестве еще одного примера рассмотрим программу вычисления корня уравнения с точностью e, если начальное (нулевое) приближение x0 – задано:

#include < stdio.h>

#include < math.h>

#define EPS 0.001

int main(void)

{

float x0, x1;

printf(" \n Input x0? ");

scanf(" %f", & x0);

for(x1=sin(x0)*sin(x0)*0.25+0.3; fabs(x1− x0)> EPS;

x1=pow(sin(x0), 2)*0.25+0.3)

/*pow()– возводит число (первый аргумент) в степень (второй аргумент) */

x0=x1;

printf(" \n Root is equal %6.3f", x1);

return 0;

}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.