Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Циклы while и do-while в C++: освоение повторений в коде

Циклы while и do-while в C++: освоение повторений в коде

Это руководство объясняет циклы while и do-while в C++ с наглядными примерами, блок-схемами и лучшими практиками.

Циклы — краеугольный камень эффективного программирования: они позволяют выполнять блок кода многократно без дублирования строк. Будь то итерация по диапазону или ожидание пользовательского ввода, выбор правильного типа цикла критически важен для читаемого, поддерживаемого кода.

В C++ есть три основных конструкции циклов:

  1. for — идеален, когда число итераций известно заранее.
  2. while — выполняется, пока условие остается истинным.
  3. do…while — гарантирует как минимум одно выполнение перед проверкой условия.

Цикл for рассматривался в предыдущем уроке, эта статья фокусируется на while и do…while, детально разбирая синтаксис, поток выполнения, частые ошибки и реальные сценарии использования.


Цикл while в C++

Синтаксис цикла while прост:

while (condition) {
    // тело цикла
}

Цикл вычисляет condition перед каждой итерацией:

Для глубокого понимания операторов отношения и логических операторов C++ обратитесь к руководству.


Блок-схема цикла while

Циклы while и do-while в C++: освоение повторений в коде

Пример 1: вывод чисел от 1 до 5

// Программа для печати чисел от 1 до 5
#include <iostream>
using namespace std;
int main() {
    int i = 1;
    // цикл while от 1 до 5
    while (i <= 5) {
        cout << i << " ";
        ++i;
    }
    return 0;
}

Результат

1 2 3 4 5

Пошаговый разбор выполнения:

ИтерацияПеременнаяi <= 5Действие
1-яi = 1true1 выведено, i становится 2
2-яi = 2true2 выведено, i становится 3
3-яi = 3true3 выведено, i становится 4
4-яi = 4true4 выведено, i становится 5
5-яi = 5true5 выведено, i становится 6
6-яi = 6falseЦикл завершается

Пример 2: сумма только положительных чисел

// программа для нахождения суммы положительных чисел
// если пользователь вводит отрицательное число, цикл завершается
// отрицательное число не добавляется к сумме
#include <iostream>
using namespace std;
int main() {
    int number;
    int sum = 0;
    // ввод от пользователя
    cout << "Enter a number: ";
    cin >> number;
    while (number >= 0) {
        // суммируем все положительные числа
        sum += number;
        // снова запрашиваем ввод, если число положительное
        cout << "Enter a number: ";
        cin >> number;
    }
    // вывод суммы
    cout << "\nThe sum is " << sum << endl;
    return 0;
}

Результат

Enter a number: 6
Enter a number: 12
Enter a number: 7
Enter a number: 0
Enter a number: -2
The sum is 25

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


Цикл do…while в C++

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

Его синтаксис:

do {
    // тело цикла
} while (condition);

Поток выполнения:


Блок-схема цикла do…while

Циклы while и do-while в C++: освоение повторений в коде

Пример 3: вывод чисел от 1 до 5

// Программа для печати чисел от 1 до 5
#include <iostream>
using namespace std;
int main() {
    int i = 1;
    // do…while цикл от 1 до 5
    do {
        cout << i << " ";
        ++i;
    } while (i <= 5);
    return 0;
}

Результат

1 2 3 4 5

Шаги выполнения:

ИтерацияПеременнаяi <= 5Действие
Начальнаяi = 1Ещё не проверялось1 выведено, i становится 2
1-яi = 2true2 выведено, i становится 3
2-яi = 3true3 выведено, i становится 4
3-яi = 4true4 выведено, i становится 5
4-яi = 5true5 выведено, i становится 6
5-яi = 6falseЦикл завершается

Пример 4: сумма только положительных чисел

// программа для нахождения суммы положительных чисел
// если пользователь вводит отрицательное число, цикл завершается
// отрицательное число не добавляется к сумме
#include <iostream>
using namespace std;
int main() {
    int number = 0;
    int sum = 0;
    do {
        sum += number;
        // ввод от пользователя
        cout << "Enter a number: ";
        cin >> number;
    } while (number >= 0);
    // вывод суммы
    cout << "\nThe sum is " << sum << endl;
    return 0;
}

Результат 1

Enter a number: 6
Enter a number: 12
Enter a number: 7
Enter a number: 0
Enter a number: -2
The sum is 25

Результат 2

Enter a number: -6
The sum is 0.

Когда первый ввод отрицательный, цикл выполняется один раз и сразу завершается, оставляя sum неизменным.


Бесконечные циклы

Бесконечный цикл возникает, когда условие никогда не становится false. Это может быть намеренно (например, сервер, работающий вечно) или случайно (логические ошибки).

// бесконечный while цикл
while (true) {
    // тело цикла
}

Аналогично, do…while может быть бесконечным:

int count = 1;
do {
    // тело цикла
} while (count == 1);

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


for против while

Цикл for наиболее подходит, когда число итераций известно заранее:

// цикл выполняется 5 раз
for (int i = 1; i <= 5; ++i) {
    // тело цикла
}

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


Изучите больше примеров циклов C++:

Язык C

  1. Классы и объекты в C++: практическое руководство по объектно-ориентированному программированию
  2. Управление памятью в C++: экспертное использование new и delete
  3. Публичное, защищённое и приватное наследование в C++: подробный разбор
  4. Дружественные функции и классы в C++: мастерство контроля доступа
  5. Цикл do-while в C++: синтаксис, примеры и вложенные циклы
  6. Циклы while и do-while: наглядное сравнение с практическими примерами
  7. Java-проверка чисел-палиндромов: алгоритмы с while и for циклами
  8. Полное руководство по дате и времени в C++
  9. Перегрузка в C++: функции и операторы — подробное руководство
  10. Ввод-вывод в файлы в C++: чтение и запись с fstream