Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Понятие цикла. Разновидности циклов




 

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

В цикле с параметром задаётся переменная, выполняющая роль параметра цикла, её начальное и конечное значения, приращение (шаг изменения значения параметра цикла).

Блок-схема алгоритма цикла с параметром представлена на рисунке 5.1.

 

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

Цикл с постусловием предназначен для организации циклических алгоритмов, в которых проверка условия работы цикла выполняется после исполнения операторов тела цикла. По этой причине, операторы тела цикла всегда будут выполнены хотя бы один раз. На рисунке 5.3 представлена блок-схема алгоритма цикла с постусловием.

 

 

5.2 Цикл с параметром в СИ/СИ++

 

Оператор for - это наиболее общий способ организации цикла, при помощи которого организуется цикл с параметром. Он имеет следующий формат:

 

for (выражение 1; выражение 2; выражение 3) тело;

 

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

Схема выполнения оператора for:

1. Вычисляется выражение 1.

2. Вычисляется выражение 2.

3. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.

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

int main() { int i,b; for (i=1; i<10; i++) b=i*i; return 0; }

В этом примере вычисляются квадраты чисел от 1 до 9.

В цикле for все инициализирующие выражения вычисляются один раз при входе в цикл. Они разделяются ",". Условия может и не быть, но ";" всегда ставится. При этом полагается, что его значение всегда истина. Выражения из списка выражений вычисляются при каждой итерации цикла после выполнения операторов тела цикла. Тело цикла может быть отдельным, составным или пустым оператором.

Например, просуммируем квадраты первых К членов натурального ряда.

for (int i=1,s=0;i<=k;i++) s+=i*i;

for (int i=0,s=0;i<=k;s+=++i*i);

for (int i=0,s=0;i<=k;)s+=++i*i;

for (i=0,s=0;i<=k;)

{ int j;j=++i;s+=j*j;

}

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

Пример:

for (;;)

{...

... break;

...

}

 

Оператор while

 

Оператор цикла while называется циклом с предусловием и имеет следующий формат:

while (выражение) тело;

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

1. Вычисляется выражение.

2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while.

3. Процесс повторяется с пункта 1.

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

for (выражение-1; выражение-2; выражение-3) тело;

может быть заменен оператором while следующим образом:

выражение-1; while (выражение-2) { тело выражение-3; }

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

Внутри операторов for и while можно использовать локальные переменные, которые должны быть объявлены с определением соответствующих типов.

 

Оператор do while

 

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

 

do тело while (выражение);

 

Схема выполнения оператора do while:

1. Выполняется тело цикла (которое может быть составным оператором).

2. Вычисляется выражение.

3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1.

Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break.

Операторы while и do while могут быть вложенными.

Пример:

int i,j,k;... i=0; j=0; k=0; do { i++; j--; while (a[k] < i) k++; } while (i<30 && j<-30);

Оператор continue

 

Оператор continue, как и оператор break, используется только внутри операторов цикла, но в отличие от него выполнение программы продолжается не с оператора, следующего за прерванным оператором, а с начала прерванного оператора. Формат оператора следующий: continue;

Пример:

int main() { int a,b; for (a=1,b=0; a<100; b+=a,a++) { if (b%2) continue;... /* обработка четных сумм */ } return 0; }

Когда сумма чисел от 1 до а становится нечетной, оператор continue передает управление на очередную итерацию цикла for, не выполняя операторы обработки четных сумм.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных