Цикл – это структурная конструкция, в которой некоторые алгоритмические действия - тело цикла (ТЦ) – неоднократно повторяются. В программировании используются три основные конструкции циклов: цикл по переменной (цикл-модификация) (рис. 3.1), цикл с постусловием (рис. 3.2) и цикл с предусловием (рис. 3.3). В языке С/С++ они поддерживаются операторами for, do-while и while, соответственно.
Рис. 3.1. Цикл по переменной Рис. 3.2. Цикл с постусловием
Рис. 3.3. Цикл с предусловием
Цикл по переменной (цикл-модификация) наиболее часто используется в программах. Его работа основана на том, что управляющая переменная цикла i пробегает значения от начального J до конечного Kс шагом L и для каждого из них исполняется тело цикла ТЦ. В языке С/С++ в качестве управляющей может быть использована переменная как целого, так и вещественного типа. Параметры цикла J , Kи Lпредставляют собой выражения соответствующего типа, в частном случае, переменные или константы.
Цикл по переменной в С/С++ поддерживается оператором for, который имеет следующий синтаксис:
for (<инициализация>; <условие повторения>; <модификация>)
<оператор>;
Элементы этого оператора следующие:
- инициализация – выражение, присваивающее начальное значение переменной цикла. Если переменная ранее не описана, описывается и ее тип. Например: i=1; intk=i+j; doublex=Xmin; и т.п.
- условие повторения– логическое выражение, при истинности которого тело цикла повторяется. Например, i<=n; k+i>100-(i+j); x<=Xmax;
- модификация - выражение, модифицирующее значение управляющей переменной. Например, i++ i+=2 x+=Xstp.
- оператор - оператор языка С, реализующий тело цикла. Если тело цикла выражается несколькими операторами, то используется составной оператор (блок), объединенный фигурными скобками.
Примеры записи оператора for:
for (i=1; i<=n; i++) cout<<i<<endl;
for (x=Xmin; x<=Xmax; x+=Xstp)
{
...
...
}
Язык С, в отличие от других, позволяет внутри тела цикла изменять значение управляющей переменной, но делать это категорически не рекомендуется. Ее значение должно управляться оператором for, а внутри тела цикла оно может только использоваться.
В оператореforможно задать одновременное (синхронное) изменение двух или более переменных, например,
for (i=1, j=n; i<=n; i++, j--) {...}
В этом случае инициализирующие и модифицирующие выражения для каждой из переменных разделяются запятыми и исполняются слева направо (операция запятая). В данном примере тело цикла будет исполняться n раз, переменная i будет пробегать значения от 1 до n,а переменная j– от n до 1.
Этот цикл не следует путать с циклом по j, вложенным в цикл по i, в котором тело цикла выполняется n2 раз:
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
{
...
}
...
Цикл с пост-(после-)условием в языке C/C++ поддерживается оператором do-while. Его синтаксис имеет вид:
do <оператор> while (<логическое выражение>);
Оператор тела цикла выполняется до тех пор, пока логическое выражение имеет значение «Истина». Если тело цикла включает несколько операторов, то они объединяются фигурными скобками в блок:
...
do
{
...
...
...
}
while (<логическое выражение>);
Тело цикла при этом рекомендуется выделить (форматировать) двумя отступами.
Цикл с предусловием в языке C/C++ поддерживается оператором while. Его синтаксис имеет вид:
while (<логическое выражение>) <оператор>;
Оператор тела цикла также выполняется, пока логическое выражение имеет значение «Истина». Тело цикла, состоящее из нескольких операторов, объединяется фигурными скобками.
Операторы do-while и while являются взаимозаменяемыми. Необходимо только помнить, что логическое выражение в операторе while вычисляется до выполнения тела цикла и предусмотреть это при первоначальном входе в цикл.
В качестве логического выражения в операторах do-while и whileиногда используются числовые выражения целого типа. Так цикл
...
i=n;
while (i--)
{
...
...
...
}
...
осуществляет обратный цикл по переменной iот n до 0. Пока i>0 выражение в скобках трактуется как «Истина» и тело цикла выполняется. Когда i станет равным 0 («Ложь»), произойдет выход из цикла.
Оператор continue позволяет завершить тело цикла, не исполняя его окончание, при выполнении некоторого условия (истинности логического выражения) и перейти к новому повторению тела цикла. Тем самым реализуется структурная конструкция, показанная на рис. 3.4 для цикла for.
Оператор break завершает весь цикл при выполнении некоторого условия (истинности логического выражения) и передает управление следующему за циклом оператору. На рис. 3.5 показана получающаяся структурная конструкция при использовании цикла с постусловием.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.