Циклы

При написании алгоритма, нередко появляется необходимость выполнять одни и те же действия несколько раз подряд или перебирать элементы какого-то списка.

Вот некоторые примеры циклично повторяющихся действий:

  • Ожидание подключения клиента. После подключения, нам нужно ожидать следующего клиента, т.е. мы снова повторяем действие "Ожидание подключения клиента".
  • Отображения элемента списка. При разработке мессенджера, нам нужно отобразить на экране пользователя историю сообщений. Каждое сообщение отдельный элемент, и нам нужно отображать один за другим, т.е. выполнять одинаковые действия с каждым элементом списка.
  • Выполнение алгоритма, до тех пор пока условие не нарушено. Например, допустим у нас имеется автополив растений. Мы раз за разом проверяем условие, если влажность почвы ниже 30%, то включить помпу. Как видите здесь тоже имеет место цикличность.

В языке программирования C++ есть много способов циклично повторять действия, однако на данном этами обучения мы узнаем только о трёх из всего множества.

Цикл while

while - "до тех пор пока" (для программистов переводится с англ. как предлог)

Цикл while используется для повторения блока кода, пока некоторое условие истинно.

#include <iostream> #include <windows.h> #include <locale> int main() { // Установка кодировки консоли в UTF-8 SetConsoleCP(1251); SetConsoleOutputCP(1251); std::locale::global(std::locale("")); int count = 0; while (count < 5) { // Пока count меньше 5, выполняем блок кода std::cout << "Счетчик: " << count << std::endl; // Выводим сообщение на экран count++; // Инкрементируем переменную (увеличиваем на единицу) } return 0; }

В данном примере цикл выполняется до тех пор пока count < 5, так как count увеличивается на единицу каждую итерацию цикла, то цикл выполнится 5 раз

Пример (бесконечный цикл):

#include <iostream> int main() { while (true) { std::cout << "Hello world!" << std::endl; // Выводим сообщение на экран } return 0; }

В этом примере цикл не завершиться, так как условие всегда истинно.

Пример:

#include <iostream> int main() { while (false) { std::cout << "Hello world!" << std::endl; // Выводим сообщение на экран } return 0; }

А данный пример вообще не запустится, так условие false.


Цикл do-while

Есть люди которые сначала думают, а потом делают, а есть люди которые сначала делают, а потом думают.

Так вот, цикл while перед началом выполнения блока проверял условие. Но есть в java цикл, который сначала выполняет одну итерацию, а затем проверяет условие, такое цикл называется do-while.

Цикл do-while похож на цикл while, за исключением того, что он гарантирует, что блок кода будет выполнен хотя бы один раз, даже если условие ложно.

Пример:

#include <iostream> int main() { int number = 101; do { std::cout << number << std::endl; } while (number < 100); return 0; }

Условие на 6 строке кода не позволит выполняться циклу, однако как минимум один раз это цикл выполнится и выведет на экран значение числа number.

Цикл do-while выполняет блок кода, затем проверяет условие. Если условие истинно, то цикл продолжается. Процесс повторяется до тех пор, пока условие станет ложным.

Для обеспечения работы циклов while и do-while мы создавали переменную, затем сравнивали, а в самом цикле меняли её значение. В Java сещуствует цикл, который позволяет держать все эти операции в одном месте.

Цикл for

Цикл for предоставляет удобный способ для выполнения итераций по заданному диапазону значений или перебора списка.

Как перебирать списки мы узнаем позже, а сейчас посмотрим на синтаксис этой конструкции.

#include <iostream> int main() { for (int i = 0; i < 3; i++) { // выведет 0, затем 1, затем 2 std::cout << i << std::endl; } return 0; }

Рассмотрим конструкцию for подробней:

начало
int i = 0
Выполняется один раз при входе в цикл
условие
i < 3
Проверяется перед каждой итерацией цикла.
Если оно вычислится в false, цикл остановится.
тело
System.out.println(i);
Выполняется снова и снова, пока условие вычисляется в true.
шаг i++ Выполняется после тела цикла на каждой итерации перед проверкой условия.

Так же, хочу обратить внимание на то, что переменная i объявлена в скобках цикла for. Такая переменная называется локальный и существует только пределах блока кода цикла. При попытке обратиться к ней за пределами цикла, мы получим ошибку.

Пример:

#include <iostream> int main() { for (int i = 0; i < 3; i++) { // выведет 0, затем 1, затем 2 std::cout << i << std::endl; } std::cout << i << std::endl; // Здесь ошибка!!! return 0; }

Прерывание цикла: «break»

Обычно цикл завершается при вычислении условия в false.

Но мы можем выйти из цикла в любой момент с помощью специальной директивы break.

Пример:

#include <iostream> int main() { for (int i = 0; i < 10; i++) { // выведет 0, затем 1, затем 2 if (i == 5) { break; } // Прерываем цикл если i=5 std::cout << i << std::endl; } return 0; }

В данном примере цикл должен был бы выполнится 10 раз, однако когда переменная i станет равна 5 цикл встретит дериктиву break и завершится.


Переход к следующей итерации: «continue»

Если есть необходимость пропустить итерацию цикла, это можно реализовать используя директиву continue.

Пример:

#include <iostream> int main() { for (int i = 0; i <10; i++) { if (i == 5) { continue; } // Пропускаем итерацию цикла при i=5 std::cout << i << std::endl; } return 0; }

В данном примере будут выведены числа от 0 до 9 кроме числа 5


Мы рассмотрели различные циклы в языке программирования c++.
Понимание работы этих циклов позволяет эффективно управлять повторяющимися операциями в программах.

Напоминаю, что от теории мало толку если не подкреплять её практикой, решайте задачи для закрипления материала. Решать задачи


Комментарии

Добавить комментарий

Чтобы оставить комменатрий необходимо Авторизоваться