Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PYaVU_otvyty.docx
Скачиваний:
2
Добавлен:
04.08.2019
Размер:
100.42 Кб
Скачать

Билет 27: Циклические алгоритмы, классификация, функциональная схема

Определения:

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

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

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

Виды циклов:

Безусловные циклы

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

Здесь нужен пример для ясности: While(1) { <инструкции> }

Цикл с предусловием

Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). Реализуется оператором while.

Цикл с постусловием

Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. do…while. Здесь тоже нужен элементарный пример, так как синтаксис довольно редкий и экзотичный.

Цикл cо счётчиком

Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. В большинстве процедурных языков программирования реализуется оператором for, в котором указывается счётчик (так называемая «переменная цикла»), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик.

Вложенные циклы

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

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

Одна из проблем, связанных с вложенными циклами — организация досрочного выхода из них. В языке Си есть оператор досрочного выхода из цикла break, но он, как правило, обеспечивает выход только из цикла того уровня, откуда вызван. Вызов его из вложенного цикла приведёт к завершению только этого внутреннего цикла, объемлющий же цикл продолжит выполняться. Проблема может показаться надуманной, но она действительно иногда возникает при программировании сложной обработки данных, когда алгоритм требует немедленного прерывания в определённых условиях, наличие которых можно проверить только в глубоко вложенном цикле. Не указан метод решения проблемы-то. Если затронуть проблему при Козине, он наверняка спросит «А как же её решить-то?». Поэтому нужно или убрать проблему из билетика, или решить её. Я бы для её решения использовал оператор безусловного перехода “go to”.

Cхемы алгоритмов:

Цикл с предусловием: Цикл со счётчиком:

Цикл с постусловием:

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