Циклические вычислительные процессы

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

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

- цикл с параметром for ;

цикл с предварительным условием while;

цикл с последующим условием do-while.

Каждый цикл характеризуется:

·  начальным значением параметра цикла,

·  конечным значением параметра цикла,

·  шагом изменения параметра цикла

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

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

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

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

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

оператор;

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

{

оператор 1;

оператор 2;

оператор n;

}

Обычно первое выражение служит для инициализации начального значения цикла, второе выражение служит для проверки окончательного значения цикла, а третье выражение - для изменения значения параметра цикла ( хотя каждое из трех выражений может быть использовано как угодно). Все три параметра позиционно зависимы, поэтому если какой-либо из параметров отсутствует, его позиция определяется точкой с запятой. Если for( ; ; ), то получается бесконечный цикл.

НЕ нашли? Не то? Что вы ищете?

Работа цикла for:

Присвоение начального значения параметра цикла (выражение 1) Проверяется условие достижения окончательнального значения параметра цила(выражение 2) Если условие истинно:

·  то выполняется тело цикла,

·  затем изменяется значения параметра цикла (выражение 3)

Возвращаемся к пункту №2, и так до тех пор, пока условие не станет ложным

Примеры

1. Распечатать все числа от 1 до 100.

for(ch=1; ch<=100; ch++)

printf(“%d”, ch)

2. Распечатать числа от 100 до 1.

for(ch=100; ch>=1; ch--)

printf(“%d”, ch)

3. Распечатать все буквы от а до z.

for(sym=’a’; sym<’z’; sym++)

printf(“%c”, sym);

4. Распечатать числа от 100 до 2 c шагом -2.

for(ch=100; ch>=2; ch - = 2)

printf(“%d”, ch)

5. Найти сумму и произведение всех чисел от 3 до 50.

sum=0; p=1;

for(x=3; x<=50; x++)

{

sum + = x;

p * = x;

}

printf(“Сумма равна = %d произведение =%d”, sum, p)

Цикл с предварительным условием while

while ( условие ) while (условие )

оператор; {

оператор 1 ;

оператор 2 ;

. . .

оператор n ;

}

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

Цикл с предусловием. Перед операцией цикла осуществляется операция присвоения начальных значений параметру цикла. Затем происходит проверка условия. Переход к выполнению тела цикла осуществляется только в том случае, если условие выполняется, в противном случае происходит выход из цикла.

В частном случае может оказаться что тело цикла не выполниться ни разу.

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

Цикл с полседующим условием do - while

do do

оператор; {

оператор_1;

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

. . .

оператор_n;

}

while (условие)

Цикл выполняется хотя бы один раз и только затем проверяется условие. Если условие истинно, то цикл выполняется еще один раз, пока условие не станет ложным.

Цикл с постусловием. Перед операцией цикла осуществляется операция присвоения начальных значений параметру цикла. Затем выполняется тело цикла. После этого происходит проверка условия. Если условие выполняется, то происходит возврат к выполнению действий. Если условие не выполняется, то осуществляется выход из цикла. Таким образом, тело цикла будет реализовано хотя бы один раз.

Пример №1. Что будет выведено на экран в результате выполнения следующего фрагмента.

int x = 5;

while ( x>=6)

{ printf(“ %d ”,x);

x - =3;

}

/* ни разу не выполнится */

int x = 5;

do

{ printf(“ %d ”,x);

x - =3;

}

while ( x>=6)

/* 5 */

int x=10;

while ( x>=0)

{ x - =3;

printf(“ %d ”,x);

}

/* 7 4 1 -2 */

int x=10;

do

{ x - =3;

printf(“ %d ”,x);

}

while ( x>=0)

/* 7 4 1 –2 */