Garry's Mod

Garry's Mod

Not enough ratings
Циклы в С++ | Пособие по С++
By Dr. L
Руководство по циклам в С++.
   
Award
Favorite
Favorited
Unfavorite
Введение
Эта серия руководств и справочного материала по языку С++.

В этой части мы углублённо будем изучть циклы.

Первая часть с общим изучением языка С++:
https://steamoss.com/sharedfiles/filedetails/?id=3390154519
Введение в циклы
Циклы в C++ используются для многократного выполнения набора инструкций, пока выполняется определённое условие. Они помогают автоматизировать повторяющиеся задачи и делают код более компактным и эффективным. В C++ существует три основных типа циклов: for, while и do-while. Давайте подробно рассмотрим каждый из них.

Да, звучит немного душно, попробую объяснить иначе.


Циклы в С++ используются, чтобы определённое количество раз повторить какую то функцию или блок кода, пока выполняется какое-то условие. В С++ есть несколько видов циклов:
  • for - используется, когда известно, сколько раз нужно выполнить цикл.
  • while - выполняется, пока условие истинно. (точнее, пока условие равно true)
  • do-while - похож на while, но его ключевая особенность в том, что тело цикла выполняется хотя бы один раз, даже если условие ложно (точнее равно false).

Цикл for
Теперь будем разбирать циклы более подробно, начнем с цикла for.

Как я сказал, цикл for выполняется определённое количество раз.

Его синтаксис выглядит следующим образом:
for (инициализация; условие; изменение) { // тело функции }

  • Инициализация: Выполняется один раз перед началом цикла (обычно объявляется и инициализируется переменная-счётчик).
  • Условие: Проверяется перед каждой итерацией. Если оно true, выполняется тело цикла; если false, цикл завершается.
  • Изменение: Выполняется после каждой итерации. Обычно здесь обновляется переменная-счётчик (в частности, прибавляется единица).

Пример:
Здесь будет код, который просто соверщит 5 итераций (циклов), и выведет значения от 0 до 4.
#include <iostream> using namespace std; // чтобы не надо было постоянно писать std:: int main() { for(int i = 0; i < 5; i++) { cout << "Cycle: " << i << endl; } return 0; }

После запуска кода мы увидим это:
Cycle: 0 Cycle: 1 Cycle: 2 Cycle: 3 Cycle: 4

Это сигнализирует нам о том, что цикл сработал нормально, и совершил все 5 итераций.

Теперь разберём код!
  • #include <iostream> - подключили библиотеку для вывода текста.
  • using namespace std; - указали, что будем использовать библиотеку std, за счет этого, мы можем не писать std::cout, а сразу можем написать cout (ну и все функции из библиотеки).
  • int main() {} - стандартная точка входа в программу.
  • for(int i = 0; i < 5; i++) - это разберем поподробнее:
    • int i = 0; - это наш счетчик, он начинается с нуля.
    • i < 5; - это условие, которое провряется каждый цикл, и если переменная i, которую мы инициализировали ранее, меньше 5, он возвращает true.
    • i++ - увеличиваем наш счетчик на единицу, это эквиваленто этому: i = i + 1.
  • cout << "Cycle: " << i << endl; - выводим текст "Cycle: ", и текущее значение i.
Цикл while
Как я сказал, цикл while выполняется, пока условие истинно (true). Этот цикл удобен, если количество итераций заранее неизвестно.

Синтаксис:
while (условие) { // Тело цикла }

Условие: Проверяется перед каждой итерацией. Если оно true, выполняется тело цикла; если false, цикл завершается.

#include <iostream> using namespace std; int main() { int i = 0; while (i < 5) { cout << "Итерация " << i << endl; i++; } return 0; }

Вывод:
Итерация 0 Итерация 1 Итерация 2 Итерация 3 Итерация 4

Также, если вам нужен бесконечный цикл, можете использовать следующую особенность цикла while:
while(true) { }

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

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

Синтаксис:
do { // Тело цикла } while (условие);

Тело цикла выполняется хотя бы один раз перед проверкой условия.

Пример:
#include <iostream> using namespace std; int main() { int i = 0; do { cout << "Итерация " << i << endl; i++; } while (i < 5); return 0; }

Вывод:
Итерация 0 Итерация 1 Итерация 2 Итерация 3 Итерация 4
Управление циклами
В С++ вы можете управлять циклами, и их поведением.

break
Прерывает выполнение цикла и выходит из него.

Пример:
for (int i = 0; i < 10; i++) { if (i == 5) { break; // Прерывает цикл } cout << i << endl; }

Вывод:
0 1 2 3 4

По идеи, этот цикл должен был вывести числа от 0 до 9 (10 итераций), но внутри него было условие, что если итерация дойдёт до пятой, он остановится, используя ключевое слово break.

continue
Пропускает оставшуюся часть текущей итерации и переходит к следующей.

Пример:
for (int i = 0; i < 10; i++) { if (i % 2 == 0) { continue; // Пропускает текущую итерацию } cout << i << endl; }

Вывод:
1 3 5 7 9

Данный цикл пропускает выполнение всех итераций, индекс (переменная i) кратна 2 (то есть делится на 2 без остатка)

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

Пример:
#include <iostream> using namespace std; int main() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << "(" << i << ", " << j << ") "; } cout << endl; } return 0; }

Вывод:
(0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) (2, 0) (2, 1) (2, 2)

Данный цикл создает матрицу, и заполняет её.


Данная тема очень сложная, так что не пытайтесь её просто так понять, с ходу, я напишу отдельное руководство на эту тему.

Бонус на Новый Год 2025
Я пишу это руководство в 22:12 по Челябинскому (ЕТК) времени 31 числа декабря месяца.
И как *Бонус* решил добавить сюда код на цикле for для построения ёлочки с украшениями.

Вот код:
#include <iostream> #include <cstdlib> // Для случайных украшений #include <ctime> // Для инициализации генератора случайных чисел using namespace std; int main() { const int height = 18; srand(time(0)); // Инициализация генератора случайных чисел // Рисуем "треугольник" ёлочки for (int i = 1; i <= height; i++) { // Вывод пробелов для выравнивания for (int j = 1; j <= height - i; j++) { cout << " "; } // Вывод звёздочек и украшений for (int j = 1; j <= 2 * i - 1; j++) { // Украшения: случайно добавляем '*' (звёздочка), 'o', или '+' if (rand() % 5 == 0) { cout << "o"; // Украшение } else if (rand() % 7 == 0) { cout << "+"; // Украшение } else { cout << "*"; // Обычная часть ёлки } } // Переход на следующую строку cout << endl; } // Рисуем "ствол" ёлочки for (int i = 0; i < 3; i++) { // Вывод пробелов для центрирования ствола for (int j = 1; j < height - 1; j++) { cout << " "; } cout << "|||"; // Ствол cout << endl; } return 0; }

После этого, вы должны получить прекрасную ёлочку :3 (там рандомно расставляются украшения)
Вот такую:


Надеюсь вам понравилось :3
Конец
Надеюсь вам понравилось эту руководство, и вы узнали что то новое и полезное.

Также, вы можете поставить хорошую оценку руководству, и наградить это руководство.

Всем удачи в изучении С++, всех с новым годом, а я пошёл спать :3


Другие руководства:
https://steamoss.com/sharedfiles/filedetails/?id=3390154519
https://steamoss.com/sharedfiles/filedetails/?id=3395692013
https://steamoss.com/sharedfiles/filedetails/?id=3389441554
https://steamoss.com/sharedfiles/filedetails/?id=3397931731
https://steamoss.com/sharedfiles/filedetails/?id=3387288971