Цикл while в C++: разбираем с примерами

обложка статьи

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

Структура цикла while

Цикл while имеет самую простую структуру из всех циклов (по сравнению с тем же циклом for). Однако имеет несколько отличий:

while ( <условие выполнения> ) {
    <выполняемый код>
}

Теперь давайте я вам подробнее расскажу об его синтаксисе:

  1. Ключевое слово while.
  2. После, в круглых скобках, указываем логическое выражение. Цикл будет выполнятся до тех пор, пока оно истинно.
  3. Далее идет тело цикла. Это собственно тот код, который должен выполняться. Фигурные скобки можно опустить, в том случае, если мы указали лишь одну операцию.

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

Пример

Данная программа поочередно получает числа, а затем выводит сообщения для каждого из них: четное или нечетное. Вот код:

setlocale(0, ""); // устанавливаем локаль

cout << "Программа определяет, четное число или нет." << endl;
cout << "Введите -1 для завершения работы программы." << endl;

int number;
cout << endl << "Ваше число: "; cin >> number;

while (number != -1) {
    if (number % 2 == 0)
        cout << "Четное" << endl;
    else
        cout << "Нечетное" << endl;

    cout << "Введите число: ";
    cin >> number;
}

Данная программа при ее запуске выдаст следующее:

Программа определяет, четное число или нет.
Введите -1 для завершения работы программы.

Ваше число: 832
Четное
Ваше число: 91
Нечетное
Ваше число: -1

Process returned 0 (0x0) execution time : 5.936 s
Press any key to continue.

Теперь давайте подробнее разберем пример:

  1. Строка 1: устанавливаем локаль.
  2. Строки 3-4: выводим краткое описание программы.
  3. Строки 6-8: вводим первое число.
  4. Строки 10-16: это цикл while. Давайте его рассмотрим поподробнее:
    • в качестве логического выражения выступает следующее условие: number != -1. Пока введенное число не будет равным -1, цикл будет выполняться;
    • далее идет оператор ветвления if. В нем мы проверяем число. Если оно оказывается четным, то мы выводим соответствующее сообщение. Иначе, выводим “Нечетное”;
    • ну и в конце, мы считываем очередное число, которое будет обработано в следующей итерации цикла while;
  5. Конец программы.

По правде говоря, в данном случае лучше бы подошел цикл do while. Его использование позволило бы сэкономить немного места. Чтобы узнать почему, пройдите по ссылке.

while: реализуем простую игру

Теперь давайте соберем все свои знания которые касаются цикла while и создадим полноценное консольное приложение.

Оно будет делать следующее:

  1. Программа загадывает число из определенного промежутка.
  2. Пользователь вводит число.
  3. Программа выводит следующее:
    • мое число меньше;
    • ты угадал;
    • мое число больше;
  4. Затем мы возвращаемся к пункту 2 до тех пор, пока пользователь не угадает число.

Вот суть программы. Вот ее реализация на C++:

#include <iostream>
#include <stdlib.h>
#include <ctime>
using namespace std;

int main() {
    setlocale(0, "");
    srand(time(0)); // задаем зерно случайной последовательности

    int l, r; // границы случайного числа
    cout << "Введите ограничения на число [l, r]: ";
    cin >> l >> r; // ввод чисел

    int number = l + rand() % (r - l + 1); // случайное число

    int userNumber;
    cout << endl << "Твое число: ";
    cin >> userNumber;

    while (number != userNumber) { // цикл while
        if (number < userNumber) // проверка
            cout << "Мое число меньше " << userNumber << endl;
        else if (number > userNumber) // иначе
           cout << "Мое число больше " << userNumber << endl;

        cout << "Попробуй еще раз: ";
        сin >> userNumber;
    }

    cout << endl << "Ты угадал!" << endl; // поздравление

    return 0;
}

Вот пример работы программы:

Введите ограничения на число [l, r]: -14 20

Твое число: 0
Мое число меньше 0
Попробуй еще раз: -7
Мое число меньше -7
Попробуй еще раз: -11

Ты угадал!

Process returned 0 (0x0) execution time : 8.170 s
Press any key to continue.

Здесь для вас должно быть понятным. Однако отмечу лишь строку №8. В ней задается зерно псевдослучайных чисел (если интересно, пройдите по ссылке и почитайте на Википедии). Попробуйте поиграть с данной программой сами.

Можете попробовать сыграть следующим образом: задайте ограничения от 0 до 1000000. После чего, попытайся отгадать число за 25 ходов. Если не знаешь как это сделать, то задай вопрос в комментариях.

На этом наш урок закончен. Осталось только проверить свои знания!

В качестве домашнего задания, попытайтесь сделать программу, которая сома отгадывает ваше число. На этом все. Если статья оказалась полезной, то поделись ею в социальных сетях! Удачи!

« Массивы в C++

Цикл for в C++ »

Обсуждение