Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C. Тема 1. Раздел 10

.pdf
Скачиваний:
21
Добавлен:
21.03.2016
Размер:
546.75 Кб
Скачать

Часть 3

Другое название «вечные» циклы

Примеры

for(;;)

while (1) {}

do {} while (1)

Условие выполнения следующей итерации вычисляется перед выполнением каждой итерации

Цикл может ни разу не выполниться

За счёт использования цикла с предусловием можно сэкономить один условный оператор

Реализация в Си: while

Условие выполнения следующей итерации вычисляется после выполнения каждой итерации

Первая итерация выполняется всегда

Реализация в Си: do while

Является промежуточным типом цикла между циклом с предусловием и циклом с постусловием

Реализация в Си: через безусловный цикл for(;;)

{

первая часть тела цикла; if(условие выхода)

{

break;

}

вторая часть тела цикла;

}

В этом цикле переменная цикла меняет своё значение от заданного начального значения до конечного значения с некоторым шагом

Может реализовываться как цикл с предусловием или как цикл с постусловием

Реализация в Си: for (цикл с предусловием)

В Си допускается изменение переменной цикла

Изменения переменной цикла лучше избегать

Что будет напечатано на экране? int i;

for(i = 0; i < 10; i++)

{

printf("%d ", i); if(i < 5)

{

i = 6;

}

}

printf("\ni: %d\n", i);

0 7 8 9 i: 10

Это циклы в циклах

Количество уровней вложенности не ограничено

Полное число исполнений тела внутреннего цикла не превышает произведения числа итераций внутреннего и всех внешних циклов

Оператор continue не годится

Оператор break выходит только из одного уровня вложенности

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

Можно модифицировать условия выполнения следующей итерации

Потенциальный источник трудно находимых ошибок

Зато не используем goto!

Можно разместить вложенный цикл в отдельной функции и использовать оператор return

Это цикл, задающий выполнение некоторой операции для объектов из заданного множества (массива)

Выполнить операцию X для всех

элементов, входящих в множество M

В некоторых языках это цикл foreach

Реализация в Си: отсутствует

Решение

Использовать существующие операторы циклов

Удобно использовать for

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]