Операторы циклов в языке Си, их назначение, виды. Формат записи, принцип работы и пример использования оператора цикла с параметром
Операторы циклов – мощное средство записать некоторую последовательность операторов один раз и повторить ее многократно. Благодаря циклам производительность труда программиста повышается во много раз.
В языке Си существует три вида циклов: цикл с параметром или цикл типа 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.