Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 4 Циклы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
370.69 Кб
Скачать

Лабораторная работа № 4 программирование циклических процессов

1 Цель и порядок работы

Цель работы - изучить операторы, используемые при организации циклических вычислительных процессов, получить практические навыки в составлении программ.

Порядок выполнения работы:

  • ознакомиться с описанием лабораторной работы;

  • получить задание у преподавателя по вариантам;

  • разработать схему алгоритма решения задачи;

  • написать программу, соответствующую схеме алгоритма;

  • ввести программу, отладить и выполнить ее на ЭВМ;

  • оформить отчет.

2 Общие сведения

2.1 Понятие цикла

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

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

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

Алгоритм циклической структуры в наиболее общем виде должен содержать:

  • подготовку цикла: задание начальных значений переменным цикла перед первым его выполнением;

  • тело цикла; действия, повторяемые в цикле для различных значений переменных цикла;

  • изменение значений переменных цикла при каждом новом его выполнении;

  • управление циклом: проверку условия продолжения работы цикла.

Один проход тела цикла называется итерацией. Если параметр цикла целочис­ленный, он называется счетчиком цикла.

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

Передавать управление извне внутрь цикла запре­щается (при этом возникает ошибка компиляции).

2.2 Операторы управления

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

В С# есть пять таких операторов:

- оператор безусловного перехода goto;

- оператор выхода из цикла break;

- оператор перехода к следующей итерации цикла continue;

- оператор возврата из функции return;

- оператор генерации исключения throw.

Эти операторы могут передать управление в пределах блока, в котором они использованы, и за его пределы. Передавать управление внутрь другого блока запрещается.

Первые четыре оператора рассматриваются в этой лабораторной работе, а оператору throw посвящена специальная лабораторная работа.

Оператор goto

Оператор безусловного перехода используется в одной из трех форм:

goto метка;

goto case константное_выражение;

goto default;

В теле функции должна присутствовать ровно одна конструкция вида

метка: оператор;

Оператор goto метка передает управление на помеченный оператор. Метка — это обычный идентификатор, областью видимости которого является функция, в теле которой он задан. Метка должна находиться в той же области видимости, что и оператор перехода. После выполнения оператора Goto опять восстанавливается естественный порядок выполнения операторов, но начиная уже с помеченного оператора. Если помеченный оператор не является оператором управления, то будет выполняться следующий за ним оператор и т. д.

При использовании Goto следует учитывать следующие требования:

  • Goto не должен передавать сообщения внутрь цикла;

  • вход в блок должен осуществляться через заголовок.

В общем случае необходимо избегать применения оператора Goto и по возможности стараться писать программы без этого оператора, так как его использование на­рушает принципы структурного и модульного программирования, по которым все блоки, образующие программу, должны иметь только один вход и один выход. Использование этой формы оператора безусловного пере­хода оправдано в двух случаях:

  • принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей;

  • переход из нескольких точек функции вниз по тексту в одну точку (например, если перед выходом из функции необходимо всегда выполнять какие-либо действия).

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

Вторая и третья формы оператора goto используются в теле оператора выбора switch.

Оператор:

goto case константное_выражение

передает управление на соответствующую константному выражению ветвь, а оператор

goto default — на ветвь default.

Оператор break

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

Оператор continue

Оператор перехода к следующей итерации текущего цикла continue пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на нача­ло следующей итерации.

Оператор return

Оператор возврата из функции return завершает выполнение функции и переда­ет управление в точку ее вызова. Синтаксис оператора:

return [ выражение ];

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