double arrow

Операторы циклов

Операторы циклов. Массивы

Лекция 12

Оператор цикла – это инструкция, предписывающая циклическую операцию.

В С++ используется три вида операторов цикла:

for (параметрический, с предусловием),

while (с предусловием),

do…while (с послеусловием).

12.1.1. Параметрический оператор цикла for

Этот оператор представляет собой компактную форму записи цикла с предусловием. В заголовке цикла собраны три операции:

– инициализация (подготовка) цикла,

– проверка условия выполнения цикла,

– продвижение цикла.

Синтаксис оператора цикла следующий:

for (спецификация1;спецификация2;спецификация3) оператор;

Верхняя строка оператора называется заголовком цикла. Она содержит три спецификации. Спецификация 1 – это запись, реализующая инициализацию параметра цикла. Спецификация 2 отображает условие выполнения цикла. Спецификация 3 – предписывает продвижение цикла.

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

Этот оператор реализует циклическую операцию по вычислению функции у = ах2 при изменении аргумента x от начального значения x0 до конечного значения xk с шагом h.

 
 


for (x = x0; x <= xk; x += h) // Заголовок цикла y = a*x*x; // Тело цикла

В заголовке цикла первая спецификация представляет собой инициализацию параметра цикла х (x = x0;), вторая спецификация отображает условие выполнения цикла (x <= xk;) и третья спецификация предписывает продвижение цикла, то есть увеличение параметра цикла х на величину h (x += h). Следует обратить внимание на то, что первые две спецификации завершаются символом точка с запятой, а третья – нет. В этом цикле оператор в теле цикла выполняется, пока выполняется условие цикла. Цикл завершает свою работу с момента невыполнения его условия. В заголовке цикла сведены три операции: инициализация, условие выполнения цикла и продвижение цикла. Тело цикла представлено только одним оператором y = a*x*x;

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

– для продвижения цикла можно использовать операции инкремент и декремент:

for (n=10; n < 25; n++) или for (n=10; n > 2; n – –);

– в качестве параметра цикла можно использовать как целые, так и вещественные (дробные) числа, а также данные символьного типа:

for (n=8; n < 30; n+=2),

for (x=1.7; x < 7.5; x+=0.5)

for (ch=`a`; ch < `z`; ch++);

– в качестве шага допускается использовать как целые, так и вещественные числа:

for (x=15.2; x < 25.3; x+=0.1);

– во всех трех спецификациях можно использовать выражения:

for (x=2*a; x < 8*a + c; x+=h/2);

– в условие цикла можно записывать выражения, не содержащие параметр цикла:

у = - 3;

for (х=1; у <= 25; х+=0.3)

у = а*х*х;

– можно опускать первую или (и) третью спецификацию:

for (х = 5; х < 25;) x = 5;

{ for (x < 25;)

y = a*x*x; {

x + = h; y = a*x*x;

} x + = h;

}

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

– инициализация параметра цикла (только один раз до начала цикла);

– проверка условия выполнения цикла (перед каждым выполнением тела цикла);

– продвижение цикла (после каждого выполнения тела цикла).

Эта последовательность строго соблюдается.

Операция «Запятая»

Операция «Запятая» увеличивает гибкость цикла for, позволяя включать в его спецификации несколько инициализирующих и корректирующих операций. Это очень удобно при вычислении функции с несколькими одновременно изменяющимися аргументами.

Пример:

Вычислить значения функции z = ax + cy, если х изменяется от хн до хк с шагом hx одновременно с у, который изменяется от ун с шагом hy. Значения коэффициентов а и с заданы.

Такое вычисление можно реализовать записью одного оператора цикла:

for (x = хн, у = ун; x <= хк; x += hx, y += hy)

z = a*x + c*y;

Здесь в первой спецификации одновременно инициализируются переменные х и у, а в третьей спецификации одновременно изменяются эти переменные. Разделяются между собой операторы инициализации и операторы корректировки запятой.

Разрешается в заголовке цикла for описывать новую переменную, например:

for (float x = хн,; x <= хк; x += hx )

12.1.2. Оператор цикла while

Синтаксис этого оператора имеет следующий вид:

while (условие) оператор;

Оператор while обеспечивает выполнение циклической операции до тех пор, пока выполняется условие. Прекращение выполнения условия является основанием для прекращения циклической операции. Тело цикла может быть представлено одним простым или составным оператором. Этот цикл – с предусловием. Это означает, что сначала проверяется условие выполнения цикла, и только потом принимается решение о выполнении цикла. Ниже иллюстрируется фрагмент программы с использованием оператора цикла while, записанной в соответствии с приведенным фрагментом блок – схемы.

x = 1;

while (x < n)

_ {

+ S + = a*x;

x ++;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями: