Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / Конспект лекций (C#).pdf
Скачиваний:
864
Добавлен:
27.05.2015
Размер:
2.03 Mб
Скачать

<инициализация> и <итерация> могут выполнять более одного оператора. В этом случае операторы разделяются запятой. Предыдущий пример может быть записан следующим образом:

int n,i,f; n = ???;

for (i=2, f=1; i<=n; f *= i, i++);

Приведённый выше фрагмент показывает, что тело цикла может быть пустым.

Также пустыми могут быть <инициализация>, <условие>, <итерация>. Напри-

мер, предыдущий пример может быть записан так:

int

n;

n =

???;

int

f = 1;

int

i = 2;

for

(; i<=n; )

f

*= i++;

Несмотря на то, что в блоках <инициализация> и <итерация> имеется возможность выполнять несколько операторов, при этом оставляя тело цикла пустым, злоупотреблять этим не следует.

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

Оператор цикла while фактически представляет собой оператор цикла for, у которого не заданы <инициализация> и <итерация>. Формальная структура данного оператора имеет вид:

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

Как и в цикле for, <условие> определяет условие выхода из цикла и его результатом должно быть логическое значение. <условие> проверяется перед каждой итерацией цикла, поэтому тело цикла может не выполниться ни разу. Выход из цикла производится, если <условие> имеет значение false.

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

Пример: рассчитать факториал числа n.

int n; n = ???;

int i = 1; int f = 1;

while (++i <= n) f *= i;

25

<итерация>

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

Формальная структура данного оператора имеет вид:

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

Как и в предыдущих операторах цикла, <условие> определяет условие выхода из цикла и его результатом должно быть логическое значение. Однако, <условие> проверяется после каждой итерации цикла, поэтому тело цикла выполняется как минимум один раз. Выход из цикла производится, если <условие> имеет значение false.

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

Пример: рассчитать факториал числа n.

int n;

n = ???;

int i = 1; int f = 1; do

f *= i++; while (i <= n);

2.12 Операторы прерываний break (для циклов) и continue

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

Пример: найти наименьший делитель числа n, больший 1:

int n; n = ???;

int i;

for (i=2; i<=n; i++) if (n%i == 0)

break;

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

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

26