Лекции по C++ для начинающих - страница 4





2) ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ


Цикл – повторное выполнение операторов, завершаемое при выполнении некоторых условий. Однократное выполнение операторов цикла называется итерацией. Операторы и конструкции цикла также называются телом цикла.

Различают 3 вида оператора цикла: for, while и do-while.



ЦИКЛЫ С ПАРАМЕТРОМ


Описание: for (выражение 1; выражение 2; выражение 3) { … };

Действие: в круглых скобках содержится три выражения. Первое из них служит для инициализации счетчика. Она осуществляется только один раз – когда цикл for начинает выполняться. Второе выражение необходимо для проверки условия, которая осуществляется перед каждым возможным выполнением тела цикла. Когда выражение становится ложным, цикл завершается. Третье выражение вычисляется в конце каждого выполнения тела цикла, происходит приращение числа на шаг.

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

Если отсутствуют выражения 1 и 3, цикл становится эквивалентным while.

Например:

for (;а<20;) { … };


Каждое из выражений может состоять из нескольких выражений, объединенных операцией «запятая».

Например:

for (i=0, j=l; i<100; i++, j++) a[i] = b[j];

Пример (EX6):


#include


int main() {

int i, j = 1, k;


for (i = 1; i <= 3; i++) {

printf("Acтана \t");

}


printf("\nУкажите число повторений цикла\n");

scanf("%d", &k);


for (i = 1; i <= k; i++) {

printf("%d", j);

}


j = i;

printf("\n");


for (i = 1; i <= k; i++) {

printf("%d ", j *= i);

}

}


Вывод:

Астана Астана Астана

Укажите число повторений цикла

5

11111

6 12 36 144 720


ПРИМЕР ЗАДАЧИ (EX7). Вычислить n-e число Фибоначчи. Числа Фибоначчи строятся следующим образом: F(0) = F(1) = 1; F(i + 1) = F(i) + F(i – 1) для i >= 1. Это пример вычислений по рекуррентным формулам.


#include


int main() {

int a, b, c, i, n;


printf("Введите номер числа Фибоначчи ");

scanf("\n %d", &n);


a = 1; // a=F(0), а соответствует F(i-2)

b = 1; // b=F(1), b соответствует F(i-1)


for (i = 2; i <= n; i++) {

c = a + b; // с соответствует F(i)

// в качестве а и b берется следующая пара чисел

a = b;

b = c;

}

printf("%d-е число Фиббоначчи = %d", n, b);

}


ПРИМЕР ЗАДАЧИ (EX8). Вычислить 50 значений функции у = arctg(x2), где X изменяется от начального значения а с шагом h. Результаты вывести в виде таблицы значений X и У.


#include

#include


int main() {

float x, y, a, h;

int i;


printf("Введите исходные данные a, h \n");

scanf("%f %f", &a, &h);

x = a;


for (i = 1; i <= 5; i++) {

y = atan(pow(x, 2));

printf("x = %7.3f у = %7.3f \n", x, y);

x = x + h;

}

}


ПРИМЕР ЗАДАЧИ (EX9). Вычислить значение функции

, если х изменяется с шагом h одновременно с i.


#include

#include


int main() {

float x, y, z, h;

int i, n;


printf("Введитe исходные данные h, n \n");

scanf("%f %n", &h, &n);


x = 0;

z = 0;


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

y = sin(x) / sqrt(1 + x);

z = z + y;

x = x + h;

}


printf("x = %7.3f z = %7.3f", x, z);

}


ПРИМЕР ЗАДАЧИ (EX10). Вычислить сумму членов ряда

, для заданных n и х.


#include

#include


int main() {

float x, s, p;

int k, n;


printf("Введите исходные данные х, n \n");

scanf("%f %d", &x, &n);


p = 1;

s = 0;


for (k = 1; k <= n; k++) {

p = p*x;

s = s + (p + k) / pow(k, 2);

}


printf("s = %7.3f", s);