Файл: Операторы циклов, их виды, особенности и области применения.pdf
Добавлен: 27.04.2023
Просмотров: 261
Скачиваний: 4
ВВЕДЕНИЕ
Во время решения задач может возникнуть необходимость повторить одни и те же действия несколько или множество раз. С такими задачами, без сомнения, лучше всего справляется компьютер. В настоящее время вычислительные мощности компьютеров позволяют производить циклические расчёты практически мгновенно и безошибочно, что нельзя сказать о человеке, который в силу своих возможностей не способен сравниться по быстродействию с машиной. Также при длительном выполнении работ человеком, особенно монотонно повторяющихся, нельзя забывать о возникновении усталости, что приводит к появлению ошибок, которые в конечном итоге отрицательно влияют на дальнейший результат.
Для реализации многократно повторяемых действий применяются операторы цикла. В их задачу входит организация цепочки инструкций, производимых над какими-либо данными или действиями, которая будет повторяться заданное количество раз или до возникновения необходимости прервать её.
В настоящее время во всех языках программирования есть циклические операторы в том или ином виде. Они могут отличаться способом реализации, возможностями или не отличаться вовсе, но одно неизменно – это их наличие, так как компьютер создавался для облегчения работы человека с рутинными задачами. Достаточно просто определить цель, которую необходимо достичь, и задать алгоритм выполнения цикла, дальше всё выполнит машина, предоставив результат.
В подавляющем большинстве случаев структура циклов представлена в виде двух составляющих. Это условие, управляющее количеством повторов, и само тело цикла, то есть набор последовательно выполняемых операторов, которые будут выполняться до тех пор, пока условия выхода из цикла не позволят выйти из него и передать работу следующим после цикла операторам.
В этой работе предстоит подробно изучить функционирование операторов цикла их различия между собой, особенности реализации и возможность их применения в решении различных задач. Для удобства понимания и упрощения сравнения циклических операторов был выбран один язык программирования – C#, так как в большинстве случаев их логика одинакова, а различия только в оформлении из-за разного синтаксиса языков.
ГЛАВА 1. ЦИКЛЫ И ИХ ПРИМЕНЕНИЕ
1.1 Определение цикла
Цикл – это часть программного кода, выполняющаяся несколько раз. Операторы цикла являются управляющими операторами, их задача состоит в многократном повторении определённого участка кода до достижения, определённого условия выхода из него. У циклов выделяют заголовок и тело. Повторяемый блок кода является телом цикла. Заголовок определяет условие, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину. После того как достигнута последняя инструкция тела, поток выполнения снова возвращается к заголовку цикла. Снова проверяется условие выполнения цикла. В зависимости от результата тело цикла либо повторяется, либо поток выполнения переходит к следующему выражению после всего цикла.
Исполнение любого цикла включает первоначальную инициализацию переменных цикла, проверку условия выхода, исполнение тела цикла и обновление переменной цикла на каждой итерации. Кроме того, большинство языков программирования предоставляют средства для досрочного управления циклом, например, операторы завершения цикла, то есть выхода из цикла независимо от истинности условия выхода и операторы пропуска итерации.
В программировании применяются различные виды циклов, основные из них представлены ниже. Цикл со счётчиком, заголовок которого инициализирует условие выхода и итерационную переменную, при помощи неё и определяется количество повторов, итераций, данного цикла. В зависимости от расположения в коде проверки условий выхода из цикла, различают циклы с предусловием и постусловием, также возможен вариант безусловного или бесконечного цикла. В таком случае условие выхода из цикла будет находиться в теле цикла совместно с оператором выхода из цикла.
1.2 Цикл со счётчиком
Цикл со счётчиком — цикл, в котором переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. В большинстве языков программирования реализуется оператором for, в котором указывается счётчик, то есть переменная цикла, требуемое количество проходов или количество итераций и шаг, с которым изменяется счётчик. Логика цикла со счётчиком представлена на блок-схеме (рисунок 1).
Рисунок 1. Цикл со счётчиком
Цикл может не выполниться ни разу, так как перед его выполнением будет выполняться проверка условий выхода и в случае отрицательного результата тело цикла будет пропущено.
В языке C# доступна довольно гибкая возможность настраивать условия цикла for. Она заключается в отсутствии ограничения по количеству переменных, проверок условий, и итераторов. Простой пример цикла представлен в листинге 1.
Листинг 1
Цикл for
for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
Оператор for в данном примере выполняет следующие действия:
- Устанавливается начальное значение переменной i. Это происходит только один раз, независимо от числа повторений цикла. Можно представить эту инициализацию происходящей вне циклического процесса.
- Далее значение i сравнивается с 5.
- Если значение i меньше или равно 5, условие определяется, как true и выполняются следующие действия.
- Оператор Console.WriteLine в теле цикла выводит в консоль сообщение со значением i.
- Значение i увеличивается на единицу.
- Цикл возвращается к началу выполнения шага 2, чтобы повторно вычислить условие.
- Если значение i больше 5, условие определяется как false и выполняется выход из цикла.
Если в этом примере значение i инициализировать значением больше 5, то тело цикла вовсе не запустится.
Эффективнее всего использовать цикл for для выполнения операций известное количество раз. Также этот цикл можно определить, как цикл с предусловием без каких-либо счётчиков, оставив в скобках только условие выхода (листинг 2).
Листинг 2
Цикл for без счётчика
int i = 1;
for ( ; i <= 5;)
{
Console.WriteLine(i);
i++;
}
В этом случае нет необходимость инициализации счётчика, а все манипуляции над данными, которые проверяются в заголовке цикла, будут производиться в теле цикла. Для цикла с предусловием удобнее пользоваться конструкцией описанной в следующем параграфе.
1.3 Цикл с предусловием
Если в задаче число повторений заранее неизвестно, цикл for использовать неудобно и можно воспользоваться оператором цикла while. Этот цикл совершает повторы до тех пор, пока условие выхода из цикла не будет иметь значение false, тогда управление программой передаётся строке кода, следующей после цикла (рисунок 2). Тело цикла может ни разу не выполниться, так как проверка условий происходит в начале, отсюда и следует название цикл с предусловием.
Рисунок 2. Цикл с предусловием
Простой пример (листинг 3) наглядно демонстрирует работу цикла while.
Листинг 3
Цикл while
int n = 1;
while (n < 6)
{
Console.WriteLine(n);
n++;
}
Рассмотрим работу этого цикла:
- Перед тем, как программа передаст управление циклу, необходимо инициализировать переменную цикла, которая и будет участвовать в проверке условий выхода из него.
- Далее идёт оператор цикла while и выражение проверки в скобках. Если выражение имеет истинное значение, то работа программы переходит к первой строчке тела цикла.
- В данном примере программа выводит сообщение со значением переменной n на экран.
- Далее выполняется приращение значения n на единицу. На этом действии заканчивается одна итерация цикла.
- Происходит переход к выражению проверки условий цикла, если оно истинно, то цикл повторяется.
- Цикл будет повторяться до тех пор, пока n не примет значение 6 или больше, в таком случае выражение проверки станет ложным, и программа продолжит выполнение со следующей строки после цикла.
1.4 Цикл с постусловием
Ещё одной разновидностью циклов является цикл с постусловием. Главным отличием его от предыдущего заключается в проверке условий выхода из цикла, точнее последовательность, с которой выполняется цикл. В первую очередь выполняется тело цикла, а в конце идёт проверка условий выхода (рисунок 3).
Рисунок 3. Цикл с постусловием
Листинг 4 демонстрирует работу цикла do-while.
Листинг 4
Цикл do-while
int x = 0;
do
{
Console.WriteLine(x);
x++;
} while (x < 5);
Рассмотрим работу этого цикла:
- Перед тем, как программа передаст управление циклу, необходимо инициализировать переменную цикла, которая и будет участвовать в проверке условий выхода из него.
- Далее идёт оператор do, после него сразу начинается выполнение тела цикла.
- В данном примере программа выводит сообщение со значением переменной x на экран.
- Далее выполняется приращение значения x на единицу.
- Затем происходит переход к выражению проверки условий цикла, если оно истинно, то цикл повторяется.
- Цикл будет повторяться до тех пор, пока x не примет значение 5 или больше, в таком случае выражение проверки станет ложным, и программа продолжит выполнение со следующей строки после цикла.
Такой цикл применяется в том случае, если требуется выполнить как минимум одну итерацию. Поэтому проверка происходит в конце цикла. То есть каким значением ни была бы инициализирована переменная цикла, он всё равно выполнится один раз. Как и все остальные операторы цикла do-while имеет различные возможность для более гибкого использования цикла.
1.5 Цикл коллекции
Если предстоит работать с группами объектов, поочерёдно ведя их обработку, то удобнее всего воспользоваться циклом коллекции foreach. Цикл foreach служит для циклического обращения к элементам коллекции, представляющей собой группу объектов.
Оператор цикла foreach действует следующим образом. Когда цикл начинается, первый элемент массива выбирается и присваивается переменной цикла. На каждом последующем шаге итерации выбирается следующий элемент массива, который сохраняется в переменной цикла. Цикл завершается, когда все элементы массива окажутся выбранными. Цикл foreach позволяет проходить по каждому элементу коллекции (объект, представляющий список других объектов).
Ниже приведён простой пример (листинг 5) использования цикла foreach.
Листинг 5
Цикл foreach
foreach(int х in nums)
{
Console.WriteLine(х);
}
В этом примере нам необходимо последовательно вывести на экран все элементы заранее определённого массива nums. Этот цикл работает следующим образом:
- В скобках поле оператора foreach определяется переменная x, которой присваивается первое значение, выбранное из коллекции nums.
- Далее происходит переход к телу цикла, и выводится на экран сообщение со значением переменной x.
- Происходит возврат в начало цикла, в свою очередь, переменная x получает следующее по порядку значение из коллекции nums.
- Происходит очередной повтор цикла. Так будет происходить, пока цикл foreach не выберет все элементы массива. Тогда управление программой перейдёт строке кода, следующей сразу после цикла.
Опрашиваемую коллекция здесь представляет собой массив. Следовательно, тип переменной цикла должен соответствовать типу элемента массива. Кроме того, тип может обозначаться ключевым словом var. В этом случае компилятор определяет тип переменной цикла, исходя из типа элемента массива. Это может оказаться полезным для работы с определенного рода запросами. Но, как правило, тип указывается явным образом.