Программирование циклических алгоритмов

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

Операторы цикла используются для организации многократно повторяющихся вычислений. Любой цикл состоит из:

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

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

Один проход цикла — итерация. Проверка условия выполняется на каждой итерации либо до тела цикла, либо после. Переменные, изменяющиеся в теле цикла и используемые при проверке условия продолжения, называются параметрами цикла.

Целочисленные параметры цикла, изменяющиеся с постоянным шагом на каждой итерации, называются счетчиками цикла.

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

Для организации циклов в языке C++ предусмотрено три оператора.

  1. Оператор с предусловием while
  2. Оператор с постусловием do while
  3. Оператор цикла с параметром

Цикл с предусловием


Рис.4

 

 

 

 

 

while (выражение-условие) тело цикла;

 

При входе в цикл вычисляется выражение-условие. Если его значение не равно 0, то выполняется тело цикла. Затем вычисление выражения-условия и выполнение операторов цикла повторяется последовательно пока значение выражения-условия равно 0.

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

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

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

Структурой с вложенным циклом называют такую структуру, в которой внутри одного цикла находится один или несколько других циклов.

Цикл, расположенный внутри другого цикла, называют внутренним. Цикл, внутри которого находятся другие циклы, называют внешним.

Цикл с постусловием


Рис.5

 

 

 

 

do тело цикла

while (выражение-условие);

При входе в цикл обязательно выполняется тело цикла, затем вычисляется выражение-условие. Если его значение не равно 0, вновь выполняется тело цикла.

При обработке некоторых последовательностей применением цикла do оказывается удобнее, чем цикла while. Это бывает в тех случаях, когда обработку нужно закончить не до, а после выполнения концевого признака. К выражению-условию требования те же, что и для цикла while. Оно должно изменяться при итерациях либо при вычислениях.

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

for (инициализация цикла; выражение-условие; список выражений) тело цикла;

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

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

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

Часто встречаются ошибки при программировании циклов — использование в теле цикла неинициализированных переменных и неверная запись условия выхода из цикла.

Чтобы избежать ошибок, рекомендуется:

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

Операторы цикла взаимозаменяемы. Можно привести некоторые рекомендации по выбору наилучшего варианта в каждом конкретном случае:

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

Вложенные циклы

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

Разрешено вложение любых циклов в любые циклы.

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

При программировании вложенных циклов необходимо соблюдать дополнительное условие: все операторы внутреннего цикла должны полностью располагаться в теле внешнего цикла.

for (i=1; i<=n; i++)

{

for (j=1; j<=m; j++)

{

}

}

// внешний цикл

 

 

// внутренний цикл

 

 

//конец внутреннего цикла

// конец внешнего цикла

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

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

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

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

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