Операторы циклов в языке Си, их назначение, виды. Формат записи, принцип работы и пример использования оператора цикла с параметром

Операторы циклов – мощное средство записать некоторую последовательность операторов один раз и повторить ее многократно. Благодаря циклам производительность труда программиста повышается во много раз.

В языке Си существует три вида циклов: цикл с параметром или цикл типа for, цикл с предусловием или цикл типа while, цикл с постусловием или цикл типа do . . . while.

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

В цикле типа for число повторений известно заранее, в циклах типа while и do ... while число повторений цикла заранее неизвестно, производится проверка условия повторения цикла: в цикле типа while – перед циклом, в цикле типа do ... while – после его окончания.

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

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

С помощью цикла типа for удобно находить суммы, произведения, искать максимальные и минимальные значения и т.п. При нахождении суммы некоторой переменной, например S присваивается значение 0, затем в цикле к этой переменной прибавляется общий член заданной последовательности. Рассмотрим пример вычисления суммы квадратов натурального ряда чисел от 1 до n.

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

Программа имеет вид:

//sum_sq.c сумма квадратов натурального ряда

#include<stdio.h>

#include<conio.h>

main()

{ int S,n,i;

clrscr();

printf(“Введите n\n”);

scanf(“%d”,&n);

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

printf(“n=%d S=%d\n”,n,S);

getch();

return 0; }

В программе определяются целые переменные S, n, i. В отличие от других языков в языке Си учитывается регистр при определении идентификатора (имени) переменной. Функция clrscr, производящая очистку экрана, содержится в заголовочном файле conio.h. После ввода переменной n следует цикл типа for. В разделе инициализации присваиваются начальные значения переменным S (в которой накапливается сумма квадратов) и i –параметру цикла, присваивания разделяются запятой, раздел инициализации отделяется точкой с запятой. В разделе проверки условия значение i сравнивается с n, при i меньшем или равном n цикл повторяется, в противном случае происходит выход из цикла. Раздел модификации состоит из оператора инкремента (увеличения на 1) значения параметра цикла i. Запись i++ эквивалентна i=i+1.

В цикле выполняется один оператор S+=i*i; это оператор составного присваивания, эквивалентный оператору S=S+i*i, поэтому фигурные скобки для тела цикла не требуются. После окончания цикла производится печать результата (оператор printf). Функция getch, содержащаяся в заголовочном файле conio.h, ожидает нажатия любой клавиши, при этом пользователь имеет возможность просмотреть результаты работы программы, не прибегая к просмотру экрана пользователя с помощью комбинации [ALT]+[F5].

Вычисление произведений производится аналогично, но перед циклом переменной, например F, в которой накапливается значение произведения, присваивается значение не 0, а 1.