Лабораторная работа №4

Циклы. Цикл с параметром

1  ЦЕЛЬ  РАБОТЫ: приобретение практических навыков в составлении алгоритмов и программ циклической структуры.

2  ОСНОВНЫЕ СВЕДЕНИЯ

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

А) начальные значения: операторы присваивания, которые выполняются один раз перед выполнением цикла;

В) условие, при котором выполняется следующий шаг цикла; если условие неверно, работа цикла заканчивается; если оно неверно в самом начале, цикл не выполняется ни одного раза (говорят, что это цикл с предусловием, то есть условие проверяется перед выполнением цикла);

С) действия в конце каждого шага цикла (в большинстве случаев это операторы присваивания).

В каждой части заголовка может быть несколько операторов, разделенных запятыми.

НЕ нашли? Не то? Что вы ищете?

Примеры заголовков:

for ( i = 0; i < 10; i ++ ) { ... }

for ( i = 0, x = 1.; i < 10; i += 2, x *= 0.1 ){ ... }

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

• В тело цикла могут входить любые другие операторы, в том числе и другие циклы (такой прием называется «вложенные циклы»).

• Для того, чтобы легче разобраться в программе, все тело цикла и ограничивающие его скобки сдвигаются вправо на 2-3 символа (запись «лесенкой»).

Пример вычисления суммы квадратов натурального ряда чисел от 1 до n.

S= = 12 + 2 2  + . . . + n 2. 

#include <stdlib. h>

#include <stdio. h>

int main(int argc, char *argv[])

{  system(“CLS”);

  int S, n,i;

  printf("Введите n ");  scanf("%d",&n);

  for (S=0, i=1; i<=n; i++)

  S+=i*i;  //  S=S+i*i

  printf ("n=%d S=%d",n, S);

  system("PAUSE");

  return 0;

}

В разделе инициализации присваиваются  начальные значения переменным S и i. При i,  не превышающем n, цикл  повторяется, иначе выполняется выход из цикла. Оператор инкремента i++ (или  декремента i--),  эквивалентен i=i +1 (i=i-1).

3. Досрочный выход из цикла

Иногда надо выйти из цикла и перейти к следующему оператору, не дожидаясь окончания очередного шага цикла. Для этого используют специальный оператор break. Можно также  завершить текущий шаг цикла и сразу перейти к новому шагу (не выходя из цикла) — для этого применяют оператор continue.

4. Выполнение работы

       Используя оператор цикла for выполните следующие задания:

1)  S= 1+ 2 + 3+...+ 117;  (s=6903)

2)  S= sin1 + sin 2 +...+ sin25;  (s=-0.058)

3)  S= tg2 + tg4 +...+ tg(N*2); N = ввести с клавиатуры (при N=19 S=1)

4)  S= ln 0.1 + ln 0.3 +...+ ln1.9  (s=-2.726)

5)  S= 0.18x + (0.20x)**2 + (0.22x)**3 +...+ (0.36x)**10;

(x=1, s=0.236)

6) S= 1 - 2 + 3 - 4 + ... + (- 1)**N, N > 0 выводится с клавиатуры.

(n=20, s=-10)

7)  P= M! = 1* 2* 3*...*M, M вводится с клавиатуры; (m=5, P=120)

8)  P= 2* 4* 6*...* 12;  (P=46080)

9) Q= 1+ x/1! + x**2/2!+...+ x**N/N!, N>0 вводится с клавиатуры. (x=5, N=10, s=146.38)

5. Контрольные вопросы

5.1. Какие выражения записываются в заголовке цикла? Правила записи этих выражений?

5.2. Когда завершается выполнение цикла?

5.3. По какой причине может произойти зацикливание (цикл становится бесконечным).

5.4. Как можно досрочно выйти из цикла? Как можно досрочно перейти к новому шагу цикла?