Циклы с неизвестным количеством повторений

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

Цикл while состоит из заголовка и тела цикла.

В заголовке после слова while в круглых скобках записывается условие, при котором цикл продолжает выполняться. Когда это условие нарушается (становится ложно), цикл заканчивается.

В условии можно использовать знаки логических отношений и операций

> < больше, меньше

>= <= больше или равно, меньше или равно

== равно

!= не равно

Если условие неверно в самом начале, то цикл не выполняется ни разу (это цикл с предусловием). Если условие никогда не становится ложным (неверным), то цикл никогда не заканчивается; в таком случае говорят, что программа «зациклилась» — это серьезная логическая ошибка. В языке Си любое число, не равное нулю, обозначает истинное условие, а ноль - ложное

Условие

while ( 1 ){ ... } // бесконечный цикл

while ( 0 ){ ... } // цикл не выполнится ни разу

Тело цикла заключается в фигурные скобки; если в теле цикла стоит всего один оператор, скобки можно не ставить. В тело цикла могут входить любые другие операторы, в том числе и другие циклы (такой прием называется «вложенные циклы»). Для того, чтобы легче разобраться в программе, все тело цикла и ограничивающие его скобки сдвигаются вправо на 2-3 символа.

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

Цикл do-while состоит из заголовка do, тела цикла и завершающего условия.

Условие записывается в круглых скобках после слова while, цикл продолжает выполняться, пока условие верно; когда условие становится ложным, цикл заканчивается. Условие проверяется только в конце очередного шага цикла (это цикл с постусловием),

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

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

Рассмотрим пример из предыдущей работы - вычисление суммы квадратов натурального ряда чисел от 1 до n.

S= = 12 + 2 2 + . . . + n 2.

Изменим условие в этом примере: Определить число n, при котором сумма чисел S предыдущего ряда не превысит величину K, введенную с клавиатуры. Такую программу можно реализовать с помощью циклов предусловия или постусловия следующим образом:

//lab3_2 циклы while и do…while

#include<stdio.h>

#include<conio.h>

main()

{int K,S, i;

clrscr(); // очистка экрана перед выводом

printf (“Введите К ”); scanf (“%d”, &K);

// цикл с предусловием //цикл с постусловием

S=0; S=0; i=0;

i= 0; do

while ( S<K) { i++ ; S+=i*i }; { i++; S+=i*i; }

while ( S<K) ;

printf (“n=%d S=%d\n”, i, S);

getch();

}

Отличие этих программ: если ввести К<1, то в программе с предусловием получим S=0, i=0 ; а в программе с постусловием S=1, i=1.

ВЫПОЛНЕНИЕ РАБОТЫ

Составить 3 варианта программ циклической структуры типа for и while, сравнить полученные результаты.

Варианты заданий

1. . 2. .

3. . 4. .

5. . 6. .

7. 8.

9. . 10. .

11. 12.

КОНТРОЛЬНЫЕ ВОПРОСЫ

4.1. Какой алгоритм является алгоритмом циклической структуры?

4.2. Типы циклов в языке Си.

4.3. Какой цикл выполнится хотя бы один раз? А какой - ни разу?

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

Наши рекомендации