Цикл – это конструкция в языке программирования, которая используется для многократного повторения определенного блока кода. Он обрабатывается исходным приложением до тех пор, пока будет выполняться заданное условие.
Циклы в языке программирования СИ бывают нескольких видов. Далее предстоит получше узнать о том, что вообще собой представляет цикл, для чего применяется, как формируется.
Инкременты и декременты
Перед изучением for и иных «петлей» в СИ, каждый разработчик должен изучить инкременты и декременты. Без них создание программных кодов станет невозможным даже для новичков.
При работе с «петлями» в разработке ПО приходится часто пользоваться увеличением и уменьшением значений переменных на единицу. В C функционируют такие формы изменения как a +=1 и a -= 1, но чаще всего сделать необходимые операции помогают инкременты (++) и декременты (—).
Выражения типа ++i и i++ позволяют поменять исходное значение. Пользоваться записями типа I = ++i нет никакой необходимости. Это лишнее. Достаточно заполнить следующие правила и условия:
- Если знак декремента или инкремента стоит перед переменной, перед клиентом будет префиксная форма операции. В противном случае – постфиксная.
- В «классических» выражениях сделать инкремент и декремент можно как постфиксной записью, так и префиксной. Разницы между ними нет.
- Когда соответствующие записи участвуют в построении более сложных, необходимо учесть, что в постфиксной форме, переменная, с которой требуется сделать какие-либо действия в сложном выражении сначала используется «как есть», а затем уже увеличивается/уменьшается на единицу. В префиксной записи сначала реализовываются изменения, а затем переменная будет применяться.
Инкременты и декременты применяются не только в циклах. Они встречаются при работе с переменными вещественного типа в СИ и C++.
Классификация
Циклы в СИ и C++ бывают нескольких видов. Всего их три:
- с параметром (счетчиком);
- с постусловием;
- с предусловием.
Особое внимание необходимо уделить циклу с параметром – for. Он встречается в большинстве языков разработки и позволяет реализовывать не только простые алгоритмы, но и достаточно сложные инструкции.
Цикл while
Создать цикл и использовать его в программном коде удается несколькими способами. Первый вариант – это «петля» с предусловием. Используется тогда, когда количество раз выполнения цикла известно заранее.
Форма записи в СИ:
В C++:
Здесь сначала происходит проверка инструкции, написанной в while, а затем – реализация инструкций. Тело цикла, заключенное в фигурные скобки, будет выполняться до тех пор, пока заданное условие на выходе получает логическое значение истины (равняется true).
С постусловием
Создать «петлю» в программном коде на C++ и Си можно, используя постусловие. Он напоминает предыдущий вариант в обоих языках разработки. при его реализации один проход цикла будет выполняться всегда, независимо от имеющегося условия.
Форма записи:
Соответствующий фрагмент позволяет сначала выполнить код цикла в СИ, затем – проверить условия, записанные в инструкции while. Пока оно истинно (не равно 0), алгоритм будет повторяться снова и снова.
Вот – наглядный пример кода:
#include stdio.h
int main (void)
{
int i = 6;
do
{
printf("%d", i);
i--;
}
while (i > 0);
return 0;
}
Функция (исходный код) будет работать 6 раз – до тех пор, пока значение переменной i не достигнет 0. «Петля» с do всегда гарантирует выполнение прописанных в теле действий один раз. Это относится даже к ситуациям, при которых первый же результат проверки заданного условия не является истиной.
С параметром
Наиболее простой и распространенный метод, помогающий создавать «петли» – это функция со счетчиком. За нее отвечает оператор for в языке C и C++. Соответствующая запись встречается в большинстве языков разработки. Обозначается при помощи for всегда.
При помощи for можно создать цикл тогда, когда известно точное количество итераций. Они будут известны еще до непосредственного запуска программного обеспечения.
Синтаксическая конструкция for в СИ:
В C++ запись for будет следующей:
Цикл for СИ – это функция, которая включает в себя несколько частей:
- Первая — инициализация. Она осуществляется всего один раз, в самом начале for. Представлена установкой начальных условий. Обычно выражена счетчиками – специальными переменными (h int), используемыми для контроля за циклом.
- Вторая – условие. Оно формирует требование, которое при значении истины (true или 1) будет реализовывать то, что написано в for. В виде условия часто используется операция сравнения.
- Третья – приращение. Является необязательным. Используется в for для определения «шага». Указывает, на сколько система делает увеличение или уменьшение заданного значения переменной при следующей итерации.
Если не указывать приращение, оно будет стандартным – +1. Ниже – пример использования for в C:
Здесь:
- Сначала происходит инициализация счетчика i, значение которого равно 0. I 10 тоже допускается, но в «классическом» примере параметр изначально равняется нулю. Так проще разобраться с принципами работы for.
- Счетчик представляем тип int. Можно воспользоваться любым другим числовым.
- Далее пишется условие, при котором выполняется тело цикла. В заданном примере – до i = 6.
- Последний этап – это приращение. В представленном фрагменте оно будет равно +1. Для уменьшения используется запись i—.
Выше – результат реализации цикла с for, фрагмент которого написан ранее. Для C++ можно рассмотреть такой код:
Соответствующий фрагмент используется для счета суммы всех чисел в пределах от 1 до 1 000.
Операторы Break и Continue
Используя циклы, не только с for, но и другие, может потребоваться «экстренный» выход из соответствующего фрагмента кода. Для этого используются специальные функции. Они почти во всех языках разработки называются одинаково.
Оператор break завершает цикл и выходит из него. К следующей итерации он не переходит:
В заданном фрагменте система выйдет из цикла, когда i будет более 5. Еще один вариант – это использование оператора Continue. В отличие от break, он позволяет перейти к следующей итерации. Пример – можно посчитать сумму только нечетных чисел из заданного разработчиком диапазона.
Пример соответствующего кода приведен выше. Он тоже использует for. Здесь сначала система должна узнать, четное ли заданное число или нет. Для этого применяется процедура нахождения остатка от целочисленного деления на 2. Если соответствующий параметр равен нулю, при помощи continue можно перейти к следующей итерации. В противном случае оно относится к нечетным. Его необходимо прибавить к остальным аналогичным числам.
P. S. Интересует разработка? Обратите внимание на курс «Программист C». Также в Otus доступно множество других современных курсов. Ниже – один из них: